Skip to main content

A reactive, probabilistic logic programming language using Reactive Circuits.

Project description

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 one choice per comparison threshold
Number a scalar value one choice per comparison threshold
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").

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 mapped to the independent boolean or probability leafs, respectively. 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, or probgradient
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.

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"))

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}
}

Project details


Download files

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

Source Distribution

pyresin-0.0.10.tar.gz (111.6 kB view details)

Uploaded Source

Built Distributions

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

pyresin-0.0.10-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

pyresin-0.0.10-cp314-cp314-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.14Windows x86-64

pyresin-0.0.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

pyresin-0.0.10-cp314-cp314-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

pyresin-0.0.10-cp314-cp314-macosx_14_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.14macOS 14.0+ x86-64

pyresin-0.0.10-cp313-cp313-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86-64

pyresin-0.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

pyresin-0.0.10-cp313-cp313-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

pyresin-0.0.10-cp313-cp313-macosx_14_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.13macOS 14.0+ x86-64

pyresin-0.0.10-cp312-cp312-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86-64

pyresin-0.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pyresin-0.0.10-cp312-cp312-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

pyresin-0.0.10-cp312-cp312-macosx_14_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12macOS 14.0+ x86-64

pyresin-0.0.10-cp311-cp311-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11Windows x86-64

pyresin-0.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pyresin-0.0.10-cp311-cp311-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

pyresin-0.0.10-cp311-cp311-macosx_14_0_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11macOS 14.0+ x86-64

pyresin-0.0.10-cp310-cp310-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.10Windows x86-64

pyresin-0.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pyresin-0.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file pyresin-0.0.10.tar.gz.

File metadata

  • Download URL: pyresin-0.0.10.tar.gz
  • Upload date:
  • Size: 111.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyresin-0.0.10.tar.gz
Algorithm Hash digest
SHA256 9a1d92bc4d2fe4608c794ff53c898aff3ee159c007ab166941472415ef67231f
MD5 1742c5f1298ce825b62e9405ba3bcf38
BLAKE2b-256 fce57f831421d3ad466abc499a1113b9f0a09ffa96dc32c60042b1cf8e8aebbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10.tar.gz:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2b4637384ded51ab855e7d9c36c7036f0b7430bf4d9f80503f207af1c7a51c8a
MD5 8d773d53bd6a9a7c3028f4728290b7fb
BLAKE2b-256 612fd6d2e3c0fb71064cc409ea2e160801a14fb6453acaa86304813ed07ec678

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.10-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyresin-0.0.10-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b7c89a9ee79368203ff0ad19c97fbee3c98d0e3c4cc880b0c89238d4b88f806c
MD5 50e5802a5cd90747a3fd6e3f1f4c620a
BLAKE2b-256 08d831ae27b52b31e12aa24f2a887d5b57233872168c86612a21325fc16c9b57

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp314-cp314-win_amd64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb10b0147b43b0f70fb8a237db15c9ec0402d4bd8465db31040231796977d3a4
MD5 48dcd24e6c78e0429d7a98d934790db1
BLAKE2b-256 056dfaf750259e490f5ad1a0909086dfdc3d761d3464472bdce31e8ea5789bbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 864af9b15c31f4b69f28a2fbba343f0bbbb49e321938aff1e1d6d679925b7595
MD5 af70ab9f679b812b7a0db33e39d3b435
BLAKE2b-256 6e426bfa5e4876465139f4d40d57fd1a9d785449be769852aded727a3cd0cafb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp314-cp314-macosx_15_0_arm64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp314-cp314-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp314-cp314-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 46ed5ba515116dc4ad53d079974538b1973cd59ac1eeea19a51465d048424b85
MD5 0cc39460fa8fac0ecf3889c545ab8dbf
BLAKE2b-256 82f945d669b3f12537bc704636f992534cd9430e9e85337d14546f6290c00dea

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp314-cp314-macosx_14_0_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.10-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyresin-0.0.10-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 accb91db4a9697be97beae1eaeeba0358017e987f70b6a794b734a76af24cd26
MD5 c4943739bef47c83ea802f126f70471b
BLAKE2b-256 09a7ad9b94fd587edc8ab229809efd5b19471fac9f842bbaf208d731a5715cfc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp313-cp313-win_amd64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 683a2919aba0923ada2b911fe01c6310edb279f89eb2814f7dbc6f9988f3923f
MD5 9568c5d7223b281a862506d46844b0a6
BLAKE2b-256 3e74737001ae4bc674931c1a01df5debace32c44e365f30ad334c02dacaed9d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0df661b1d44c8a127fa80426be99c5b4876410abee2570af4351dbe0e2aae37d
MD5 7152a7cd123773fa74995f92037afe61
BLAKE2b-256 03e8bff7ded6e2bb720240c36f1e7e573d99a110d01967f66dd842cc8a730067

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp313-cp313-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp313-cp313-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 cd900b183d7e4d5ca4683ff210b7cdecc2f032c7c03c0760a3191211fe06d01c
MD5 c2d6e57a8565d89279e4c4301e996605
BLAKE2b-256 e5c1b647bdeef20d7f599142a596e8be49c00f187463bbb81e8054fd10cf13a3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp313-cp313-macosx_14_0_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.10-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyresin-0.0.10-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2a1ce9d179c5921ac84088475309bad9acd3f09a490aec882276aff1d4ee4d21
MD5 de884744af0721ad8f7ec64a58b55775
BLAKE2b-256 8ed15878c8cf32895880b05cd1924ef26bfe296489a4fa641835ba6e08e1a07b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp312-cp312-win_amd64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 915023acbc1a83a8925f828f96f1e98dda0311105e7402e543b259f165f2a856
MD5 6f76b51859241546fba01cfb4eda9d56
BLAKE2b-256 532371add4e65d80b232120e465a6c678500a2669f5c88e7260895999d2bdf4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a3a668fb020e9f46d1136c6eceb8cb98a878dc262b72d44fb1faf9bf8046f536
MD5 130f1b81cb041d9f81b4900d35997ad4
BLAKE2b-256 0191025f8fb6e59b6ce64cef95f89960e311f9a0d840fbd4f5b3b15c5b1feec8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp312-cp312-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp312-cp312-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 4213288453d6873730422af0e383c200a1e141286b1d3920fb8c3c4917c87046
MD5 5a39d7ef55a30cad7f12adee8b7680e4
BLAKE2b-256 af21875a8203d866ecb93b415dfa490a175fcbcd02ef796937c8277cc0a27187

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp312-cp312-macosx_14_0_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.10-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyresin-0.0.10-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fa4efe5735060cf949541fda13efcd8acf0f7efd13cc8a1a499891c9f4261ab4
MD5 54dcd08f5e9c9a79414c3dc835e0d63e
BLAKE2b-256 d11e85246f154dab393c9b5790d45dde86b932dd387a7703711d62267409c39a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp311-cp311-win_amd64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9058b6e81d3b7578204e93551e333677677f9a2b748145a324cde8eb53a8687f
MD5 50bff874865a4b8148bd7c31f6dab900
BLAKE2b-256 c660fcf75a09078c2fd3aa45e137f88a4630db5764877f1f7c91625e6bff6482

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 33d42c33d1638d533a0bf69be811dca9506026248856ae0294658470676bacca
MD5 6ce0831cd19a0dfecf7291a742769f8c
BLAKE2b-256 97bae1ed996caa609a1bb9a21ea0c70bb0de64294a730e51fd15a440af350628

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp311-cp311-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp311-cp311-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 2f4de38e83ccc18ed64e7cd48ac9384496e84ae7d68cfdb4ff7701ed625ed663
MD5 6dd25952242dcb2ebe330c421b918f01
BLAKE2b-256 f5e9ff0e7c4153534a5b1c44c48fda6f9b5f4f357594f775969533b6a0ed3357

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp311-cp311-macosx_14_0_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.10-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pyresin-0.0.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f5989af94ceb0d2991abdb99208bd2b4846d3aa61996655251bb5041afa3dd28
MD5 67fda012d423e4e7611ff82fb23cdf36
BLAKE2b-256 aa65d38b34697a74243aa12ca1ce9d3b7263d869126ad6cee7c77bd30e7f6938

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp310-cp310-win_amd64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9dda02bfe63b84ba15c9e3324feba71053a408a6ff56f47ecbb1f9163e210f4c
MD5 274195c60b43578f90cc9b8d5bc6c578
BLAKE2b-256 63a558989e14fb4bff9118730efd31d8c1d00434c6a32a01b289f15f1c575874

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

File details

Details for the file pyresin-0.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecb0b5d6e407372ff9ac96421af2db0833ee48dfcda002787496aacf53d6ea40
MD5 4af78dce6babc8fa794f2ba2db078343
BLAKE2b-256 d6bf6dce8142bda3d70ba6e4e001d580a802909eb8bc636fcb870f4511a0cf61

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pypi_release.yml on simon-kohaut/Resin

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

Supported by

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