Skip to main content

jots-py

Pure-Python parser for Jot Syntax.

The normative specification lives at jotsyntax.org. This package is a from-scratch Python implementation of the spec — no Rust, no FFI, no compiled extension. For a faster parser backed by the Rust implementation (jots-rs), see the sibling PyO3 bindings (jots-rs-py); both expose the same jots.parse() API.

Install

pip install jots

Usage

import jots

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

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

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

category_root (SPEC §9.1) requires every category path to start with the given segment; a path that does not — ::title when the root is cat — is ordinary text, free-standing or as an annotation suffix. Rooted paths are emitted unchanged, root included:

jots.parse("::cat::dh ::title --42::title", config={"category_root": "cat"})
# categories == ["cat::dh"]; references[0]["category"] is None

Iota Syntaxis (Unicode variant)

The Iota Syntaxis variant widens the identifier and filename character classes to Unicode XID_Start/XID_Continue: jots.parse(text, unicode=True). The sibling iotas distribution in this repo wraps jots with the variant preset.

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.

Conformance is verified against the shared vector suite in jots-tests — the same suite used by jots-rs and jots-rs-py.

Metadata

Release files for jots 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jots 0.2.0
File Size Uploaded
jots-0.2.0.tar.gz 35.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for jots 0.2.0
File Interpreter ABI Platform
jots-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.3 kB

Release files / jots-0.2.0.tar.gz

Download URL jots-0.2.0.tar.gz
Size 35.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dd95d970ba04e61970001498f8587cbcd79c54c90f2ce2ccf7b846c84e3ee629
BLAKE2b-256 checksum
How to use checksums
995f64bf034d61b5bf7dfc5fb22e37c2d6a22db1e80b37655836668e00c126d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / jots-0.2.0-py3-none-any.whl

Download URL jots-0.2.0-py3-none-any.whl
Size 29.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4cb5a1de00d26fb7ffb7487af225bd456e1e688ece94837d0a2f5f08e3ed0348
BLAKE2b-256 checksum
How to use checksums
6dbf2fa963095b1ca63ed9acc5d3a493e8552b098d42a9e55eac70b1780e8eb6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page