Skip to main content

OxiZ Python Bindings

Version: 0.3.0 | Status: Alpha | Tests: 4 Rust + 117 Python (pytest, not re-run this release) | Rust LoC: 2,736 (source files under src/)

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

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.3.0.tar.gz (3.2 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.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (817.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

oxiz-0.3.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (834.2 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.4 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.2 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.4 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (831.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp314-cp314-win_amd64.whl (636.5 kB view details)

Uploaded CPython 3.14Windows x86-64

oxiz-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (831.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (713.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

oxiz-0.3.0-cp314-cp314-macosx_10_12_x86_64.whl (735.2 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

oxiz-0.3.0-cp313-cp313-win_amd64.whl (636.1 kB view details)

Uploaded CPython 3.13Windows x86-64

oxiz-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (815.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (831.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (712.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

oxiz-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl (734.7 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

oxiz-0.3.0-cp312-cp312-win_amd64.whl (636.2 kB view details)

Uploaded CPython 3.12Windows x86-64

oxiz-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (815.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (830.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (712.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

oxiz-0.3.0-cp312-cp312-macosx_10_12_x86_64.whl (734.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

oxiz-0.3.0-cp311-cp311-win_amd64.whl (637.4 kB view details)

Uploaded CPython 3.11Windows x86-64

oxiz-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (832.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (712.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

oxiz-0.3.0-cp311-cp311-macosx_10_12_x86_64.whl (734.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

oxiz-0.3.0-cp310-cp310-win_amd64.whl (637.4 kB view details)

Uploaded CPython 3.10Windows x86-64

oxiz-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (832.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (818.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

oxiz-0.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (834.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

oxiz-0.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (834.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

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

File metadata

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

File hashes

Hashes for oxiz-0.3.0.tar.gz
Algorithm Hash digest
SHA256 5173ba289bc0699f44419955dbce36584713b22ae9a3a7b9188525ebeb6f00b0
MD5 59bd822a00b4f430ed55dc1ba865a9b5
BLAKE2b-256 ce8b99d29a1137b6874e88807e5da0adfef8961c5c700d8b046cb640edb7061d

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0.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.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f473af95871f0548cc229ccd8c3438aed7a81af816d5407bca1e127847eb214a
MD5 f111cb477c30d7a555f2c2bbf5a32a58
BLAKE2b-256 8a8401dc6df28ec35fc8cbe9f453d08b7ac9e81d9407f78cf5acf09fab8e2372

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3e6512be8cb1d8062a28dabe2e7a6405cf93fb96d877e8eb88f73e6769f7518c
MD5 02f8fc7e2aae0907c5d1357d37ad7796
BLAKE2b-256 c8d89838f936c17c183788babe500c07f1976bb7c6dc8045c3e8320518c81cdf

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f19216274f133fe1afcc30c0d19107b733cbbdcba59072aee19ccbfe9a2c531
MD5 90e67c4f0ef6c4f5556ba0938e18c513
BLAKE2b-256 2bf9231cc85ab1d928e2c6a73831e9c4450d5b68baa0a0f8ccc8d1ab3a70feee

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-cp315-cp315t-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.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc3f6742a7dece34d186e7cf3520dde03afc737fbb9a4ec3890fb85ceeaee317
MD5 1a64b65d9dbddc78ae0416123fc4ce9e
BLAKE2b-256 4cf80d17dd9132605a369f18830ba42ee529a53da588d2d70690239485892182

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc9f79bb80cafb1577110333c8719379eca8e49276b572cac20c73047b13a2ca
MD5 e3edf47d2cf88df20eeee586d8f734bf
BLAKE2b-256 80c99366c528061c897588689b192694a03835d9d6f5e085be4eee4917ae7fa2

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-cp314-cp314t-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.3.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 13ee0a08aaa2497b8bf4523887418e3d71571d7b628578fa519e894b1adc8038
MD5 6149477a54b205636ba7d246b9aee618
BLAKE2b-256 a009b08072a8c214a9e27d34b6c6843fa9ee2622f5b40489f20eb70e01d45d98

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp314-cp314-win_amd64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ad267056f32e895ecfcde23b4951452111d4c20f414790408da7b3239bf4640d
MD5 e6098cf0d58aa6c5190c025b590f0757
BLAKE2b-256 9f143246f3e3a810f6c7365927580d653e83ee50e3f53f81203ed93455bb6598

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65138219dc5bcc648e7fb66ab16e58202e6cbf7032f12af4a4001a28e3a48662
MD5 d0ba725e0aeb11f9a0918a1092a030e4
BLAKE2b-256 548f9e12c917ad4748d8202eea51447cdbf21817ce1f116e0c7eb5dd6d2dd811

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6a9f67d5f0343eec698510acfccf272f0274333960f3cb2cb80c816cfbd84e32
MD5 1ea4133bfab579b7a9feeb1d9058ff34
BLAKE2b-256 6911a11bafd486923120aff187816ce75c9397f66131635dc0791843bb1f1614

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e9f9a9ff6e4028fddd04d52ad3455b1e3e41f28813a9d8c0b9f11b0ddccef85
MD5 9e09763ee92765ac8ddefad37ebbe945
BLAKE2b-256 7ca351a38bbd6414f62ca369d0acb5a935b1939be3a802635e9a08d9bda29cc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2c3e0df55e58de9ec354828315902bd7cd76ec94226f6c9d30a8f992b7a47cdd
MD5 80f411a19d300f93c751b9b4aa64419d
BLAKE2b-256 85a4918b22e49fbe7e81f4a16cfe8901c7b8473f822f49c391a954f64bf5499d

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp313-cp313-win_amd64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 66028cb8cad737192045a13cf3eb86398d11a4c403ad9ac1164f43f6f8c7deb8
MD5 9ebcbc450f3fd1d00a57fe3e7a9446c8
BLAKE2b-256 a44cf771945e9be118e73747f583f8f41fa23da02c2359712365c0bc6ed3d6ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 483a062682016874e09d5846b3e13d2d6235583e682212af8dedf1043c9aec09
MD5 32254b8b9c306fed61772a8f4294ea4e
BLAKE2b-256 145ebd16f3c345f2c7b09b2e7244ea32028cf33224e7223221d151e7e90ef29e

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32a0b350da572521c1e3ddb650925c1cb2d9e21714a9bef53e0896ba7b7e1690
MD5 c8c84c6d24e9921369425f1bebf5822e
BLAKE2b-256 ccf0c783086e14c4593bbd9832721f34f70b7e83c7b1f3647e76e2749ff90860

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b029d8b4a4f8696c20dcc9f3450478017ee3e0c2818afdf26d375dce6b9610a4
MD5 df1eb86cbffbe9624b1a9845fc5a08c7
BLAKE2b-256 28658d187495e4df09b88884418f625b787a558517eb309b913bd8ceccfb56c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9be2e6995a3eb22ae26393554fec504efcf94cd03b8f128b8fdc61cb7d3498fe
MD5 c9901c42d64fb0d4b6d1b534938f26db
BLAKE2b-256 1b5d4de570f3fada80414f98e6bb833522513c14d55bbb2f7c1d03b2cd7911dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp312-cp312-win_amd64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f36c7412fc5e138e8c86583100ef8d12846bab653a83dad924a4514686c79f08
MD5 6d4e099f096002e91a742143d6328255
BLAKE2b-256 1b8058ef07b7c223cccbd6c88beaa3e6465d192c9c631aac9bdfa728cae5df77

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4e85157d4b0328c6563457d802d9d6751708f1913e25d39340dacc002eea1a4
MD5 bc22e2ff738e9a6e4497a58f5ea39d87
BLAKE2b-256 bea9a5cedd34b954881f87fbba690d0591d62585f151178b03442f363bf1cdae

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d567efaabad76d0aad7dca75f7e77e1618fcbcade6dd89e0d6ff5344945b6900
MD5 9d2b89f8f18a59d93d85370237aa1b0f
BLAKE2b-256 981b1d7f87824d0fa6292c8eced9513c121fe63875075647361a3109c2969a4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d63f527f2e6fcb89f6c42f54e9e81fc48b975623a9199cb746a8eda2e7159d7e
MD5 7ee3e27d11fdcb70302ebb19b6fb1b32
BLAKE2b-256 479af2b0c00d039d3f0c1def5ee21a73eeed5c67646543ac1d552c506461bd3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9d6ea44dbdb65180443a918b6d0c3a94127a9355fd366d034651160c19b88057
MD5 7fe86ec1654d777d69e738e7a3c1e7aa
BLAKE2b-256 5d648953c96abf58efe2df9849694865aaad14ab32f8062c0f7cc1101471444b

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp311-cp311-win_amd64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cbb523cefb49eb285dfb635bc83c8d8f4410e618e4bf94db222ae2aaedb78bb5
MD5 fd255ae39c7f5bca37c0ddc6f8fe1bb3
BLAKE2b-256 6444c8934045d02e7218c66e591b17795a231218df5dbc7e7fd3e6497695cda2

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3032fc51e1d0248b5e92e4344990d3e4e173bfe696a55ae5b794c42f511f0eba
MD5 5959db793c7baf8435b8912179807387
BLAKE2b-256 26beb6fa0f7dc11d3e5f7fda6a1fb3614e0cae04dd6a7dac76cecd9215d9db16

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ff3798479c216b4b34e108d2a7794ff475f5d37a9df4b12abcd7365cebb1a427
MD5 9a8446a37cf4e6ce1dacf75020b683c6
BLAKE2b-256 8ba661638fca08908690073be986e87929f96409a083993ab000690ca375b2a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e17c5b79181191380c1d47b19d48983f6201b3ec5b55ad886c523b1ea49e98f0
MD5 667f3917e58a66bb1ba49bd015116a28
BLAKE2b-256 b57e72c4f9ab176a61fc063c2da01d2f687d343a1c17a9c6bb401414d20aedf5

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 34057bc17e2ffde6d656601cc20a880e82a4e9639f456decb21615db085b3fc3
MD5 e27416a51f92590d3488050a84a0697f
BLAKE2b-256 b34a53bc1e5645e9ce9c6a6f0b4d9abc31725e2cfb78ae5703cbf9de9b652d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for oxiz-0.3.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8e7eace3e8ad2b0677e285762122914d513eb713f31f2e05a5fe09791aeab5ae
MD5 59908ed922c0ea134379cfa3209c65dc
BLAKE2b-256 90ef38295160ed212fa91b9219c86578ab59d49312943d71ecffcdf63f026198

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e0e8c5f195e468a7ed353985f390d51d5f6fdaaef31114965378d14455db6842
MD5 9c7bf01a19193f384bd6aa22d4b33367
BLAKE2b-256 08f79f6802658b535db7506cad35f582cfc29400d026c93eea81116b2f297180

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 31e7a32bbe79c297862d737b318ba202f52328d8bd7aff99de1b9dd05383068f
MD5 5153544c51612a18c2bb8ffbc5294ae5
BLAKE2b-256 3a21726d87a02bac629a2527f4a82ada35220eecdeee5b90290fed410efdb897

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 213a9e0bb838461258cc417833bbd7fccc586df9dd65f83a9bbb5b9331ccf338
MD5 754046f65d5c0bce242df2ca9a7263a5
BLAKE2b-256 af0325ff33c6f1b267e5379fa0b655b3560f4b9e28cf7c124296559fab84b762

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 49b12f91a6a8d58fb0a38a6003d69dbd9c7b2f4c1bdd2228b5ea5362490e84f1
MD5 32b25d1574e8d3604d49d5d6b4f781f9
BLAKE2b-256 1a71c409313246f54b9f21438eee17feea62ad48e9d157b378a766bf9d330bdc

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for oxiz-0.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c15d3f0ee262cb98fdc24606b3862fb93adb1c69604c7e6a0df7157e8ee2a246
MD5 f458a0894084cb6e7cb22437c22ced63
BLAKE2b-256 a423630dc4199222f4c99ff917dae75faa982baedc0450a9dbf3ad69ed6fad3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for oxiz-0.3.0-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.

Release history Release notifications | RSS feed

0.3.3

33 files

0.3.2

33 files

0.3.1

33 files

This release

0.3.0 This release

33 files

0.2.4

33 files

0.2.3

32 files

0.2.2

32 files

0.2.1

32 files

0.1.3

32 files

0.1.2

32 files

0.1.0

32 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