Metadata-Version: 2.5
Name: openom-core
Version: 0.1.4
Summary: openOM deterministic core - embed/read/inspect/validate CRE offering-memorandum payloads. Zero inference, ever.
Project-URL: Homepage, https://openom.app
Project-URL: Documentation, https://openom.app/docs/
Project-URL: Repository, https://github.com/Vervelio-Labs/OpenOM
License-Expression: MIT
Keywords: commercial-real-estate,cre,data-standard,factur-x,json-ld,json-schema,offering-memorandum,open-standard,openom,pdf,pdf-a-3,proptech,real-estate
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.11
Classifier: Topic :: Office/Business :: Financial
Classifier: Topic :: Text Processing :: Markup
Classifier: Typing :: Typed
Requires-Python: >=3.11
Requires-Dist: jsonschema>=4.20
Requires-Dist: pikepdf>=9
Requires-Dist: rfc8785>=0.1.4
Provides-Extra: dev
Requires-Dist: hypothesis>=6.100; extra == 'dev'
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: numpy>=1.26; extra == 'dev'
Requires-Dist: pillow>=10; extra == 'dev'
Requires-Dist: pymupdf>=1.24; extra == 'dev'
Requires-Dist: pypdfium2>=4; extra == 'dev'
Requires-Dist: pytest-cov>=5; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.5; extra == 'dev'
Requires-Dist: types-jsonschema>=4.20; extra == 'dev'
Provides-Extra: render
Requires-Dist: pymupdf>=1.24; extra == 'render'
Description-Content-Type: text/markdown

# openom-core

The deterministic Python core of the [openOM](../README.md) standard: the PDF/data verbs
(`embed`, `read`, `inspect`, `extract`, `validate`) and RFC 8785 canonicalization + SHA-256
integrity. **Zero inference, ever** (CI's `boundary` job enforces it). Byte-parity with `js/`.

```sh
# From a clone (openom-core is not yet on PyPI):
pip install -e core                 # add the [dev] extra only to contribute
# Once published:  pip install openom-core
```

```python
from openom_core.embed import embed, read
out = embed(pdf_bytes, payload, asserted_date="2026-08-16")   # non-destructive
r = read(out)                                                 # r.present / r.hash_valid / r.payload
```

Entrypoints: `openom_core.{canonical,embed,validate,inspect,images,text,schema,xmp}`.
Tests: `pytest core -q --cov=openom_core --cov-fail-under=90`. Schema + vectors live in [`/spec`](../spec).
