// the find
FreeOpcUa/python-opcua
LGPL Pure Python OPC-UA Client and Server
Pure Python OPC UA client and server implementation covering most of the IEC 62541 binary protocol. Targets industrial automation developers who need to talk to PLCs, SCADA systems, or build OPC UA servers in Python. The library is explicitly deprecated in favor of opcua-asyncio, so new projects should go there instead.
- Genuinely wide protocol coverage: subscriptions, events, history, encryption, certificate auth, method calls — tested against real industrial stacks like Beckhoff, Kepware, and B&R
- Most UA structures are autogenerated from the official XML spec, so the binary encoding is unlikely to have hand-written bugs and adding missing types is mechanical
- Good set of CLI tools (uaread, uawrite, uasubscribe, etc.) that make manual testing and debugging against real servers practical without writing any code
- Address space caching via shelve solves a real pain point on embedded hardware like Raspberry Pi where cold-start was 125s vs 3.5s with cache
- Officially deprecated — the maintainers explicitly tell you to use opcua-asyncio instead, so you're adopting a dead end for anything beyond bug fixes
- Threading model predates asyncio and uses blocking I/O with threads; concurrent operations or high-subscription-count scenarios will hit GIL contention and are harder to reason about than the async successor
- Several significant OPC UA features are missing or incomplete: no XML protocol transport, no UDP, no session restore, no alarms, no views, weak multi-user security model
- Travis CI badge is broken (Travis discontinued free tier for open source), test infrastructure hasn't been updated, and last meaningful activity suggests the codebase is in maintenance-only mode