pyHermiT
pyHermiT is specified as a Java-free Python and Rust reimplementation of the core
HermiT OWL 2 DL reasoner, with a complete pure-Python fallback. It targets Python 3.10+
and uses the Java-free pyowl-core package for shared ontology parsing, immutable views,
overlays, composites, and zero-reparse communication with Exact-OM and other consumers.
The 0.2.3 production implementation provides the public reasoner facade, complete
pure-Python path, and an optional private Rust backend. It consumes the pyowl-core 0.2
model and can compile its encoded structural-view schema 2 directly in Rust. The normative
architecture, compatibility rules, backend completeness requirements, and verification plan
begin at specs/README.md. Built runtime artifacts contain no Java,
JVM launcher, Java bridge, or reference implementation.
Installation
python -m pip install pyHermiT
A supported native wheel enables Rust acceleration automatically. The universal wheel provides the complete compiler-free Python backend. Neither installation contains, downloads, or starts Java.
Quick start
from pyowl_core import ImportPolicy, LoadOptions, load_snapshot
from pyhermit import Reasoner
ontology = (
b"Prefix(:=<urn:example#>) Ontology(<urn:example> "
b"Declaration(Class(:A)) Declaration(Class(:B)) SubClassOf(:A :B))"
)
view = load_snapshot(
ontology,
options=LoadOptions(imports=ImportPolicy.RESOLVE_STRICT),
)
with Reasoner(view) as reasoner:
assert reasoner.ontology is view
assert reasoner.is_consistent()
taxonomy = reasoner.class_hierarchy()
See the user guide for backend selection, import resolution, classification and realization queries, timeouts, updates, and error handling. Existing 0.1 deployments should follow the 0.2 migration guide before reusing persisted data or caches.
Release and licensing status
The owner has selected the source-guided implementation mode and
LGPL-3.0-or-later, matching the pinned upstream declaration. LICENSE contains the
LGPL text, COPYING the GPL text it incorporates, and NOTICE.md the initial upstream
attribution. The owner authorized 0.2.3 publication under the existing licensing policy;
LIC-001 remains waived without representing that legal review occurred. The authorization
is recorded in
reports/release/0.2.3-owner-release-override.md.
The completed repository audits are under
reports/licensing/ and
reports/release/artifact-audit.md.
Strict native pipeline
require_native_pipeline_support() checks the native HermiT and pyowl-core receipt
capabilities before loading an ontology. Opt in with
ReasonerConfig(require_native_pipeline=True) to require native structural validation,
metadata, compilation and hierarchy processing. Defaults retain their existing behavior.
Strict mode currently supports consistency and class/object/data-property hierarchies on
core-validated native snapshot/segment owners. It rejects unsupported owners, Python or
verification backends, and Python byte-indexing fallback explicitly. Assertion-local generic
queries share the permanent native rules, join plans, role automata, datatype registries and
existential templates. Only their facts, clauses, witnesses and mutable tableau state are local.
Batches retain at most one active query state; result caches contain bounded Boolean results.
The admitted query syntax includes Boolean class expressions, nominals/equality, known role assertions, existing source literals, universal restrictions and ground existential witnesses. Unknown roles or new literal payloads, newly required inverse-role blocking, nested existential expansions below variable-valued universal restrictions, and global schema/role changes retain the full native rebuild path by default. Strict mode rejects these cases before publication. Realization publication and committed updates are not yet admitted in strict mode. Recurring committed updates have not been established as an Exact workload, so incremental admission remains conditional rather than widening this query envelope.
Reasoner.diagnostics() reports the actual core receipt, metadata validation and domain
copies. native_result_validation becomes true after a successful native hierarchy result;
native_result_publications counts these publications. A positive capability probe does not
replace owner validation or admit an unsupported operation. The native_query_* counters
separately record delta loads, local rule plans, peak local records, legacy full-program loads
and default full-rebuild fallbacks. Query syntax is limited to 1 MiB per request, 16 MiB and
4,096 items per batch; exhausting a resource bound never enables a fallback.
Documentation
Start with the user guide for backend selection, standalone and shared-view loading, every service family, updates, concurrency, and errors. The API reference enumerates every stable facade member, and the developer guide traces the core-view boundary through the private IR and Python/Rust engines. The documentation index links the normative specifications and machine-readable evidence.
The historical 0.1.1 qualification is recorded in the
release report,
coverage matrix, and
benchmark audit. The owner accepted the
remaining licensed W3C, live-reference, and dedicated-performance runs as post-release
follow-up for 0.2.0. The release workflow separately requires every configured native
target to pass before trusted publication.
Development
Use Python 3.10 or newer and install a compatible pyowl-core:
python -m pip install \
"pyowl-core>=0.2.1,<0.3" \
"build>=1.2,<2" "hypothesis>=6.100,<7" "import-linter>=2.1,<3" \
"mypy>=1.10,<3" "packaging>=24,<27" "pytest>=8.2,<10" \
"pytest-cov>=5,<8" "ruff==0.15.22" "setuptools==83.0.0" \
"setuptools-rust==1.13.0" "tomli>=2.0,<3; python_version < '3.11'"
PYHERMIT_BUILD_NATIVE=0 python -m pip install --no-build-isolation -e .
python -m pytest
python -m tools.specs.check_workpackages
python -m tools.specs.check_project
python -m tools.specs.check_links
python -m tools.specs.check_release_gate --require-publishable
ruff format --check .
ruff check .
mypy
lint-imports
cargo deny --manifest-path native/Cargo.toml check --config deny.toml
Build and inspect the compiler-free artifacts with:
SOURCE_DATE_EPOCH=946684800 PYHERMIT_BUILD_NATIVE=0 python -m build
python -m tools.packaging_probe.check_artifact --pure dist/*.whl
python -m tools.packaging_probe.check_artifact dist/*.tar.gz
PYHERMIT_BUILD_NATIVE=auto|0|1 is the only supported build switch:
auto(default) attempts the optional native extension when Cargo is available and otherwise produces a truthfully tagged Python-only local build;0never declares the extension and produces the reproduciblepy3-none-anyfallback; and1requires the locked Rust build and fails instead of silently falling back.
The distribution workflow builds the sdist, universal fallback, and the eight required
cp310-abi3 manylinux 2.17, musllinux 1.2, macOS, and Windows x86-64/ARM64 targets. It
audits Rust advisories/licenses/sources, ABI, and external libraries; installs on CPython
3.10 and 3.12; compares
pure/native metadata and Python payloads, and verifies local-index resolver preference.
The target manifest remains configured-awaiting-hosted-validation until those hosted
jobs pass. The universal Python fallback is the portable production artifact while
additional native wheels complete that hosted validation.
Metadata
Release files for pyHermiT 0.2.3
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 |
|---|---|---|---|---|
| pyhermit-0.2.3.tar.gz | 1.3 MB | With provenance | Details for pyhermit-0.2.3.tar.gz |
Built distributions (wheels)
Total release size: 34.5 MB
Release files / pyhermit-0.2.3.tar.gz
| Download URL | pyhermit-0.2.3.tar.gz |
|---|---|
| Size | 1.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
78240fe5c5beb02fd5c73d51a6ceecc7ffb4aa0d33cc9833120769f8f88be7f5
|
|
BLAKE2b-256 checksum How to use checksums |
f77c9491c95f857ebcd95ead0230e97e1d7fd11e4844e23d87c997d52329b6ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-py3-none-any.whl
| Download URL | pyhermit-0.2.3-py3-none-any.whl |
|---|---|
| Size | 420.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
368a5d4368a4a8d2711db6d162e89e2e41a1e30e40382641d1840748645eff02
|
|
BLAKE2b-256 checksum How to use checksums |
4e3a5547081b574cef23a69ecd3a0818baaf59e45f0c9a5d4a31e44adc5c72d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-win_arm64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-win_arm64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.10 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
04b44d7372ef01c1e3bd16a82e87a2d6a285bf5a7c638e652280149e3fa46f88
|
|
BLAKE2b-256 checksum How to use checksums |
8df14aae67ec05098490bb8b44354eba0c679c84e79fe903d5fc4acf9c3a2af1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-win_amd64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
3760c50f6cb5b84a96a0fac80db25a2cf5f7a73248910131089c87fa60d98bf1
|
|
BLAKE2b-256 checksum How to use checksums |
15ade6ad9f7601fd1ea588c1983db3563cab7257ba206d0e13bc392a63e5d1de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-musllinux_1_2_x86_64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.4 MB |
| Tags | CPython 3.10 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0b85c4f491b51832d0b26d18a61a0cf1b9b25cf20e23d5d164cf0143b7347db5
|
|
BLAKE2b-256 checksum How to use checksums |
554d3623b2f8362670a8303c512aaccb9235a10b160018b97bb2b2270f1598f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-musllinux_1_2_aarch64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.10 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
7990b480747253aa892dcbaa33e38bf8717b62c04c58d76cee42f3c0136139d7
|
|
BLAKE2b-256 checksum How to use checksums |
aa54e03f6258a3172f00963cc28cef0185650035278ad39e7105e32a6978e474
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
55beb0c6dd59aff70779329ccfb62a16c38a93d7074c33c3c301d9b4ecd60359
|
|
BLAKE2b-256 checksum How to use checksums |
c2611016f451b1204dd5ac8c7a309300b739be33687d0c923187b5bb662a55b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
81a722d0530d2540348c92f7e5ee293795be7d900259b134c66cf1823bb0a297
|
|
BLAKE2b-256 checksum How to use checksums |
e5ece7468c40f69d290cff1f82b00dbe789acab61707391777049c678e15fdc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.8 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
d7c93495d9746d2882f71c3e8fa3a865b0f964035299f3bfcb73629926723a59
|
|
BLAKE2b-256 checksum How to use checksums |
e175a513744efc52cddb6adb4e2379cf9c62cceb8915632f59ff214024f758a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logRelease files / pyhermit-0.2.3-cp310-abi3-macosx_10_12_x86_64.whl
| Download URL | pyhermit-0.2.3-cp310-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
158c36b4b4ec6c7ca1afe01ad98fa26fe09d1d4de85f3785ea5c1c9e7ad97eb0
|
|
BLAKE2b-256 checksum How to use checksums |
e782fad97b133bccd0ca9deb58246d70b7ea0569e2464d334ee04fe1431487bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logSecurity for pyHermiT 0.2.3
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.
Full provenance
All 10 files in this release have been uploaded with provenance metadata.
Attestation for pyhermit-0.2.3.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.
Transparency logA 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.