Skip to main content

odis-python

PyPI

Python bindings for the odis Formal Concept Analysis library, powered by Rust and PyO3.

Background

Formal Concept Analysis (FCA) works on formal contexts — cross-tables pairing objects with attributes via a binary incidence relation — and derives the complete lattice of formal concepts from them. odis implements the core FCA algorithms in Rust and exposes them through this Python interface. For an introduction to FCA see Uta Priss's FCA page.

Installation

Released package (PyPI)

pip install odis-python

Development build (from source)

Requires a Rust toolchain and maturin.

git clone https://github.com/domduerr/odis-python
cd odis-python
pip install maturin
maturin develop --release

Quick Start

from odis import FormalContext

ctx = FormalContext.from_file("odis/test_data/living_beings_and_water.cxt")
print(f"Objects: {ctx.objects}")
print(f"Attributes: {ctx.attributes}")
concepts = list(ctx.concepts())
print(f"Number of concepts: {len(concepts)}")

FormalContext

FormalContext stores a set of objects, a set of attributes, and a binary incidence relation mapping object–attribute pairs.

Construction

from odis import FormalContext

# Empty context
ctx = FormalContext()

# From a .cxt (Burmeister) file
ctx = FormalContext.from_file("odis/test_data/living_beings_and_water.cxt")

# From a dict mapping each object to its set of attributes
animals = FormalContext.from_dict({
    "cat":  {"has_legs", "has_fur", "can_move"},
    "fish": {"lives_in_water", "can_move"},
    "fern": {"needs_chlorophyll"},
})

The examples below all use ctx as loaded from living_beings_and_water.cxt, whose objects are fish leech, bream, frog, dog, water weeds, reed, bean and corn. Note that fish leech is one object — the animal — not two.

Introspection

n_objects, n_attributes = ctx.shape   # e.g. (8, 9)
n = len(ctx)                          # same as ctx.shape[0] — number of objects
print(ctx.objects)                    # ['fish leech', 'bream', 'frog', ...]
print(ctx.attributes)                 # ['needs water to live', ...]
print("frog" in ctx)                  # True — tests object membership
print(repr(ctx))                      # human-readable summary

Incidence Access

# Read: does object have attribute?
val = ctx["frog", "lives in water"]   # True
val = ctx["frog", "breast feeds"]     # False

# Write
ctx["frog", "lives in water"] = False
ctx["frog", "lives in water"] = True

Mutation

# Add an object with no attributes
ctx.add_object("shark")

# Add an object with some pre-set attributes. Re-using an existing name
# raises ValueError.
ctx.add_object("whale", {"needs water to live", "can move", "breast feeds"})

# Add a new attribute column
ctx.add_attribute("is_endangered")

# Remove
ctx.remove_object("shark")
ctx.remove_object("whale")
ctx.remove_attribute("is_endangered")

# Rename
ctx.rename_object("frog", "toad")
ctx.rename_attribute("needs water to live", "aquatic")

Serialisation

# Save to .cxt file
ctx.to_file("/tmp/my_context.cxt")

# Deep copy — mutations to the copy do not affect the original
copy = ctx.copy()
copy.add_object("clone_only")
assert "clone_only" not in ctx.objects

FCA Repository

Contexts published in the FCA literature can be downloaded from the FCA repository:

# Browse the catalogue
for entry in odis.repository_catalog():
    print(entry.title, entry.objects, "x", entry.attributes, entry.language)

# Load one, either by file name ...
ctx = odis.FormalContext.from_repository("livingbeings_en.cxt")

# ... or straight off a catalogue entry
entry = next(e for e in odis.repository_catalog() if e.filename == "triangles_en.cxt")
ctx = entry.load()

A RepositoryEntry carries filename, title, source, objects, attributes, language, description, note and url. Everything but filename and title is optional in the catalogue and may be None or empty. A failed download raises ConnectionError.

Derivation Operators

# Extent: the set of all objects sharing every given attribute
extent = ctx.extent(["needs water to live", "can move"])

# Intent: the set of all attributes shared by every given object.
# Names that are not in the context are dropped silently, so a typo here
# quietly computes the intent of a smaller set instead of raising.
intent = ctx.intent(["fish leech", "bream"])

# Attribute hull (closure of an attribute set under the Galois connection)
hull = ctx.attribute_hull(["needs water to live"])

# Object hull (closure of an object set)
ohull = ctx.object_hull(["frog"])

# Upper neighbor: the extent of the concept directly above the given concept
# in the lattice (the least concept with a strictly larger extent)
neighbor = ctx.upper_neighbor(["frog"])

# All results are LabelSets — iterate or convert freely
print(list(extent))        # ['bream', 'dog', 'fish leech', 'frog']
print("frog" in extent)    # True or False

Drawing Shortcut

FormalContext provides convenience methods to draw the concept lattice without instantiating a Drawing object; see Drawing for the full API.

svg_str = ctx.draw_svg("dimdraw", width=800, height=600)
drawing  = ctx.draw("dimdraw")

Concepts

FormalContext.concepts() returns a ConceptCollection (eager, indexable) or a ConceptGenerator (lazy, forward-only). Each element is a Concept with .extent and .intent properties.

# Eager (default) — all concepts materialised at once
concepts = ctx.concepts()
print(f"Found {len(concepts)} concepts")

# Access by index
first = concepts[0]
print(list(first.extent))   # objects in this concept
print(list(first.intent))   # attributes in this concept

# Iteration with unpacking
for extent, intent in concepts:
    print(list(extent), "→", list(intent))

Lazy concepts are covered under Lazy Generators & Mutation Guard.

Implications

The canonical implication basis (Duquenne–Guigues basis) is the smallest set of implications that logically entails all implications valid in the context.

basis = ctx.canonical_basis()
print(f"Basis size: {len(basis)}")

for impl in basis:
    print(list(impl.premise), "→", list(impl.conclusion))

# Access by index
imp = basis[0]
print(list(imp.premise))     # antecedent attributes
print(list(imp.conclusion))  # consequent attributes

# Optimised variant (same result, faster in practice)
basis_opt = ctx.canonical_basis_optimised()

Iterating pseudo-intents one at a time with next_preclosure:

# next_preclosure(basis, current) returns the next closed attribute set in
# lectic order. Terminates naturally when len(result) == number of attributes.
n_attrs = len(ctx.attributes)
current = frozenset()
while len(current) < n_attrs:
    nxt = ctx.next_preclosure(basis, current)
    if len(nxt) == n_attrs:
        break
    print(list(nxt))
    current = nxt

Attribute Exploration

Attribute exploration is an interactive algorithm that discovers the canonical basis by consulting an oracle (a Python callback) about whether proposed implications hold. The oracle may reject an implication by supplying a counterexample.

def my_oracle(premise, conclusion):
    """Called for each proposed implication.

    premise and conclusion are LabelSets (iterable over strings).
    Return True to accept; return (name, attrs) to reject with a counterexample.
    """
    print(f"Does: {list(premise)}{list(conclusion)}?")
    return True  # accept everything: the result is the canonical basis

basis = ctx.attribute_exploration(my_oracle)
print(f"Discovered {len(basis)} implications")

The callback receives two LabelSet arguments — premise and conclusion:

  • Return any truthy non-tuple value (e.g. True) to accept the implication.
  • Return (name: str, attributes: Iterable[str]) to reject it with a counterexample.

When a counterexample is provided, attribute_exploration adds that object (with the given attributes) to the context and continues.

A counterexample has to be one: the object must have every attribute of the premise and miss at least one of the conclusion. An object that does not refute the implication leaves it valid, so it is proposed again — and an oracle that keeps answering with the same object never terminates. Deriving the counterexample from the premise itself is always safe:

rejected = 0

def counterexample_oracle(premise, conclusion):
    global rejected
    if "can move" in list(premise):
        rejected += 1
        # Has exactly the premise, so it misses the conclusion by construction.
        return (f"counterexample_{rejected}", set(premise))
    return True

ctx_copy = ctx.copy()
basis = ctx_copy.attribute_exploration(counterexample_oracle)
print(f"{rejected} rejected, {len(basis)} implications, {len(ctx_copy.objects)} objects")

Drawing

Poset lets you directly define a partial order. Edges describe the covering relation: (u, v) means node u is directly below node v (u ≺ v), given as 0-based indices into the node list. Cycles are rejected with ValueError.

from odis import Poset

# Diamond lattice
p = Poset(
    ["bottom", "left", "right", "top"],
    [(0, 1), (0, 2), (1, 3), (2, 3)],
)

# Quick SVG
svg = p.draw_svg("dimdraw", width=800, height=600)
with open("order.svg", "w") as f:
    f.write(svg)

# Drawing object for programmatic access
drawing = p.draw("dimdraw")
if drawing is not None:
    for node in drawing.nodes:
        print(f"{node.object_labels[0]}: ({node.x:.1f}, {node.y:.1f})")
    print(drawing.edges)   # list of (u, v) covering-relation pairs

Concept Lattice Drawings

odis can draw the concept lattice as a directed graph. Three layout algorithms are available: "dimdraw" (dimension-based, default), "sugiyama" (hierarchical) and "dimflux" (a DimDraw layout refined into an additive one by a force-directed model, which spreads the nodes away from the edges they are not part of). "dimflux" needs the objects and attributes of a concept, so it is available on a context but not on a bare Poset.

timeout_ms bounds the layout search and defaults to one second. Pass timeout_ms=None to search until the layout is a proven optimum — the cost of that proof climbs steeply with the size of the lattice, so it is opt-in.

# Quick SVG string — no intermediate Drawing object required
svg = ctx.draw_svg("dimdraw", width=800, height=600)
with open("lattice.svg", "w") as f:
    f.write(svg)
# Full Drawing object for programmatic access
drawing = ctx.draw("dimdraw")
if drawing is not None:
    print(f"Nodes: {len(drawing.nodes)}")
    print(f"Edges: {drawing.edges}")              # list of (from_idx, to_idx) tuples
    print(f"Coordinates: {drawing.coordinates}")  # raw layout (x, y) per node

    for node in drawing.nodes:
        print(f"  node {node.index}: ({node.x:.1f}, {node.y:.1f})")
        print(f"    reduced objects:    {node.object_labels}")
        print(f"    reduced attributes: {node.attribute_labels}")

    # Convert to SVG from Drawing object (useful for custom sizes)
    svg2 = drawing.to_svg(ctx, width=1200, height=800)
    with open("large_lattice.svg", "w") as f:
        f.write(svg2)

# Jupyter notebook: display inline (requires IPython)
try:
    from IPython.display import SVG, display
    display(SVG(data=svg))
except ImportError:
    pass  # not running in a notebook

DimFlux

"dimflux" starts from the DimDraw layout and projects it into the space of additive diagrams, where every concept sits at the sum of one vector per object in its extent and per attribute in its intent. A force-directed model then spreads the nodes away from the edges they are not part of, without letting them leave the cells DimDraw put them in.

Two properties follow, and both help a reader: equal steps through the lattice are drawn as equal vectors — so a distributive part of the lattice comes out as a grid of parallelograms — and concept nodes keep their distance from unrelated edges.

ctx = FormalContext.from_file("odis/test_data/living_beings_and_water.cxt")

# The same lattice under each of the three layouts
for algorithm in ("dimdraw", "sugiyama", "dimflux"):
    svg = ctx.draw_svg(algorithm, width=800, height=600)
    with open(f"lattice_{algorithm}.svg", "w") as f:
        f.write(svg)

# The additive structure shows up in the coordinates: two covering edges that
# add the same objects and drop the same attributes come out as the same vector.
from collections import defaultdict

drawing = ctx.draw("dimflux")
xy = drawing.coordinates
families = defaultdict(list)
for lower, upper in drawing.edges:
    step = (round(xy[upper][0] - xy[lower][0], 6),
            round(xy[upper][1] - xy[lower][1], 6))
    families[step].append((lower, upper))

parallel = {step: edges for step, edges in families.items() if len(edges) > 1}
print(f"{len(drawing.edges)} edges drawn as {len(families)} distinct vectors")
print(f"{len(parallel)} of those vectors are shared by more than one edge")

"dimflux" spends its search budget on the DimDraw layout it starts from, so timeout_ms trades quality against time just as it does for "dimdraw":

quick = ctx.draw("dimflux", timeout_ms=100)     # good enough to look at
better = ctx.draw("dimflux", timeout_ms=5000)   # a longer search for the base layout

Because it needs the objects and attributes behind each node, "dimflux" is available on a FormalContext but not on a bare Poset, which carries only the order.

Titanic

The Titanic algorithm enumerates iceberg concepts — concepts whose extent meets a minimum support threshold. Useful for large or sparse contexts where only frequent concepts are of interest.

from odis import FormalContext, Titanic

ctx = FormalContext.from_dict({
    "a": {"x", "y", "z"},
    "b": {"x", "y"},
    "c": {"x", "z"},
    "d": {"y", "z"},
    "e": {"x"},
})

iceberg = Titanic()

# Only enumerate concepts with at least 2 objects in their extent
top_concepts = iceberg.enumerate(ctx, min_support=2)
print(f"Iceberg concepts (support ≥ 2): {len(top_concepts)}")
for c in top_concepts:
    print(f"  extent={list(c.extent)}, intent={list(c.intent)}")

LabelSet

LabelSet is a set-like view of string labels. It is returned by derivation operators (extent, intent, attribute_hull, object_hull, upper_neighbor), implication properties (premise, conclusion), and concept properties (.extent, .intent).

intent = ctx.intent(["fish", "leech"])

# Membership test
print("can move" in intent)   # True

# Iteration — yields strings directly, no index translation needed
for attr in intent:
    print(attr)

# Convert to standard Python containers
as_list = list(intent)
as_set  = set(intent)

Lazy Generators & Mutation Guard

Passing lazy=True to concepts() or canonical_basis() returns a generator that produces one concept/implication at a time without materialising the full collection. Lazy generators hold a shared reference to the context's internal state, so any mutation while a lazy generator is alive raises RuntimeError.

ctx = FormalContext.from_file("odis/test_data/living_beings_and_water.cxt")

# Create a lazy generator
gen = ctx.concepts(lazy=True)

# Iterating is safe
first = next(gen)
print(list(first.extent))

# Mutating while the generator is alive raises RuntimeError
try:
    ctx.add_attribute("new_attr")       # raises RuntimeError
except RuntimeError as e:
    print(f"Caught: {e}")

# Release the generator first, then mutate freely
del gen
ctx.add_attribute("new_attr")          # OK

The same guard applies to canonical_basis(lazy=True) and Titanic().enumerate(ctx, ..., lazy=True).

Error Reference

Exception When raised Example trigger
FileNotFoundError .cxt file path does not exist FormalContext.from_file("missing.cxt")
OSError Other I/O error reading a file Unreadable file permissions
ValueError Malformed .cxt file Invalid Burmeister format
KeyError Unknown object or attribute name ctx["ghost", "flies"]
ValueError Duplicate object or attribute name ctx.add_object("frog") when already present
RuntimeError Mutation while a lazy generator is alive ctx.add_attribute("x") during active generator
ValueError Unknown drawing algorithm ctx.draw("unknown_algo")
ValueError Non-positive SVG dimensions ctx.draw_svg("dimdraw", -1, 600)

Download files

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

Source Distribution

odis_python-2026.9.1.tar.gz (66.9 kB view details)

Uploaded Source

Built Distributions

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

odis_python-2026.9.1-cp314-cp314t-win_arm64.whl (2.1 MB view details)

Uploaded CPython 3.14tWindows ARM64

odis_python-2026.9.1-cp314-cp314t-win_amd64.whl (2.1 MB view details)

Uploaded CPython 3.14tWindows x86-64

odis_python-2026.9.1-cp314-cp314t-win32.whl (1.8 MB view details)

Uploaded CPython 3.14tWindows x86

odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_i686.whl (2.4 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_armv7l.whl (2.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390x

odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64le

odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl (2.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ i686

odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7l

odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

odis_python-2026.9.1-cp314-cp314t-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

odis_python-2026.9.1-cp314-cp314t-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

odis_python-2026.9.1-cp39-abi3-win_arm64.whl (2.2 MB view details)

Uploaded CPython 3.9+Windows ARM64

odis_python-2026.9.1-cp39-abi3-win_amd64.whl (2.2 MB view details)

Uploaded CPython 3.9+Windows x86-64

odis_python-2026.9.1-cp39-abi3-win32.whl (1.8 MB view details)

Uploaded CPython 3.9+Windows x86

odis_python-2026.9.1-cp39-abi3-musllinux_1_2_x86_64.whl (2.8 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ x86-64

odis_python-2026.9.1-cp39-abi3-musllinux_1_2_i686.whl (2.4 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ i686

odis_python-2026.9.1-cp39-abi3-musllinux_1_2_armv7l.whl (2.3 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARMv7l

odis_python-2026.9.1-cp39-abi3-musllinux_1_2_aarch64.whl (2.6 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

odis_python-2026.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

odis_python-2026.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (2.3 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ s390x

odis_python-2026.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (2.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ppc64le

odis_python-2026.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl (2.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ i686

odis_python-2026.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.1 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARMv7l

odis_python-2026.9.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

odis_python-2026.9.1-cp39-abi3-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

odis_python-2026.9.1-cp39-abi3-macosx_10_12_x86_64.whl (2.5 MB view details)

Uploaded CPython 3.9+macOS 10.12+ x86-64

File details

Details for the file odis_python-2026.9.1.tar.gz.

File metadata

  • Download URL: odis_python-2026.9.1.tar.gz
  • Upload date:
  • Size: 66.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1.tar.gz
Algorithm Hash digest
SHA256 c46c2da4e783bb62c6905300e96de2078dc0fce947894fa8421ea6f9f68afb82
MD5 9b656834b04e30f47181e54223f34113
BLAKE2b-256 d9df77e2b286ea6de4e43d28bf5983f45ff8fc2903a433b3b5528e396c31a5f0

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 ca300128675a96c072ca11f0e0cb71a208850c518dc8342bf2397f6d325d76a7
MD5 32b8b8fa855a9d4ab09347bc08e45a28
BLAKE2b-256 7e39d97f5d9c08fa1d20927336f79b25b9afd0217222cf97de3c9b4e26b26d26

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 e2e541a9de74383e4e19e4cb349ad02205d295b8403ede0973e3359989e9c57a
MD5 d75536618c9c555c4376da862e965733
BLAKE2b-256 7c06d26f123b24c0778689768262d4c33e81c015687e29f7c19719ea3551fd04

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-win32.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 600db26db7bb2b4d841b7b4534f54b00deb6c123c4edc15f88101ddef2f866ea
MD5 8288e4428a78b245daa434e1771dcb0c
BLAKE2b-256 8d9e9a03a98360d21e298e19f3e2ac3a6746d9ff2fd4f482e8c49470a0cf83ec

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2596e4d281b9b368a96f81bc46a8ac62d185a42ad0b7d59bbb3e00d37fdb852f
MD5 919776f26791762c7b84edca46889a12
BLAKE2b-256 d1e83baecd6de1370872a97db651e8a24ca69343461cabf7f7d293ccf65cceda

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 86bccf3deccca3df543f2e265a7742c39e18f543e3470ef75d163ecec4342c4d
MD5 c45cdbb8e43790207932cdcec4afbb7b
BLAKE2b-256 cfb26b17656569881beccfb8779a5b4cea2746b17db84f25a21939677e831577

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 9a5621b853f67a597acdb913ab24d19e528e64f343d7f8d48da7242fee3bafc3
MD5 623475d8f1e7fefede0145589093f254
BLAKE2b-256 b7fc81af7c5e59580711fedd887cdf6d8ecd0e2d45a524bcaed6a5713deec26c

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ac82f26f0a65bd596f7c1f6ad898d8666f691f0f41a824a29ee1858dafc9c4b6
MD5 80ed902ab99e532af85ad53436e4c49c
BLAKE2b-256 bf3c7c6a601131b1e287c39170030b7bff54543bca539f6888d7bfa81013b4c5

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 73870413450262f9cbeb2ca57b01c201f48c7113c1a7e6ecce41904b72df7bee
MD5 9621cb259b0f6953a6b47b83a1747eb2
BLAKE2b-256 e708d6c1de3a64acc6a1bf860ff6abfa269f37712ff3f8df4f355da204a441da

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f789b38623436cd477473082bb8812f33107bcf5a67b871895bbfb568b7b5eba
MD5 126e605553f5a53787a319cbc25e45f9
BLAKE2b-256 0fd39280fef804b613456cb252c8de5db99eb03531443f3b5fe49c28027c92e4

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 fc4c2079d77d5ae92a0dd00d7bd012f9c8bdbb3238664eb8e58ddbf1eaf60f4e
MD5 16b0dadea023aab6a1a89780cfad4cac
BLAKE2b-256 8c3dbf84cc263230b107a735ff866dc98e1570f7657bfdf9c0dc9e8098e2a924

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a9bd272ff7506a35618a06453bbfdf1ab0617273f7ba19bd558cfeb9195ae320
MD5 d84d04517a6029a8679b04ec69d44e4d
BLAKE2b-256 0c403b6e2369dd4a73c49fc78782476147377218858b8aac9102d61f82c8058d

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 195ede2c3f1c5f3f828a867356d3341620ec4cfea4739533ff0c9851a97dcf10
MD5 53a1dd26015da833ba71a55e362c94aa
BLAKE2b-256 ab54e7cdb49435b2757e821565745f3682186e63b252dd3304b5ef67b147e412

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e6e75826447a66b31a33c32bad1273fd798c687405adf7b7b5b39821b47fa4f8
MD5 42353a291481efc2986283ac1edabf6a
BLAKE2b-256 a4e6ea4962e7f9065b885d77a40d0b87854ab26fe2f4231b36fde95ba7c3fb20

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.14t, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7c546b8dfbd537ed2dd55b9aa1ac0a716278efbaa4497724e36e8cfb246b0d78
MD5 de95cb957a324701f2658654ee012f38
BLAKE2b-256 cbc9990334442a308b431555c1650b053d8430996fb8cdecc82dff5dd8ed3957

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp314-cp314t-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.14t, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 71e67720edfce93a5e4317018c646afa7a04073aa57318eec34c3a1f39abfe8b
MD5 e91260e44bf35d3af5219fb561633ab7
BLAKE2b-256 bf861c640845d075a384d7444771099bc8b55b0fd363414be1d978f2e1cc8eff

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-win_arm64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-win_arm64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.9+, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 cb48832f64378093ec1a5782b80f14754099f3221ce95e4bda5581d89d391120
MD5 f93f18576af07b32fcf659d6088be2f5
BLAKE2b-256 c9c534a23fd17591efb6122a2eaaf839ddd230ffdeb17b641687eb7343af705f

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 9bbe06621838d50dd1859ed4d91be052474a89fac87a83569589320435fde0c8
MD5 26453309039c9ba74882fd1cb97f612e
BLAKE2b-256 6891482c1ccbc956806dbfe078fe08ad9884b7a099aa2aa6a029abfc891e5a1b

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-win32.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-win32.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.9+, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-win32.whl
Algorithm Hash digest
SHA256 319eb7283a29d552b9c00e7267066936c06145b9bb320af4bab58bb78390b8bb
MD5 ffcd6b687f3dc2c7236a0bdc3ca7f8a0
BLAKE2b-256 a04eff5a121e2f09eeb5669076515eeab681b5b5f44cf54439c263b8a33d264e

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.9+, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7ff05697f577e245f4ebbe39a132d72a7a641f969fb459f87560a7cb27bb188c
MD5 b34f8cf11d355870f9137b34bcbff3ff
BLAKE2b-256 5146f2a8ada82b63473ba68ce4de1b431b8e4835851e85d81282be95b2db3fad

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-musllinux_1_2_i686.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-musllinux_1_2_i686.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.9+, musllinux: musl 1.2+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 de72029b1997a46abda0590e596ed890ff2a8d01d9d2f46fa823316e1d14a38b
MD5 ebd135f1fbb916e071595097aa05bd9f
BLAKE2b-256 49bb534dae64e8b3df6603847c920ddff89293fc220bedf0b12463324d477413

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-musllinux_1_2_armv7l.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-musllinux_1_2_armv7l.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.9+, musllinux: musl 1.2+ ARMv7l
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e62901c919b7bcf99238531b5efcfd0a13db951e96ee43e8e94c92b6a0e831dd
MD5 38a680f1860fcc2456f2f29340dfb86d
BLAKE2b-256 7e5b894f235f4f7af76b2ce941f21f903eaa755e26665e9d86e952a929591355

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.9+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7ffaf8999a7f00a7c7c9a9483a9ef79251c039bb5aca97b4374343530066e416
MD5 045fb4dd9e41fceb40a9ba95eb9790d7
BLAKE2b-256 05f2f3d878995925ccd582b5a3322e398bc650551b3af99be7e0eecc04b9f4e8

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 2.6 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfa36ce2cb5b539faf160e9f13f44163cd4f87d619a4b62a3f3b71fd48a91f43
MD5 a64081b1f0492fe294e32dedda624e21
BLAKE2b-256 28b25f1144823761398bd5ab7143bf74e892f5a1b7347fa2a0274c9afa1cc5cb

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
  • Upload date:
  • Size: 2.3 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.17+ s390x
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 1085e8fcb61ae6a17a2f3257c1cbf255e1adbe754d549ca7747c1a579a26d280
MD5 3a88fb2df75bee33110365e5b81704b6
BLAKE2b-256 3eb773096742b3d457a14decd88cc677d1d3a6081a6b3924e247833dfb324cb5

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.17+ ppc64le
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9ff3e3f1c97a4c4c78cef9ae48adfce251f5e6f40904635c156d5838ef121420
MD5 29e9a9c24abeefb86749ee1ce77292eb
BLAKE2b-256 3d68082106d50d808195cef8eceda77e93793fe5182467126eaf6d677c3873aa

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.17+ i686
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 c7d0a886475e391b1b3262fc61fd9f9a167cdfccbcbbbb1ef545376c23134f4e
MD5 42e48459bc0fbe42261b47dc5b6ccd54
BLAKE2b-256 8a0d59dfd9b973c63c97cabe92bacd03ad3791d9e68114fa9055fd05c3c41fe7

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
  • Upload date:
  • Size: 2.1 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.17+ ARMv7l
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b73802c6b157fba566a6b31a4ad50eca2aaa70e72bcf334f06ef41456fe0c168
MD5 6c2699d05759b91137466487664c3b12
BLAKE2b-256 0a16c257f1c44c06048f6dd0464831cd7dd3fabd022c55261a4fc4aa5f1a4bf9

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.9+, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 150f3f24a36686854df20ed0ca9823ef5ef650a7c3b8f8664dc5b1920bf131ab
MD5 77807c034630d4b0a798ae2e4c5101dc
BLAKE2b-256 df6205dd5c92e64ce768ac73faea943d6d54b840f2927ec987d978a6fb98a8d8

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: CPython 3.9+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c5071eb5847918a6085eb51410f1ea1beb2db5c0f772c5875993c5d15c3e542f
MD5 34359637a830d04d3af511c45016efd3
BLAKE2b-256 01d30f2bde8f0e43ee97b646c608338b47eee95abc38aea247064d5ab57d1ac4

See more details on using hashes here.

File details

Details for the file odis_python-2026.9.1-cp39-abi3-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: odis_python-2026.9.1-cp39-abi3-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: CPython 3.9+, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for odis_python-2026.9.1-cp39-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d0ef58272ce9b94fd15174c5b9d83f0ee38dd4df2cf70df26d7a7f3e39716ffd
MD5 aa15e0a1e2c4e7ec0ac2364f00cdd466
BLAKE2b-256 49539d5416179acd82f8b7beaac46b56c6bc982bcbb662b3fefc200ef11067e5

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2026.9.1 This release

31 files

2026.9.0

31 files

2026.4.0

2 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