Read-only EtherNet/IP implicit connection bridge that captures PLC I/O data and publishes it to NATS
Project description
eip2nats - EtherNet/IP to NATS Bridge
Read-only bridge that opens an EtherNet/IP implicit (I/O) connection to a PLC, captures the T2O (Target-to-Originator) data stream and publishes every packet to a NATS subject. It does not write data to the PLC — it acts as a passive listener, similar to a sniffer.
All dependencies (libnats, libEIPScanner) are bundled in the wheel.
Features
- Read-only: Captures PLC I/O data via implicit connection, no writes
- Self-contained: Includes compiled libnats and libEIPScanner
- Zero dependencies: No system library installation required
- Device presets: Built-in assembly constants for known devices (RM75E, ClipX)
- High performance: Native C++ bindings with pybind11
- Auto-reconnect: Recovers automatically from connection loss
- Parallel bridges: Run multiple bridges on different UDP ports simultaneously
- Thread-safe: Safe handling of multiple connections
Installation
pip install eip2nats
Pre-built wheels are available on PyPI for Linux and Windows.
Building from Source
If a pre-built wheel is not available for your platform, you can build from source:
Linux:
./setup_project_linux.sh
Windows (PowerShell, requires Visual Studio Build Tools):
.\setup_project_windows.ps1
This automatically:
- Creates a virtual environment in
venv/ - Installs Hatch and pybind11
- Compiles nats.c, EIPScanner and the Python binding
- Creates the wheel
- Installs the wheel in the venv
Usage
# Activate virtual environment
source venv/bin/activate # Linux
.\venv\Scripts\Activate # Windows PowerShell
# Run example
python examples/example_python_rm75e.py
# Deactivate when done
deactivate
Basic Usage
import eip2nats
# Create bridge (using RM75E device presets)
bridge = eip2nats.EIPtoNATSBridge(
"192.168.17.200", # PLC IP address
"nats://192.168.17.138:4222", # NATS server
"plc.data", # NATS subject/topic
config_assembly=eip2nats.devices.RM75E.CONFIG_ASSEMBLY,
o2t_assembly=eip2nats.devices.RM75E.O2T_ASSEMBLY,
t2o_assembly=eip2nats.devices.RM75E.T2O_ASSEMBLY,
t2o_size=100,
rpi=2000, # Requested Packet Interval (µs)
port=2222, # Local UDP port for T2O data
)
# Start
if bridge.start():
import time
print("Bridge running!")
# Monitor
while bridge.is_running():
time.sleep(5)
print(f"RX={bridge.get_received_count()}, "
f"TX={bridge.get_published_count()}")
# Stop
bridge.stop()
More examples in examples/
Requirements
Linux:
- Python 3.7+
- git, cmake, make, g++, python3-venv
Windows:
- Python 3.7+
- git, cmake
- Visual Studio Build Tools (cl.exe)
Development
See DEVELOPMENT.md for the full development guide (VSCode setup, debugging, workflows).
Create Release
hatch build
Manual Build (without setup script)
git clone https://github.com/kliskatek/eip2nats.git
cd eip2nats
pip install hatch pybind11
# Build dependencies
python scripts/build_nats.py
python scripts/build_eipscanner.py
python scripts/build_binding.py
# Create wheel
hatch build
Project Structure
eip2nats/
├── pyproject.toml # Hatch configuration
├── hatch_build.py # Hook for platform-specific wheel
├── README.md
├── DEVELOPMENT.md # VSCode development guide
├── LICENSE # MIT
├── THIRD_PARTY_LICENSES # nats.c and EIPScanner licenses
├── setup_project_linux.sh # Automatic setup (Linux)
├── setup_project_windows.ps1 # Automatic setup (Windows)
├── src/
│ └── eip2nats/
│ ├── __init__.py # Python package
│ ├── bindings.cpp # pybind11 bindings
│ ├── EIPtoNATSBridge.h # C++ header
│ ├── EIPtoNATSBridge.cpp # C++ implementation
│ └── lib/ # Compiled libraries (auto-generated)
│ ├── libnats.so / nats.dll
│ └── libEIPScanner.so / EIPScanner.dll
├── scripts/
│ ├── build_config.py # Shared build configuration
│ ├── build_nats.py # Builds nats.c
│ ├── build_eipscanner.py # Builds EIPScanner
│ ├── build_binding.py # Builds Python binding (.pyd/.so)
│ ├── build_example_cpp.py # Builds C++ example
│ └── binding_CMakeLists.txt # CMake template for binding (Windows)
├── examples/
│ ├── example_python_rm75e.py # Python example (RM75E)
│ ├── example_python_clipx.py # Python example (ClipX)
│ ├── example_cpp_clipx.cpp # C++ example (ClipX)
│ └── example_cpp.cpp # C++ example (debugging)
├── tests/
│ └── test_python.py # Python unit tests
└── build/ # Auto-generated, in .gitignore
├── dependencies/ # nats.c and EIPScanner clones
└── example_cpp/ # Compiled C++ executable
How It Works
-
Build scripts (
scripts/):build_nats.py: Clones and compiles nats.c ->libnats.so/nats.dllbuild_eipscanner.py: Clones and compiles EIPScanner ->libEIPScanner.so/EIPScanner.dllbuild_binding.py: Compiles the Python binding ->.so(Linux) /.pyd(Windows)- All copy binaries to
src/eip2nats/lib/
-
hatch build:- Packages the full
src/eip2nats/(code + binaries) hatch_build.pyforces platform-specific wheel tags- Linux: relative RPATH (
$ORIGIN), Windows:os.add_dll_directory() - The wheel contains everything needed
- Packages the full
-
pip install:- Installs the wheel
- Binaries end up in site-packages
- Python loads libraries automatically
- Works without system dependencies!
Advantages
vs System Libraries:
- No
sudo apt-get installrequired - No version conflicts
- Portable across systems
vs Regular Wheels:
- Includes all C/C++ dependencies
- Single file to install
- Works on systems without compilers
vs Docker:
- Lighter (MBs vs GBs)
- Direct Python integration
- No Docker privileges required
API Reference
Class: EIPtoNATSBridge
bridge = eip2nats.EIPtoNATSBridge(
plc_address: str,
nats_url: str,
nats_subject: str,
use_binary_format: bool = True,
config_assembly: int = 4, # Configuration assembly instance
o2t_assembly: int = 2, # O2T data assembly instance
t2o_assembly: int = 1, # T2O data assembly instance
t2o_size: int = 0, # T2O connection size in bytes
rpi: int = 2000, # Requested Packet Interval (µs), applied to O2T and T2O
port: int = 2222, # Local UDP port for receiving I/O data
connection_timeout_multiplier: int = 5, # CIP timeout multiplier (0-7)
)
Methods:
start() -> bool: Starts the bridgestop() -> None: Stops the bridgeis_running() -> bool: Bridge statusget_received_count() -> int: Messages from PLCget_published_count() -> int: Messages to NATSget_reconnect_count() -> int: Automatic EIP reconnections
NATS Message Format
Each message published to NATS contains the CIP sequence number prepended to the I/O data:
Binary format (use_binary_format=True, default):
[seq_lo] [seq_hi] [data_0] [data_1] ... [data_n]
byte 0 byte 1 byte 2 byte 3 byte n+2
- Bytes 0-1: CIP sequence number (uint16, little-endian)
- Bytes 2+: Application data from the PLC
Decoding example in Python:
import struct
sequence = struct.unpack_from('<H', msg.data, 0)[0]
data = msg.data[2:]
JSON format (use_binary_format=False):
{"timestamp":1234567890,"sequence":42,"size":100,"data":"0a1b2c..."}
The sequence number is useful for detecting lost packets: if you receive sequence 100 followed by 102, one packet was lost.
Device Presets: eip2nats.devices
Pre-defined assembly constants for known EIP devices:
# RMC75E (Delta Computer Systems)
eip2nats.devices.RM75E.CONFIG_ASSEMBLY # 4
eip2nats.devices.RM75E.O2T_ASSEMBLY # 2
eip2nats.devices.RM75E.T2O_ASSEMBLY # 1
# ClipX (HBK / Hottinger Brüel & Kjær)
eip2nats.devices.ClipX.CONFIG_ASSEMBLY # 1
eip2nats.devices.ClipX.O2T_ASSEMBLY # 101
eip2nats.devices.ClipX.T2O_ASSEMBLY # 100
Troubleshooting
Error: "cannot open shared object file"
Even though the wheel includes the libraries, check RPATH:
ldd $(python -c "import eip2nats; print(eip2nats.__file__.replace('__init__.py', 'lib/eip2nats.*.so'))")
All dependencies should resolve locally.
Rebuild on Another System
git clone <repo>
cd eip2nats
python scripts/build_nats.py
python scripts/build_eipscanner.py
python scripts/build_binding.py
hatch build
Clean Builds
rm -rf build/ dist/ src/eip2nats/lib/
Changelog
v1.3.2 (2025)
- Configurable connection timeout multiplier via
connection_timeout_multiplierparameter (default: 5)
v1.3.1 (2025)
- CIP sequence number prepended to NATS payload (binary: 2-byte LE prefix; JSON:
sequencefield)
v1.3.0 (2025)
- Configurable UDP port for T2O data reception, enabling multiple parallel bridges
- EIPScanner patched to include T2O_SOCKADDR_INFO in Forward Open request
- Pinned EIPScanner dependency to known-good commit (12c89a5)
- CPython 3.14 wheel build target
v1.2.0 (2025)
- Configurable RPI (Requested Packet Interval) via constructor parameter
- Added HBK ClipX device preset
- Added ClipX examples (Python and C++)
- Raspberry Pi build support
v1.0.0 (2025)
- Initial release
- Self-contained wheel with nats.c and EIPScanner
- Windows (MSVC) and Linux (GCC) support
- Binary and JSON format support
- Thread-safe operations
Contributing
- Fork the project
- Create a branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add amazing feature') - Push (
git push origin feature/amazing) - Open a Pull Request
License
MIT License - see LICENSE file
Credits
- nats.c - NATS C Client
- EIPScanner - EtherNet/IP Library
- pybind11 - Python bindings
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file eip2nats-1.3.2-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 433.9 kB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9673b3532b1ac3ff559d318041923ba3c8c9f5df3c4047d3ea32843bab01473b
|
|
| MD5 |
43b699c3ed30a975ee0375f27c595895
|
|
| BLAKE2b-256 |
9fd740c136bb4d53bb3c310758a3449a0dcd5a008e186f1f76ffab5c49ee6570
|
File details
Details for the file eip2nats-1.3.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c17a08ab7dbf953e85cf726db59cc2a2efa376a535f0a0e5e147af1c4ad8be0f
|
|
| MD5 |
3ca0d60fa800c755fbbfc5e3660f1ff7
|
|
| BLAKE2b-256 |
d83f05bf6896ac68babdc91e4c9c25665b476d8e93b80cf8edb31346cb4d53c0
|
File details
Details for the file eip2nats-1.3.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.14, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f6808e98f500059546e46e0b97dc60f9678dd78f65fe3ecb47a5019fa842c4c
|
|
| MD5 |
d1bf8a930deff7edfe078ba32e9648e6
|
|
| BLAKE2b-256 |
7950b9280e1343580207e9bb41099663c7249933d4080ba833312ef72b60c30e
|
File details
Details for the file eip2nats-1.3.2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 420.7 kB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebb0a4e2e2d2f7381ad9bfe22cea262700222051d3a0227ee537f9fd2e02d569
|
|
| MD5 |
8e86a890b1588442ff5e10860bf57769
|
|
| BLAKE2b-256 |
dd4b40a201cc4f77c2dba1397ed26d19d5e00ae8a47fe8bda8f4d66ff3667770
|
File details
Details for the file eip2nats-1.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbd7b3b142ce8dfa4bed1cf2400393fdfd033bcec458b136ad8885291a7f265c
|
|
| MD5 |
1760442236d79c9846bb9bbe0b1900b7
|
|
| BLAKE2b-256 |
2fe285ab23da4f81bdb010b9e0d82c882198af67c5e6e20df48579c5596ad8d6
|
File details
Details for the file eip2nats-1.3.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c1213066c45d6b901c40b605b64ca6b0178bfc4eea583c87b765264267180b4
|
|
| MD5 |
b415dbe52841d7d422156d02972024e5
|
|
| BLAKE2b-256 |
89a94e1af8804c0412dce389175d5ca5e34a3cd725d4714e109dd80151753ebc
|
File details
Details for the file eip2nats-1.3.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 420.7 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9e36e36f11bec17ef3b723cc1d00c6f33715a0f36e2cfacb2a4b4d3382e64b8
|
|
| MD5 |
cf7c0227cac0c2ee28bc40207fd06e8b
|
|
| BLAKE2b-256 |
489e0b39ae35edcab7cc57a5092357312da039e750ef0a11ca78651bcdcecc4c
|
File details
Details for the file eip2nats-1.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c9b3d58188963faa59651dfa61853dffd94fe89ba5e47c7d11357b54bff0803d
|
|
| MD5 |
211a59de1312df7b50440b46bf6daa91
|
|
| BLAKE2b-256 |
a47d779eebaa2c17d2efa337f7155736bc8610e5d7b3e2383fe855f11f2e42ba
|
File details
Details for the file eip2nats-1.3.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a05f7e47808516a127c3abe5090648a6d454daaccd0b077d3bb4bba174d2b51e
|
|
| MD5 |
7820b0d4e8092e75292c382ca9723137
|
|
| BLAKE2b-256 |
2e73a9b54342ad4abe57e0bdad101e9bf79a6c7ac0da3f85878184c9cb1f9e50
|
File details
Details for the file eip2nats-1.3.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 420.0 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8c51fd2c0e1b760befe8c946d8779231aa74bd2e88b95d94134dbb7ba75176c
|
|
| MD5 |
34e1091505278bd6ebdbacaa95ebdddb
|
|
| BLAKE2b-256 |
a088e470a0660fc7f78a1aa8d0f6aee6de985f9d1137cf1e118b0df7207304bc
|
File details
Details for the file eip2nats-1.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01452a2379b01f3815bf7c5f346708950634cb018313c031683b1dc1e546e157
|
|
| MD5 |
ac26f9b8a9c22ae7131ccc9f5a92d08b
|
|
| BLAKE2b-256 |
a2e572b9f98ef3843e9780376ad3233095f06e707def51fe067f9b4f1b7e4c9b
|
File details
Details for the file eip2nats-1.3.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
747a29e6ca1fbbe3ebc5e8ae42bdb95b9b2f90c120c047dbab8940e47ee8c9ca
|
|
| MD5 |
559aea2c618e0549806de57740383852
|
|
| BLAKE2b-256 |
83e454e86e9f101af9e39398fa47aa9abe9cf103b5a5eb2e92a69966ccab59e2
|
File details
Details for the file eip2nats-1.3.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 418.8 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
464d0fbf8fcbb4cbcbe38236b014d726d68e839f0661cdab1fbdfa057806df31
|
|
| MD5 |
051f7e6b4a332481222836aaa4eba5a8
|
|
| BLAKE2b-256 |
944f89af2509fbe4b4e5c1c9963c6d3be1022beccdd4060a2e11742d951d9121
|
File details
Details for the file eip2nats-1.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23f12e8c7ec3c10870837a8a145e8b8809f3ed58c6d8461a208db72846c56e04
|
|
| MD5 |
f6132b041b53f55b6a1a3ad4ecbdae61
|
|
| BLAKE2b-256 |
a168310f24cbc6a825603d1c459685f83ab940b158a0ba41b78da0bf9686c8a4
|
File details
Details for the file eip2nats-1.3.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
578848dd012a881fd0cb664e0c78c537c29e4fe9a5026d1f4dc01625b2b120a1
|
|
| MD5 |
c9d06890a533c1669246413667aa1595
|
|
| BLAKE2b-256 |
044db2ee887f0897f9d2bcd2ba27fac401e160d8e7479f9fd78cc081e42da0d5
|
File details
Details for the file eip2nats-1.3.2-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 418.1 kB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eea1a2b6d9584f4f2690b362b8af6a2b6d73587b7e02bb6bb93aafd46c5799a2
|
|
| MD5 |
6f9f93e7ce597c174fa5191ff80e844e
|
|
| BLAKE2b-256 |
32bc3895567ef62f13af8963db3fcfb874b2572ed185216085f796e66fbe230a
|
File details
Details for the file eip2nats-1.3.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41455e50128bc053d9c54844eeeadb92a1fe16c6016078b391cbcf6111312141
|
|
| MD5 |
69d8e775d697099965cc8df539b2fbb1
|
|
| BLAKE2b-256 |
49d3a2a60c0c34c4ec1c0a2bbf09de4347ccc47961f8ebfd74335fcccdfd861d
|
File details
Details for the file eip2nats-1.3.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.
File metadata
- Download URL: eip2nats-1.3.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.5 MB
- Tags: CPython 3.9, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: Hatch/1.16.3 cpython/3.12.3 HTTPX/0.28.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4c826e8b099963530b7c211d04aff1b53976b93e6982498a6407b5fb4c5b85f
|
|
| MD5 |
aa84cc42e717207bdbdb5438e85767ef
|
|
| BLAKE2b-256 |
d8d635f949e030adfd35f385f89ceac97872630957dd19a8edb03f80841b8ca1
|