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.0a2.tar.gz (49.7 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.0a2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reasonable-0.4.0a2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.0a2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reasonable-0.4.0a2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.0a2-cp312-cp312-musllinux_1_2_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

reasonable-0.4.0a2-cp312-cp312-musllinux_1_2_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

reasonable-0.4.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

reasonable-0.4.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

reasonable-0.4.0a2-cp311-cp311-musllinux_1_2_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

reasonable-0.4.0a2-cp311-cp311-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

reasonable-0.4.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

reasonable-0.4.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

reasonable-0.4.0a2-cp310-cp310-musllinux_1_2_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

reasonable-0.4.0a2-cp310-cp310-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

reasonable-0.4.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

reasonable-0.4.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

reasonable-0.4.0a2-cp39-cp39-musllinux_1_2_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

reasonable-0.4.0a2-cp39-cp39-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

reasonable-0.4.0a2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

reasonable-0.4.0a2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

reasonable-0.4.0a2-cp39-abi3-win_amd64.whl (378.6 kB view details)

Uploaded CPython 3.9+Windows x86-64

reasonable-0.4.0a2-cp39-abi3-musllinux_1_2_x86_64.whl (4.9 MB view details)

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

reasonable-0.4.0a2-cp39-abi3-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

reasonable-0.4.0a2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

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

reasonable-0.4.0a2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.7 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

reasonable-0.4.0a2-cp39-abi3-macosx_11_0_arm64.whl (498.0 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

reasonable-0.4.0a2-cp39-abi3-macosx_10_14_x86_64.whl (512.3 kB view details)

Uploaded CPython 3.9+macOS 10.14+ x86-64

reasonable-0.4.0a2-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl (994.1 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.0a2-cp38-cp38-musllinux_1_2_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

reasonable-0.4.0a2-cp38-cp38-musllinux_1_2_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

reasonable-0.4.0a2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

reasonable-0.4.0a2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

Details for the file reasonable-0.4.0a2.tar.gz.

File metadata

  • Download URL: reasonable-0.4.0a2.tar.gz
  • Upload date:
  • Size: 49.7 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.0a2.tar.gz
Algorithm Hash digest
SHA256 342f785437547a9bc5564a1024795848bd8dd92b7f1dfa25d698f58ee34e7aff
MD5 724be5543077a74423ca9f6439af3e56
BLAKE2b-256 5faea281819f66d67594a03a5ffa43fb2065e14588a5b18a36e7baaf4685a830

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00a34e59d5dcc36dbbf74a8baaefc40633ae989943988a4cb7a2c3e76516fcf4
MD5 fd03f24f6f3712e126eb8a55850c9366
BLAKE2b-256 f8391afde8e3358cb2b5c92578e43d5751bcdb1725b30cf76aa5e2e8fd17af29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e75bd4c4fed8c24ab216e93e3e7080a4c94c523fec735d5e10c2918d6ec9b536
MD5 e9fdeb14d268586312b7ada16a102df5
BLAKE2b-256 dc6c8ae5cc5c60063bf2c8bfe2230bb982a442d85710caba49da83c7d056fc97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c2fda0fc6092cbe0b6a8a1bd467aac7abfa2d242f8fb0fc805bd2b2b9619b4f4
MD5 cb39dfdf1abff8440b23ec6a5d12dfea
BLAKE2b-256 fc82fea3b2ef802b0ecd3d6c1803f8958487cbcf65f7217eb61a62de745f607e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e8c32cc2d6b4f601db9064b25b8d0a2d71491797bc87facd95e756ec69074bc0
MD5 1780a8dbeaf11d2fac82bdacd5a43818
BLAKE2b-256 3419451901c01652d70eac54d335f51e544933022a32e896b07763e1377c7b6d

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 a85db6059edd2890e6585ab44fb48cd500e383dbcf6a5e9438f460efe342ed13
MD5 67085d409aa53d4dd5093c14a28aa515
BLAKE2b-256 f7593e36f3a1fd3d23cad384947bc863d999bb4eea29be17bc99720c1e95a261

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dd9b7444a1934c680ff28dac2c445e6a3b528a0e897980eb49deb60b82cf2ff8
MD5 95e8ca14dd24dbace41124ac6e028b91
BLAKE2b-256 b725c101ea3123fe7a03fd9bc34d70f20c40d4d75f2c0c3c9147f454f6db4e94

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f644263b8e2bb20931c064897709a430e4e4120dda539bf5ddd36bc4bce9a8b9
MD5 581d14c966d378be776e09decab94102
BLAKE2b-256 5069ddd567d085f671f786e8fa964e16d837bfc53275a9f6653126c99b49848a

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 263402a2333d31b3c74884ada723beeb78486825d3d0f6749c6f3f0a489b100d
MD5 a043c0ab3ba44ecb1ff150ff9e2e2c87
BLAKE2b-256 780f7dbfb212e8d77b7bc3f72f786cc0cc2db3663cb7981a4703ed704bb387fa

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b12d0577a8aed49843660ed4379117f74ad2b29bb84df053e3e84556c141f28b
MD5 1ca7e4d3da0586d888d692a40dd54868
BLAKE2b-256 efa147e67a9577bb6b54e26470253d097fa5e007f1fcd5d2b6aac2641d119b21

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a647bc13f39cd33ca716b900f072c17c4d259c26f98fb7a6fcc90301f9725bf3
MD5 30167b48c510f6b5197e676889da08df
BLAKE2b-256 0eae9c52c206a6b6299b444aa3faf5810e50a51e686b38a4d6c08dc034ff4553

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c3813265238583774ae9be58245842675d9be7242f6de5e2f2f1d31e02aa2c75
MD5 16668b9f9a8d7b41117085481ae07ac6
BLAKE2b-256 b33441ee27927dd0fbd10d5720d5883adfdf5c0e6102ab85320d8f48c7099352

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 39b36178491149ff4d68b92436eb4dbcca698715517cffe7dab9a641458c6a33
MD5 76d5d6e686cb02b0aa30003d27bcfdf2
BLAKE2b-256 4487e88c10f1ea594a8a5bf4a4d8d8e8da15fd1d0d2c4bad2059b59339f0fab1

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2cc9cc06459233cb72a0620b11afa298c8b30476574c3f636acd538c11bf9686
MD5 599cda9b8bb84cd1020814804b47f60e
BLAKE2b-256 ad86ada93a51c2cba240e58e7398160ed1dddf5431b3c94b3a730d8015233d43

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ebc09ebd07996988084a3f989c2ee0c4590e55fd4855e96c85b76451efa0aa1b
MD5 672d04df4085fac48f91f483b4506f0c
BLAKE2b-256 030d30b804022a22c8e32677a3b9b1ae2d25658e31cbfdd51b00db0e991353f4

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c660ceb8f7f425ed61399c146bb51358d7196e3f2ff64f4295d71c89152b46e
MD5 82da0d6c7cc61a59039a0759042772ba
BLAKE2b-256 e4c1e2e0020c34c2364acadc0145e985ef7cbf37cc2aa2ef4e384154a3e737da

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bf601019bf5eaa0f0c7bd17c5dbd881bf444602f314aa8a09c3b3d396afaa69a
MD5 77bec35d3e6e85ad2d759a464c1e868c
BLAKE2b-256 5ccf6e92ece77c3d8c1058ed20aa9a39aaf0f0e9c6cc2c7fd37a0652586d4496

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1f36e10197cdbc3280c6ad9d427d1503ad41e40fb13e86cd257e60eeb62bbd18
MD5 abc897be053c170fc91dc9b447bbd658
BLAKE2b-256 218677db3ea8a76f277ba92bc4b1da6f4811ad8a1771134e00fa9c8aa082de94

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8a787a7b803a7cc5a30eb8c963a6b68d01c251eba52fea3b906451acb8a98bd1
MD5 2407b33e5e53056a8d93edc8a9a50527
BLAKE2b-256 e9c3fcca88a8b5f0d534849c27c7c0571b03585d72052cf4b58706921120fc01

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f0638105a327086438f5ccdfdf070e581dd162f15f3b160a8a1b3482030f8d8
MD5 e5e4080ac035ecaba5a8688b9f9b5e03
BLAKE2b-256 7ab86dbe1a1284fb22db0c3f5f308240450a98a079b1b9df41575c0c3eaac2af

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dde7aab1cb93be86d93cd69c7003454f8451a137068fb40c1db0f9ce52119024
MD5 459c165b76bedfb7bb9bd3dc22b8335e
BLAKE2b-256 cc159fc04c5d5d2002b79d427f748544e1fbecdd1096b52f16067120e3f6cf28

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-abi3-win_amd64.whl.

File metadata

  • Download URL: reasonable-0.4.0a2-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 378.6 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.0a2-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 f78a7dce7d767a0c68f280f616c890704e4d194ec83791cf9d907d8b85086de0
MD5 d2e3300a89784ad040b4baeb6c5b6c23
BLAKE2b-256 8ddf08cc5871b91f086e56a2ac0f709fda95d0c19d00c9481fc6c6ab24dd6968

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f278e31d4ba0771ea22c8f495e4026a55900e3f955ac70bf85cde0d15a216d8c
MD5 81ed3b1e93188683783b67214019f973
BLAKE2b-256 e21a2c8ce7626c87c0b9b7275e63fd074fb83906a371bda7ece3e830bb909985

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 65036604f87956f80ad19c8e2a151ed5e312ed4371483aca9e1e9bcc5d34b640
MD5 3f65e6fe6e019cf1e9a3421b484b8229
BLAKE2b-256 30ecd1ca2b21394b20230cb8891f4b22a413d2f593ef48f5db53b6ba262563a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 21da755a31d99876fed5c50bc87b8c35cb0f65dc3a751fc7c075d1afaae84053
MD5 dde3a243935672b121c614bd4cc92dc9
BLAKE2b-256 5c8c7568d3017528bdf97dbe95ecc9468a17432efb6264c1118ccab8103ccb73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7fbc5baa7cdc08594fcec847d083e69a33024830aaf3605b95557df410e0fb83
MD5 fd71d0c024dbf07817a586b91b73bd30
BLAKE2b-256 83e18c9446336bdd750a801ff0d6012bdc55c32cb9ec32682a825e28340e150a

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 edf61091641e811f72925fdbccffb4659b94929237a4e180e28848ceafe01fb0
MD5 e5fe0075bb7e517a18c558e136ffc59f
BLAKE2b-256 a34c50ff53872bae5f4da406b53523d714fc1bc88ff4cd796c2c224c46607bc7

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp39-abi3-macosx_10_14_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp39-abi3-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 e56c5591140ada2e5f83341965bed2592c722c70767f58336141f51bedb9e487
MD5 251f72127521fc21422e58167780f087
BLAKE2b-256 8dd49c45d48d5b4dce1989afddc24d248bfcaf562b2827b70850b14a9193e54f

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-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.0a2-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 8daf1317b9c640b161a4c1cbe0f4778d96d4ad91d79d10559a2fa60e3260e747
MD5 a454108d8fd965d9c0941aee47ff4f22
BLAKE2b-256 064a5011e192b58fcf5b8b028861e61f2effd726209ad116b6f1fc24d0171e97

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b69a791a0cab564f17ee85d6f44cfb17f376ead9e6289e2f57a06a7a0cb7f27f
MD5 0b8dbb13af95d620917df56ecad8e0df
BLAKE2b-256 614272189f068fa5d3ee3e8011de75d1e5a86025e1279f49eb996a2553fd93ff

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a97dd3e52e11ca92a0fb13c1098d891c4d7584d3cad3af132284db48b5322445
MD5 3c9ba0a819184ab41943a99bbe762c5b
BLAKE2b-256 78d44e5e75eba50feb94a19fd7af6e8e857a61ad8e5f2bd79205882a664f842b

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 09ea5e46e430d4722329f975d362fd76355aa6d187f8065deb8ba1c93e9d47d6
MD5 5249511fd16e9311538c3cb915045303
BLAKE2b-256 d14e2f18cdd89e78b9498713493fd09c0704e83eda69378df6732d982f9ced60

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for reasonable-0.4.0a2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0b62f4a4e8b55ccbfe850fd495b24f963c1be504648a3d529d0a29fb1728f285
MD5 5950128ac4e6b19f09220ccda180e720
BLAKE2b-256 c8e068658cfd75b546c2e2e832c83be18534afc6f56b2d7dfcad173cdc858ee9

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