IntentText Python
Python API for IntentText with Rust-core parsing by default.
The package uses @intenttext/core (Rust-backed) for parser parity and keeps Python-native rendering/query/validation helpers for Python workflows and AI stacks.
Engine controls:
INTENTTEXT_PY_ENGINE=rust(default) to use Rust core through Node.INTENTTEXT_PY_ENGINE=pyto force legacy Python parser.INTENTTEXT_PY_FALLBACK=0to disable automatic fallback to Python parser when Rust core is unavailable.INTENTTEXT_PY_VALIDATE_ENGINE=rustto use Rust semantic validation through Node (default); setpyto force Python compatibility mode.INTENTTEXT_PY_QUERY_ENGINE=rustto use Rust-backed query execution (pyby default for compatibility with regex property filters).INTENTTEXT_PY_RENDER_ENGINE=rustto use Rust-backed HTML rendering (pyby default for compatibility).INTENTTEXT_PY_SOURCE_ENGINE=rustto use Rust-backedto_sourceconversion (pyby default for compatibility).INTENTTEXT_PY_TRUST_ENGINE=rustto use Rust-backed trust helpers (pyby default for compatibility).
Install
pip install intenttext
Quick Start
from intenttext import parse, render_html, merge_data, validate, query
# Parse a document
source = """
title: Sprint Planning
section: Tasks
task: Write tests | owner: Ahmed | due: Friday
task: Deploy to staging | owner: Sarah | due: Monday
gate: Final approval | approver: Lead | timeout: 24h
""".strip()
doc = parse(source)
# Query for tasks
tasks = query(doc, type="task")
for task in tasks:
print(f"{task.content} -> {task.properties.get('owner', 'unassigned')}")
# Validate workflow semantics
result = validate(doc)
if not result.valid:
for issue in result.issues:
print(f"[{issue.type.upper()}] {issue.message}")
# Render to HTML
html = render_html(doc)
API
parse(source: str) -> IntentDocumentparse_safe(source: str, ...) -> ParseResultrender_html(doc: IntentDocument, include_css: bool = True) -> strrender_print(doc: IntentDocument) -> strrender_markdown(doc: IntentDocument) -> strmerge_data(template: IntentDocument, data: dict) -> IntentDocumentparse_and_merge(template_source: str, data: dict) -> IntentDocumentvalidate(doc: IntentDocument) -> ValidationResultquery(doc: IntentDocument, ...) -> list[IntentBlock]to_source(doc: IntentDocument) -> str
Development
pip install -e .[dev]
pytest
Release (PyPI)
# 1) Ensure tests pass
python3 -m pytest -q
# 2) Build source + wheel
python3 -m pip install -U hatch twine
hatch build
# 3) Validate package metadata and long description
twine check dist/*
# 4) Upload (interactive)
twine upload dist/*
Tag-based release flow:
git tag v1.0.0
git push origin v1.0.0
GitHub Action publish workflow uses PYPI_API_TOKEN for automated release on v* tags.
License
MIT
Metadata
Release files for intenttext 3.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| intenttext-3.3.0.tar.gz | 22.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| intenttext-3.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.0 kB
Release files / intenttext-3.3.0.tar.gz
| Download URL | intenttext-3.3.0.tar.gz |
|---|---|
| Size | 22.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a92e8271bcf8d45f6ac4cc4c625a9dcedb2b606f3bdf941d8b742732f20a2180
|
|
BLAKE2b-256 checksum How to use checksums |
9fd22f68cf2872788c0a70c946a487117e7ed04f44cc8eb99eee4e8c9d1b8396
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / intenttext-3.3.0-py3-none-any.whl
| Download URL | intenttext-3.3.0-py3-none-any.whl |
|---|---|
| Size | 23.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7405315cfc459454cd479c60969a62f4631daaacdea2ee6f3abb5078e975edf0
|
|
BLAKE2b-256 checksum How to use checksums |
63da7d9fe09d3572ea6b1ea655a8758876385096d829eff084d3349a24e23ced
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|