Typer is library to build <abbrtitle="command line interface, programs executed from a terminal">CLI</abbr> applications that users will love using and developers will love creating. Based on Python 3.6+ type hints.
**Typer** is <ahref="https://fastapi.tiangolo.com"class="external-link"target="_blank">FastAPI</a>'s little sibling. And it's intended to be the FastAPI of CLIs.
* **Intuitive to write**: Great editor support. <abbrtitle="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> everywhere. Less time debugging. Designed to be easy to use and learn. Less time reading docs.
* **Grow large**: Grow in complexity as much as you want, create arbitrarily complex trees of commands and groups of subcommands, with options and arguments.
Typer stands on the shoulders of a giant. Its only internal dependency is <ahref="https://click.palletsprojects.com/"class="external-link"target="_blank">Click</a>.
**Note**: Auto completion works when you create a Python package and run it with `--install-completion` or when you use <ahref="https://typer.tiangolo.com/typer-cli/"class="internal-link"target="_blank">Typer CLI</a>.
And similarly for **files**, **paths**, **enums** (choices), etc. And there are tools to create **groups of subcommands**, add metadata, extra **validation**, etc.
**Your users get**: automatic **`--help`**, **auto completion** in their terminal (Bash, Zsh, Fish, PowerShell) when they install your package or when using <ahref="https://typer.tiangolo.com/typer-cli/"class="internal-link"target="_blank">Typer CLI</a>.
*<ahref="https://pypi.org/project/colorama/"class="external-link"target="_blank"><code>colorama</code></a>: and Click will automatically use it to make sure your terminal's colors always work correctly, even in Windows.
* Then you can use any tool you want to output your terminal's colors in all the systems, including the integrated `typer.style()` and `typer.secho()` (provided by Click).
* Or any other tool, e.g. <ahref="https://pypi.org/project/wasabi/"class="external-link"target="_blank"><code>wasabi</code></a>, <ahref="https://github.com/erikrose/blessings"class="external-link"target="_blank"><code>blessings</code></a>.
*<ahref="https://github.com/sarugaku/shellingham"class="external-link"target="_blank"><code>shellingham</code></a>: and Typer will automatically detect the current shell when installing completion.
* With `shellingham` you can just use `--install-completion`.
* Without `shellingham`, you have to pass a *CLI Option value* with the name of the shell to install completion, e.g. `--install-completion bash`.
Click has many plug-ins available that you can use. And there are many tools that help with command line applications that you can use as well, even if they are not related to Typer or Click.
*<ahref="https://github.com/click-contrib/click-spinner"class="external-link"target="_blank"><code>click-spinner</code></a>: to show the user that you are loading data. A Click plug-in.
* There are several other Click plug-ins at <ahref="https://github.com/click-contrib"class="external-link"target="_blank">click-contrib</a> that you can explore.
*<ahref="https://pypi.org/project/tabulate/"class="external-link"target="_blank"><code>tabulate</code></a>: to automatically display tabular data nicely. Independent of Click or typer.
*<ahref="https://github.com/tqdm/tqdm"class="external-link"target="_blank"><code>tqdm</code></a>: a fast, extensible progress bar, alternative to Typer's own `typer.progressbar()`.