CLI interfaces & config objects, from types
Project description
tyro
Documentation
•
pip install tyro
tyro.cli() is a tool for generating CLI
interfaces from type-annotated Python.
We can define configurable scripts using functions:
https://github.com/user-attachments/assets/6f884313-6111-40a1-b9c7-7cd83d737296
Or instantiate configs defined using tools like dataclasses, pydantic, and attrs:
https://github.com/user-attachments/assets/edec520d-0c05-4547-8dc5-c2e211aadfb2
Other features include helptext generation, nested structures, subcommands, and shell completion. For examples and the API reference, see our documentation.
Why tyro?
-
Define things once. Standard Python type annotations, docstrings, and default values are parsed to automatically generate command-line interfaces with nice helptext.
-
Static types. Unlike tools dependent on dictionaries, YAML, or dynamic namespaces, arguments populated by
tyroare better undestood by IDEs and language servers, as well as static checking tools likepyrightandmypy. -
Modularity.
tyrosupports 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
|
Open-source tools for neural radiance fields. |
|
Sea-Snell/JAXSeq
|
Train very large language models in Jax. |
|
kevinzakka/obj2mjcf
|
Interface for processing OBJ files for Mujoco. |
|
blurgyy/jaxngp
|
CUDA-accelerated implementation of instant-ngp, in JAX. |
|
NVIDIAGameWorks/kaolin-wisp
|
PyTorch library for neural fields. |
|
autonomousvision/sdfstudio
|
Unified framework for surface reconstruction. |
|
openrlbenchmark/openrlbenchmark
|
Collection of tracked experiments for reinforcement learning. |
|
vwxyzjn/cleanrl
|
Single-file implementation of deep RL algorithms. |
|
pytorch-labs/LeanRL
|
Fork of CleanRL, optimized using PyTorch 2 features. |
|
pytorch/torchtitan
|
PyTorch-native platform for training generative AI models. |
|
KwaiVGI/LivePortrait
|
Stitching and retargeting for portraits. |
|
Physical-Intelligence/openpi
|
Open-source models for robotics. |
|
haosulab/ManiSkill
|
GPU-parallelized simulation + learning for robot manipulation. |
|
mujocolab/mjlab
|
Lightweight, modular abstractions for RL and sim-to-real robotics. |
|
amazon-far/holosoma
|
Humanoid robotics framework for RL training and deployment. |
|
MalcolmMielle/bark_monitor
|
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 offers a similar core feature set but with very different ergonomics. It looks polished and well-maintained!
- cyclopts and defopt has very comprehensive type annotation support and a heavier emphasis on subcommand generation.
- simple-parsing and jsonargparse provide deeper integration with configuration file formats like YAML and JSON.
- clipstick, which focuses on simplicity + generating CLIs from Pydantic models.
- datargs provides a minimal API for dataclasses.
- fire and clize support arguments without type annotations.
There are also some options that directly extend tyro:
- mininterface simultaneously generates GUI, TUI, web, CLI, and file-based program configuration.
- 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.
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 tyro-1.0.6.tar.gz.
File metadata
- Download URL: tyro-1.0.6.tar.gz
- Upload date:
- Size: 454.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
691976f70703ef0153cb6107c4ac418d558d0dd774137dd9b6420b9cf4dd8aee
|
|
| MD5 |
be212f4e7e8190073a45029cb3c8a06a
|
|
| BLAKE2b-256 |
a32dc733d7a9459bf5bfe505182dae172d736c6e168225d84dabd341345cedbc
|
File details
Details for the file tyro-1.0.6-py3-none-any.whl.
File metadata
- Download URL: tyro-1.0.6-py3-none-any.whl
- Upload date:
- Size: 181.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43a6c63419e8c14c3c21981b2614a583b5d14d0bb1300d7c7f328bec0f46cd37
|
|
| MD5 |
66dc1da0016380b8f4bb08f417e09b63
|
|
| BLAKE2b-256 |
a7f956b0cb8c5c287c7eec02735cce74a4c25cc56d6817bab7edde6f32b024a3
|