Skip to main content

Resin — Reactive Signal Inference

CI Release PyPI version Python versions License: MIT

Resin is a probabilistic first-order logic programming language for building reactive inference pipelines over continuous, asynchronous data streams. Resin programs are compiled via Answer Set Programming (ASP) into Reactive Circuits: vectorised, self-adapting computation graphs that perform Algebraic Model Counting (AMC) in real time.

The core library is written in Rust. A Python package (pyresin) is published to PyPI and built with Maturin.

Installation

For employing Resin with Python, you can install the pre-compiled package via PyPI:

pip install pyresin

To use Resin with Rust, you may clone this repository and build locally with cargo.

The Resin language

A Resin program declares sources (incoming signals), rules (first-order logic), and targets (the quantities to infer).

Source types

Type Declared with ASP encoding
Probability a value in [0, 1] choice atom {name}.
Boolean true/false choice atom {name}.
Density a continuous distribution exactly-one choice over the intervals induced by the source's thresholds
Number a scalar value exactly-one choice over the intervals induced by the source's thresholds
Categorical a vector of class probabilities 1 { c₀ ; c₁ ; … } 1. exactly-one constraint

Syntax

Here is an example Resin program for an autonomous aircraft system navigating an urban environment.

# Source declarations
over(park)         <- source("/map/over/park", Probability).
distance(hospital) <- source("/map/distance/hospital", Density).
distance(airport)  <- source("/map/distance/airport", Density).
speed              <- source("/sensor/speed", Number).
flight_hours(w1)   <- source("/metrics/flight_hours/wing_1", Number).
flight_hours(w2)   <- source("/metrics/flight_hours/wing_2", Number).
flight_hours(w3)   <- source("/metrics/flight_hours/wing_3", Number).
flight_hours(w4)   <- source("/metrics/flight_hours/wing_4", Number).
{sunny, raining}   <- source("/weather", Categorical).

# Propositional rules
permitted if over(park) and speed < 25.

# First-order rules
critical_infrastructure(hospital).
critical_infrastructure(airport).
safety_distance(T) if critical_infrastructure(T) and distance(T) > 100.

# Conditional probabilities and Noisy-OR over first-order instantiations
wing(w1). wing(w2). wing(w3). wing(w4).
needs_checkup(W) <- P(0.9) if flight_hours(W) > 100 and wing(W).
any_wing_needs_checkup if needs_checkup(W).

# Target that the program will be constrained on
safe if permitted and safety_distance(T) and not any_wing_needs_checkup and not raining.
safe -> target("/output/safe").

A program may declare several targets, each with its own channel. Every target is solved separately into a DNF over the shared source leaves, and all targets live in one reactive circuit, where adaptation lets them share sub-circuits (see Reactive Circuit adaptation).

Rules supports variables (uppercase arguments, in the example above W, T) and conjunctions (and); disjunctions are implemented through multiple clauses. Comparison literals (<, >) on Number and Density sources (ground atom left, constant literal value right) are derived from the exactly-one interval choice of their source: all thresholds registered for a source partition it into mutually exclusive intervals, so two comparisons on the same source (e.g. s < 20 and s < 30) are never treated as independent. Categorical sources provide probabilities for mutually exclusive ground atoms that are assumed to sum up to 1.

In Python, using the Resin code from above, inference can be run over one of the supported commutative semirings:

from resin import Resin
semiring = "LogProb"  # default, otherwise use boolean, fuzzy, maxproduct, probgradient, or criticalexplanation
resin = Resin.compile(code, value_size=1, semiring=semiring)
result = resin.get_reactive_circuit().update()
# result["/output/safe"] contains resulting value

Semirings

Resin's inference algebra, and thereby the value which is computed per target, is selectable at runtime.
Every Resin program can be evaluated under a different semiring by changing the type parameter S in Resin::<S>::compile(...).

LogProb — standard probabilistic inference (default)

Computes the sum of probabilities of all satisfying worlds.

⊗ = product of probabilities  (log-space: addition)
⊕ = sum of probabilities      (log-space: numerically-stable logsumexp)

MaxProduct — Most Probable Explanation

Computes the single most-likely world.
The sum over minterms becomes a max, so the circuit returns the probability of the highest-weight satisfying assignment rather than the marginal.

⊗ = product   
⊕ = max

Fuzzy — degree of truth

Evaluates the program under Łukasiewicz / Zadeh fuzzy logic, treating input probabilities as membership grades.

⊗ = min (fuzzy AND)   
⊕ = max (fuzzy OR)

The result is the degree to which the target condition holds, dominated by the strongest single conjunction. For the same proximity model: max(min(0.8, 0.7), min(0.2, 0.7), min(0.8, 0.3)) = 0.7.

Boolean — satisfiability

Answers "is the target satisfiable?" by snapping all input probabilities to {0, 1} and evaluating with classical AND/OR. Returns 1.0 if any world satisfies the target, 0.0 otherwise.

⊗ = AND   ⊕ = OR   encode: p > 0 → 1, else 0

ProbGradient — forward-mode autodiff

Computes probabilistic inference and all partial derivatives using forward-mode automatic differentiation. The result vector for a circuit with n leaves has layout:

[WMC, ∂WMC/∂x₀, ∂WMC/∂x₁, …, ∂WMC/∂xₙ₋₁]

Currently, no batched operations are supported, hence the value_size parameter is ignored and automatically set to 1 + n_parameters. Because ProbGradient returns the full Jacobian, it enables gradient-based learning of leaf probabilities directly inside Resin.
With each gradient_update() call , the probability of the target is evaluated together with all gradients and can be used to tune program internal parameters:

import time
from resin import Resin

# An example program for the safe deployment of a quadcopter
code = """
flight_hours(w1)   <- source("/metrics/flight_hours/wing_1", Number).
flight_hours(w2)   <- source("/metrics/flight_hours/wing_2", Number).
flight_hours(w3)   <- source("/metrics/flight_hours/wing_3", Number).
flight_hours(w4)   <- source("/metrics/flight_hours/wing_4", Number).

wing(w1). wing(w2). wing(w3). wing(w4).
needs_checkup(W) <- P(0.9) if flight_hours(W) > 100 and wing(W).
any_wing_needs_checkup if needs_checkup(W).

safe if any_wing_needs_checkup.
safe -> target("/output/safety").
"""

# Setup training for simple example program
# Make sure to use ProbGradient semiring for computing gradients alongside probabilities
resin = Resin.compile(code, semiring="ProbGradient")
reactive_circuit = resin.get_reactive_circuit()

# Set all wings' flight_hours above 100 so the condition is active
for channel in [
    "/metrics/flight_hours/wing_1",
    "/metrics/flight_hours/wing_2",
    "/metrics/flight_hours/wing_3",
    "/metrics/flight_hours/wing_4",
]:
    writer = resin.make_writer(channel)
    writer.write([200.0], timestamp=None)
time.sleep(0.05)

# Training parameters
ground_truth = 0.5
learning_rate = 0.1
for timestep in range(500):
    result = reactive_circuit.gradient_update()

    # Updated weights was not enough to invalidate any circuit
    # -> Training converged
    if not result:
        break

    # Get inference and gradient results
    # Gradients are dictionary from leaf_name -> gradient
    probability = result["/output/safety"]["probability"]
    gradients = result["/output/safety"]["gradients"]

    # Finish once Man Squared Error (MSE) is small enough
    if abs(probability - ground_truth) < 1e-3:
        print(f"Converged at step {timestep}: P(safe) = {probability:.4f}")
        break

    # Compute MSE and perform gradient descent step
    # We set parameters to "needs_checkup#0" to only fit the conditional 
    # probability of the first clause with that head
    mse = 2.0 * (probability - ground_truth)
    resin.fit_parameters(
        gradients, learning_rate, mse,
        parameters=["needs_checkup#0"], timestamp=float(timestep),
    )

Gradient mapping for network outputs

When leaf probabilities come from a neural network, the gradients dict provides the upstream values to feed into the network's own backward pass. You can access all gradients related to your source channel via resin.source_gradients(channel_name) or resin.source_gradients_for(atom_name).

Note that you may have to combine gradients depending on your networks output layer, e.g., for a single output neuron that was used to provide a probability you need to compute full_gradient = gradient[atom] - gradient[-atom] to include the gradient on the negation.

Computes the marginal probability together with the most probable explanation and its least-probable fact. For n cells, value_size must be 4 * n, and the result vector has layout:

[P | v | tag | w]   (each block of length n)
  • P: probability of the target (as in LogProb)
  • v: probability of the most probable explanation (as in MaxProduct)
  • tag: index of the least-probable circuit leaf within that explanation
  • w: probability of that leaf

Sources are still written with n values, one per cell. Because ⊕ decides by v alone, ⊗ distributes over ⊕ and the result is independent of how the circuit is restructured by adaptation.

Python API

Compiling a model

from resin import Resin

model = """
active <- source("/sensors/active", Boolean).
alarm if active.
alarm -> target("/output/alarm").
"""

resin = Resin.compile(model, value_size=1, verbose=False)

value_size sets the width of the internal value-space vector (e.g. number of particles or grid cells for vectorised evaluation). This is helpful for running the same Resin program for many problem instances in parallel.

Writing signals

Both make_writer(channel) and make_writer_for(atom) return a correctly typed writer for the declared source — the former looks up by IPC channel name, the latter by source atom name.

# Boolean source — by channel name
bool_writer = resin.make_writer("/sensors/active")
bool_writer.write([True], timestamp=None)

# Probability source — by atom name
prob_writer = resin.make_writer_for("over(park)")
prob_writer.write([0.73], timestamp=None)

# Density source — pass distribution name and parameters
# Every time parameters are written, the density function may change
density_writer = resin.make_writer("/map/distance/hospital")
density_writer.write("normal", [[25.0], [5.0]], timestamp=None)
# Supported distributions: "normal", "lognormal", "exponential", "uniform"

# Number source for scalar comparison
number_writer = resin.make_writer_for("speed")
number_writer.write([12.5], timestamp=None)

# Categorical source — flat vector of class probabilities
cat_writer = resin.make_categorical_writer("/classifier/digit")
cat_writer.write([0.1, 0.6, 0.3], timestamp=None)

Reactive Circuit adaptation

The underlying circuit can adapt its structure in response to changing signal frequencies: For example, to group source leafs in 0.1Hz wide bins, each bin being separated into its own group of circuits, you can run:

rc.adapt(bin_size=0.1, number_bins=10)

Alternatively, leaves can be lifted or dropped at runtime, meaning we may manually indicate that a leaf's value changes more or less often than others:

names = resin.get_names()
rc.lift_leaf(names.index("alarm"))
rc.drop_leaf(names.index("raining"))

By default, adaptation builds a DAG: sub-circuits with identical formulas are merged, so targets of the same program grow into one another and share computation. Pass dag=False to adapt, lift_leaf or drop_leaf to keep a separate tree per target instead, e.g., for comparison.

Building from source

Requirements: Rust toolchain, Clingo, Python ≥ 3.9, Maturin.

macOS

brew install clingo
export CLINGO_LIBRARY_PATH=$(brew --prefix clingo)/lib
maturin develop --release  # Optional for building the Python package

Linux

pip install clingo
CLINGO_DIR=$(python3 -c "import clingo, os; print(os.path.dirname(clingo.__file__))")
export CLINGO_LIBRARY_PATH="$CLINGO_DIR"
maturin develop --release  # Optional for building the Python package

Run tests

cargo test

License

See LICENSE.md.

Citation

If you find our work useful, please consider citing the paper Reactive Knowledge Representation and Asynchronous Reasoning:

@article{kohaut2026reactive,
  title={Reactive Knowledge Representation and Asynchronous Reasoning},
  author={Kohaut, Simon and Flade, Benedict and Eggert, Julian and Kersting, Kristian and Dhami, Devendra Singh},
  journal={arXiv preprint arXiv:2602.05625},
  year={2026}
}

Metadata

Release files for pyresin 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyresin 0.1.0
File Size Uploaded
pyresin-0.1.0.tar.gz 129.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pyresin 0.1.0
File
pyresin-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details
pyresin-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
pyresin-0.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
pyresin-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
pyresin-0.1.0-cp314-cp314-macosx_26_0_arm64.whl CPython 3.14 CPython 3.14 macOS 26.0+ ARM64 Details
pyresin-0.1.0-cp314-cp314-macosx_14_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 14.0+ x86-64 Details
pyresin-0.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
pyresin-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
pyresin-0.1.0-cp313-cp313-macosx_26_0_arm64.whl CPython 3.13 CPython 3.13 macOS 26.0+ ARM64 Details
pyresin-0.1.0-cp313-cp313-macosx_14_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 14.0+ x86-64 Details
pyresin-0.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
pyresin-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
pyresin-0.1.0-cp312-cp312-macosx_26_0_arm64.whl CPython 3.12 CPython 3.12 macOS 26.0+ ARM64 Details
pyresin-0.1.0-cp312-cp312-macosx_14_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 14.0+ x86-64 Details
pyresin-0.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
pyresin-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
pyresin-0.1.0-cp311-cp311-macosx_26_0_arm64.whl CPython 3.11 CPython 3.11 macOS 26.0+ ARM64 Details
pyresin-0.1.0-cp311-cp311-macosx_14_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 14.0+ x86-64 Details
pyresin-0.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
pyresin-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
pyresin-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details

Total release size: 64.6 MB

Release files / pyresin-0.1.0.tar.gz

Download URL pyresin-0.1.0.tar.gz
Size 129.3 kB
Tags Source
SHA-256 checksum
How to use checksums
467322ba3b0165fd47ce8aebb9ebea08880e696118d51fedb9a7cd056a40c788
BLAKE2b-256 checksum
How to use checksums
e564a1d0cb493b6d4394e2d9b68807ebe6188a12c5af9e4280308371e9ce8b21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
b9fb5a3a76e49aa7cb08215ab71e750e20ef64bcb209ce3fca47707a68ad52cb
BLAKE2b-256 checksum
How to use checksums
2a24e93a2974503ecf34cb00ee0f7ddf188b153bdda39e31151f2b63d5f42188
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
29487018a5120ab388a6f822b9b6a0a71ef130a9bcd853667692baf35e09f621
BLAKE2b-256 checksum
How to use checksums
2260c3481d5ef875a9bee0e438ab0752f27ba4ed2f48726913f4c082dec08d1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp314-cp314-win_amd64.whl

Download URL pyresin-0.1.0-cp314-cp314-win_amd64.whl
Size 2.8 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
9d45994e053ccca5e0cca266fb4e3b0900005f6c6a0b3f302cf8b3938ee3bcbf
BLAKE2b-256 checksum
How to use checksums
c57515631ccc17062b779ae78df48fe32b856c74e5600d913a9042cd294040e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6b14583ccb6333a20cf496f319fd111c84dd50ba381c25467c3514ce5b7d7ca7
BLAKE2b-256 checksum
How to use checksums
49f0aabe2ea18063451ce61208f55173046643ee4a9d8f086e5b329187b57364
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp314-cp314-macosx_26_0_arm64.whl

Download URL pyresin-0.1.0-cp314-cp314-macosx_26_0_arm64.whl
Size 2.4 MB
Tags CPython 3.14 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
0c83d36220eec35b49893fef54a8bc1c07f69af343a83eeba44596e5781e3463
BLAKE2b-256 checksum
How to use checksums
51d9d671be7526ede448633b3301ab2769a38525a85cf49531cf8c91c806acad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp314-cp314-macosx_14_0_x86_64.whl

Download URL pyresin-0.1.0-cp314-cp314-macosx_14_0_x86_64.whl
Size 2.7 MB
Tags CPython 3.14 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
53802978f7517387fe806527382369a27ee4102a28927369cce1dab862918ef6
BLAKE2b-256 checksum
How to use checksums
4f4d6f612bb65c8dcbd285229ff9a30fe21eacb651075f5b376246e02d9d43e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp313-cp313-win_amd64.whl

Download URL pyresin-0.1.0-cp313-cp313-win_amd64.whl
Size 2.8 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
8342238a6c18ddce7b3cef70f1a9936a5a5bcd72d9d263fd9a5b9fdfe0e387af
BLAKE2b-256 checksum
How to use checksums
523d56b832f665a41181503e0b96acdb7685dd2e88e8b07b00404be1c7feebc8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
89cbb2b95fb8603fc260713140c7d6b3ab115fafb02e68c39bcfdb6e67ead17b
BLAKE2b-256 checksum
How to use checksums
1c2bf1367f0d3bdd85161fb99d05b02465f0199d7152f500674fa8de81b4664e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp313-cp313-macosx_26_0_arm64.whl

Download URL pyresin-0.1.0-cp313-cp313-macosx_26_0_arm64.whl
Size 2.4 MB
Tags CPython 3.13 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
2dcb72ebcd910086f19f85e2087ca91b8f9911cf66908687b83f6b9b3e0116b3
BLAKE2b-256 checksum
How to use checksums
87b96a091c2fe61491a2d1be8370a6db92072a8f2efbf0be2c54ff5ad5479a8f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp313-cp313-macosx_14_0_x86_64.whl

Download URL pyresin-0.1.0-cp313-cp313-macosx_14_0_x86_64.whl
Size 2.7 MB
Tags CPython 3.13 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
85178888e89d1f3e339da3d640f87e80a62035fedf043d914c6fe2e833f75120
BLAKE2b-256 checksum
How to use checksums
f70eee0b917aef8a11c4b5fa0c4205e8970932e057cf3d6ce1a775abbf4f7cfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp312-cp312-win_amd64.whl

Download URL pyresin-0.1.0-cp312-cp312-win_amd64.whl
Size 2.8 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
7190e8b6a85e3962ba3d34d81d6365efe67926353bccd6ba7f051ca99e140b0d
BLAKE2b-256 checksum
How to use checksums
afb06b3528f51cc709c406a9c8f7e7167ef7e0c085df5d8d04af74b6f58c9270
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3502a7d6bfd193c4d341d7e1d83438d38251f33c6a96613ead21af2a47a27942
BLAKE2b-256 checksum
How to use checksums
13f841b244dd83c7c64a6c9b252664b96e29d9cebef97c710fd2fe42523535ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp312-cp312-macosx_26_0_arm64.whl

Download URL pyresin-0.1.0-cp312-cp312-macosx_26_0_arm64.whl
Size 2.4 MB
Tags CPython 3.12 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
4f42da66c878cddbfabd7196f5d6812feabc24cada7362a1e81947393a3f36f3
BLAKE2b-256 checksum
How to use checksums
2c58e64712dfb7bafed6c7797a513ef7142bea3b67cbec7b3e103df1b4eb56e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp312-cp312-macosx_14_0_x86_64.whl

Download URL pyresin-0.1.0-cp312-cp312-macosx_14_0_x86_64.whl
Size 2.7 MB
Tags CPython 3.12 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
1ba6ef70e7d941738383019e21872327e7faeb308add2538abef3529e5b04c23
BLAKE2b-256 checksum
How to use checksums
aa75d5b5ebd3221e1c058bd5d0344f0c85c64943a56571a4dfe46e5b90d88e10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp311-cp311-win_amd64.whl

Download URL pyresin-0.1.0-cp311-cp311-win_amd64.whl
Size 2.8 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
9bf65ef738ac4311a4e1d27f5c6ef15c377b991685517262ce056e1a9c7b8c76
BLAKE2b-256 checksum
How to use checksums
e3543faafce54f164ec861bc31c7daf31eed90b78d8f52588c59f3c8f01b2156
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
cef0a208b83d7db5897b356efdc6a2780ba4698e76c8272a6b3c3f8ca37223ee
BLAKE2b-256 checksum
How to use checksums
0faebaa3cba9c62ef69fe1fe43d2d6f239cc0298e765ac734321e2e7888d0c0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp311-cp311-macosx_26_0_arm64.whl

Download URL pyresin-0.1.0-cp311-cp311-macosx_26_0_arm64.whl
Size 2.4 MB
Tags CPython 3.11 macOS 26.0+ ARM64
SHA-256 checksum
How to use checksums
eace904bdec604aa4f70bccc76032c500d075cc68178c5a2554315b88aa44e9b
BLAKE2b-256 checksum
How to use checksums
d7736deb8c898a933dd9e4a427d739ec2454b7c43b593adfe1b24c8ebbec7469
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp311-cp311-macosx_14_0_x86_64.whl

Download URL pyresin-0.1.0-cp311-cp311-macosx_14_0_x86_64.whl
Size 2.7 MB
Tags CPython 3.11 macOS 14.0+ x86-64
SHA-256 checksum
How to use checksums
c832d42c3c68ae61e2519dd5c16c9273a28fdcd0ee6f845cf2d72acdeefc753d
BLAKE2b-256 checksum
How to use checksums
d4267f0c103606ab218f7452466e11cfa7e2cae94fcabac2105a9db86b0b52ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp310-cp310-win_amd64.whl

Download URL pyresin-0.1.0-cp310-cp310-win_amd64.whl
Size 2.8 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
d1d424727e795df8e779ff16e0c9c6ddd825445a4ee6eec8e671c2cd1bbc2a2f
BLAKE2b-256 checksum
How to use checksums
a41b5698d1e715ef430e623f6932860c8ff557a4cb72cb4ed061b92129c5a4ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3755614dc3e8896a5668293b9782d12093e36d1f3fe28beb8b2abde5f39144e6
BLAKE2b-256 checksum
How to use checksums
d5c44aff7c0b60171835fb3b7e81babc8bb24d5ea81614f85d1649b0a9390abf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / pyresin-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL pyresin-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 3.7 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
936107643abcc96db4fc71ea65604ada059b42ac23673aeab77129d9bd4f3353
BLAKE2b-256 checksum
How to use checksums
a49b029bedf1e5ffddc2a94f3005f3801436de8022c82059eb7703e240279d0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

22 release files

0.0.9

21 release files

0.0.8

21 release files

0.0.7

29 release files

0.0.6

29 release files

0.0.5

29 release files

0.0.3

31 release files

0.0.2

31 release 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