Skip to main content

o6\Python

High-performance OPC UA for Python — client and server — built on the native open62541 SDK.

PyPI version Python versions Documentation

You need to talk to industrial equipment — a robot cell, a CNC machine, a packaging line — and it speaks OPC UA. With o6\Python that looks like this:

from o6 import Client

with Client("opc.tcp://localhost:4840") as client:
    print(client.objects.Machine.Speed())     # read it
    client.objects.Machine.Speed(1500)        # write it
    client.objects.Machine.Reset()            # call it

Every OPC UA server publishes an information model: a browsable tree of typed nodes describing what the machine is and what it can do. o6\Python turns that tree into Python objects, so you can point a REPL at a machine you have never seen, type client.objects. and press Tab, and browse the real thing — no vendor PDF, no NodeId spreadsheet.

The same principle runs through the rest of the library. o6\Python is a complete OPC UA stack, client and server: the address space is Python objects, and the protocol underneath is compiled C. Reads, writes, browsing, method calls, subscriptions, events, historical access, custom information models, and the full security stack are all first-class.

pip install o6

Note: The wheel published here runs in evaluation mode. The full Client and Server API is available, with a two hours runtime. See Licensing.

Full documentation: https://docs.o6-automation.com/o6-python/


Why this is different

OPC UA is a superb protocol wrapped in a miserable developer experience: numeric node IDs carry the meaning, XML files have to be shipped and parsed at startup, and every value arrives as a Variant to unwrap and cast by hand.

The promise of OPC UA is that the semantics travel with the protocol, so no manual is needed to know what a value means. In practice one manual is often traded for another, and the effort shifts from speaking N protocols to understanding OPC UA itself. o6\Python is built to keep that promise: the semantics are already there, and using them should not require studying the protocol first.

Typical OPC UA constraints o6\Python
ns=4;i=6021 with the meaning in a comment DeviceHealthEnumeration.NORMAL, autocompleted
Ship the NodeSet2 XML, parse it on every start from o6.ns import di, compiled into the package
A Variant you unwrap and cast to the right type A plain, correctly-typed value
Read a vendor PDF to find a node's id Press Tab in a REPL — names and descriptions included
Structures arrive as opaque extension objects Structures arrive as your classes, with .pyi stubs
Commit to a process model up front One call syntax, with or without await
Nodesets in cumbersome XML Nodesets as readable Python, compiled from XML or written directly

What you get

Native speed. The protocol stack is compiled C, and it shows in both roles — see the benchmark results.

Client and server, one API. Connect to existing servers or expose your own address space, with the same types and conventions — and the same calls work synchronously or with await inside asyncio, so an application never has to commit to a concurrency model up front.

More than 130 companion specifications, included. Machinery, Robotics, Machine Tools (umati), PackML, EUROMAP, Machine Vision, UAFX and many more ship as importable, fully type-annotated Python namespaces, alongside a compiler for your own NodeSet2 XML files.

Information models written in Python. Declare object types, variable types, structures, enumerations, and methods with decorators. The server builds the nodes, and from that point the classes are your API.

Typed against the specification. NumPy-backed builtin scalars, generated .pyi stubs for structure fields, IDE autocompletion, mypy-checkable signatures.

Secure by default. Encrypted channels, the full range of security policies and modes, certificate and username authentication, and role- and permission-based access control — a foundation intended for products that go through official OPC UA certification.

Prebuilt wheels. CPython 3.11–3.14 on Linux, macOS, and Windows, for x86-64 and ARM64. No compiler, no CMake, no C toolchain.

Quick start

A Client is a context manager: connect it in a with block, and the secure channel and the session open on entry and close on the way out — including when your code raises. Address values by NodeId; the familiar string form works wherever a NodeId is accepted.

import o6
from o6 import Client

with Client("opc.tcp://localhost:4840") as client:
    value = client.read("ns=1;s=IntegerVariable")
    client.write("ns=1;s=IntegerVariable", o6.UInt32(42))

Batch reads and writes: hand read a list or write a dict, and the whole group travels in a single service call rather than one round trip per value.

Walking the server as an object tree

Start from one of four entry points on a connected client — client.root, client.objects, client.types, and client.views — and step one level deeper into the live server with every ..

variables = client.objects.MyVariables

print(variables.MyInteger())                      # read
variables.MyInteger(42)                           # write
print(client.objects.TestMethods.Hello("o6"))     # call a method

For browse names that are not valid Python identifiers, use bracket syntax — it takes a whole path, as in client.objects["MyDevice/Temperature Setpoint"].

Subscribe, stop polling

Subscribe in a single line, and the server reports changes as they occur. Use client.monitorEvent for events.

client.monitor("ns=1;s=IntegerVariable", lambda v: print(v), samplingInterval=500.0)

A full server in two calls

from o6 import Server

server = Server(port=4840)
server.start()

That is a running OPC UA server with a standard address space. Add your own content from there, imperatively at runtime or declared as types.

The same client, asynchronously

Nothing changes but the await.

import asyncio
from o6 import Client

async def main():
    async with Client("opc.tcp://localhost:4840") as client:
        print(await client.read("i=2258"))   # server time

asyncio.run(main())

Companion specifications, with no XML at runtime

A companion specification is an information model agreed on by an industry group. It fixes the model of a device, machine, or process, so that a robot from one vendor and a robot from another expose the same types with the same semantics.

Traditionally, using one means bundling its NodeSet2 XML file with your application, parsing it at startup, and addressing everything inside through numeric IDs. o6\Python compiles them ahead of time instead, so you just import one. More than 130 ship as ordinary Python packages under o6.ns, each exposing its content through five category modules: datatypes, objtypes, vartypes, reftypes, and instances.

import o6
from o6.ns import di            # OPC UA for Devices

# Structures are classes; their fields keep their exact OPC UA types,
# and the package ships .pyi stubs so your editor and mypy know them.
result = di.datatypes.TransferResultDataDataType()
result.sequenceNumber = 42

# Enumerations are enumerations, and inheritance is plain Python inheritance.
di.datatypes.DeviceHealthEnumeration.NORMAL

# Types carry their NodeId, so you never hand-write one.
o6.NodeId(di.objtypes.DeviceType)            # ns=di;i=1002

See the documentation for every packaged specification.

Each one carries its own metadata: URI, version, index, and a shortname. Use the shortname wherever a namespace index is expected, and o6.NodeId("ns=di;i=1002") resolves correctly against servers that number their namespaces differently.

Publish a specification on a server by appending the module (server.ns.append(di)). On a client, declare nothing at all — on connect it matches the server's advertised namespace URIs against what it has compiled in, down to the exact version when the server publishes its metadata.

Your own NodeSet2 XML files join them on equal footing: run the bundled compiler and a *.NodeSet2.xml becomes exactly this kind of Python package — a build step you pay for once, instead of an XML parse on every process start. The generator fails on constructs it cannot represent faithfully, so an unsupported nodeset is a compile error, not a silently incomplete address space.

Information models written in Python

Write your own types the same way you use the packaged ones: declare a namespace, then decorate a class per structure, enumeration, variable type, and object type, using hasProperty and hasComponent for a type's children. There is no XML editor, no modeling tool, and no generate-and-reload cycle between having an idea and running a server that serves it.

# plant.py
import o6
from o6.ns import ns0

o6.ns.namespace("plant", uri="http://example.org/Plant/", version="1.0")

@o6.enumtype(ns="plant", description="Machine state")
class MachineState:
    IDLE = 0
    RUNNING = 1
    FAULT = 2

@o6.variabletype(ns="plant", dataType=o6.Double, valueRank=o6.ValueRank.SCALAR)
class TemperatureType(ns0.vartypes.BaseDataVariableType):
    engineeringUnits: ns0.vartypes.PropertyType = o6.hasProperty(
        ns0.vartypes.PropertyType(dataType=str)
    )

@o6.objecttype(ns="plant", browseName="MachineType")
class MachineType(ns0.objtypes.BaseObjectType):
    state: ns0.vartypes.PropertyType = o6.hasProperty(
        ns0.vartypes.PropertyType(dataType=MachineState)
    )
    temperature: TemperatureType = o6.hasComponent(TemperatureType())
    reset: o6.node.MethodNode = o6.hasComponent(o6.call())

That is a complete information model, carrying the same content a NodeSet2 XML file carries in a few dozen lines a human can read, review in a diff, and comment on in a pull request. Because these are ordinary classes, they compose with the companion specifications: derive from a DI or Machinery type, and your vendor-specific extension is plain subclassing with the standard parts included.

Publish the module on a server, and the classes are your API.

import o6
import plant

server = o6.Server(port=4840)
server.ns.append(plant)
server.start()

machine = plant.MachineType(
    parent=server.objectsNode,
    browseName="M-101",
    values={"state": int(plant.MachineState.RUNNING)},
)

machine.state()                        # 1
machine.temperature(23.5)              # write
machine.temperature.engineeringUnits() # read a property of a property

One instantiation created the object, its properties, its methods, and its whole subtree in the address space, and attribute access reads and writes live values. Import the same module in a client process, and your structures decode as the classes you declared rather than as opaque extension objects.

Requirements

  • CPython 3.11–3.14 (standard GIL build)
  • NumPy ≥ 2.0, < 3
  • Linux with glibc ≥ 2.28 (manylinux_2_28), macOS ≥ 15, or Windows 10 LTSC 2021 / Server 2022 and newer — on x86-64 or ARM64

Licensing

This PyPI package is the commercial build of o6\Python. It is licensed for commercial use; an o6-issued Credential is required for production use.

Without a valid Credential, the package runs in two-hour evaluation mode: the full Client and Server API is available, and the process is terminated with a failure exit status when the two-hour timer expires. See also Credential discovery and Feature Scope

Support

o6\Python is developed, maintained, and supported by o6 Automation, the SDK manufacturer. That includes the associated CRA and cybersecurity obligations. Training, long-term support, and certification assistance are available.

Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

o6-2.0.2-cp314-cp314-win_arm64.whl (6.0 MB view details)

Uploaded CPython 3.14Windows ARM64

o6-2.0.2-cp314-cp314-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.14Windows x86-64

o6-2.0.2-cp314-cp314-manylinux_2_28_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

o6-2.0.2-cp314-cp314-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

o6-2.0.2-cp314-cp314-macosx_15_0_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

o6-2.0.2-cp314-cp314-macosx_15_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

o6-2.0.2-cp313-cp313-win_arm64.whl (6.0 MB view details)

Uploaded CPython 3.13Windows ARM64

o6-2.0.2-cp313-cp313-win_amd64.whl (6.0 MB view details)

Uploaded CPython 3.13Windows x86-64

o6-2.0.2-cp313-cp313-manylinux_2_28_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

o6-2.0.2-cp313-cp313-manylinux_2_28_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

o6-2.0.2-cp313-cp313-macosx_15_0_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

o6-2.0.2-cp313-cp313-macosx_15_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

o6-2.0.2-cp312-cp312-win_arm64.whl (6.0 MB view details)

Uploaded CPython 3.12Windows ARM64

o6-2.0.2-cp312-cp312-win_amd64.whl (6.0 MB view details)

Uploaded CPython 3.12Windows x86-64

o6-2.0.2-cp312-cp312-manylinux_2_28_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

o6-2.0.2-cp312-cp312-manylinux_2_28_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

o6-2.0.2-cp312-cp312-macosx_15_0_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

o6-2.0.2-cp312-cp312-macosx_15_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

o6-2.0.2-cp311-cp311-win_arm64.whl (6.0 MB view details)

Uploaded CPython 3.11Windows ARM64

o6-2.0.2-cp311-cp311-win_amd64.whl (6.0 MB view details)

Uploaded CPython 3.11Windows x86-64

o6-2.0.2-cp311-cp311-manylinux_2_28_x86_64.whl (7.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

o6-2.0.2-cp311-cp311-manylinux_2_28_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

o6-2.0.2-cp311-cp311-macosx_15_0_x86_64.whl (6.8 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

o6-2.0.2-cp311-cp311-macosx_15_0_arm64.whl (6.9 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

File details

Details for the file o6-2.0.2-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 34461d3ae75f0beaf381d5258ff47a53bee2771df886627062c1c67fab228c4b
MD5 40a1e0ba0a7a5fdad63ef9b1f754fbb0
BLAKE2b-256 5d4306fe0b85b4de6684cddefc821654c7e3e5b1465873d7edaab723921ed5fa

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: o6-2.0.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 6.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4b07899a72c071725647ebcd207d8f6ec9854165f8fa552f3c2ed86a762cf376
MD5 5ced98e324a6b187b2a6555eb3272b33
BLAKE2b-256 04d4bc2eeef4eaa51c6f80f5cf2596b6ef1bf0469c625ace94e10671187b9b25

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp314-cp314-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cc048f85eabc8ab395cd372cf513ed912ecdafeac50fdf631bd7a198db1c5a44
MD5 7a30f05f49950576fc538c0e7147bf92
BLAKE2b-256 dca2a7cb4c2aac58740133d11d664af2dc3b8c01cb153ec488ed29c12d592c34

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for o6-2.0.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 56522101238fec6856f0772d5b2b9189984449231532950d2c285b76257a0177
MD5 36405fb0b3551041d74cb51755ae16d9
BLAKE2b-256 99fc4abd1cab4e9cc4d2dec8a13fc2edefc9e47740ab49139c09f2a51eb00935

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp314-cp314-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.14, macOS 15.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 d3f76475cc9d39da5991cba9f814dc5e118c9ec579ee3f05457f72c1a3165ca0
MD5 d08225929b09739564f2935f04d5ff60
BLAKE2b-256 8cda7e0dad01c0d2435c4e9ed8f587f8852330ca036dcc7c9d0b5c5826ec8c96

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp314-cp314-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: CPython 3.14, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e27bb519fa632ebf7f68513c144002fb9223907fa9821ea8cdff55d8750bbe03
MD5 3bd59b6523e9ef666627156cb88681dc
BLAKE2b-256 614457b3b6f50758ca62c8cc15fcf556b01089bd2eb5f91cfaee64489605ca48

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 305efd704fba44f9dc363879282c9088501abaa97a27a871fd3c35175ca289dc
MD5 cb3372e50e8db7fa43ad822130a5c59d
BLAKE2b-256 6641805d870d5c854b7a1ba3279567083c32a3125c23e870ce0b07bb7f14b06c

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: o6-2.0.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b78638ec466bbf4bb18a5dd3778331e4986ef07949de29f17fc15aad77dded11
MD5 cfa508245fa7834b4672735dda283bab
BLAKE2b-256 681c4f71fbb201923777e2db81c7a7a73b3f332437170e0565f33bc964eca9d0

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 07aa8414a65aa646b1f93b76973182e63fb2eb507f14a28fbc218ddf0dce13ae
MD5 241c2f52ad9fa2f5941a4fc6a8e139a4
BLAKE2b-256 6fff5ca582bccf41a2671b31c2c16bf4b269d997076935e7572cf23ff44487ba

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for o6-2.0.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d2bcd46cacfa037dbe3a85df1c3744fe77cf78690edc27c49f1524f97ba95108
MD5 1451036316b0a8eed71572c6a301ab21
BLAKE2b-256 fdf4566aa19b6af5b44c84c0057343990df6663e06dc6e52df65fd051b0d5d0f

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp313-cp313-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.13, macOS 15.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 2d1cc29bc024773cc171c25dd23a7222a550021949a0c5041c2f8fc524be8bc7
MD5 1147e290469f6a47d33e30813004eeae
BLAKE2b-256 233a1fc028cd24611f6b013222bd08ae7b75842b2ee97ce4c7fe047af1194116

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp313-cp313-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: CPython 3.13, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4ed3bb4769c4f4259983c57055eaa7ba3a4d605f6ee90e35f06202a3e43d5345
MD5 4183ce674dbf14c0e5b360ed1fe44900
BLAKE2b-256 0dea80b783661e46357569b2448f93bf2fd75446a3da07b13fcb75a24c6b889d

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 658ced5b42573466593877c924deecf5bc2f07f40d11f31646e016e9abc1dbe0
MD5 f15200a196f963b3ee310700da3ba209
BLAKE2b-256 01d8288b961bdcd1be15fb12eb17005d7b96f271b05781c5f56cb63625275500

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: o6-2.0.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ffb28de66cc008a1f59b24817749b2b3d7b829036154231f18811161d304c7d9
MD5 5d0af1698919581edf3c2aa4c8c73e27
BLAKE2b-256 953499950c1762ad977e059c06f586183b9209345a56a9fa4a0e08f8e06a06f0

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 7.2 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f6df7ca70c91d9aad2e4f7e1a6d6c99c2752f2ca7d953c5cf98cd0d072f1dad
MD5 44460ebcd15440f138f989f3e1f87392
BLAKE2b-256 9bd58aed2cbcf9336237fce56875d74199cd47a68d75f29cd4e00972a38c929e

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for o6-2.0.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3cef53ae080f16ebff01090d0d297a3316b78bb7f347b58240596b03ac60ce7e
MD5 372cbd948f4e4969fbd6673ed7a2b271
BLAKE2b-256 64c2372426d66e24f51831be8613fdc4fb3c537bf32c2560d6a87ac8630a87d9

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp312-cp312-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.12, macOS 15.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 11c61cefe100fca9595f3369be8d021bf22f1aad59b8fb021c7ce864d52ef54d
MD5 09b218ae4961ab60c94c99fedb31d5b5
BLAKE2b-256 b97b1f9814d7bef939f5847473f6136e37a4d068ad4906c1fe8c0e07d6b8d110

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp312-cp312-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: CPython 3.12, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 4c2c927058c7e58fb058b861b1d86da0446872be0eb41db896d861656f9b3782
MD5 4c86fce0bf125c36d144d8c4966bf786
BLAKE2b-256 ae5a65a60ba36c89a37d72ad8ed30f2c68dcdaf4c03443e51c3d4d53ba520480

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 1d0c37ae50e17a319b874bee310c080d8c1143c296d5c3082ba39c98e7034574
MD5 003cbda13f501a2ad5ef1de8652d63ba
BLAKE2b-256 2594b457899dd1703e048293593dad67dfe7cb29c98868584094d01b1e1a5830

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: o6-2.0.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0adcfc7811b6aeb2f5b3a1852ccb18a6958b0c87b7192e308f0326151622a688
MD5 9027ffbc873c1f7d71df1e614a9b16f4
BLAKE2b-256 c65c54f11923920f8399e74df7e46f0d2a146ab761dd76089a2884e1565c81ac

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 15080540322673e87176912c51bb8b9d71a1bf327b6a45f8905f985ffadcc471
MD5 ccd88971226398456fe5af48a4a1ab16
BLAKE2b-256 76f4fe67c8a088928b667f748ae0666818dae000ff76cf40f1cc4025bef6a594

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for o6-2.0.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d5e46f0e42f1d25aa92d2a82901bde0f78cd091d9d38d8cb3f6941e4bfc35c07
MD5 32250c47a0c9a3716bcfce59eba18696
BLAKE2b-256 5dea0365212746dd07ad01104c529d32fe938bb0f4df52ee31728ab26b03e993

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

  • Download URL: o6-2.0.2-cp311-cp311-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.8 MB
  • Tags: CPython 3.11, macOS 15.0+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 e0be62f6637e054800e7bf77a0ee319bc9d4386440bf55ccd06fa9ce41384aea
MD5 8d0ac79527a1714cafc69e785a5603af
BLAKE2b-256 c0d81cb330db0505ad607118134172823f000564b8b3f9291c03ae24f3f6df5e

See more details on using hashes here.

File details

Details for the file o6-2.0.2-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

  • Download URL: o6-2.0.2-cp311-cp311-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 6.9 MB
  • Tags: CPython 3.11, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.7

File hashes

Hashes for o6-2.0.2-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 545bcce9a912e0ac029efad968ad4b9abcc731c38c05cea942e6a24aa36d86b9
MD5 c9bd897e0e7f5dca3559ab2830a14a49
BLAKE2b-256 c55416e0ed8f6bcc6545d12d94ed473744c13800c3b12593336c64a17b8128f6

See more details on using hashes here.

Release history Release notifications | RSS feed

2.1.0

24 files

2.0.3

24 files

This release

2.0.2 This release

24 files

2.0.1

24 files

1.0.6

16 files

1.0.5

16 files

1.0.3

16 files

1.0.2

6 files

1.0.1

12 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page