finds.dev← search

// the find

FreeOpcUa/python-opcua

★ 1,482 · Python · LGPL-3.0 · updated May 2024

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

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →