Skip to main content

ci Version PyPI Python License

Treeparse

Tree-shaped Python CLI framework with built-in JSON introspection.

Most CLI frameworks focus on execution. Treeparse treats your CLI as both an executable interface and a structured data model — making it ideal for LLM tool schemas, automation workflows, and complex nested command hierarchies.

Why Treeparse

Feature argparse Click Typer Treeparse
Tree-structured help No Partial Partial Yes
JSON CLI export No No No Yes
Explicit structural model No No No Yes
Signature validation Minimal No Partial Yes

Quickstart

pip install treeparse
from treeparse import cli, command, argument

def greet(name: str):
    print(f"Hello {name}")

greet_cmd = command(
    name="greet",
    callback=greet,
    arguments=[argument(name="name", arg_type=str)],
)

app = cli(name="demo", commands=[greet_cmd])

if __name__ == "__main__":
    app.run()
$ python app.py greet Alice
Hello Alice

$ python app.py --help
demo
└── greet
    └── <NAME>

$ python app.py --json
{"name": "demo", "commands": [{"name": "greet", "arguments": [{"name": "name", "type": "str"}]}]}

Workflow

1. Build tool 1

# ink.py
ink = cli(name="ink", help="Annotate figures with Inkscape.")
ink.commands.append(command(
    name="new", help="Open a new blank SVG.", callback=new,
    arguments=[argument(name="name", arg_type=str)],
    options=[option(flags=["--notes-dir", "-d"], arg_type=str, default="notes/draw")],
))

2. Build tool 2

# mind.py
mind = cli(name="mind", help="Build mind maps in Minder.")
mind.commands.append(command(
    name="create", help="Create a new mind map.", callback=create,
    arguments=[argument(name="title", arg_type=str)],
))

3. Plug into a toolbox

# toolbox.py
from treeparse import cli
from ink import ink
from mind import mind

toolbox = cli(name="toolbox", help="Creative toolbox.", subgroups=[ink, mind])

if __name__ == "__main__":
    toolbox.run()

4. Teach the LLM

toolbox --json > skill.md

Human-readable tree

toolbox --help
toolbox                      Creative toolbox.
├── ink                      Annotate figures with Inkscape.
│   └── new <NAME>           Open a new blank SVG.
│       └── --notes-dir, -d  Directory to save SVGs (default: notes/draw)
└── mind                     Build mind maps in Minder.
    └── create <TITLE>       Create a new mind map.

Demo

Built-in flags

Flag Output
--help, -h Rich tree, branch-pruned per subcommand
--json, -j Full CLI structure as JSON
--version, -V Auto-detected from package metadata, or set with version= on cli

Examples

The examples/ directory contains 19 executable demonstrations covering every Treeparse feature (themes, group-level arguments/options, chaining, nargs="*"| "+", boolean flags, validation errors, root options, JSON export, custom sort/fold, etc.). They are living documentation and the primary reference for users and LLMs.

They are not installed as part of the package. After pip install treeparse only the core library and the treeparse console script are available.

# Clone and set up (once)
git clone https://github.com/wr1/treeparse.git
cd treeparse
uv sync --dev

# Run any example with an editable install (no need to touch PYTHONPATH)
uv run --with-editable . python examples/demo.py --help
uv run --with-editable . python examples/all_themes_demo.py --help
python examples/validation_error_demo.py --help   # after the uv command above

The test suite (tests/test_examples.py and test_demo_execution.py) loads the examples via importlib.util.spec_from_file_location and will continue to pass without any changes to packaging.

Models

from treeparse import cli, command, group, argument, option
from treeparse.models.chain import chain
Model Purpose
cli Root — reusable as a subgroup in another cli
group Namespace with optional fold=True to collapse in help, or default="cmd" to route unknown tokens to a child command
command Executable action with a callback
chain Runs multiple commands in sequence
argument Positional — <ARG> required, [ARG] optional (nargs="?"/"*")
option Named flag, with optional inheritance to child commands

More

  • Folding: group(fold=True) collapses to group [...] — drill in with toolbox ink --help
  • Default subcommand: group(default="open") routes a bare group, an option flag, or an unknown token to that child command (toolbox ink foo → toolbox ink open foo); explicitly-named subcommands always win
  • Inheritance: option(inherit=True) propagates to all child commands
  • Validation: callback param names and types checked against CLI definition at startup
  • YAML config: cli(yml_config=Path("config.yml")) overrides defaults at runtime
  • Themes: theme="github" / "monokai" / "mononeon" / "monochrome"
  • Testing: CliRunner for pytest integration

When to Use

Use Treeparse if you need:

  • Structured CLI composition
  • Machine-readable CLI definitions (LLM agents, orchestration, docs pipelines)
  • Complex nested command hierarchies

Avoid if you only need a simple single-script CLI.

Documentation (Fumadocs + DocKB)

This project uses docs-driven development following current fumano/DocKB practice.

  • Public docs: only ever edit docs/docs/*.mdx

  • kb/ lives inside the site: docs/kb/ (next to app/). It is its own git repo.

  • Run the docs site (rich mode when docs/kb/ present):

    make docs-dev                 # recommended (local gitignored Makefile)
    # or
    npm --prefix docs install
    npm --prefix docs run dev     # http://localhost:3000
    npm --prefix docs run build
    

See docs/docs/getting-started.mdx, docs/docs/agent-guide.mdx, docs/docs/architecture.mdx, and the fumano skill in wr1skills.

License

MIT

Metadata

Release files for treeparse 0.3.2

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

Source distribution (sdist)

Source distribution for treeparse 0.3.2
File Size Uploaded
treeparse-0.3.2.tar.gz 20.8 kB Details

Built distribution (wheel)

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

Total release size: 46.0 kB

Release files / treeparse-0.3.2.tar.gz

Download URL treeparse-0.3.2.tar.gz
Size 20.8 kB
Tags Source
SHA-256 checksum
How to use checksums
36d0d3d08129ee48ca24f4a0dfcad935ea2813d433456f5a833e9d35b79f358f
BLAKE2b-256 checksum
How to use checksums
74bd8308fcaadb7eec76971c58448bc40d4c6de5eaa1ef9bf09be3009e88ef7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.

Transparency log

Release files / treeparse-0.3.2-py3-none-any.whl

Download URL treeparse-0.3.2-py3-none-any.whl
Size 25.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7f44585e1639b1ae64848b755b06905ed40f1761aa0b4f4d95fd86686088fdae
BLAKE2b-256 checksum
How to use checksums
9fbca6c0a231d2758fc667ce63d1dc71520481d1aa2bc8aac01eba7069f4f941
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 14, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.4

2 release files

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.0

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

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