Metadata-Version: 2.4
Name: jots-rs-py
Version: 0.1.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Rust
Classifier: Topic :: Text Processing :: Markup
Classifier: Topic :: Software Development :: Libraries :: Python Modules
License-File: LICENSE-APACHE
License-File: LICENSE-MIT
Summary: Jot Syntax 1.0 RC1 parser — PyO3 bindings over the Rust implementation (https://jotsyntax.org)
Keywords: jot,jots,syntax,parser,metadata,markdown
Author-email: Bojan Durickovic <dev@deyanovich.org>
License: MIT OR Apache-2.0
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://jotsyntax.org
Project-URL: Repository, https://gitlab.com/jot-syntax/jots-rs-py
Project-URL: Specification, https://gitlab.com/jot-syntax/spec

# jots-rs-py

Python bindings for [Jot Syntax](https://jotsyntax.org).

The normative specification lives at [jotsyntax.org](https://jotsyntax.org).
This package is a thin [PyO3](https://pyo3.rs) binding over the Rust
parser in [`jots-rs`](https://gitlab.com/jot-syntax/jots-rs). For a
pure-Python parser with no Rust/FFI dependency, see the sibling
[`jots-py`](https://gitlab.com/jot-syntax/jots-py).

## Install

```sh
pip install jots-rs-py
```

## Usage

```python
import jots

result = jots.parse("..meeting ::work::q2 ??buy milk")
# {
#   "tags": ["meeting"],
#   "categories": ["work::q2"],
#   "todos": [{"importance": 1, "action": "buy", "description": "milk", ...}],
#   "diagnostics": [],
#   ...
# }
```

Optional config flags (see SPEC §2.2) are passed via the `config`
keyword:

```python
jots.parse(text, config={"parse_hashtags_as_tags": True, "emit_loc": False})
```

## Status

Tracks Jot Syntax 1.0 RC1 (2026-03-18). Current scope is the **parser**
only (Part II of the spec); the processor (Part III) will live in a
future `jotr-py` repo.

The parsed output currently uses byte-offset `loc` units, matching the
underlying Rust parser. A future release may switch the Python surface
to char offsets — see `TODO.md`.

