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
OSErroron missing/invalid paths.
- Load triples from a Turtle or N3 file. Appends to existing base triples. Raises
from_graph(graph_or_iterable) -> None- Appends triples from an rdflib
Graph(or any iterable of 3-tuples) to the base. Useupdate_graph()instead if you need retraction support.
- Appends triples from an rdflib
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. ReturnsTrueif removals were detected,Falseotherwise.
- 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() -> 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().
- 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
reason_full() -> list[tuple[Node, Node, Node]]- Forces a full re-materialization from base triples, ignoring any incremental state. Equivalent to
clear()followed byreason().
- Forces a full re-materialization from base triples, ignoring any incremental state. Equivalent to
clear() -> None- Resets all inferred state while keeping base triples. The next
reason()call will perform a full re-materialization.
- Resets all inferred state while keeping base triples. The next
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 maturinfor building wheelsrdflib(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 developin the same environment you’re importing from.
- Ensure you ran
- Build/link errors on macOS (Xcode/SDK):
- Install Command Line Tools:
xcode-select --install.
- Install Command Line Tools:
OSErrorwhen callingload_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 fromexample_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.
Metadata
Release files for reasonable 0.4.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| reasonable-0.4.4.tar.gz | 56.0 kB | Without provenance | Details for reasonable-0.4.4.tar.gz |
Built distributions (wheels)
Total release size: 155.4 MB
Release files / reasonable-0.4.4.tar.gz
| Download URL | reasonable-0.4.4.tar.gz |
|---|---|
| Size | 56.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dac7b568b5e5237ec03250dc35b786a60c32d844a94d691c3bff0b0d86f40fd5
|
|
BLAKE2b-256 checksum How to use checksums |
34bbc9f2a2705532ff8791276e3a397c85c673f26c4e09eeea6a1a20f96e710a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.10 PyPy 3.10 7.3 |
|
SHA-256 checksum How to use checksums |
4c88dcc9d5d68d3a7b84fe5a7347ab68875d58f3b73c56bc135053fd78848458
|
|
BLAKE2b-256 checksum How to use checksums |
56ccfec2d8785fb7a8d2439958d445f9daf2ae6496706a265b6d465389485214
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.10 PyPy 3.10 7.3 |
|
SHA-256 checksum How to use checksums |
4d25caa9fc5498525e1844744ecb4d81394d73b024b4e151db70c1f834b39d32
|
|
BLAKE2b-256 checksum How to use checksums |
b7ae29545440b3211acb837bc576c971e58084b1240bce0850fe4eea2e0da36f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | Linux glibc 2.17+ x86-64 PyPy 3.9 PyPy 3.9 7.3 |
|
SHA-256 checksum How to use checksums |
b7686c7028756d7e8f4a171d1829d56b454cb1ea083f3b2276064961bdabde64
|
|
BLAKE2b-256 checksum How to use checksums |
d6a0997fa323651d163e5ebd268497cfe991ace75cf800deedcf57beaaacb9b7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | Linux glibc 2.17+ ARM64 PyPy 3.9 PyPy 3.9 7.3 |
|
SHA-256 checksum How to use checksums |
0ea4173f2e3f32699b0513e5a9ad80bbebbdc354b3b775ef86f202f5690a451b
|
|
BLAKE2b-256 checksum How to use checksums |
dc83d9490ee35b0b3597633f35274d6f9cabed57ed2d8e6b3f4761e75bd811be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | reasonable-0.4.4-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
3bc502bd578a75c70bfbb3dbde0ca8644271a527e61a8f085869a0481281f75c
|
|
BLAKE2b-256 checksum How to use checksums |
5e29cbb34c59b23fbe1b78be586ba0031e277a5abf0adc2e2fa1b8a05d8ba7ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp312-cp312-musllinux_1_2_aarch64.whl
| Download URL | reasonable-0.4.4-cp312-cp312-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
fa8fb8bdd7f8f4425875109b9de5947fa64ea9f929cae5952607d92abcb8955c
|
|
BLAKE2b-256 checksum How to use checksums |
f7289e1709ad6b4d4757e8597bf8ecfc4fca6b876838158ae2a29e3603663e57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
4d2e4c74f7476475ff4384312c5a1aa78f8b70be77eb978e50a7eb789d3211d6
|
|
BLAKE2b-256 checksum How to use checksums |
6e6900b96f283bbbaa9070848b26b7ed565c11ab3da035916e00d15aa457f753
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
de71d74486f3d0d12402a5aeecf3b8d6e7fb2a49fa2568a00af4fac04d38dd2d
|
|
BLAKE2b-256 checksum How to use checksums |
3fb2e40078ee0afb8bb0c9788849907ac95ca8b4bd40e2bedcfe978264e30540
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | reasonable-0.4.4-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
bfcdc209f5b7f4fbb01bf059e4b961a02a40df656ed9838215bc3461d53ff977
|
|
BLAKE2b-256 checksum How to use checksums |
d82a9964da7d8828951f37d7c29aba0241bae2a5cc7adf582280c3d01d2c9440
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp311-cp311-musllinux_1_2_aarch64.whl
| Download URL | reasonable-0.4.4-cp311-cp311-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
e1004223f73935a1437c89805e747283ed1889a1184e00eb84962365f000538e
|
|
BLAKE2b-256 checksum How to use checksums |
a80920ba8ec7380a17a0985628b9cbc03f7e21eec4ff88768cbb1e19d9753dfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
18b5f6dfbfc82c4b60541bb6fbc01bdece6e4aabfebe81298ab0cf1f1b69b14e
|
|
BLAKE2b-256 checksum How to use checksums |
c7286bc8aed4d5f28e18f400640141b4dae559154746702ac6ce88f62cae9730
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
b5158af3f116a4bf47454b4ba527faf3ff2494fa5eab36adc2c7fa4eae6b4818
|
|
BLAKE2b-256 checksum How to use checksums |
aadffa13fca79131710a174d2a8d4c64566a120a16036d72528af87995d81ba0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp310-cp310-musllinux_1_2_x86_64.whl
| Download URL | reasonable-0.4.4-cp310-cp310-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
659cf6011e0533b4045649ca431dc151069e4b44be9db52c08affecb80a4d534
|
|
BLAKE2b-256 checksum How to use checksums |
9455b835ec0d267a71bd777138b581e36f635b633106b4a00a2bc549b417a3c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp310-cp310-musllinux_1_2_aarch64.whl
| Download URL | reasonable-0.4.4-cp310-cp310-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
493b299ae91acd3717d8f2d3384af706a6ebcb8ef8297e964a9aeff234ffa996
|
|
BLAKE2b-256 checksum How to use checksums |
3f83db9c58723f36a7c9e433ed45b5d0d37a8e9cb1d101db21505efae7ebdc0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6f8fbc411dcef6c209b472888af2e1a83a2fee73514ead3e17fae0aabcf06a94
|
|
BLAKE2b-256 checksum How to use checksums |
59f97081c18d6763ace79c93b25400b5604c8f673ed82b3b0196e7400905d9e5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
e13b41d96dcf2613b794de1bd562bb8c1d826968173ac86b2d6081e62d8fd176
|
|
BLAKE2b-256 checksum How to use checksums |
b1363365ad5783961505d1c7860e59102c3d57f70c49d0efe77ee8e99a5db71a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-cp39-musllinux_1_2_x86_64.whl
| Download URL | reasonable-0.4.4-cp39-cp39-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
0a4eb6546916f6b43aab03a092a22db5e7b4456a0bb9723ec084c9a784ae3aea
|
|
BLAKE2b-256 checksum How to use checksums |
bdf4600de01a93b008bb593c5bfcd08929faf073e6ec36bc84317e44d8878796
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-cp39-musllinux_1_2_aarch64.whl
| Download URL | reasonable-0.4.4-cp39-cp39-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
9729ab5f38c76b74a57bb688b20c4ff2abbf107a54e7d0ac2f075be60923dde0
|
|
BLAKE2b-256 checksum How to use checksums |
20e407abbcf99c4dca1bf9624c5f3a38928b228b3b38143ca649a3a6a8ddf17c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
480dff402e441bec21b1cfb10e7b2791315e2c4f76c2dba97e4639b831ff48ad
|
|
BLAKE2b-256 checksum How to use checksums |
37397a8b0d24f0e75bab3f22b7c815f1ca88fddb94526132afaa9d2c02f72805
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
c5d0d400245fa9aee5e32b3e54616a225f9cd966e836f0813d5864e351f7c390
|
|
BLAKE2b-256 checksum How to use checksums |
e51cdbfe7e8177369f5f2227e33cd412e46b6e72aca21a761c6f197aa4cced64
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-win_amd64.whl
| Download URL | reasonable-0.4.4-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 389.8 kB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e7e3446a9e7ed3383730cb029a2a1b02e2f73ce5434d4c5c5cc2e2d323affa4a
|
|
BLAKE2b-256 checksum How to use checksums |
7bf4b633773c809f6c4d1dcf85560a9f073839b9be472fc0cf7279d29527c302
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-musllinux_1_2_x86_64.whl
| Download URL | reasonable-0.4.4-cp39-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.9 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e9c45873d2361bd1014c5d86e413617d33cd201951a08cc63444e6836736e247
|
|
BLAKE2b-256 checksum How to use checksums |
36c3959fa735916a29b12f9ccd40bd45487effae987ed7613005cae1f9b78968
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-musllinux_1_2_aarch64.whl
| Download URL | reasonable-0.4.4-cp39-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.9 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
f66ef2c94ad3893c6fd4b1320f94b69ac0e0b31415aad81541006e6d67f11042
|
|
BLAKE2b-256 checksum How to use checksums |
4f6950716e73c299897afde954e8a0eae31b03ca682a63dabfb6ebb8906633cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
8801db6cb6bf47de4b3b4ef4df8622de8e3cc9c22a0928e51dca4477fab8fa4e
|
|
BLAKE2b-256 checksum How to use checksums |
0a2c759fb4fc77271bae4bf5f74b73e5967728027b0bfd7d63bbc0f7551d13f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.9 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
2fcfd0ee6ae94e66f51bc82f10a5b68ec2de68918ee6cfb05124d421ab4df058
|
|
BLAKE2b-256 checksum How to use checksums |
926217171573c8a7e2aad0edca3e7f67108782d80f8a268748d621e64d13ddd4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | reasonable-0.4.4-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 509.8 kB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4a66c982806297f02bf7ecd3a9713828a332ee8d96e8861756f3de6d96101222
|
|
BLAKE2b-256 checksum How to use checksums |
63ae587fdfdcf0d4e6f51ee7ad8d2d071dcd8dd8fb13d08f97c84ab5c16843c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-macosx_10_14_x86_64.whl
| Download URL | reasonable-0.4.4-cp39-abi3-macosx_10_14_x86_64.whl |
|---|---|
| Size | 527.2 kB |
| Tags | CPython 3.9 abi3 macOS 10.14+ x86-64 |
|
SHA-256 checksum How to use checksums |
94adfb449180313a46f96548c345a549e302da939f696fc2100766ccaade4f7c
|
|
BLAKE2b-256 checksum How to use checksums |
381bdd88ea50cf51fa92064314d6a9820b375b5810702b9ab421b577dd98b896
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl
| Download URL | reasonable-0.4.4-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.9 abi3 macOS 10.14+ universal2 (ARM64, x86-64) macOS 10.14+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
85efa4f40cc2d58cc633bd21eaa44121f0741f7f27e60234ce88813075ad47e1
|
|
BLAKE2b-256 checksum How to use checksums |
093f28146fde68ea3ee5e29f62918a509e23779ac2fd897b3f388024a9ff2d96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp38-cp38-musllinux_1_2_x86_64.whl
| Download URL | reasonable-0.4.4-cp38-cp38-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 5.4 MB |
| Tags | CPython 3.8 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
5e69146fd4a869d56f6e2e2015e5a5dfc317da3e25ac2f34caf2812094b1783a
|
|
BLAKE2b-256 checksum How to use checksums |
e8975cbb572e3b72c0e716094a0cb6a447a109b6f47739a20c248d5d99e52617
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp38-cp38-musllinux_1_2_aarch64.whl
| Download URL | reasonable-0.4.4-cp38-cp38-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 5.3 MB |
| Tags | CPython 3.8 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
86b83a794c5bd6954b0801e707347c80376e28f0b60dfda8ab3cf9c4d3236e93
|
|
BLAKE2b-256 checksum How to use checksums |
6e4d56528324c534ec2ca981eac4faa34931f6e93414e7a07d7f5f093f7313f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | reasonable-0.4.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 5.9 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
af703e12eb1d6d02753d2461e1ed368fdd13759ee146b0ec878ccda65d8e3806
|
|
BLAKE2b-256 checksum How to use checksums |
22bce88861f47e133d1075eabffd510f833b44d4ba50b7110d44a59e83c7a21d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Release files / reasonable-0.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | reasonable-0.4.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
af396b9eae5248017734f8892a08ab6456692c26774277bca575394b6ef992a7
|
|
BLAKE2b-256 checksum How to use checksums |
ba84b71a96c3a860bf0a41cc68c70169fdd7ca32fb171973502edabb547cae27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Security for reasonable 0.4.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.