Metadata-Version: 2.4 Name: tyro Version: 1.0.13 Summary: CLI interfaces & config objects, from types Project-URL: Repository, https://github.com/brentyi/tyro Project-URL: Documentation, https://brentyi.github.io/tyro/ Author-email: brentyi License: MIT License-File: LICENSE Classifier: License :: OSI Approved :: MIT License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Programming Language :: Python :: 3.14 Requires-Python: >=3.8 Requires-Dist: docstring-parser>=0.15 Requires-Dist: eval-type-backport>=0.1.3; python_version < '3.10' Requires-Dist: typeguard>=4.0.0 Requires-Dist: typing-extensions>=4.13.0 Provides-Extra: dev Requires-Dist: attrs>=21.4.0; extra == 'dev' Requires-Dist: coverage[toml]>=6.5.0; extra == 'dev' Requires-Dist: eval-type-backport>=0.1.3; extra == 'dev' Requires-Dist: ml-collections>=0.1.0; extra == 'dev' Requires-Dist: msgspec>=0.18.6; extra == 'dev' Requires-Dist: mypy>=1.4.1; extra == 'dev' Requires-Dist: omegaconf>=2.2.2; extra == 'dev' Requires-Dist: pydantic!=2.10.0,>=2.5.2; extra == 'dev' Requires-Dist: pyright!=1.1.379,>=1.1.349; extra == 'dev' Requires-Dist: pytest-cov>=3.0.0; extra == 'dev' Requires-Dist: pytest-xdist>=3.5.0; extra == 'dev' Requires-Dist: pytest>=7.1.2; extra == 'dev' Requires-Dist: pyyaml>=6.0; extra == 'dev' Requires-Dist: shtab>=1.5.6; extra == 'dev' Requires-Dist: universal-pathlib>=0.2.0; extra == 'dev' Provides-Extra: dev-nn Requires-Dist: attrs>=21.4.0; extra == 'dev-nn' Requires-Dist: coverage[toml]>=6.5.0; extra == 'dev-nn' Requires-Dist: eval-type-backport>=0.1.3; extra == 'dev-nn' Requires-Dist: flax>=0.6.9; (python_version >= '3.10' and python_version <= '3.13') and extra == 'dev-nn' Requires-Dist: ml-collections>=0.1.0; extra == 'dev-nn' Requires-Dist: msgspec>=0.18.6; extra == 'dev-nn' Requires-Dist: mypy>=1.4.1; extra == 'dev-nn' Requires-Dist: numpy>=1.20.0; extra == 'dev-nn' Requires-Dist: omegaconf>=2.2.2; extra == 'dev-nn' Requires-Dist: pydantic!=2.10.0,>=2.5.2; extra == 'dev-nn' Requires-Dist: pyright!=1.1.379,>=1.1.349; extra == 'dev-nn' Requires-Dist: pytest-cov>=3.0.0; extra == 'dev-nn' Requires-Dist: pytest-xdist>=3.5.0; extra == 'dev-nn' Requires-Dist: pytest>=7.1.2; extra == 'dev-nn' Requires-Dist: pyyaml>=6.0; extra == 'dev-nn' Requires-Dist: shtab>=1.5.6; extra == 'dev-nn' Requires-Dist: torch>=1.10.0; (python_version >= '3.9' and python_version <= '3.13') and extra == 'dev-nn' Requires-Dist: universal-pathlib>=0.2.0; extra == 'dev-nn' Description-Content-Type: text/markdown # tyro

codecov PyPI Downloads codecov

Documentation   •   pip install tyro

tyro.cli() is a tool for generating CLI interfaces from type-annotated Python. We can define configurable scripts using functions:
image

Or instantiate configs defined using tools like `dataclasses`, `pydantic`, and `attrs`:
image
Other features include helptext generation, nested structures, subcommands, and shell completion. For examples and the API reference, see our [documentation](https://brentyi.github.io/tyro). ### Why `tyro`? 1. **Define things once.** Standard Python type annotations, docstrings, and default values are parsed to automatically generate command-line interfaces with nice helptext. 2. **Static types.** Unlike tools dependent on dictionaries, YAML, or dynamic namespaces, arguments populated by `tyro` are better undestood by IDEs and language servers, as well as static checking tools like `pyright` and `mypy`. 3. **Modularity.** `tyro` supports hierarchical configurations, which make it easy to decentralize definitions, defaults, and documentation. ### In the wild `tyro` is designed to be lightweight for throwaway scripts, while improving maintainability for larger projects. Examples:
nerfstudio-project/nerfstudio
GitHub stars
Open-source tools for neural radiance fields.
Sea-Snell/JAXSeq
GitHub stars
Train very large language models in Jax.
kevinzakka/obj2mjcf
GitHub stars
Interface for processing OBJ files for Mujoco.
blurgyy/jaxngp
GitHub stars
CUDA-accelerated implementation of instant-ngp, in JAX.
NVIDIAGameWorks/kaolin-wisp
GitHub stars
PyTorch library for neural fields.
autonomousvision/sdfstudio
GitHub stars
Unified framework for surface reconstruction.
openrlbenchmark/openrlbenchmark
GitHub stars
Collection of tracked experiments for reinforcement learning.
vwxyzjn/cleanrl
GitHub stars
Single-file implementation of deep RL algorithms.
pytorch-labs/LeanRL
GitHub stars
Fork of CleanRL, optimized using PyTorch 2 features.
pytorch/torchtitan
GitHub stars
PyTorch-native platform for training generative AI models.
KwaiVGI/LivePortrait
GitHub stars
Stitching and retargeting for portraits.
Physical-Intelligence/openpi
GitHub stars
Open-source models for robotics.
NVIDIA/Isaac-GR00T
GitHub stars
Foundation model for generalist robots.
haosulab/ManiSkill
GitHub stars
GPU-parallelized simulation + learning for robot manipulation.
mujocolab/mjlab
GitHub stars
Lightweight, modular abstractions for RL and sim-to-real robotics.
amazon-far/holosoma
GitHub stars
Humanoid robotics framework for RL training and deployment.
MalcolmMielle/bark_monitor
GitHub stars
Show your neighbor that your dog doesn't bark!
### Alternatives `tyro` is opinionated. If any design decisions don't make sense, feel free to file an issue! You might also consider one of many alternative libraries. Some that we like: - [cappa](https://github.com/dancardin/cappa) offers a similar core feature set but with very different ergonomics. It looks polished and well-maintained! - [cyclopts](https://github.com/BrianPugh/cyclopts) and [defopt](https://defopt.readthedocs.io/) has very comprehensive type annotation support and a heavier emphasis on subcommand generation. - [simple-parsing](https://github.com/lebrice/SimpleParsing) and [jsonargparse](https://github.com/omni-us/jsonargparse) provide deeper integration with configuration file formats like YAML and JSON. - [clipstick](https://github.com/sander76/clipstick), which focuses on simplicity + generating CLIs from Pydantic models. - [datargs](https://github.com/roee30/datargs) provides a minimal API for dataclasses. - [fire](https://github.com/google/python-fire) and [clize](https://github.com/epsy/clize) support arguments without type annotations. There are also some options that directly extend `tyro`: - [mininterface](https://github.com/CZ-NIC/mininterface) simultaneously generates GUI, TUI, web, CLI, and file-based program configuration. - [manuscript](https://github.com/stllfe/manuscript) generates CLI interfaces from a simple block of configuration variables. We also have some notes on `tyro`'s design goals and other alternatives in the docs [here](https://brentyi.github.io/tyro/goals_and_alternatives/).