Skip to main content

Python client for ATI Net F/T Ethernet force/torque sensors

Project description

pyNetFT

CI Wheels CodeQL Codecov PyPI Python License

pyNetFT is a synchronous, typed Python client for ATI Industrial Automation Net F/T Ethernet force/torque sensors. It discovers the sensor calibration, streams RDT measurements through a native C++ core, and exposes raw counts, physical measurements, health, and recovery information without requiring NumPy.

  • Tested native core: the protocol and recovery implementation is pinned to netft-cpp 0.2.2, includes its GCC 10/manylinux2014 compatibility fix and corrected libcurl minimum, and is exercised with offline fake sensors and native sanitizers.
  • Sensor-aware data: calibration, force and torque units, configuration revisions, sequence progress, and faults remain visible to the application.
  • Self-contained typed wheels: Linux wheels include the native core and a minimal static HTTP-only curl build, plus inline type information for Python 3.10–3.14.

Supported platforms

Installation Python Platform Architecture Support
PyPI wheel CPython 3.10–3.14 manylinux2014 or newer Linux x86_64 Supported
PyPI wheel CPython 3.10–3.14 manylinux2014 or newer Linux AArch64 Supported
Source build CPython 3.10–3.14 POSIX Host compiler architecture Best effort

Windows, macOS wheels, PyPy, and asyncio are not supported by the 2.x package.

Installation

Install a supported wheel from PyPI:

python -m pip install pynetft

For a source build, use a C++17 compiler, CMake 3.16 or newer, and libcurl 7.63.0 or newer:

git clone https://github.com/netft/pyNetFT.git
cd pyNetFT
python -m pip install .

Source builds use the checked-in native core and do not download netft-cpp.

Quick start

The address below is the ATI factory default. Replace it with the address assigned to your sensor.

from pynetft import Client, Config

config = Config(sensor_host="192.168.1.1")

with Client(config) as client:
    sample = next(client.samples(timeout=1.0))
    print(sample.force, sample.force_unit.value)
    print(sample.torque, sample.torque_unit.value)

Client.samples() provides blocking iterator delivery. A read timeout raises TimeoutError, while a terminal sensor or transport fault raises SensorFaultError with structured fault and health data. Applications that integrate with a callback-driven loop can instead pass callback= to Client; the two delivery modes are mutually exclusive for a client run. See the API reference for lifecycle, callback, timeout, health, and error behavior.

Units and raw counts

Sample.force and Sample.torque preserve the units reported by the sensor, including the common ATI combination of newtons and newton-millimeters. pyNetFT does not apply ROS-specific SI conversion. Sample.wrench is the six-element physical-value tuple (Fx, Fy, Fz, Tx, Ty, Tz), while Sample.raw_wrench contains the six signed integer counts from the RDT record.

Automatic discovery is the default and should be preferred when the sensor configuration is authoritative. A complete Calibration override is available when independently verified fixed values are required.

Migrating from pyNetFT 1.x

The deprecated NetFT and Response interfaces remain available throughout 2.x. New code should use Client, Config, and Sample; see the 2.0 migration guide for exact call and field mappings.

Network security

ATI configuration discovery uses HTTP and RDT streaming uses unauthenticated UDP. Deploy the sensor and client on a trusted, isolated network segment, and do not expose either device protocol directly to the Internet or an untrusted shared network. See the security policy for the threat model and vulnerability reporting instructions.

Hardware safety

Force/torque measurements can affect motion and protective limits. Validate discovered calibration and units before enabling a controller, detect stale or faulted data, and retain an independent safety-rated control path. Client.bias() changes the sensor's software bias; call it only when the sensor is unloaded and the operation is explicitly authorized.

Contributing

Bug reports, hardware compatibility reports, documentation improvements, and focused code contributions are welcome. The contribution guide covers the Pixi environment, offline checks, hardware authorization, and native-core synchronization rules.

License

pyNetFT is licensed under the Apache License 2.0. The previous pyNetFT MIT license, the synchronized netft-cpp license, and the curl license notice are retained with the source and distribution artifacts.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pynetft-2.0.0.tar.gz (179.4 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pynetft-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (457.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pynetft-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (434.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

pynetft-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (457.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pynetft-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (433.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

pynetft-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (457.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pynetft-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (433.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

pynetft-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (459.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pynetft-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (435.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

pynetft-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (458.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pynetft-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (435.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

Details for the file pynetft-2.0.0.tar.gz.

File metadata

  • Download URL: pynetft-2.0.0.tar.gz
  • Upload date:
  • Size: 179.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pynetft-2.0.0.tar.gz
Algorithm Hash digest
SHA256 468e20b4b81e29b0d9e79d7e3a922418159f1819c1777d7dd75e5eb93c48d8fb
MD5 5a992742ea4697f817c33ecf34fc9bed
BLAKE2b-256 86823195f136b64253ea2fc797b07c4c5c189f7b149e66a620ad3a893e07336a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0.tar.gz:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 3e735dd4423b5ac0febc6ccec0faf5e5aa4c6c1ecd3664e35c99f3a7aadaaee5
MD5 f71f38b43b84527e6cf590dea7523b25
BLAKE2b-256 b701239d9af5e1b30a35da23d86b28d538795a02b31632691939b42c569755f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 ad0987b5f57e3d3eaa5eb172a050f572a370e609c89e5726056e1b13b7b067de
MD5 63837f4b8e56e3f12754ec798c692353
BLAKE2b-256 5e9eaf3b894626a2bb10927cf66ac8cdad27c3a3e2883802dbfb4da7563abcf4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 46bb84bac27511914dba85760f5fba42b664ec3251cfca1f93c565836c11cff7
MD5 a8e8331fa60e1fa69f5de116c205ef46
BLAKE2b-256 019972d9b1268247f299de3c786c8545777a6b6d6f4b1056352f3e7bb9336f10

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 2fafd80cf296cee3f82be9b240148edcb2167bb748ee569570af12652b2d7705
MD5 adde4159df8e1adaf722c0e6c8ac5c88
BLAKE2b-256 c5190a5982ce8aa7f15a970049cc5eed07f8d74583c2b3cf4706edf0cc0ebd2a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7d5ad17a4c209ba98551bfd95bf9837701d720f71a68e236804bb05210136297
MD5 98eb96809bcc34299f00a936bd316bc6
BLAKE2b-256 446ceef54b55b28a4fd1c3943262879a730394ef44424be9e70f4813568c6697

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 d04a9e6eb8dc53b089009c1bb4800bac0bc0e65386dc61853c96ad00be7a1a6e
MD5 12ddab8bf89352528a6b876a8fc7e919
BLAKE2b-256 e79d0b370f8c5c3cda4be264b1c4fd4366d5a2d4ea3f3d636b0bc73288cd5509

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6c4a1d72e38d6bf6aba5c8fd34c77fb0b1ec7a744aefc68b46b7cd9d0d4c356f
MD5 942113af075fca6a88b6a299862f78a1
BLAKE2b-256 efb40ea1bbea6f7c30c39a787d7a4452efd1a98f6837a615206205b3633cd1ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 05a8c7a85b1e72dfe13d79f9927365ca3fd24d7f6894edc9b0db1d318a9d4985
MD5 b8521dbf6e53b18227d8732f2182f116
BLAKE2b-256 d6741c58d1e5c893074edc0492b8412538d3d739a62538d2c0a6de181c8fc7d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f85a5c930ce00bc3129e3d631b9d6c44ac14f4254219ca24d7ffa3164f34f33f
MD5 f3727e0db12f41ba5dee5392e907b038
BLAKE2b-256 5da5270d12d22c727f5dc17d468f7096ac641675cd69103c1eb2aad545c0b772

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynetft-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for pynetft-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 80bd32b50e1af1ef097613389690eb54cf38a4ba9efc64c2ad19fe7c1643453f
MD5 f4ca5b6a6f9d1aa907ee911aaf397492
BLAKE2b-256 a09204a37239c68abc44ecd32a53bbd89059f259cedcd0114a5a7e03ad97f940

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynetft-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl:

Publisher: release.yml on netft/pyNetFT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page