Skip to main content

Python bindings for OxiZ SMT Solver

Project description

OxiZ Python Bindings

Version: 0.2.2 | Status: Alpha | Tests: 8 | Rust LoC: 1,583 (7 files)

Python bindings for the OxiZ SMT (Satisfiability Modulo Theories) solver.

Installation

From PyPI (when published)

pip install oxiz

From Source

Requires Rust and maturin:

# Install maturin
pip install maturin

# Build and install
cd oxiz-py
maturin develop --release

Quick Start

import oxiz

# Create a term manager and solver
tm = oxiz.TermManager()
solver = oxiz.Solver()

# Create integer variables
x = tm.mk_var("x", "Int")
y = tm.mk_var("y", "Int")

# Create constants
ten = tm.mk_int(10)
five = tm.mk_int(5)

# Create constraints: x + y = 10, x > 5
sum_xy = tm.mk_add([x, y])
constraint1 = tm.mk_eq(sum_xy, ten)
constraint2 = tm.mk_gt(x, five)

# Assert constraints
solver.assert_term(constraint1, tm)
solver.assert_term(constraint2, tm)

# Check satisfiability
result = solver.check_sat(tm)
print(f"Result: {result}")  # sat

if result == oxiz.SolverResult.Sat:
    model = solver.get_model(tm)
    print(f"x = {model['x']}, y = {model['y']}")

API Reference

TermManager

The TermManager creates and manages terms (expressions).

tm = oxiz.TermManager()

# Variables
x = tm.mk_var("x", "Int")      # Integer variable
b = tm.mk_var("b", "Bool")     # Boolean variable
r = tm.mk_var("r", "Real")     # Real variable

# Constants
t = tm.mk_bool(True)           # Boolean true
f = tm.mk_bool(False)          # Boolean false
n = tm.mk_int(42)              # Integer constant
q = tm.mk_real(3, 4)           # Rational 3/4

# Boolean operations
not_b = tm.mk_not(b)
and_term = tm.mk_and([b, t])
or_term = tm.mk_or([b, f])
implies = tm.mk_implies(b, t)

# Arithmetic operations
sum_term = tm.mk_add([x, n])
diff = tm.mk_sub(x, n)
prod = tm.mk_mul([x, n])
neg = tm.mk_neg(x)
div = tm.mk_div(x, n)
mod = tm.mk_mod(x, n)

# Comparisons
eq = tm.mk_eq(x, n)            # x = 42
lt = tm.mk_lt(x, n)            # x < 42
le = tm.mk_le(x, n)            # x <= 42
gt = tm.mk_gt(x, n)            # x > 42
ge = tm.mk_ge(x, n)            # x >= 42

# Other
ite = tm.mk_ite(b, x, n)       # if b then x else 42
distinct = tm.mk_distinct([x, n])  # x != 42

Solver

The Solver checks satisfiability of constraints.

solver = oxiz.Solver()

# Set logic (optional)
solver.set_logic("QF_LIA")  # Quantifier-free Linear Integer Arithmetic

# Add constraints
solver.assert_term(constraint, tm)

# Check satisfiability
result = solver.check_sat(tm)

# Get model (if sat)
if result == oxiz.SolverResult.Sat:
    model = solver.get_model(tm)

# Push/pop for incremental solving
solver.push()
solver.assert_term(additional_constraint, tm)
result = solver.check_sat(tm)
solver.pop()  # Removes additional_constraint

# Reset solver
solver.reset()

SolverResult

result = solver.check_sat(tm)

# Compare with enum values
if result == oxiz.SolverResult.Sat:
    print("Satisfiable")
elif result == oxiz.SolverResult.Unsat:
    print("Unsatisfiable")
elif result == oxiz.SolverResult.Unknown:
    print("Unknown")

# Use properties
if result.is_sat:
    model = solver.get_model(tm)

Examples

Sudoku Solver

import oxiz

def solve_sudoku(grid):
    tm = oxiz.TermManager()
    solver = oxiz.Solver()

    # Create variables for each cell (1-9)
    cells = {}
    for i in range(9):
        for j in range(9):
            cells[(i, j)] = tm.mk_var(f"cell_{i}_{j}", "Int")

    one = tm.mk_int(1)
    nine = tm.mk_int(9)

    # Each cell is between 1 and 9
    for (i, j), cell in cells.items():
        solver.assert_term(tm.mk_ge(cell, one), tm)
        solver.assert_term(tm.mk_le(cell, nine), tm)

    # Row constraints: all different
    for i in range(9):
        row_cells = [cells[(i, j)] for j in range(9)]
        solver.assert_term(tm.mk_distinct(row_cells), tm)

    # Column constraints: all different
    for j in range(9):
        col_cells = [cells[(i, j)] for i in range(9)]
        solver.assert_term(tm.mk_distinct(col_cells), tm)

    # 3x3 box constraints: all different
    for box_i in range(3):
        for box_j in range(3):
            box_cells = []
            for i in range(3):
                for j in range(3):
                    box_cells.append(cells[(box_i*3 + i, box_j*3 + j)])
            solver.assert_term(tm.mk_distinct(box_cells), tm)

    # Given values
    for i in range(9):
        for j in range(9):
            if grid[i][j] != 0:
                val = tm.mk_int(grid[i][j])
                solver.assert_term(tm.mk_eq(cells[(i, j)], val), tm)

    # Solve
    if solver.check_sat(tm) == oxiz.SolverResult.Sat:
        model = solver.get_model(tm)
        result = [[int(model[f"cell_{i}_{j}"]) for j in range(9)] for i in range(9)]
        return result
    return None

Boolean Satisfiability

import oxiz

tm = oxiz.TermManager()
solver = oxiz.Solver()

# Create boolean variables
p = tm.mk_var("p", "Bool")
q = tm.mk_var("q", "Bool")
r = tm.mk_var("r", "Bool")

# Assert: (p OR q) AND (NOT p OR r) AND (NOT q OR NOT r)
clause1 = tm.mk_or([p, q])
clause2 = tm.mk_or([tm.mk_not(p), r])
clause3 = tm.mk_or([tm.mk_not(q), tm.mk_not(r)])

solver.assert_term(clause1, tm)
solver.assert_term(clause2, tm)
solver.assert_term(clause3, tm)

result = solver.check_sat(tm)
if result == oxiz.SolverResult.Sat:
    model = solver.get_model(tm)
    print(f"p={model['p']}, q={model['q']}, r={model['r']}")

Supported Sorts

  • "Bool" - Boolean values
  • "Int" - Arbitrary precision integers
  • "Real" - Rational numbers
  • "BitVec[N]" - Bit vectors of width N (e.g., "BitVec[32]")

Bitvector Operations

tm = oxiz.TermManager()

# Create bitvector constants
bv8 = tm.mk_bv(42, 8)       # 8-bit bitvector with value 42
bv16 = tm.mk_bv(1000, 16)   # 16-bit bitvector

# Bitwise operations
not_x = tm.mk_bv_not(x)         # Bitwise NOT
and_xy = tm.mk_bv_and(x, y)     # Bitwise AND
or_xy = tm.mk_bv_or(x, y)       # Bitwise OR

# Arithmetic operations
sum_xy = tm.mk_bv_add(x, y)     # Addition (modulo 2^width)
diff_xy = tm.mk_bv_sub(x, y)    # Subtraction
prod_xy = tm.mk_bv_mul(x, y)    # Multiplication
neg_x = tm.mk_bv_neg(x)         # Two's complement negation

# Comparisons (unsigned)
ult = tm.mk_bv_ult(x, y)        # x <u y (unsigned less than)
ule = tm.mk_bv_ule(x, y)        # x <=u y (unsigned less or equal)

# Comparisons (signed)
slt = tm.mk_bv_slt(x, y)        # x <s y (signed less than)
sle = tm.mk_bv_sle(x, y)        # x <=s y (signed less or equal)

# Division and remainder
udiv = tm.mk_bv_udiv(x, y)      # Unsigned division
sdiv = tm.mk_bv_sdiv(x, y)      # Signed division
urem = tm.mk_bv_urem(x, y)      # Unsigned remainder
srem = tm.mk_bv_srem(x, y)      # Signed remainder

# Bit manipulation
concat = tm.mk_bv_concat(high, low)    # Concatenate bitvectors
extract = tm.mk_bv_extract(7, 4, x)    # Extract bits[7:4]

Array Operations

tm = oxiz.TermManager()

# Array select and store
value = tm.mk_select(array, index)              # array[index]
new_array = tm.mk_store(array, index, value)    # array with array[index] = value

Optimization

OxiZ supports optimization (minimize/maximize) using the Optimizer class:

tm = oxiz.TermManager()
opt = oxiz.Optimizer()
opt.set_logic("QF_LIA")

# Variables
x = tm.mk_var("x", "Int")
y = tm.mk_var("y", "Int")

# Constraints
zero = tm.mk_int(0)
ten = tm.mk_int(10)
sum_xy = tm.mk_add([x, y])

opt.assert_term(tm.mk_ge(sum_xy, ten))  # x + y >= 10
opt.assert_term(tm.mk_ge(x, zero))       # x >= 0
opt.assert_term(tm.mk_ge(y, zero))       # y >= 0

# Objective: minimize x + y
opt.minimize(sum_xy)

# Solve
result = opt.optimize(tm)
if result == oxiz.OptimizationResult.Optimal:
    model = opt.get_model(tm)
    print(f"Optimal: x={model['x']}, y={model['y']}")  # Should be x=0, y=10 or x=10, y=0

Optimization Results

  • OptimizationResult.Optimal - Optimal solution found
  • OptimizationResult.Unbounded - Objective is unbounded (no finite optimum)
  • OptimizationResult.Unsat - No feasible solution exists
  • OptimizationResult.Unknown - Timeout or incomplete

Examples

See the examples/ directory for complete demos:

  • basic_sat.py - Boolean satisfiability
  • bitvec_example.py - Bitvector operations
  • optimization_example.py - Optimization (min/max)
  • sudoku.py - Sudoku solver

Testing

Run the test suite with pytest:

# Install the package in development mode
maturin develop --release

# Run tests
pytest tests/ -v

License

Apache-2.0

Project details


Download files

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

Source Distribution

oxiz-0.2.2.tar.gz (2.5 MB view details)

Uploaded Source

Built Distributions

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

oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (673.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.0 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

oxiz-0.2.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (672.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp314-cp314-win_amd64.whl (512.3 kB view details)

Uploaded CPython 3.14Windows x86-64

oxiz-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

oxiz-0.2.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (673.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp314-cp314-macosx_11_0_arm64.whl (593.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

oxiz-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl (597.4 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

oxiz-0.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (672.1 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp313-cp313-win_amd64.whl (512.2 kB view details)

Uploaded CPython 3.13Windows x86-64

oxiz-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (666.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

oxiz-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (673.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp313-cp313-macosx_11_0_arm64.whl (593.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

oxiz-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl (597.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

oxiz-0.2.2-cp312-cp312-win_amd64.whl (512.1 kB view details)

Uploaded CPython 3.12Windows x86-64

oxiz-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (666.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

oxiz-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (672.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (593.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

oxiz-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl (597.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

oxiz-0.2.2-cp311-cp311-win_amd64.whl (512.4 kB view details)

Uploaded CPython 3.11Windows x86-64

oxiz-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (667.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

oxiz-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (673.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (594.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

oxiz-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl (598.1 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

oxiz-0.2.2-cp310-cp310-win_amd64.whl (513.6 kB view details)

Uploaded CPython 3.10Windows x86-64

oxiz-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (668.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

oxiz-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (675.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (669.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

oxiz-0.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (676.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

oxiz-0.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (675.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

Details for the file oxiz-0.2.2.tar.gz.

File metadata

  • Download URL: oxiz-0.2.2.tar.gz
  • Upload date:
  • Size: 2.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2.tar.gz
Algorithm Hash digest
SHA256 bbbe5c8af73c5ae7814cb31e6727efc9c7208dcd32417102444f5f22caa67c99
MD5 f1b014af9abf0b7a100f2a583033e492
BLAKE2b-256 1524b69aabb235c5827c6a07f849f6cef6b3ba7c6112fbbc7637b6beac3009a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2.tar.gz:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 68e5f0a05647ca534bd426366b416350642cfed81fad796536c9c48342414286
MD5 a8557518c0a2f3898f24e5921449a71c
BLAKE2b-256 97d7ef475dd6a0f0227bbe3a93b9625b1523614b64ad49667522ac7674a01ab4

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ecfb0e40d4bb65a9c1fd41e2b942f95277bb77a9897aa9b8dbbd5856400dabd0
MD5 42449741e62f896ac6d1e426e1ca9764
BLAKE2b-256 a549cd6e3b4fddcefe21cbd916878746b839857d714b80c26e05507796a79a2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3fbc9efc0f6047cfadd65da0048e681728e5671fc0157b12441e1174213ad2e
MD5 bb48bc7eb45f368f91e2542b87721a18
BLAKE2b-256 d0fce9f3b2fb6f0c151de3d0f9ad92324f857a162bc0551d275d89b2366b9f7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ae1fcad1a55229bfd7ac7c9ec125adfed4d967f7b7095c609de3b3b4e233d571
MD5 6f05060549901403524225c09999df0a
BLAKE2b-256 30a488556bc460348611f51b81f599867fd591ba9cbf220b10c7512169c3fabf

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 512.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 2a76a57551cf3430f5dc9327ee0b6e17ee514eee9bd21f3dda3cf3d616242e0f
MD5 2febe00ca42bb43bd236431d609424fb
BLAKE2b-256 bfc762087f973c16d9042329aec21a1ed5ec2e728bf33d2da2b734c081de5744

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp314-cp314-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2833047258fdad6ab15d3fd86a563a84ae20470d2dea2900193d0425f0fdff26
MD5 e78363a2dc0308fd674f2cc0e35785ab
BLAKE2b-256 d7bad1f7f1c98969bcff494fb89211f649ade1b491aa4bb7cac02d74996e266b

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1393d68ebdf94dc7faedc9e008f7ab43ab3be2cd718bc0e3ac3f2ee18d5c0c03
MD5 dce99e262d69a183343bf95df62661c7
BLAKE2b-256 6d4e739a92f5930948d61af77bd59c73408f51b9e77e09f8979e64ca658ffd01

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 593.5 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0def4106018f9752a777341770dacd635ed6c95ce32b95241c9c11262a02e40a
MD5 8334f74e78cd4a5e476a8b67dace1a39
BLAKE2b-256 79bb195b7415761f5d566200b7b5528062171275165a6da2c2fce67a62bbf7a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0d88aaa02173d59e2fc369d6f337a93a529e2c829aa8c95e6f6b4e174f75cb89
MD5 f173967cb577253425785ff1fc6dbadc
BLAKE2b-256 2d28a8505b1b149b91413a8115ecc8030bc40db902275b7c2865c34b00479e76

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3380732af78065eec776da02f9b6e06e1198c58dba651688cd5e2e006707716a
MD5 fb1378878558032a53bf80b906c6cf62
BLAKE2b-256 1534a5a47aeb62d53ecd518f90afa2a80a87ac4007d09a0f20b8a884eb58610e

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 512.2 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ed1ef023acebfaac91735bfbeb57cd7e7f9fc4a1e980afa0e73d7da484f66e0d
MD5 e37a94c21e8ac68578994f43fa285d77
BLAKE2b-256 d51e3a600c577d2c7a4d3f0db2c05b80d1e71b8d930b352ae98f680d4bc858da

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp313-cp313-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02d3ed26199cfe8631109575cefcc8e20016a93ad458d97dc606191a0bdc9482
MD5 035c16f507199520a6addfd606629493
BLAKE2b-256 bdcb5acd2333ee4b6f829d3579687e883030cde2c3d12c95f9c276a913acc48f

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4c1421e004f471ca235ae3eb52c83b8bfea337b8e68e4ee16c655e6629ca0866
MD5 007d82a10ddff358f9f4810eaa555306
BLAKE2b-256 764360ec091274d448f4dc3a69457d028050802b3fd54a6a3a9d117aa7e33b11

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 593.3 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 071920228cd08e93af0a67e78d14be932e9e709db2ceaac0a4c52823b751d700
MD5 6012db9c4c347f31cd3c8f8f3612190f
BLAKE2b-256 d87e48df26976ef86efb455ba0c3d1911a571bb06c028d5e6b25fbbc8687d9c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 43bb88a63f477632a0bb545aa2ef80790665fef801bbf1b4a05138b747e5d682
MD5 f59fadaaa68c5e8c534a9df17a727099
BLAKE2b-256 fae3e0e2df33476aa585b045fd9a06423632951cc575fb9dba35a37f5ae1b323

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 512.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 779a355f2c7387a7447189bbf197d2aaa547c9993a83077cfa154cf9bd482c2e
MD5 33508d7abdef75428b5f1c5ab5cf8916
BLAKE2b-256 c2aaf8340d8d71ec88dca9e0ca42723ac28181cdc742dafbc64e125b3276acd0

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp312-cp312-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 025fd64cfcb11ab51244223dc658716e3e18af334d40ec77532ed3dcbd3275c6
MD5 b27c446aa0e78201cf359e4f7468d34d
BLAKE2b-256 1fe966dee3c9b5d38c0c8e5e25fb71c2af253679ea7dfb2848eaa8bd57f0276d

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a8bf3844d8eaa1b98b86c7d4719b7577e06e50e7a6572c0d25bce9ad70bc6397
MD5 e1b5ec92075e0e6df930f0c65daad479
BLAKE2b-256 bde4936feb32204357252a9028285509345b009de4d8971f3dd5a2e7e77b217d

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 593.3 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 204ca0c3af63d7eb71ff6d741a3f0d8e1c6b54a333b817b9e9374e0024584cb1
MD5 0ea43fd63040bd0941d997d88c30f051
BLAKE2b-256 69c6ee6470be152579a0e531b5ad0894e91d4ae4d66dbecf9877a4d720665302

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 306ba0435ee2ac06bb0a399de3fdff752e5d916d45b09fcf88605f79034bb263
MD5 714eb2be9d5e71b2093f84bd170c9a83
BLAKE2b-256 c8606132585b217eb1aff7549a7c755eca606cb8d9e2852ad329ee1fca01567f

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 512.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 623ed900f31add9eb90f22cbe5b77bb8cfef5ab53ffe1bb615f2dbc588687c3f
MD5 75f2b428d01eaef7299f00c3375109f7
BLAKE2b-256 620fb110a002f1ffdd76a0f7a521187f542cc3f394761637c1c405e75992f8cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp311-cp311-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02dd53c7b20cfda32f2e9d4ed6c01f77b5435253d03260cb736770f6ad045c39
MD5 7e42ac79ad8f200a4925f8680da3d9aa
BLAKE2b-256 7bd5b2d4b6db3d3c1cee5ce7ae4a5ee015550580512a2ffb45f4a9f6d145a895

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3e5903a5a69c67f1100a2f53ded1e7093bd574e21cba3d7cedb9b3b99a938d8c
MD5 2d26cb373fc9036b5b9226295240ab4d
BLAKE2b-256 4ba444a0e3772f2fc360fc42e21ca28f43cb967e72d901fa5d6da08edece964a

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 594.3 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c556425d2c5efc6d298f2d71f5513363517e17ad3489cf292db496edbcd7c5c3
MD5 530d6542e9621121ead02628166c4738
BLAKE2b-256 e81a4424dbef9ee6b81aa06c603753a19c5b8790b2362f917c283b12f33a2319

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 baec5e71dd8fb03b4a05460eb89291cf1562bb8200ab42be11eb29e06c6edf4f
MD5 feaf1361b86091444101cfae9d8011f9
BLAKE2b-256 37b907d0d74d4f3d246ec7f357d54b4c3ad4859aed7c9a331d1e00b58e040acc

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: oxiz-0.2.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 513.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for oxiz-0.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1a95b2fec59a440c735398620b5f670c21cf0f504876446b33c198ea0d59ba4b
MD5 3be838a622b8ec3956b91ee1ca2483c7
BLAKE2b-256 f6567367f743d9671511232c67741714419b4dfae4f6b709e50110c9fbd32e0a

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp310-cp310-win_amd64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c2db4c2db4b6f87c821d8cc2e35f05e262c6349a55aa153485e262190d97816
MD5 d59edb5a5e95e078d2191e4908c04de0
BLAKE2b-256 3ca36b23b0e105c6c10525d78096acc444d553c02104a7b100aa3d869568410e

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 14ffe3c9246cd75dd1c42045a2b3bd2f18ada7d80653c5a94f20fcd77594dab9
MD5 b46289fec92cf1e84fa5962eb545fca0
BLAKE2b-256 712423be2571e5e3bfc027b259d5031fcf7e559ecdc83d300fc12aebbd86ffb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d933c76d36d19280869d93568062fba9a544026359f625d6ef91132f7992191b
MD5 3569ef8bebfb77398283dd43abdd826b
BLAKE2b-256 154096b2c768ed217d567e7d2003fbe19fb70f9b884b278ab4a3e510a374a216

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c1e9adbe3e499f483f27adf0f3731810069112dec483ac0fbed15be377f86031
MD5 403376fb81f6b4fe6128e7fe6027f0f0
BLAKE2b-256 6eb46bcf06662be38406e8f65ec6c89a2b8959924d477be44c2af5c02107095a

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oxiz-0.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a078bf7bdcfcd9ebae2a0ec2c22c49cdb6af6ad7a2f5ca3b851f4b13c63e36b
MD5 48762720fd07591f61ad0859317b9d92
BLAKE2b-256 dcd4f8b05f9bb63d5dae4d15a9e1dcdf99a1eb274346fd89f8cb22f42ec763c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.2.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: pypi-publish.yml on cool-japan/oxiz

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page