NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #116 most downloaded on PyPI
Typer, build great CLIs. Easy to code. Based on Python type hints.
Last release 1 months ago
28 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
7 years old
90 releases · first in 2019
🐛 Fix evaluating stringified annotations in Python 3.10 (also from __future__ import annotations). PR #721 by @heckad.
🐛 Fix display of default value for Enum parameters inside of a list, include docs and tests. PR #473 by @asieira.
show_default parameter and update docs for setting a "Custom default string". PR #501 by @plannigan.One column per quarter.
🐛 Add missing default_factory in Argument overloads. PR #750 by @m9810223.
default_factory in Argument overloads. PR #750 by @m9810223.📝 Remove obsolete references to --install-completion for typer.run() scripts. PR #595 by @tiangolo.
📝 Update docs example for a Typer/Click group to make new subcommands explicit. PR #755 by @svlandeg.
📝 Update docs for building a package, file structure example. PR #683 by @davidbgk.
📝 Update link in docs to the newest stable version of click. PR #675 by @javier171188.
🔧 Add CITATION.cff file for academic citations. PR #681 by @tiangolo.
✏ Fix typo in docs/tutorial/exceptions.md. PR #702 by @menzenski.
✏ Fix typo in docs/tutorial/options/name.md. PR #725 by @bwagner.
✏ Fix typo in docs/tutorial/arguments/optional.md. PR #602 by @tadasgedgaudas.
✨ Add support for PEP-593 Annotated for specifying options and arguments. Initial PR #584 by @ryangalamb.
Annotated for specifying options and arguments. Initial PR #584 by @ryangalamb.
... to mark a CLI Argument or CLI Option as required.Annotated for typer.Option() and typer.Argument().Annotated.Annotated, fix overloads for typer.Argument. PR #594 by @tiangolo.✨ Add support for custom types and parsers. Initial PR #583 by @jpurviance. Based on original PR #443 by @paulo-raca.
exclude_lines to coverage configuration. PR #585 by @dmontagu.sys.executable to run subprocesses, needed by OpenSUSE. PR #408 by @theMarix.PYTHONPATH is set properly when testing the tutorial scripts. PR #407 by @theMarix.✨ Make typer.run() not add completion scripts by default, it only makes sense in installed apps. Also update docs for handling autocompletion in CLI o
typer.run() not add completion scripts by default, it only makes sense in installed apps. Also update docs for handling autocompletion in CLI options. PR #488 by @tiangolo.typer.run(). PR #284 by @yassu.get_group. PR #430 by @tiangolo.docs/tutorial/commands/help.md. PR #466 by @fepegar.datetime.strptime(). PR #464 by @Kobu.first-steps.md, clarify distinction between parameter and argument. PR #176 by @mccarthysean.🐛 Fix setting FORCE_TERMINAL with colors 2. PR #424 by @tiangolo.
New docs for deprecating commands: Commands - Command Help - Deprecate a Command.
This release adds deep integrations with Rich. ✨
rich is an optional dependency, you can install it directly or it will be included when you install with:
$ pip install "typer[all]"
If Rich is available, it will be used to show the content from --help options, validation errors, and even errors in your app (exception tracebacks).
There are new options to group commands, CLI arguments, and CLI options, support for Rich Console Markup, and more! 🎉
print() instead of typer.echo() in the docs, to simplify the concepts and avoid confusions. New docs: Printing and Colors - typer Echo.help, and epilog with the new parameter typer.Typer(rich_markup_mode="markdown"), new docs: Commands - Command Help - Rich Markdown and Markup.help, and epilog with the new parameter typer.Typer(rich_markup_mode="rich"), new docs: Commands - Command Help - Rich Markdown and Markup.epilog, with support for Rich Markdown and Console Markup, new docs: Commands - Command Help - Epilog.✨ Add pretty error tracebacks for user errors and support for Rich. PR #412 by @tiangolo.
🐛 Fix type conversion for List and Tuple and their internal types. PR #143 by @hellowhistler.
List and Tuple and their internal types. PR #143 by @hellowhistler.context_settings for a Typer app with a single command. PR #210 by @daddycocoaman.stderr. PR #335 by @cgabard.docs/tutorial/printing.md. PR #386 by @briancohan.docs/tutorial/terminating.md. PR #382 by @kianmeng.docs/tutorial/package.md. PR #333 by @ryanstreur.docs/tutorial/options/required.md.. PR #316 by @michaelriri.index.md. PR #274 by @RmStorm.datetime parameter type. PR #220 by @DiegoPiloni.🐛 Fix import of get_terminal_size for Click 8.1.0 support and upgrade Black to fix CI. PR #380 by @tiangolo based on original PR #375 by @madkinsz.
get_terminal_size for Click 8.1.0 support and upgrade Black to fix CI. PR #380 by @tiangolo based on original PR #375 by @madkinsz.✨ Add support for Click 8 while keeping compatibility with Click 7. PR #317 by @tiangolo.
Add support for mypy --strict. Original PR #147 by @victorphoenix3.
mypy --strict. Original PR #147 by @victorphoenix3.--help showing default values. PR #135 by @victorphoenix3.Optional to docs for CLI Arguments and Options with a default of None. PR #131 by @rkbeatss.Add GitHub Actions, move from Travis. PR #144.
Add support for help parameter in *CLI arguments*:
help parameter in CLI arguments:
help in CLI arguments is not supported by Click, there are two new internal classes (Click sub-classes) to support it:
typer.core.TyperArgumenttyper.core.TyperCommandArguments for CLI arguments, showing defaults, required arguments, etc.hidden parameter.show_default is True by default.show_envvar is True by default.python -m some_package using __main__.py: Building a Package: Support python -m. PR #121.*args and **kwargs when calling the Typer app, just like in Click. PR #120 by @teymour-aldridge.Add support for forward references (types declared inside of strings). PR #93.
Add support for completion for commands/programs not available on startup.
typer.echo() and print() for colors in Windows. PR #89.Fix completion evaluation for Bash and Zsh when the program is not installed/found. PR #83.
Fix coverage instructions. PR #72.
Re-implement completion system:
click-completion (with its sub-dependencies, like Jinja).shellingham to auto detect shell to install (it was used by click-completion).shellingham is not installed/added as a dependency, --install-completion and --show-completion take a value with the name of the shell.pwsh (PowerShell Core).
Add support for Click version 7.1.1. PR #60.
Add support for PEP 561, to allow mypy to type check applications built with Typer. PR #58.
mypy to type check applications built with Typer. PR #58.Update docs and add latest changes to MkDocs/website. PR #33.
typer.Argument() to remove invalid positional param_decls. PR #19.Add docs for *CLI parameter* types. Includes tests and file classes refactor. PR #17.
Add docs for Commands. Includes a bug fix for handling default values set in typer.Typer() parameters. PR #14.
typer.Typer() parameters. PR #14.Clean exports from Typer. Remove unneeded components from Click and add needed Exit exception. PR #11.
Exit exception. PR #11.--install-completion and --show-completion in docs. PR #9.--install-completion and --show-completion. PR #7.Update short descriptions and assets.
Fix group creation without name.
Add initial version of code, docs, etc.
First commit. Publish to PyPI to reserve package name.
Back to top
Your coding agent can read these notes before it upgrades. Set up the MCP server →