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.0a1.tar.gz (47.8 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.0a1-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.0a1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.0a1-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.0a1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.8 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.0a1-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.0a1-cp312-cp312-musllinux_1_2_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

reasonable-0.4.0a1-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.0a1-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.0a1-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.0a1-cp311-cp311-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

reasonable-0.4.0a1-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.0a1-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.0a1-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.0a1-cp310-cp310-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

reasonable-0.4.0a1-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.0a1-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.0a1-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.0a1-cp39-cp39-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

reasonable-0.4.0a1-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.0a1-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.0a1-cp39-abi3-win_amd64.whl (377.9 kB view details)

Uploaded CPython 3.9+Windows x86-64

reasonable-0.4.0a1-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.0a1-cp39-abi3-musllinux_1_2_aarch64.whl (4.8 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

reasonable-0.4.0a1-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.0a1-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.0a1-cp39-abi3-macosx_11_0_arm64.whl (496.9 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

reasonable-0.4.0a1-cp39-abi3-macosx_10_14_x86_64.whl (511.6 kB view details)

Uploaded CPython 3.9+macOS 10.14+ x86-64

reasonable-0.4.0a1-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl (993.2 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.0a1-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.0a1-cp38-cp38-musllinux_1_2_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

reasonable-0.4.0a1-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.0a1-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.0a1.tar.gz.

File metadata

  • Download URL: reasonable-0.4.0a1.tar.gz
  • Upload date:
  • Size: 47.8 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.0a1.tar.gz
Algorithm Hash digest
SHA256 b00892c52cbcf8bf0902951f4bcdd2d155b7fcd7e8d4170e481151c866488d21
MD5 6cd55953d32bdf79cef6856e06c0d92b
BLAKE2b-256 46d9ec7ceb04f78299463dd0b25ff16d877edcca2f34d54ce12a215fbfe99e36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 020dc4926f643d84a72bbd630405791397ee8e1864557888ab80b238b2bf932e
MD5 9e59e8139f96efd941dd507371ded130
BLAKE2b-256 031d8caba4af0917128f6e45a258c47b8bfa937ba3f9b2ad91a78cf0d9e24dab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9ac0b805c3eaf178a2f4a56bd04d3160d2518166702c8a27526cb2b765632527
MD5 ab1eeb9ad2e15a4c4caf30071849abd8
BLAKE2b-256 56c073e7d114549a0412d55fdde49ac45939cadade5b679284aceb75b6a76916

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 becf36368d40c3facda850199904f56036be0b5cd39cab67d61e2c1268fc071b
MD5 85be774be9e656547c69d59a138a99a4
BLAKE2b-256 def0e928fb12a000ff96597831e11af408c08126473c671125bf1152f67b0745

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 998cc5f26450d15cc4ab6b092f0ee8094d125b8570744c3e277c85084c20ba02
MD5 6af58cf5300afcf542fec8fdf8f4f777
BLAKE2b-256 28e76971d4fd764a5450b33d3d69a542169f858c5feb8da633493ad5aeeda142

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 760fc98c1a36d40934ce6441b5dcc14d8a2ee0005ad941db76a797ae78010245
MD5 293ddeb37606df63253465f787da2987
BLAKE2b-256 f5b8943e94094bfe827396e897c6725621ef53a5751c2848fe4cc46d28c497d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e440d7af569923e1ce7c7d7d66977de86016d40b20426acbffde01315c8bdca5
MD5 7d87d9eee85644feff68178594846b77
BLAKE2b-256 87b3daffddf69422b473034e059166a1cfc5d145b79fa47adb3d5c7f58599ee1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb44fdf351839b132fe7b928cacca703e1b06d95bd45aa77e9c8985ad16fbcf7
MD5 a207ed4d9e0422c5ecb49ae155b049a4
BLAKE2b-256 b2525b85b26a07555131306e3998da569664512de6d59bf337fd93071ff21e5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 13ed5da143f4435da3328f137636daabe23e20a8fc2777064d477118d4a42d4c
MD5 e2c82d07c58f3ee51c451e3a8876eb01
BLAKE2b-256 763873e0d46de3dda4312d641df67bf295f71d333758a27e6ed606527059685d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2fb223553e07946f5c20e805942029cdb3e6b8f7b584167026d962cf6aaccfd3
MD5 f2bad9818dc8e6d9fbca8c3e6ae5dfd7
BLAKE2b-256 734b7a4ff52d48c482517f427bfd648b311c014a3db52fe432603e00842dd4ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6a0ff9cbc57179ab37d161898be13a0c04f3b5a1582e6d425154e2d7627277ea
MD5 688ee6e59fa99d0d427c5fda71beb9af
BLAKE2b-256 c57cbb34257c537d386912d7613813674d78d51b23cdb17c19c33146be59bf3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad2d9d56827aa16f6836ae485a87d7742982d14e22ff6df42fca3dc56490b944
MD5 43fa1df4eeac3a3cd6bd394144d0362a
BLAKE2b-256 09b3507069b11cbe0b3d34fe22f3490068e1ffb8827aa0094649b3aee38a024f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4f04bea0fb4d7365e3a32dd4061c0a4652c622215b993ea75a0362eedbcfdec6
MD5 29629de56c94b91caa28e2f59d09f535
BLAKE2b-256 1a39433a925129934e3bcdf49bd97fe1026315a5bd58c3d9cbe5b8f5f9d20eae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8b1b2be34eb1d13aae932c8c0df6226c7648f95aa4c40535f18c9688aa802cb7
MD5 29f9546f32d0deea61d5a9b008f17160
BLAKE2b-256 a0678ec029df8be30cbcd37596521e719064738539ed11cf0e2619ecf6ab4bb2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 890723f71983dc8075bdc809969a65a9409f9730c8b0d50e190c7677d0417c58
MD5 379cf574c444eb7b1c0a9d8e0ab0a68e
BLAKE2b-256 a0a829cb3532d4f060212545880558c811477d69b12076d80d57b21f51a1b96c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c0d72fe8d3a2273082bb94bd9fac8dd5cfcb7f64caa1fa99c9de5c4dabee3a0
MD5 1279cf650f39c75a46d48cffc581ae23
BLAKE2b-256 08cbcd0656d61a2348c48c09e0aad2012b13cf1b7a223a50a7f47110f9b926ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9ad9fb52482bf0fc1bd3dddd534d34e6530c25aa6beb85e059f162e4c0ab7573
MD5 869ef6cfc9fb0e4de307c61bf814967a
BLAKE2b-256 8db2b0c836a5ab4e9ef8a26e79e710530b64c064c2b926c3c822d77365ba0a57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f82934d7c07e2e4880c20ea7466aa1f348f4d9953c970f74b129da9f3935a097
MD5 793eb0c4f9748e0a893a84201938f938
BLAKE2b-256 ec98f82cdc69ecab3c6832d444fa81b363b85abfd6cd1405b82967899e457bc1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 30799b7df6f933b36cf82a04ba97ee482476a1a37c791da03ef998c5f1cb332a
MD5 80194677b711d99d51307d58f5763944
BLAKE2b-256 0718c0de959102fc163b135f3762fe1dbb2388116b6c15049e04a192efd07895

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c5467b092534af7beff0d78d3313d14fabe864828bb619cb22d70db6a25aab2b
MD5 ecd642e08221603be42601ece7123046
BLAKE2b-256 f2cbc4876a20926c808c4d638375e11dcc118cf6a756fbc00021aebfa1c986a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 77847a9242a0e4dbdce1f6cfecb3cdac019b45935b9ab0fbea8907be541fd9d4
MD5 1adc6f4a4bb6f3b68ae789b3c908eb1c
BLAKE2b-256 ccad26c666a9c384d193bc9910060f6c443fea5f4cdd0fd6acee278bf09356e3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: reasonable-0.4.0a1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 377.9 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.0a1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 32dd60c76f3f59563375598e7df25b17808fdfc47d3dbd368369540d2cf29bd1
MD5 43d3a34a77fe74d60b40d9ba754f8f5a
BLAKE2b-256 2a1de285e5223d47f784a597fa9d672dd5e9971761dc4a40d0961f1cad31221f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 767d1c7c249ddafa77e672b02912a5866e7094a5432c188914b4d07d7941fd0a
MD5 5e638b540bf31f803add217ab8c2310c
BLAKE2b-256 f0e0b13e2cd9acf6adcc4516eba1c888072a6841823012333aaa4e4af1baf6d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5a7937c460130a78eb84d2617c44b1b3f8f77fb5f7cc7866e713e5c57f0f3247
MD5 d33b80b111514a52f082996997cfddaf
BLAKE2b-256 48adc2773b85d2ffe231db27bcd657751eb149f81344d0b1322de8726ba37c24

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 74e962708b3c3e1dc262db5fdd55e61fae2d9cf435cb95e6fae7bbe74da5c9dc
MD5 bce37a8f7bb408d90d2b1f3c5cae5aef
BLAKE2b-256 6c608710dca230b5e3085021b3672d09068bbd80a6d9f1f112d529b96d38ff19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c2be3b99bcf568a29281cceae81e66bccb8a356478e2d08866c89f30447fb833
MD5 699595bbabe9ec7755502f2592b4d9db
BLAKE2b-256 f01812b4956e75004a80e8e8465382ca24b3b4c05e46dbe714624dfb9d019c17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 764420ffb469ac528132b63db95a3e0ae6a0741c960a58ee81852ecb87fc1550
MD5 095d334e7a8857d42813550d57b32616
BLAKE2b-256 3e21eb0daacd9ee9b727d239e5b082e919a670c4b4ca0b5bb0034fabdf636f05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp39-abi3-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 37e979beb0118060fbf456fb8641e057f97fe1f468f4ea780e41874605d03c14
MD5 4e53e2e9656718007ba8a950da0adc22
BLAKE2b-256 d06e33141202f1a4b4ea21e84aa510c23545ae5c524fda269b133ad2d3cf5fc8

See more details on using hashes here.

File details

Details for the file reasonable-0.4.0a1-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.0a1-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 7b0d80deb657aeb375fedc3269d9938ebf6a4997877d6b3994f19af0d793d3e7
MD5 4e44f13feef815fa38fcad5173c203bb
BLAKE2b-256 9eb48448e5274b433bb782159ad3cd5c9633fbebf2a73fece92b65a938a20e42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dba0ff530921dcf7084b4ec2cc9a0786707dbae8dd1e0f2cfc21b952c4701a57
MD5 3c62a95669d301241bfac8f2fca310e2
BLAKE2b-256 3ec86f42707c618ba03e3b4b58da8218cbfc20cd0481b9a714bbcb628332d28f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9e1b741826dc8209ba5ba62b02ffb6f052f8eb5ef3c3d80aac04eeddbae5213d
MD5 88ce379251abfaa80ce52535bb09fbb6
BLAKE2b-256 79effa6c2124f21f3c572100b5cf4d40019ba68708044e7e652d6a6807f65146

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d6c9dc82a5bb8ae9440864eaa09999c6b3122034874542c575b5709788ff397
MD5 ed8ea6b0beec6b0d41d2ada46775c066
BLAKE2b-256 3dfd4145b7a570e6945152433672c024ea09fcd5e1c4febd2b673333bd3cf950

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.0a1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32338be3a7345b4940c29ee6eb0340cdd52e101d3a078b052bda7f04ccdc15f0
MD5 34e78e48f8127ff8599bc593270501b9
BLAKE2b-256 8d5a8bb0242df9c54414e88568ad1ee7230ab9791e490637bceb52cf5b4b617d

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