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.4a1.tar.gz (56.0 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.4a1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reasonable-0.4.4a1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.4a1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

reasonable-0.4.4a1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

reasonable-0.4.4a1-cp312-cp312-musllinux_1_2_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

reasonable-0.4.4a1-cp312-cp312-musllinux_1_2_aarch64.whl (5.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

reasonable-0.4.4a1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

reasonable-0.4.4a1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

reasonable-0.4.4a1-cp311-cp311-musllinux_1_2_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

reasonable-0.4.4a1-cp311-cp311-musllinux_1_2_aarch64.whl (5.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

reasonable-0.4.4a1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

reasonable-0.4.4a1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

reasonable-0.4.4a1-cp310-cp310-musllinux_1_2_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

reasonable-0.4.4a1-cp310-cp310-musllinux_1_2_aarch64.whl (5.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

reasonable-0.4.4a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

reasonable-0.4.4a1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

reasonable-0.4.4a1-cp39-cp39-musllinux_1_2_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

reasonable-0.4.4a1-cp39-cp39-musllinux_1_2_aarch64.whl (5.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

reasonable-0.4.4a1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

reasonable-0.4.4a1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

reasonable-0.4.4a1-cp39-abi3-win_amd64.whl (390.0 kB view details)

Uploaded CPython 3.9+Windows x86-64

reasonable-0.4.4a1-cp39-abi3-musllinux_1_2_x86_64.whl (5.4 MB view details)

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

reasonable-0.4.4a1-cp39-abi3-musllinux_1_2_aarch64.whl (5.2 MB view details)

Uploaded CPython 3.9+musllinux: musl 1.2+ ARM64

reasonable-0.4.4a1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

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

reasonable-0.4.4a1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded CPython 3.9+manylinux: glibc 2.17+ ARM64

reasonable-0.4.4a1-cp39-abi3-macosx_11_0_arm64.whl (509.9 kB view details)

Uploaded CPython 3.9+macOS 11.0+ ARM64

reasonable-0.4.4a1-cp39-abi3-macosx_10_14_x86_64.whl (526.7 kB view details)

Uploaded CPython 3.9+macOS 10.14+ x86-64

reasonable-0.4.4a1-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl (1.0 MB view details)

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

reasonable-0.4.4a1-cp38-cp38-musllinux_1_2_x86_64.whl (5.4 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

reasonable-0.4.4a1-cp38-cp38-musllinux_1_2_aarch64.whl (5.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

reasonable-0.4.4a1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

reasonable-0.4.4a1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.2 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64

File details

Details for the file reasonable-0.4.4a1.tar.gz.

File metadata

  • Download URL: reasonable-0.4.4a1.tar.gz
  • Upload date:
  • Size: 56.0 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.4a1.tar.gz
Algorithm Hash digest
SHA256 336465f8827f7587bcb52a3065a7e263ad3a28ebfc53d3f8ddf4da76693e6a68
MD5 9887ba9d567d7377efb81ee351fc3a81
BLAKE2b-256 c00b38fa65af9734b1420db7039326727665de4027b55621506b0dabc577ad77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc7e58899edebd995b252e8f5926f10caf5c1b1d6c8d49f4afb61539975a08e0
MD5 c11a7e9b82dfb1cfe9e04c6b3f8ff2c0
BLAKE2b-256 939bc75c149a67a3565a500d3f093f9a6c77cb17847eb4a8cc5f9ab80a63beee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 40568a0fef507cab5cad94b7ed0231b1b57905b203b8802163064fa4b0404f21
MD5 3d6ada112347849ae4e0e6625dd182c6
BLAKE2b-256 cc6a9675cc0702e7f42bc9feee57fce50e13b513e36d105d8e08f965652578d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb5bca4914145d20788761084d367551d2ee3d9acef8f50892cf5ce7ca7193cd
MD5 2bb591957079a2e73ef708d515529e65
BLAKE2b-256 048d38ac316563690837ec1d82ce78f234b6198f8e3ba67eeff7a3234b7c028a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1e1266ca080a6a71ed939abb27d6576a6344f37ee4014ee644b0ad7119ffc303
MD5 54860efa57bd67cb355e951547b3c20e
BLAKE2b-256 95502b57fe64b5f4539ea9911ae8e0b35b917b6b933ee0a3126a97248b926796

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 12530deb43f56cfa77956d2565dac8d2944668e3aaf77a09f7e24f06bf6ddd3b
MD5 1be12364cb735585e787d4306022f5cc
BLAKE2b-256 b2b39bba1c23f23391bb2a49060b8d5142d2d87a4cc7ec2929ce89aa6d729c5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6ce47552248adad3671c2e6c6e490021316df5267bd85254c023d004146ac689
MD5 642b1fec6d8e9e972d91b95a459d7c25
BLAKE2b-256 f2637e62f61ee621933a0aebc6ef6ab41d38a2f5e29587a4eddf8f4e46ddf357

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3fbf16a00a71324aebdc564a8e2d94e545f21237c56062a2986fddc2d0f56c0
MD5 2f2051dc8b536d985288838a46c5b067
BLAKE2b-256 df892146c4b8d5b23ef6080998bd1e898f9ea78d5d20b52b7b258a6169408d2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9adeaedbbd5999ca8bd089621cb05dcf2551679d6dcedfe4dbd1e944a73bbe15
MD5 42bf27a612c4a6442ccc1c7254c195f0
BLAKE2b-256 6fa892353737935409626782eb7ba1aa5c70af975ca648180b65d4172f3eaba3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b6b55781bd9a8b7d7e1068589c3ba94439e4f90ac9e5c3fd7184fef45b78fea
MD5 7232c0347d9105924bcbaa39498467db
BLAKE2b-256 18faf7ee11916e22340adb20efda0c8484630efe7b32771a2e9c3d8cca334829

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ff7312b162b965d55782313673a5916e53d3c3e2a0de2e6781a2e501a3892b08
MD5 2b42263595df79a3a54e094bdab60ea1
BLAKE2b-256 5c26dd98f3fe14ad0bf1d41785f887cd4605e266b898eaa3f88c48e8bd42d248

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9230963313e7b059bed5e9e04669b2f4c282b58c279bf928889fbed93f4faf3e
MD5 468b6ed8ef4d00cba61b5cb05ba52fad
BLAKE2b-256 f49ef00ac485147d6be97b4819f1ed981e250cab3a720e7e4bcc6f3f496c78f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6017f4a1a9fad59834ec54add48a426ea09b6b2beb71ec7037a421106a4487ff
MD5 4ee6cb789b154a95ccac6ddea600415b
BLAKE2b-256 303560590eebfb7bc6c5e964602d0b626bb6c44ea7f93bb8e303600c25d4c2c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b4c0d48958f8106e6020c0c29bd117e240cd2af057007b0f4ba140eb27b68f22
MD5 80f067ee04d1cecc1cbfbc2a0bda2b87
BLAKE2b-256 4fd1bc3ef97fdf4ad9709dea75cc4fd7ec5cf8847f8469b2a9e74d27a2feee6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0aa3839c7596d90217caacc6f6f4e100930696c953b399f7c6c7e0e335954ec7
MD5 e16c94c6bcd2423544f39bd68865e608
BLAKE2b-256 2c43e9d4281b98f27736e92132ae7c3f48a242051186608d662f21d778569a01

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3f3cc6abaf33770c89bd3aecca772119ca30dcdd53405384e4e388ef972a6e07
MD5 b0aada5834fcf5d08055b5be5a5a9d55
BLAKE2b-256 952a54f7f3d9318f2f141c4a26aacaa2936b1ae2ce9659cfddd9c0ded0c5fc7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0c571aaaf1c883422700b219611992aa4d6d0d63570648a441df4651849a5235
MD5 f7f121d618b1c2133af3f0fe76773a2f
BLAKE2b-256 95049cf6501a00b7c94b1717377ecea301c703b3934010ba9fb174bd2a7a0fdc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f7edc72ccce305932e6fdd7457006fc7ff43c9d78c70ff5c67942ecee8e224eb
MD5 ff0b95d32a5e010916a237e6399dde67
BLAKE2b-256 23034bbe8382704011de2e3a9a4d4926edf4ae0fd2f6184ff8af61344970d0c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8166ef6897230e31874056cf01d4dc04bdd72c254cc891984df9517ce3b02d17
MD5 8b0b283539bb626f9900b256df5f1cb1
BLAKE2b-256 a86cf0ff8baa8b8497378d2942a266f63f0821c760eeb11eaabeecb4d4d6221c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dfd9cf956c366120f05506c45e1b18c8a35cd8abe88ecfe9c764366af563d1c9
MD5 295188ff0431d69fe9234e724de9e378
BLAKE2b-256 8dbb999d0bbf8e82cc9baeb72e03232a5f2be7b5213caf4b7dfdadae15158005

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ddf40fda32c3dfe62fb627405319e1c04661faba066a6633511a448f6e0822d7
MD5 234b8403bba43dffd6debdcc9f2f3ced
BLAKE2b-256 1c7bff530bb0afba29b1414b24601b4ab5d0211aab1b8324640375fa7ac944d8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: reasonable-0.4.4a1-cp39-abi3-win_amd64.whl
  • Upload date:
  • Size: 390.0 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.4a1-cp39-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5b01aa4bc1b31b3cd9278da2d957583905f0b5f873ff1a5d9af819f4e8a69296
MD5 ef803af15da35b0d9efa38fa1388c8f9
BLAKE2b-256 7692bbf7498e68dbd65041ef1932ab61299c1e7fc730a9458ddd68fd6b51426a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2bb937af6849455ecd5f611215f361e0dd93b1335f69b2a80d8d069772dcd31d
MD5 7cd2092e614ad664c2d5218baa34ab0d
BLAKE2b-256 156de27303140abb43b449bf9e64119050eff890f2b75c3e3b3a7febc12e328f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 247d1f264d54c00df244b711647f6b282e0c363db406567e619dc49a844e638e
MD5 c103baef48544f2db735d4c5f3a0fda6
BLAKE2b-256 06ea6a0a68ab3524b5112071c468c4f49e5fe63086aa54dedb5e0a7e1d77aac6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8549a529a90e09067ccdf5807aa591cf09dc2aabfa45077563486185bfc7e8af
MD5 c3dc74e423ce74b31d813b27b3f7ad7a
BLAKE2b-256 4c90e25cf7c630e26a08dd08fbf213999e13379bc938ecb8ddc87bec5a034455

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a7019db06bed9da86ebfee39ec8de4e8be49502a0c64269018ad280a5a3ee367
MD5 23ee0ddef34d85fc1bbd7080dbe5c3db
BLAKE2b-256 efa8dba3a6c23ee7d9476d51fb5145bbdff30d60cbc4411f176964402c602c80

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8670249ac9da6e01cd14488845a2f546a5f844c7065fa8e8a0f59993a5c4948d
MD5 562fdd38fde8d60d01bae1ad83126d0c
BLAKE2b-256 e9e698e4cf77a4ac708ac3aafb2b87f8c15344bfa50478488470bc9db1789c87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp39-abi3-macosx_10_14_x86_64.whl
Algorithm Hash digest
SHA256 7b52bf6488170e75b14f5c70799880e8257723b1ced5aff48b904cb6008e329f
MD5 2f9febc4760e73b50db38c0a77b9d020
BLAKE2b-256 a57145be54326c95d09c5d521d1db68e497705017ce6e8cc9daaf3d759759ff2

See more details on using hashes here.

File details

Details for the file reasonable-0.4.4a1-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.4a1-cp39-abi3-macosx_10_14_x86_64.macosx_11_0_arm64.macosx_10_14_universal2.whl
Algorithm Hash digest
SHA256 477ba8fe14b0e796d22616033af4192e8ae5619b4b707795e31932efef12cb6d
MD5 8346bf3ff657de45befd413220710fb1
BLAKE2b-256 0a26610628481a4e5cc15d38506db5864da428c22f34b8f57068ea9f3204a9cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 350213a6e4429ed754cb12ee7b061c608e34cb97c6a1ac2e5de7bec68ecd11c7
MD5 377bcc51514339242e61b0bf81695166
BLAKE2b-256 59b76bd97f29b3cc7f6afed6859e14000f7fc34130ab1060c181902f0ab837d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c8d3c9f354179666bdd5f979fee2e18953c4de1cd22eb4e52f3431f3cd6903cd
MD5 dc53943ddbe61d02c6a4e1863fc0dd4e
BLAKE2b-256 4753edad88aaad48ccfa20761b309f09b568c2c3cabf3dbfa53e372cb7078ce9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 309895fe0996b088505fa0c5ecad75c754a8c7fcfa62bbb93304eb0030891205
MD5 c6ff5f1a08314eefec2f0f5bfe22b64c
BLAKE2b-256 b9365a1c14ebb5f0259214780f168dbeaccee937bb656fa891547ccee0e12495

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for reasonable-0.4.4a1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 44c0a4d1878a799ff60988718ec53b459e38709ba6ec1e5b720d5cd833c8c767
MD5 838b293db3a6d87f8f701cc8a1ff29e0
BLAKE2b-256 cbdb56c268657612c1efe898e3bf6912be9ccd6bca768fcafab998bb206bbd1c

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