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

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.14macOS 14.0+ x86-64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.13macOS 14.0+ x86-64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.12macOS 14.0+ x86-64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.11macOS 14.0+ x86-64

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

Uploaded CPython 3.10Windows x86-64

pyresin-0.0.9-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.9-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.9.tar.gz.

File metadata

  • Download URL: pyresin-0.0.9.tar.gz
  • Upload date:
  • Size: 111.5 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.9.tar.gz
Algorithm Hash digest
SHA256 10d9d9cab37238d24241033e995106f66a354d24175e7819d89eec9aae43e56a
MD5 f214abea374d7d41123acdb10fa31b7d
BLAKE2b-256 d29852e15fee7d291a8ae4b91aecaed6987df1ee0e5b702485b1c679e689087b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a5073720115dee98f603e41b3eb329878a2596c54416857187389614300b84e2
MD5 d2cbb952e6340dcb9f9e0763fdee1acb
BLAKE2b-256 fae857a4288c641055cf4403b95ff259247bfbba24e18a178fdfe2e7545bc85f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyresin-0.0.9-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.9-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e8878bc788a7be2df2cf51995293d92173a9a27cc54fd2fced9fd2e7d7c57443
MD5 5b569d30c80433e9b0df1cb4e205ac10
BLAKE2b-256 79f150c32c6403160706aaae0b4eefc4cc372881c6a329e4a684a32ffd3235e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0327aca4b090b48377c5740e98fca2e043b895dc8954b71822f50350a43ddceb
MD5 167be1cd5d6176cee2b55c280d93d520
BLAKE2b-256 22ea5bcee9792b8584bbe09880aadf3341a255fa3750995712339218c6d2b6f4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c26f6695b43508c2ea8603db089a10a305a4910f38dde0d76b2fd7639df45268
MD5 e5f0d9a6dd0bf5bbe9d247908dc65477
BLAKE2b-256 a74abcf7fee4e635b7f9b664853b73a5d2098894572362c7a3246727be984add

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp314-cp314-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 7af38dea79d2e4a041fc021e90b6af79838a79d3f95f0d09008cb3da48ab81ae
MD5 7af2ad468cc6499cae1a81affaaf0eaf
BLAKE2b-256 93b0eeef752c94b0b672e350c9b46e45aa272c1652e9f7403ac2ee8c8f70f5ae

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyresin-0.0.9-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.9-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d45ba57da199197bf0f5bdfb3ce5b8edb8f438baed4cf3eafc942771f880d9af
MD5 34d1d29d86a50a930f7c5e71f7b4c8b9
BLAKE2b-256 870c7d9cf5fe94042a06c65e73d65b7f273a9914b3eb2c24de562933a6b3bc3c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 40d478e05d24637af084cb0c648ee7dfb61e86eadff7038eca6673d5669fbe98
MD5 0a7272d56eb2cebda7af9c1fffad3747
BLAKE2b-256 2953de757e1fc64fafbd4bab121f3c2ca32f04373fe1679c7287e0731f20e8c1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 88b94475b0eaa6f9b705a6f127df3af9c715a2e0faee2535c5051dbdeddd4a58
MD5 c1abbfcf6e8834e158187f2fe74e269f
BLAKE2b-256 b8c8c7a5a11171c498bba85b256b84e5bea60268af053423805ae021fc1b7873

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp313-cp313-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 06382773dc7895915301b26b58d168dc8c9683bccd8fdca44bb1265cc80a7315
MD5 a492b093b6d12ff3c1844b08523948ce
BLAKE2b-256 2543fab235ee3ee2c4fa8b6c110e10d094269d6e52679c346f1f02eb67ace4e5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyresin-0.0.9-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.9-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6a4a03a58d3f60ac4a8759b16477bc72a680a5e41a0d3421755a96c94d5e7433
MD5 21af15e712fcbae2d27ab3e26b518db5
BLAKE2b-256 dbac17f015dc1a46f0c083a4c07ff49423e2e228d1e363c0a982357c9dfd7298

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 afb6d12f04d6a2f807b46e5a05967a927135d2c67780ad70a1dca3259b530c3b
MD5 70c7bd11e85daebfc5c68b7bae8d1d4e
BLAKE2b-256 e1c6222fe7ee821b0e1c5edaeca09484eebdd3cd2a342ebe7d279cc2ae9bbf33

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 2a53d800d5e71756890b2c480671a7fd2582963e47fbb667e2e241ab6b6e7e2c
MD5 f5e9fd54dd135fc4bcdaee7a1b66af96
BLAKE2b-256 09f5bcd2bc2bb50340e84de6fe46efd06b0947b4f38ff81083fbdab5e4c373d1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp312-cp312-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 96087570abbeb0db7f1de494d6377ba799e6e4f16993cc6fcef805a8f98f9b19
MD5 4285394a49ade712f92dabe1ccade6d3
BLAKE2b-256 352d1ed4425974a9a34c1709af6e72c139f76520fca8d1152a1fc48363995f4d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyresin-0.0.9-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.9-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e1becc6af57061a3e732c4688072e68adafba144cdb2083d125ac8dda2e25ffe
MD5 9372c7a0be159c7fde0079a3a143e0cb
BLAKE2b-256 fbc821bad5973766547aa2722218a2abac09c7bf6c7d0785ea6c6e288300ada1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 402143d3172bf178a85c535ee24ea43d50ac027daa3dfdad9f0e9d6c9ee5aaba
MD5 c2947f69b47e7775432070528b28904b
BLAKE2b-256 23d0f1dd155ff03da204aa9bec269b4c332522a2719f70b2050d4eef11dfd551

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a2f5b67b079704bcf62d94edf801da1a6bfa7a0e0441fa64f40bf6926a75e2a7
MD5 c910c67cab37980f28ffbf2795009ff0
BLAKE2b-256 087d6619a08e53c43c4c726a1b576150a1e5300fe66ff70d064025ee5f4e5202

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp311-cp311-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 c66d07ef1efa77d8bc3192c616952086afc8ff5d7c5c91e91e76881544bcef4a
MD5 e3c1cb97ca2294ce7056f90dd4e444bd
BLAKE2b-256 95a7a9af3810c587812259e53710b11a6ea680f47987371c40e917b6ad8ecbbb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pyresin-0.0.9-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.9-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 823e06258d3ac3eb55f4cfdaeb2c6de144a70ee561ead0e7bcb555d603d40e46
MD5 0c9de0196a889743388cd99de71aac24
BLAKE2b-256 31a69f87e1ef787389a7e7f8a883ac29e9261d3050828fc0c37500cde73085bd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a75a507fbae5b9975035889a14643b559e3248e278669b69ff163b166a54a0da
MD5 e74140c4d848285f550e7aa937be7001
BLAKE2b-256 e77280408b7fe830c902533eb1ae30fe16a7f6c64bd8826e95e9397af1763392

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pyresin-0.0.9-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d534ad9620b1ae6d0d3337c9cd6fb72b8c9bc5077b8edfbfa6ffc75d32cfd8d
MD5 29a733dea66cca2df0ec74d33c4fb43b
BLAKE2b-256 359e64269e47bfbc6de4d9801b2c786b141175f6badef143d756fb548dfb2a02

See more details on using hashes here.

Provenance

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