// the find
pymodbus-dev/pymodbus
A full modbus protocol written in python
A pure-Python implementation of the full Modbus protocol, with client, server, and a web-based simulator, supporting TCP, UDP, serial (RTU/ASCII), and TLS transports with both sync and async APIs. It's aimed at anyone integrating with Modbus devices (PLCs, sensors, meters) from Python, and it's already the Modbus backbone inside Home Assistant.
Zero required third-party dependencies (pyserial is optional, only needed for serial transport), which keeps it easy to vendor into constrained environments like a Raspberry Pi. The simulator with a web UI is genuinely useful — you can model a device's register layout and even inject broken or malformed responses to test your error handling without real hardware. Typed API (py.typed) and claimed 100% test coverage across Python 3.10-3.14 on Windows/Linux/macOS gives some confidence the protocol edge cases are actually exercised, not just happy-path tested.
The project explicitly states it does not follow semver, and even patch (Z) releases are documented as capable of changing return behavior — that's a real risk for anything pinning loosely in production. There's no architecture documentation at all (the README says so directly), so understanding the internals beyond the public client/server API means reading source. The sync client/server APIs are just wrappers around the async implementation rather than independent code paths, which is fine for most uses but can surface odd behavior under threading or blocking I/O edge cases. Support is scoped to standard Modbus only — vendors with non-standard quirks (which is common in this space) are explicitly out of scope.