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.8.tar.gz (110.9 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.8-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.8-cp314-cp314-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.14Windows x86-64

pyresin-0.0.8-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.8-cp314-cp314-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.14macOS 14.0+ x86-64

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

Uploaded CPython 3.13Windows x86-64

pyresin-0.0.8-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.8-cp313-cp313-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.13macOS 14.0+ x86-64

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

Uploaded CPython 3.12Windows x86-64

pyresin-0.0.8-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.8-cp312-cp312-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.12macOS 14.0+ x86-64

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

Uploaded CPython 3.11Windows x86-64

pyresin-0.0.8-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.8-cp311-cp311-macosx_15_0_arm64.whl (2.3 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.11macOS 14.0+ x86-64

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

Uploaded CPython 3.10Windows x86-64

pyresin-0.0.8-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.8-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.8.tar.gz.

File metadata

  • Download URL: pyresin-0.0.8.tar.gz
  • Upload date:
  • Size: 110.9 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.8.tar.gz
Algorithm Hash digest
SHA256 6d04a90f8576e594ac01f2a16e2c3b9428586b6ee5cd2936a4c8d62eacfdf529
MD5 805e78e3771ab9d0790bb05d4301b0fe
BLAKE2b-256 daac86c7efc7dd92de4a586ba78ee99a297e25579ee2da2928f943bdd710c828

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8.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.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c426b5cfe6bb784dc83853deb8938ae2c70c17c44b4778b9c6339ff91ee13eda
MD5 276c53894e7538299fdc01f5a023cadb
BLAKE2b-256 cf23c3ada051f940df9c9c6611b408790ff239aae8155a862f6b98d21f325dd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.8-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.8-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 fa9028f0b42d6897a2de74cd5842053fd6ef20088ec0cb0f1bc2be907a6f864d
MD5 64a82050b019daf3382a652a6f2c6cf0
BLAKE2b-256 a24286074f3326649144e0af4640e673410820b9fa8cd171b7f102c0724cdbe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 96b5f3e7bac325d2e03add1123e4763fddb3287f270dd23524f5275699a0d1ed
MD5 7e2e67bd257631f28150014c59facc9c
BLAKE2b-256 15073696d470380e0526b43aa8fd5fa03ff5b6ea63919041bc6492cd5b5019eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 66b720a53ac958c26ee6960d5720d6acebe5a83084781131db855df00e3b602a
MD5 e475b5247eac29ec8930af81331b4df3
BLAKE2b-256 b87ad1cc76102802756d7f7afb3def907aedcd71f109d8fdb26a7364c4ac5aba

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp314-cp314-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp314-cp314-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 ec80cd52964a2bdf2b30c57c2e81ebd66fe5b6239e1c845b07bc9049a5ce7970
MD5 a5d21ddfedfea03ba47555874eac62eb
BLAKE2b-256 3a489219bf767d395f2bcbd3a0ed1ab7e5d5f77b1bd96b14b66c9017e4804a81

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.8-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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 049f7d8010017ae8f4eb5ca5db018235ac7a2bfcd1c8a356917c5d9eb36bdba4
MD5 85687486c78a78bf08d2f3da6a7af319
BLAKE2b-256 231600133ee1413fadb65e4d6adab4d8ae9bde72566da4d03a34bbb8a59e3c70

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f3a8fb5b8ba3b2aaf2c0e1186e16084747bcaa565c4f120984663c57af0fd6cf
MD5 e3367eaa97129c0c26b50add5fd8695c
BLAKE2b-256 9cf36ace3ce90c22d269e0a1c35001810258d56be7a9954831c7e69053a3af69

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 374cc8751aa7a76b09a5803ace52a88470fec26c109fc116638ef13b7027a5a5
MD5 1b53d5a386956df16121a80342a34a1c
BLAKE2b-256 d29b4ef5eddeb1661b5b5e7976dbc14eab7958bcde6d714f63b4f4aae1587a66

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp313-cp313-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp313-cp313-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 9b3490d98be2b918040809e5fd99311d4df3da2ec81348e4965724cafe520455
MD5 c895b962795b3accbcee50fd0902c29c
BLAKE2b-256 897849f1bfbf118a419b7c9bfd8eae55e6130f7b113a37fa8ddf93bfb458e44a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.8-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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 66ac938e7f4c9099a9b16a2bb26def1a512fbdf0091c90790b41aba7b4635d05
MD5 421907fc47cdaddede71c0e2c4eb7280
BLAKE2b-256 23ee217c2e7e03cafb4457562d9f2c1f7f0c91a9798ebb7335b103c13745a05c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f346e95b2b2d3e267d75e2461486e1e995611c5763f8b4dc7ec8c4d05c38ce8
MD5 a90847e249f1ed169dc3bb85f89c0d7a
BLAKE2b-256 f7e5fd7e9d8bb74cbc17a5fad077b43c88abb24526930a2b4cc65f7366351e31

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 79265992057e88bb184456322e22b5df24dfc712d449bfb6723310b6e9bbb74b
MD5 fc946168b40f9fc7fa18decc8d5b0918
BLAKE2b-256 7fe9b62bb8d3653b6477c3179e30e4308814ee4ec975bf69a2752648281a3b94

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp312-cp312-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp312-cp312-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 4de4e70831896c2a68cb7e84898f41e9b67bd83c752072e27fc6c061070c96a1
MD5 1f52d86953bda28b0a2259a1791a9a3a
BLAKE2b-256 05a4d773d2a62615c3238f9194779a1a0c91824f9c168fc4962bdcd3a17bba3b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.8-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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 725dcc055013cae777109756547b67e1c27abb3baeefb9a7533d0436cd51b824
MD5 4f7fec1975a249dab7178e3de51c2d55
BLAKE2b-256 00b990899c19d6e3213ed33a578ec5a35f2ed20e6c5dbb6fb035fc53f7225ffd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 caa3ef132dc0af257ded9a33c5dd2c4d3c6055ed49438324779ec42b804c59fe
MD5 efc2ea5ef21f7d28e3d7b22bc6ec07eb
BLAKE2b-256 3aaf07d5773acf584df97d3854cbbff7ec347a9a6f09bc86a9fb79f9cba55c6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 36b131047045d3661e0ad7c1ad85c7ecbede8a7ace40dc91a11a0e1592ec1c57
MD5 6dd8ee36c6dab0304ccae0eef60ed65a
BLAKE2b-256 a98383e9cc3b73ffc51fb8749b6df7bc96eeaf0583caae9a7560d24e4e5e4f9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp311-cp311-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp311-cp311-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 b0946dde65568caac0dcf934f6c824d72a9f771690c4cb7f83e01f83f9c39469
MD5 a298f39cca892cf504b67a6ccbc025cb
BLAKE2b-256 05d782920e6ce81c9535f679cd2f6635304d3502b8bee2bb9f91e23725ae6de4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pyresin-0.0.8-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.8-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 49b9b9bafee61cf3e5d14e460f57f18d414afce6a9f916e9f98bec47612d3d5b
MD5 b154c2a90799858919be64c9e7302c8a
BLAKE2b-256 e3c0ab63f7ce1a248ad80bae23b3ea4d79c0fbb0a90a49c218c44d4f7d2ef018

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3961586c4c0581602994f51cd8267eb1a0df254fdf55f34ffb64d3b7d302e51
MD5 1a3fc255f18d1cb1f14d6224d9fd685a
BLAKE2b-256 5d65d44295350970481ad3a11be6b675ac0b38ec1b09a1c09e22fed3e119ce0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyresin-0.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5647decae5a0c2c660282a491988585084baaa0025dde166389343b274003be0
MD5 e71a9588026617dabe666651c2ea09cd
BLAKE2b-256 c6ccb35a2839f4553f23ff6049621fad9e6bbaad3e7b0b8101211fb566d05a26

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyresin-0.0.8-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