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.3-cp314-cp314-win_arm64.whl (6.1 MB view details)

Uploaded CPython 3.14Windows ARM64

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

Uploaded CPython 3.14Windows x86-64

o6-2.0.3-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.3-cp314-cp314-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

o6-2.0.3-cp314-cp314-macosx_15_0_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

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

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows ARM64

o6-2.0.3-cp313-cp313-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.13Windows x86-64

o6-2.0.3-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.3-cp313-cp313-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

o6-2.0.3-cp313-cp313-macosx_15_0_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

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

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows ARM64

o6-2.0.3-cp312-cp312-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.12Windows x86-64

o6-2.0.3-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.3-cp312-cp312-manylinux_2_28_aarch64.whl (6.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

o6-2.0.3-cp312-cp312-macosx_15_0_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

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

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.11Windows ARM64

o6-2.0.3-cp311-cp311-win_amd64.whl (6.1 MB view details)

Uploaded CPython 3.11Windows x86-64

o6-2.0.3-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.3-cp311-cp311-manylinux_2_28_aarch64.whl (6.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

o6-2.0.3-cp311-cp311-macosx_15_0_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

o6-2.0.3-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.3-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: o6-2.0.3-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 6.1 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.3-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 0ffd9fe1bd876f1879214dc03dc58dd93c2c3aa594277f49cb46fb6364b347e0
MD5 161932ddc0aad376c43b78fa85ed5f25
BLAKE2b-256 0bc3d5942859337b9f5a6cffbd5555a5f3ea916bbdc94534d54f98db3b548297

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 97a16e2eff61c7deeb83124cfec3f787f0c0512f5e414f3cbb6dd5ed36d78256
MD5 28c8d0f0a7967d556780d7c3a41910aa
BLAKE2b-256 fb7ee4137b1c48022e45eccac652ffe2c66bb86d43a9ad46342b18732743c68d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ef329c737a8694a2a740e3d7beec2c23bf66ed53b72a876ecb717303f888d4bd
MD5 e52dfaf6fc15ec4fe672d4b68cc2f956
BLAKE2b-256 7858e5d759efebe81dc1c3388d77f086fe0116beb0f72238b825c4902bbba942

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for o6-2.0.3-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b140a5cbf3fdd63f275998388b19155f410fabd22d78c22565427244862ee4f1
MD5 016e80d7b5d6bf41df03a6dc12f31ede
BLAKE2b-256 cf7425ac156cb6115a35b409e1da206c4bf591202c534c86c8cdeed5dd70f486

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-cp314-cp314-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.9 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.3-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 d4ea360baf25de5391339303c214764da6245f83a2680a92c6575083f9e8938f
MD5 8efe9042a557706bfd34251309146b5b
BLAKE2b-256 8cd0d9a01cf6114c05a4f2b74a420ec9b7605e04b100b52e1ca1394fbeda6239

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 17e259ccd06051c64697c7259ccd028657d8b08c0c84835a4ed6a1d34e900af1
MD5 425deff6af3726d9113174c08a766641
BLAKE2b-256 603cd42acf44f236f55cf1a727a6fd65884200f49909bb796717eea625b34334

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 b7b876af7d86836f13c878d73ed2e186d193dad71f1648d98c450e11425c2e09
MD5 64f43adfdad17f7d603546d3b11a5883
BLAKE2b-256 49b94fe2ee8330011e68a0b5cb7b66bd20fdfb3f5322557e379a2caca11f0f35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 6.1 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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 36406f99d545851978b3e186820f6b2e04a3e5d47ebf174a0fff81d92ca1b70d
MD5 7fb96d81333fa5860961d7fe0350875f
BLAKE2b-256 d744c0c1ad674074ebe61c8eff7fd4cc0ea87d5aab3ac45ecfdcec1bd844fbe7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 940909d5807daa8e3a3b0c291480aaf7bc43116fc44d471a794133e7004a8692
MD5 e6fd521be060f6edf61b10631c28c1b3
BLAKE2b-256 e670a3523d87811fee1cb3295ce40ec53c619a5a334c51a63f133e54da975933

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for o6-2.0.3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5e5125d29e6d9bd1a222ca1aab2a78dcc763d24b24b5811f2afe06cadae57380
MD5 c1fbd369afb71b4b80d26cf7dde85a83
BLAKE2b-256 6878c887e2e4ec1176c16cc759d697d3fa91daefde26de39b5066c6adec2f52d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-cp313-cp313-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.9 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.3-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 ad5f5901cf111614be83f688c84b413785ab8285c9d225784cfcb3aba4eccc29
MD5 81a80d496be0ebc968ce757da8efbcbf
BLAKE2b-256 58081cfab95f281bae26183e189e2ce92152e1ef23af19bd45a2080826d30f39

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 2558f2573931eae1654f59f8e2d791573f4dc382753896f2038a75981a77398d
MD5 3bffa2e61bdc3fd17005aef9bf74e085
BLAKE2b-256 58e0a69efe26c6b868838f5b3df9101558612a9e5ea684c4d3e57921622ed738

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 a543b5066c9273350f6fc4ec1fa8d7f68db91a2e3433c05b53b51e1425ccb0b8
MD5 5862dc9ed4a03329b061051d7eea9ecf
BLAKE2b-256 f7cd5c734f58931b1b792d85d4446b202a3fcf56c7f1b6cbfcdb4c09f60701b1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 6.1 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a5a205974cac6ebac8d7750595fe8502388c80df8a662e12e57f79f17ef34422
MD5 2785a1cbd729c2bc4ee4f67423672dd6
BLAKE2b-256 6d596e61aa0cd7f2c3554e6c97eb3dfc076e6d76e386ed848bf79f5df053f1cf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 077ccb92189ad7b68c7744078e905cbebf713fd330da785177a65131b736890e
MD5 67e45286301be38ab4621588f0ff69af
BLAKE2b-256 5599bd0a7b6d4e9c9221607992b4ae51967f9d74875332095db5d0df164476d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for o6-2.0.3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c58d834b653e0b8c08c97e9bf0b354c6f9555da9137581a7f9ed89b9182bb920
MD5 c196ababd059a64fa38f374d8494004e
BLAKE2b-256 8fcd9f5e183a193ed72d01bb1f03b077a785392877bcc2efcd413d711ace5520

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-cp312-cp312-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.9 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.3-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 bc48a24d9290a3522ad19f020889d2f5e8515a287fbaf573db3ec5f5519a31a8
MD5 8be7e922086a9ae6b5fecab9447b3940
BLAKE2b-256 a644e5c18667954563718b7d3a48982a4a7cd19ad92d63fded7951db969248da

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f4660a7641c9606f50fd4cd1f07ebe611da9bc02b49e45161cf333734eca725c
MD5 7b6b43ce4956839fa0cd80a68ba47140
BLAKE2b-256 80f72310e4c13532da65b00780c87d94e5d4152fb9131b56802ceac8efe6265a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 49a852eafbf143d36cda15f1019b35e79dcce3bc7fbe6aa4d50f0c879d05662c
MD5 7eee254e10cda8b2315a4f1e09372859
BLAKE2b-256 764ac1b9ced103ba81bea4e99e270dbb14b22b10a046bec3d157810d45451204

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 6.1 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 dc1a17866f86783d3526e594a4e01fa2d818141090029091888e5902e0d56ae1
MD5 07b496bcd4ba574673d38c0627e7bed2
BLAKE2b-256 dbf39344d972c37cc11da775678621fd9d77189b8273d45266f322d23b1be727

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a416a162f25c4d878dcadbcd1f3b51ef0d84d626331dd39f50e17cc2af75ff7
MD5 d439138cb1430875d6c2ec5670cb4847
BLAKE2b-256 c090be98a26dcd52088812598f40c9468820719b4c839ecc9cb094b23a2941a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for o6-2.0.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2cda142bb0a46656452597e1023a272c9bdf1a21e095556e935b9751581fed14
MD5 3ba15575db0d12f427d1f3000be47a7c
BLAKE2b-256 9d6545312418799d5784caa130ea5c5f1138fde23e4c2a12c009496e74c9c1a7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-cp311-cp311-macosx_15_0_x86_64.whl
  • Upload date:
  • Size: 6.9 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.3-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 f5a02139817e29e1f0ee5cf0ae55ad4d68d4242ecc205c11e10d46bf6ca258a6
MD5 6e332e682f2434218f5e0b597b837221
BLAKE2b-256 93d24866642ae6755e11f63eb9043c643425de68d5772c7dab6bdd5cdd8858a6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: o6-2.0.3-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.3-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 cd8fc4df23935abc0accfb90beddb9685895e87f5256e7aa383d484c97579d06
MD5 52c8fb770d67a2218f69b76869bbaf63
BLAKE2b-256 162c9b3a51b73fa35f578b09c593448c3836e406508cb547d7dcb4e4c3d9327e

See more details on using hashes here.

Release history Release notifications | RSS feed

2.1.0

24 files

This release

2.0.3 This release

24 files

2.0.2

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