Skip to main content

Python bindings for Reasonable, a reasonably fast OWL 2 RL reasoner

Project description

reasonable (Python bindings)

Python bindings for Reasonable — a reasonably fast OWL 2 RL reasoner implemented in Rust. This package exposes a small, typed API over rdflib terms to run materialization on RDF graphs or files.

Quick Usage

Load from files (Turtle/N3) and materialize inferred triples:

import reasonable

r = reasonable.PyReasoner()
r.load_file("../example_models/ontologies/Brick.n3")
r.load_file("../example_models/small1.n3")
out = r.reason()  # list[tuple[rdflib.term.Node, Node, Node]]
print(len(out))

Reason directly over an rdflib Graph:

import rdflib
import reasonable
from rdflib.term import URIRef

g = rdflib.Graph()
g.add((URIRef("urn:s"), URIRef("urn:p"), URIRef("urn:o")))

r = reasonable.PyReasoner()
r.from_graph(g)
triples = r.reason()

# Optionally collect into a new Graph
g_out = rdflib.Graph()
for s, p, o in triples:
    g_out.add((s, p, o))
print(len(g_out))

Incremental Reasoning with Retraction

Use update_graph() to replace the reasoner's base triples when your graph changes. The reasoner automatically computes a diff and selects incremental materialization (additions only) or full re-materialization (if removals detected):

import rdflib
import reasonable
from rdflib import URIRef, RDF

ontology = rdflib.Graph()
ontology.parse("my_ontology.ttl")

data = rdflib.Graph()
data.add((URIRef("urn:sensor1"), RDF.type, URIRef("urn:TemperatureSensor")))

r = reasonable.PyReasoner()
r.from_graph(ontology + data)
triples = r.reason()  # full materialization

# Later, data changes...
data.remove((URIRef("urn:sensor1"), RDF.type, URIRef("urn:TemperatureSensor")))
data.add((URIRef("urn:sensor2"), RDF.type, URIRef("urn:HumiditySensor")))

r.update_graph(ontology + data)  # replaces base, auto-detects diff
triples = r.reason()             # full re-mat (removals detected)

Install

  • Runtime dependency: rdflib
  • If you have a prebuilt wheel: pip install dist/reasonable-*.whl
  • Build from source (see below) if no wheel is available for your platform.

Developer Install (from source)

Using uv (recommended for local dev):

cd python
# Install project dependencies (including dev tools) into a managed venv
uv sync --group dev

# Build and develop-install the extension module
uv run maturin develop -b pyo3 --release

# Sanity check
uv run python -c "import reasonable; print(reasonable.__version__)"

Without uv (system/venv):

cd python
python -m venv .venv && . .venv/bin/activate  # or use your env
pip install -U maturin
maturin develop -b pyo3 --release
python -c "import reasonable; print(reasonable.__version__)"

API Reference

  • reasonable.PyReasoner()
    • load_file(path: str) -> None
      • Load triples from a Turtle or N3 file. Appends to existing base triples. Raises OSError on missing/invalid paths.
    • from_graph(graph_or_iterable) -> None
      • Appends triples from an rdflib Graph (or any iterable of 3-tuples) to the base. Use update_graph() instead if you need retraction support.
    • update_graph(graph_or_iterable) -> bool
      • Replaces the base triples with the contents of the given graph. Computes a diff against the current base: if only additions are found, the next reason() uses incremental materialization; if any removals are detected, it triggers a full re-materialization. Returns True if removals were detected, False otherwise.
    • reason() -> list[tuple[Node, Node, Node]]
      • Runs OWL 2 RL materialization and returns all known triples (base + inferred) as rdflib nodes. After the first call, subsequent calls are incremental (only processing newly added triples) unless removals were detected via update_graph().
    • reason_full() -> list[tuple[Node, Node, Node]]
      • Forces a full re-materialization from base triples, ignoring any incremental state. Equivalent to clear() followed by reason().
    • clear() -> None
      • Resets all inferred state while keeping base triples. The next reason() call will perform a full re-materialization.
    • get_base_triples() -> list[tuple[Node, Node, Node]]
      • Returns the current base (non-inferred) triples as rdflib nodes. Useful for debugging.

Building Wheels

Build release wheels into dist/:

cd python
uv run maturin build --release --out dist

Install the built wheel:

pip install dist/reasonable-*.whl

Requirements

  • Python 3.9+ (ABI3, built with pyo3/abi3-py39)
  • Rust toolchain (rustup, cargo) for local builds
  • maturin for building wheels
  • rdflib (runtime dependency)

Testing

Run the Python test suite (uses pytest and rdflib):

cd python
uv run pytest -q

Alternatively, with a local venv:

cd python
pip install -U maturin pytest rdflib
maturin develop -b pyo3 --release
pytest -q

Compatibility Notes

  • Python: 3.9+ is required due to the ABI3 setting in the Rust crate (abi3-py39).
  • Platforms: macOS, Linux, and Windows are supported by PyO3/maturin; building from source requires a Rust toolchain.

Troubleshooting

  • ModuleNotFoundError: No module named 'reasonable':
    • Ensure you ran maturin develop in the same environment you’re importing from.
  • Build/link errors on macOS (Xcode/SDK):
    • Install Command Line Tools: xcode-select --install.
  • OSError when calling load_file(...):
    • Check the path and file format (Turtle/N3). Use absolute paths when in doubt.

Contributing (Python bindings)

  • Keep tests under python/tests/ minimal and representative. Prefer inputs from example_models/.
  • Format/lint Python with standard tooling; Rust code follows cargo fmt/cargo clippy.
  • For broader project info (CLI, library, benchmarks), see the repository root README.md.

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

reasonable-0.4.1.tar.gz (50.1 kB view details)

Uploaded Source

Built Distributions

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

reasonable-0.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reasonable-0.4.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reasonable-0.4.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

reasonable-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

reasonable-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

reasonable-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

reasonable-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

reasonable-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

reasonable-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

reasonable-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

reasonable-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

reasonable-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

reasonable-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

reasonable-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

reasonable-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

reasonable-0.4.1-cp39-cp39-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

reasonable-0.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

reasonable-0.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

reasonable-0.4.1-cp39-abi3-win_amd64.whl (378.3 kB view details)

Uploaded CPython 3.9+Windows x86-64

reasonable-0.4.1-cp39-abi3-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ x86-64

reasonable-0.4.1-cp39-abi3-musllinux_1_2_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

reasonable-0.4.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.6 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ x86-64

reasonable-0.4.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

reasonable-0.4.1-cp39-abi3-macosx_11_0_arm64.whl (498.4 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

reasonable-0.4.1-cp39-abi3-macosx_10_14_x86_64.whl (511.1 kB view details)

Uploaded CPython 3.9+macOS 10.14+ x86-64

reasonable-0.4.1-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl (993.8 kB view details)

Uploaded CPython 3.9+macOS 10.14+ universal2 (ARM64, x86-64)macOS 10.14+ x86-64macOS 11.0+ ARM64

reasonable-0.4.1-cp38-cp38-musllinux_1_2_x86_64.whl (5.2 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

reasonable-0.4.1-cp38-cp38-musllinux_1_2_aarch64.whl (5.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

reasonable-0.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

reasonable-0.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

Details for the file reasonable-0.4.1.tar.gz.

File metadata

  • Download URL: reasonable-0.4.1.tar.gz
  • Upload date:
  • Size: 50.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for reasonable-0.4.1.tar.gz
Algorithm Hash digest
SHA256 048bfdc5e80f81bcab5e7b321e38253c3aeefba09ec0be52571a981299a81fa0
MD5 6847027766d35e6ed3166e91c0ed200a
BLAKE2b-256 9dd5009563d51d5581fda947218d92ba2bf0317130d8eb1f5001d8bd75581bdd

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1db0d1213a052eb6b0a03ffc84c19f90f12c43a553bc6780f66640193c3b5735
MD5 c1b85e073d89dafc0befeb25027dd063
BLAKE2b-256 c31c053577fccbfd100f968dc1f330f256c38a83ca1d68ffc65ba486d3a8403e

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4a99b60932cba778fb73913baae497ef610b5a75d5affc2dfe855ccc6b6c83a9
MD5 ca2fe9e2930244ea0b3ed6066a674f81
BLAKE2b-256 feaaa7bbdf29367a85953684b7347db45d6bcb491ad4d29d84725e311ab8eaab

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 41b85989cf2e7aea489f5aa6c0f8aa6fbf843a9a4033ea3769808289791c0593
MD5 f41501c5a05043009cd685f9a697c300
BLAKE2b-256 a68f4da42a6b6cd57919fee5e18d8ede82f3455a083bf4ccd666af6a42136e53

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6692372c5f0f42e435bf77cbfaf341569911638abd62c224cb2e88afd0949446
MD5 2a7356326ff99966aa5ee11c2875eaf0
BLAKE2b-256 51f4c4ff8847be601721b1e1160d9126e941f3659a9df667d6cd612fd38c4f48

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4dcf61ae3660e49b298263713dfd56bd04652966bfdc9c0e5f229ca28e777f5a
MD5 7e48d20e7cfcf64ac669660d9fa7f188
BLAKE2b-256 05544cfd310b18c60e5d2039d596d0cc6b1882aac6566a702f079d6c83ef3515

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 13ab53e04da76a5245803a0db7a1cd6124949b3c7c2303196c63dc004ec2de0e
MD5 54ff0cde6b6e67220034ff434a62e28f
BLAKE2b-256 2d2eb01c1f1a1c9ddec9fb4f73cbf767a694a292d99a9ef52984568997628283

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6017aa2c885c20ed288ecf6824fb09ff30927e164ec5302275ff405f033f851e
MD5 502d35f877afee477ffae30e7f2911c6
BLAKE2b-256 00e84d33627677010445afbf5e1ad7376e38ae669faca0c552aea05882da1703

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3198cb6170b725cb43427a1020b3766da05b18bd2aba0e9159d22efa2cb45b1c
MD5 a7bf5aced52c48109fa2e7278396c915
BLAKE2b-256 fa50b03f0a438072de958e8b4d09291f25dab0fef4a5bcd799da720f1ae37d42

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0f26ef2f82defe9c6c77f2f0891f4605e171756e84af17e4afe7aebaffd76aaa
MD5 970ef99d2c3466745a6f1f7e9048e3a8
BLAKE2b-256 434218d020e2444d8b8b3c1d99aa5b1c85eef6e5b2600c49aaa6a1172c2be36f

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 231482319116c1f1c2b641004dbb10f94604722d6e88adb2bb6ce2025a6beed4
MD5 97655e114ebc6c1f723eafdee999bcfd
BLAKE2b-256 f083332be48549d41811b75ab32671a5d490e70323532d27691731d3fcdf4a3c

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ecbff2ca1328b6ab95c1daea088cc29752efdab1f11b58a7bf1b1b936495dcef
MD5 9da93a7170a2de55ff8393a3c4e6f69e
BLAKE2b-256 c6c506e275097fe6e7c39ab44a57258117b7b45cb2a897bb28011ba706b7ff4a

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1911d1f3e4fbe80cd420bc7aac081375d487ba6de4ac57ffb5cec4c0bed8462c
MD5 5d9b08510eee4a2c80fc90018b9131f7
BLAKE2b-256 6d4a6205f5e4161e71889f996bc52c351299c863b52e6d88b5522ba2a275ff27

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 26a14ffe665e9173044fdab20be95386c8e99ba85229a157a3c58cf578dbb438
MD5 75416d48e9b59930f11e776321ed14b5
BLAKE2b-256 ea9377abcc06769b944aade82ae0e4f7796cf61a288cff54ef1ce7eb79010d47

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b13e8a90c24d92f36805dc6ac06b0d3c25c2a5d55195f98c1d11957fc35cae33
MD5 e435ab62118d0cea528bee8e71d2d8c1
BLAKE2b-256 bebb6b77907f030943e1724757b595fb7b19d9735cc475b8022bd917c9306d88

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4b81e44fc46e512e2133b79dc6d3e86363448ab88c7fe2885d7955b2cf18fd4
MD5 4b9a2a7426b7a5f012b6fc8a078a7853
BLAKE2b-256 0de2af9d529bc3dba5dc4896006fdd069e05ead6530159895acbf3a623a9ec61

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b76b3f08df80f0ae1f6fc78b29438b2e607e8b57b4e0392de889555becaacf85
MD5 c0dc07ef9e009469ffd507c8f115c02e
BLAKE2b-256 a854da3be71ca76b42c24f7a67b02ae76f15b9c40cc81ebc388068cab2103e43

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 098af5f76da01d3ee869c8832dec3977ce9dce53e464e40aa5add23ff3ba3cce
MD5 f5dfeff12165de0cd1a497a108ca8a31
BLAKE2b-256 18b35881b68d70a1386736e072e025ee45c223889d69099858b75175938e97e4

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a4cb732905f881a17ffbad866961cd85229b28f5993e0a2658971bf97812d86e
MD5 397631194bd54e24feb8f3694e9988a7
BLAKE2b-256 de39649afb167bdff08b1d08826d5e421cd7e64281f8c7f1fa391186754907a4

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5d3f46374a7424cd64aa5671433a092279e261a78b9794e1c8095ad745c36102
MD5 0bdb601f1a69042df069143d69a7d960
BLAKE2b-256 3717bd0d2fd951e6e4e860aa142dfbb9c6724aa2efc04101d7dd79fe99502bf7

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1b84dc61444538943af07c32e2ee121173154fc3996d3fd267d5f83247a8834b
MD5 c42a6f169c4e0e54638aa80b1ef0d0ca
BLAKE2b-256 a3c331dd6e0249d8954cbdf490827d4919c6a3282449e3b39b3a77a63b54b599

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: reasonable-0.4.1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 378.3 kB
  • Tags: CPython 3.9+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1a683ff74a52f5cae600274717f4d5687964a596ac6bc0b08b4e9c6ad63e2890
MD5 64cf3784cf812ef9f66075f25a13937e
BLAKE2b-256 5be2c3ad3b55db236cbe2227e1f8e5a90fa0f6e54ff67b960ac640a91801f6ca

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ab0a2b202dff94883ccc0d34d45b29b1c80b7ce40c5bca23ab1f13107be6e001
MD5 edb489ffc4bb17798c83b9041e76ca15
BLAKE2b-256 95488dad9f8b74cfb98ea24a868361fd25ed49ae11b5f20c21a02c097228a3c9

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6b1ed999d01489a831e28fc61f1be7a5a8bc8df2c88fb4b07d7914e5df779a78
MD5 2241b4ae66146f4de7c64222c17b37a8
BLAKE2b-256 f533be980d184a2535d786f87706e64e727c5c028aee821e91c2467cec09c57d

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db2f4432906b5dfcfa75b0fb04addfe869d34a0acfb37c7bcadf578ceeee8593
MD5 5f96cd6b462df3353ca4a7449ddc8963
BLAKE2b-256 c90b17ac347c838daa58dfaa6951fd082652d38fb107dd554518793b56fd2e97

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 884728d41930d29e09c175719b8ec570eaed90fe99602cd68407268962ffd253
MD5 b932b768a54ac87e57cc81f84abc7f24
BLAKE2b-256 7895c1d2443a5dfa7a064dd50b96237a667ed5000a00f0e3b15bd4f28632c576

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3efc21bdc263770f7e963f51b78f828f9f0f232fd816d3c7de47b4f88befcd82
MD5 b168f1a340be27369d9b50eab72231d1
BLAKE2b-256 7fdc2063913784a871ab8087247520073cf9c8ad1d8c755e1ff18211bdefc423

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 c9ef9e06ea00e2a3d14565bf9cd260330dec1be8b444c8dd8d69a9497c77bcf8
MD5 f1dbcff9cc4ca954c07a6b5a7501a1d0
BLAKE2b-256 bbb01c7931c371c22d337aa48f59957dbf591ea33b2ede81029fb261d48d4693

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 2792fd8585b215fc517e78d2e3696ed4012c592889df2ff811f499da0711325a
MD5 6692e290cc9af83fd51d2786c97d7bcf
BLAKE2b-256 7e8de0c69c4ef35b13a7e2b39d5050ed7b4b84610668ae8faa995a537510e708

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e7084e4a6a44695a3c25b5dd60433a2b83a8dda42f81263f0f2605134ae9fa55
MD5 878ead93fa9583a70c6126ed89254120
BLAKE2b-256 7098c1ef76180a8b9ac05fd6c97a087ca8d92818bc8d4e783c693b83d63def1f

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6294563b69464490a6a2c86220c70584725e20eb1ef7932819e85aa8ade362d6
MD5 df70d866761c29763d44f8da7a5b8473
BLAKE2b-256 bfa0fea6cf08a0b1f5b434413eebef799d7753330376a1e967ef9ea3efad465d

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 04eb578003fde56e64b569f2b24a1b2a56af2ea2b13c18db061a096a3063a867
MD5 632b3c663d8f5e4a810dbe6bac614ce4
BLAKE2b-256 19deeff5271edace885a6dcf7bbfe508eb7cb67d2b2c4b2ba8b3cb3ceab0c62d

See more details on using hashes here.

File details

Details for the file reasonable-0.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f2077a6f2e3c6db2272355c375774a8c9cb4c89f7543e353f2dbaff756576f80
MD5 9c650f3894afd722a2d5d42ab54f83b9
BLAKE2b-256 193dc00ca9813f9310be4ef400128504bd761f4550aa8158c1fa840e5119a501

See more details on using hashes here.

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