docs/features.md
<a href="https://fastapi.tiangolo.com" target="_blank"></a>
Typer is <a href="https://fastapi.tiangolo.com" class="external-link" target="_blank">FastAPI</a>'s little sibling.
It follows the same design and ideas. If you know FastAPI, you already know Typer... more or less.
It's all based on standard Python type declarations. No new syntax to learn. Just standard modern Python.
If you need a 2 minute refresher of how to use Python types (even if you don't use FastAPI or Typer), check the FastAPI tutorial section: <a href="https://fastapi.tiangolo.com/python-types/" class="external-link" target="_blank">Python types intro</a>.
You will also see a 20 seconds refresher on the section Tutorial - User Guide: First Steps{.internal-link target=_blank}.
Typer was designed to be easy and intuitive to use, to ensure the best development experience. With autocompletion everywhere.
You will rarely need to come back to the docs.
Here's how your editor might help you:
You will get completion for everything. That's something no other CLI library provides right now.
No more guessing what type was that variable, if it could be None, etc.
It has sensible defaults for everything, with optional configurations everywhere. All the parameters can be fine-tuned to do what you need, customize the help, callbacks per parameter, make them required or not, etc.
But by default, it all "just works".
The resulting CLI apps created with Typer have the nice features of many "pro" command line programs you probably already love.
/// note | * Auto completion
Auto completion works when you create a package (installable with pip). Or when using the typer command.
Typer uses shellingham to auto-detect the current shell when installing completion.
Typer will automatically create 2 CLI options:
--install-completion: Install completion for the current shell.--show-completion: Show completion for the current shell, to copy it or customize the installation.///
/// tip
Typer's completion is implemented internally, it uses ideas and components from Click and ideas from click-completion, but it doesn't use click-completion and re-implements some of the relevant parts of Click.
Then it extends those ideas with features and bug fixes. For example, Typer programs also support modern versions of PowerShell (e.g. in Windows 10) among all the other shells.
///