Documentation
•
pip install tyro
tyro.cli()
is a tool for generating CLI
interfaces.
We can define configurable scripts using functions:
```python
"""A command-line interface defined using a function signature.
Usage: python script_name.py --foo INT [--bar STR]
"""
import tyro
def main(
foo: int,
bar: str = "default",
) -> None:
... # Main body of a script.
if __name__ == "__main__":
# Generate a CLI and call `main` with its two arguments: `foo` and `bar`.
tyro.cli(main)
```
Or instantiate config objects defined using tools like `dataclasses`, `pydantic`, and `attrs`:
```python
"""A command-line interface defined using a class signature.
Usage: python script_name.py --foo INT [--bar STR]
"""
from dataclasses import dataclass
import tyro
@dataclass
class Config:
foo: int
bar: str = "default"
if __name__ == "__main__":
# Generate a CLI and instantiate `Config` with its two arguments: `foo` and `bar`.
config = tyro.cli(Config)
# Rest of script.
assert isinstance(config, Config) # Should pass.
```
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).
### In the wild
`tyro` is designed to be lightweight enough for throwaway scripts, while
facilitating type safety and modularity 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. |