Skip to main content

OxiZ Python Bindings

Version: 0.3.2 | Status: Alpha | Tests: 11 Rust + 117 Python (pytest, not re-run this release) | Rust LoC: 1,842 (8 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.3.tar.gz (4.7 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.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

oxiz-0.3.3-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp314-cp314-win_amd64.whl (928.7 kB view details)

Uploaded CPython 3.14Windows x86-64

oxiz-0.3.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp314-cp314-macosx_11_0_arm64.whl (994.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

oxiz-0.3.3-cp314-cp314-macosx_10_12_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

oxiz-0.3.3-cp313-cp313-win_amd64.whl (928.4 kB view details)

Uploaded CPython 3.13Windows x86-64

oxiz-0.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp313-cp313-macosx_11_0_arm64.whl (993.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

oxiz-0.3.3-cp313-cp313-macosx_10_12_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

oxiz-0.3.3-cp312-cp312-win_amd64.whl (928.5 kB view details)

Uploaded CPython 3.12Windows x86-64

oxiz-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp312-cp312-macosx_11_0_arm64.whl (994.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

oxiz-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

oxiz-0.3.3-cp311-cp311-win_amd64.whl (929.4 kB view details)

Uploaded CPython 3.11Windows x86-64

oxiz-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp311-cp311-macosx_11_0_arm64.whl (994.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

oxiz-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

oxiz-0.3.3-cp310-cp310-win_amd64.whl (929.4 kB view details)

Uploaded CPython 3.10Windows x86-64

oxiz-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

oxiz-0.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

oxiz-0.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3.tar.gz
Algorithm Hash digest
SHA256 0194df1e46d4e57ab6d7fc225c517fef7ddd13a06d2096efb1b17f3c9b9d7be3
MD5 ddd28019d5dd26aa62fc0a7f819805bb
BLAKE2b-256 aed9ad0c973d3a1cc1d65a9abed94e87d40c5036cbb801500d52766199a6b06a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2dbc396398c910d94e56e3dba6adc50f9a5a9c2acef3d015121eca2bf5617a5
MD5 695c158d791c0840414e9612275fcf54
BLAKE2b-256 95ab2550553bb873c7ffeb9663c06e40722d1d92b1c637374e0d2406ea7b2417

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1f39201460f99eb7ee643392513e8bda5a177e806b0db03817d63574294bad03
MD5 28e020cb7728b285a96ce0cfbfb0a719
BLAKE2b-256 4ab62ab265c85893e16a5a0df8acd81c33ee2b40d2be62ae69dc35df3e86c894

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 44e63a74028e74a656abeb4e82a5dcc304607c899834c978014f8285e91a5b75
MD5 05c5ff465ca4768aefc0ebc8424e96d7
BLAKE2b-256 c1eba7023cf3aee9cb4aac89473dd04d2fe74f17bf8fd2833b0fb55988c46ef2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bce96a92ba783543a6e473e1f256dcdf4c378678a3c855a5a4c8012e309d4c37
MD5 38c9206f776266662f58839ee2345a7e
BLAKE2b-256 21796c15a9f74a65be3eb67c136b847bd95154dd437808e72940514e34cc555f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 047279176bb96946d58e6a0308b8c840a3936e80e7b5742d2806e2c735efd465
MD5 8b3979ad31173637902f166ff71eadee
BLAKE2b-256 4ff41103b90902490fd1f49b2adad9309107c2f7f0411c66c33f6b08aada1827

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 de9cdbbc66c76faf26d056e838cfd97ac7f6f387f93c2557db39f3b4a8acc665
MD5 0afbfe2426bf76ee125b3506d409aee7
BLAKE2b-256 82b2a815236abf85311fb180228ba4502afe657a9a9476f12098b83f919ed584

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d9f50b8224f62d30c239c1f622eea6a64a62598253417ac86d37561b6b13f5d6
MD5 3ab0233b90a987d4d7be72e52320525d
BLAKE2b-256 43cc37f7d316fe22245ba180727603f0a6143904599c5135bb24f3e613225985

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a547227082a5f03d35d80d867255c5b487b65a51d1386cce0f57fc181e08de56
MD5 9d8156640ef93d9e647b5bc5c6bdd63e
BLAKE2b-256 b8b6fcb946ff9ab4b84d28b1aeb95d9929c05b55084be64d8a8ba323d07d7392

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7bbcf8f902a571cc9596323af206fa71f45973e8f2e7fdcc5bf0e7058ad8f819
MD5 527661031cf8439cc66a49d2f2afad6e
BLAKE2b-256 c068662e7cece72cdb174802cefd77656c70367607b44ad9848aa8692015237c

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cde8dca7c1fcd42d7ed538e04a3300cb7d479786c439b7475c7899b262b7e2fa
MD5 0a8e14d4ad83d9127004d5bbf5fd1bab
BLAKE2b-256 cb5735611c9993fb126763d1dfcb53731a877b893e9b68d29daeb61c0acb5d8c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 16fcba7399ca69458e5ac772dce4495a0c2ab87dfa9e994d0bcc33b2705c42f8
MD5 af8902c6269ad0429dd6ebec4a227089
BLAKE2b-256 382b4857aa5cad64953559d3a0d95ed204d8f428d7ecc4e680940df63ca4b51c

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f9b62165d591f0606ad5e0f328dfc496260fe28b9b11bb6bae27d8d8e7aa85f0
MD5 0ce49221b41a3a1dbcdab4f0658428c8
BLAKE2b-256 ba942e0fbdf3ed2d60cc99c5b8398f11a35e6d808451995a89d82510611e420a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b64966f3d713e1e6807d072fdefbee8f44317bb895d28a69faa5d1ed8fa3c07a
MD5 ca5ec00acd5b62f20bb1330fc2ba1f5b
BLAKE2b-256 f2298e884e9f1ac519a07be50e54551844065c6431fc728b11a0d6d09933866e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d9d6f5752b1c453e20c45631c34243e8f12c6ed28b4f68db1a4ff0b93c28304c
MD5 b7e6706dbd3866c48d18656c73c43257
BLAKE2b-256 ee1157a651e366a5a0f1a34058b237084049d60121b355e80d4d177b94ef90bd

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ace3d8ebaef9057192b99015c618ccd5cc5a5fabca14897534a48fcc95e6c234
MD5 6b08e9468b09df644bc7e6aaeac44017
BLAKE2b-256 8597e418fe97fbaf3eb95c2e486e8918ede552101deddfa21b2145a0562d4994

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7ebdef5939ef985ac0705f1ed27bba6ce3b946ace9eba42e0f5522cea9c5c3bc
MD5 0df68393ceb89853c2f6ecc7727d2af1
BLAKE2b-256 e79bb2a0402c92ca01a31a344cfd2ca38ca2b29b36b0ce572ccaaa9aa49ee51b

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f88ab0e03c03450cbc10afff38e822f4ba04eff2103dc200db251162cd0f7acc
MD5 61e8a35e95948f493cb89f740da465ff
BLAKE2b-256 0a59023efffc056d7f1e201879c55b9e79a1e69ebdfb942732f1daf1fdd7f462

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 506053951ead06a36475d97ed075b488d388bab64a76bb7102402a0431eb1d06
MD5 146b3a5dca089c3844a2351965ff685c
BLAKE2b-256 720b833d7735541bdb5cb640a06ce774f4e71daaac4e6ccf5595226c1190eea5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 02d8f0b112e4fddb38ebfe956b6ebb0491b637af231aabbbc736b541e18b1697
MD5 53ff861c59eb0f2bf16d6a911254996a
BLAKE2b-256 df8c7cc37e7e8b3863bd4125c922339ce0dd8a9f57691957d3577f712004d5dc

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0338525f13f9e480131f442d17d18edaa7d055b62993e3dc2535656e5616da09
MD5 57bdcbbdc0f0b19cfae64da6afc6479b
BLAKE2b-256 6866fc1657d2f8e60ceac91bfd0e669584bd69ebd887f09b4bd969d19df9fbdc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4d0b7052995091ea7cfa5807947f8e02160a3e175fa4323ff672eae020dacf45
MD5 dfdf1fd9bd810cd4ad85bf94b8dad5de
BLAKE2b-256 35954cbefed161cb64ea37a9c970db3f0ece61fa463dc2c67d5e29d8485724fe

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6ac7ec967c921387f7658b21faaa9fa1c3cd1ed053beb32a47f66c07f255ff50
MD5 f1d0b6b3cdda3308612843a14c21bcb2
BLAKE2b-256 66aa3774ff99a06e04837ad528237ceeec3197fa3c222b97563a47a84be33437

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c5042ecb85c53bea451d80451bd575cd78b6119a7537f90a2acd9cd65df87bca
MD5 36b43f940cd10b0f77b81510a8ca875f
BLAKE2b-256 773b5486b969315e8496ac4d08fdb7be790155220581775d627279bf56dddaa0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4292b402814bcf6494f24690c06ebc5df980b46c960e0d4902f460e5eaf2a0f7
MD5 11acd67f16c7fd19cdb9455d22e1dcb2
BLAKE2b-256 c2c3dd4a8d7716dcdc0c24cfae13cdea55625945093b7f7ba7a2a7aa30df3683

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 482c9a41858ad132798fb662e5e20b566a0b2d2126108340e442e5937176a717
MD5 7d906e17299e4a56646f5102470d6997
BLAKE2b-256 e99308a1aab686212273b63a081470b7d7d7d2e90a721baaa8f7e5214675ce83

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9b825821c2562f96bc8d6fe7e0ada374e797f63879203bc6138cb0aaef9bbf89
MD5 9cd02f5871f35714f161365dc043f19e
BLAKE2b-256 ac87d238f6a1a6e60ff1c27c4cb0c9423ca14fc91ce24ce825d03e0b2b750f6b

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for oxiz-0.3.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c1679d12284257de580a396a07d74d6e9652579912d6718b7b7a11e6978112a8
MD5 8328a7d2b6d8a0e6965cf2fc5fdf19b7
BLAKE2b-256 f8c5827a14ca392f5274c8b4a2c0ca7e1ce2f4d0621264a51e89b904f4769831

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 221afda629c7829eb67c5902e2a411fdf5755ae9aff86a03dcc2f71d4d63adbc
MD5 7d08cfdaa6130e57348ed9083e5adbc6
BLAKE2b-256 a155d35c39cab563147f2c86f90145f5913e02dd0625143d5579d4f7f2d52099

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5759c3e3c563be94acec72d0dc597206c6f586e1f4d18d26c68ef4274022a187
MD5 02af032a04a6d277dbec9f32afbae9ab
BLAKE2b-256 1f3361f500eb57d7bb9eb1bb6c9ad5b256f64119d12dfc04c9053d19e29430ab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 26fc1a1547b65b802742e0b77906ff6a1a828b492ade79eb9aa926d6831bba7c
MD5 ea895e514713d61dc19dc65ece56a947
BLAKE2b-256 97a05eb10fc593c04b9d13bbc0fb5a52b99b3292144b238ecf341f8ed4415797

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 77d12bcd2c23082c50d21232769ae66713112dec98d45e7b777de734d623aade
MD5 499bac68eb0ea7db8bf45ab355e2ea5f
BLAKE2b-256 b98df6a8e61dd804e365481c83711de2927d9ca6a7522dfd67b0d72dfc1bd394

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for oxiz-0.3.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d180d1da59616c7002cc1af3cb5e61a204a5b0269145b29ca0470867a86ef97c
MD5 679ff696533e055d973cd93b271aa0d5
BLAKE2b-256 19b124ab76f119b3af1093035c27f22446179661cf79da71f551fd37043018d1

See more details on using hashes here.

Provenance

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

This release

0.3.3 This release

33 files

0.3.2

33 files

0.3.1

33 files

0.3.0

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