IntentText - the semantic document format that is natively JSON
Project description
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file intenttext-3.3.0.tar.gz.
File metadata
- Download URL: intenttext-3.3.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a92e8271bcf8d45f6ac4cc4c625a9dcedb2b606f3bdf941d8b742732f20a2180
|
|
| MD5 |
8e7f396765433b5f91ee54048949e2cb
|
|
| BLAKE2b-256 |
9fd22f68cf2872788c0a70c946a487117e7ed04f44cc8eb99eee4e8c9d1b8396
|
File details
Details for the file intenttext-3.3.0-py3-none-any.whl.
File metadata
- Download URL: intenttext-3.3.0-py3-none-any.whl
- Upload date:
- Size: 23.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7405315cfc459454cd479c60969a62f4631daaacdea2ee6f3abb5078e975edf0
|
|
| MD5 |
cc4cdba390e8c35280fca38247ebf01b
|
|
| BLAKE2b-256 |
63da7d9fe09d3572ea6b1ea655a8758876385096d829eff084d3349a24e23ced
|