Typer #947
Labels
CLI-UX
Command Line Interface user experience and best practices
python
Python code, tools, info
source-code
Code snippets
Typer
Snippet
Content
Typer, build great CLIs. Easy to code. Based on Python type hints.
FastAPI of CLIs
Typer is FastAPI's little sibling, it's the FastAPI of CLIs.
Installation
Create and activate a virtual environment and then install Typer:
Example
The absolute minimum
Create a file
main.py
with:This script doesn't even use Typer internally. But you can use the
typer
command to run it as a CLI application.Run it
Run your application with the
typer
command:Use Typer in your code
Now let's start using Typer in your own code, update
main.py
with:Now you could run it with Python directly:
Example upgrade
This was the simplest example possible.
Now let's see one a bit more complex.
An example with two subcommands
Modify the file
main.py
.Create a
typer.Typer()
app, and create two subcommands with their parameters.And that will:
typer.Typer
app.The previous
typer.run
actually creates one implicitly for you.@app.command()
.app()
itself, as if it was a function (instead oftyper.run
).Run the upgraded example
Check the new help:
Now check the help for the
hello
command:And now check the help for the
goodbye
command:Now you can try out the new command line application:
Recap
In summary, you declare once the types of parameters (CLI arguments and CLI options) as function parameters.
You do that with standard modern Python types.
You don't have to learn a new syntax, the methods or classes of a specific library, etc.
Just standard Python.
For example, for an
int
:or for a
bool
flag:And similarly for files, paths, enums (choices), etc. And there are tools to create groups of subcommands, add metadata, extra validation, etc.
You get: great editor support, including completion and type checks everywhere.
Your users get: automatic
--help
, auto-completion in their terminal (Bash, Zsh, Fish, PowerShell) when they install your package or when using thetyper
command.For a more complete example including more features, see the Tutorial - User Guide.
Dependencies
Typer stands on the shoulders of a giant. Its only internal required dependency is Click.
By default it also comes with extra standard dependencies:
rich
: to show nicely formatted errors automatically.shellingham
: to automatically detect the current shell when installing completion.With
shellingham
you can just use--install-completion
.Without
shellingham
, you have to pass the name of the shell to install completion for, e.g.--install-completion bash
.typer-slim
If you don't want the extra standard optional dependencies, install
typer-slim
instead.When you install with:
...it includes the same code and dependencies as:
The standard extra dependencies are
rich
andshellingham
.Note: The
typer
command is only included in thetyper
package.License
This project is licensed under the terms of the MIT license.
Suggested labels
None
The text was updated successfully, but these errors were encountered: