Skip to content

Release Notes

Latest Changes

Refactors

  • 🚚 Rename test to corner-cases to make it more explicit. PR #1083 by @tiangolo.

Internal

0.15.1

Features

  • 🗑️ Deprecate shell_complete and continue to use autocompletion for CLI parameters. PR #974 by @svlandeg.

Docs

  • ✏️ Fix a few typos in the source and documentation. PR #1028 by @kkirsche.
  • 📝 Fix minor inconsistencies and typos in tutorial. PR #1067 by @tvoirand.
  • ✏️ Fix a few small typos in the documentation. PR #1077 by @svlandeg.

Internal

0.15.0

Features

Internal

0.14.0

Breaking Changes

  • 🔥 Remove auto naming of groups added via add_typer based on the group's callback function name. PR #1052 by @patrick91.

Before, it was supported to infer the name of a command group from the callback function name in the sub-app, so, in this code:

import typer

app = typer.Typer()
users_app = typer.Typer()

app.add_typer(users_app)


@users_app.callback()
def users():  # <-- This was the inferred command group name
    """
    Manage users in the app.
    """


@users_app.command()
def create(name: str):
    print(f"Creating user: {name}")

...the command group would be named users, based on the name of the function def users().

Now you need to set it explicitly:

import typer

app = typer.Typer()
users_app = typer.Typer()

app.add_typer(users_app, name="users")  # <-- Explicitly set the command group name


@users_app.callback()
def users():
    """
    Manage users in the app.
    """


@users_app.command()
def create(name: str):
    print(f"Creating user: {name}")

Updated docs SubCommand Name and Help.

Note: this change will enable important features in the next release. 🤩

Internal

0.13.1

Features

  • ✨ Remove Rich tags when showing completion text. PR #877 by @svlandeg.
  • ✨ Render Rich markup as HTML in Markdown docs. PR #847 by @svlandeg.
  • ✨ Support cp850 encoding for auto-completion in PowerShell. PR #808 by @svlandeg.
  • ✨ Allow gettext translation of help message. PR #886 by @svlandeg.

Refactors

Docs

  • 📝 Update markdown includes to use the new simpler format. PR #1054 by @tiangolo.

Internal

0.13.0

Features

  • ✨ Handle KeyboardInterrupt separately from other exceptions. PR #1039 by @patrick91.
  • ✨ Update launch to not print anything when opening urls. PR #1035 by @patrick91.
  • ✨ Show help items in order of definition. PR #944 by @svlandeg.

Fixes

  • 🐛 Fix equality check for custom classes. PR #979 by @AryazE.
  • 🐛 Allow colon in zsh autocomplete values and descriptions. PR #988 by @snapbug.

Refactors

  • 🗑️ Deprecate support for is_flag and flag_value parameters. PR #987 by @svlandeg.
  • 🔥 Remove unused functionality from _typing.py file. PR #805 by @ivantodorovich.
  • ✏️ Fix typo in function name _make_rich_text. PR #959 by @svlandeg.

Internal

0.12.5

Features

  • 💄 Unify the width of the Rich console for help and errors. PR #788 by @racinmat.
  • 🚸 Improve assertion error message if a group is not a valid subclass. PR #425 by @chrisburr.

Fixes

  • 🐛 Ensure rich_markup_mode=None disables Rich formatting. PR #859 by @svlandeg.
  • 🐛 Fix sourcing of completion path for Git Bash. PR #801 by @svlandeg.
  • 🐛 Fix PowerShell completion with incomplete word. PR #360 by @patricksurry.

Refactors

Docs

  • ♻️ Use F-strings in Click examples in docs. PR #891 by @svlandeg.
  • 📝Add missing main.py in tutorial on CLI option names. PR #868 by @fsramalho.
  • 📝 Fix broken link. PR #835 by @OhioDschungel6.
  • 📝 Update package docs with the latest versions of Typer and Poetry. PR #781 by @kinuax.
  • 📝 Update the Progress Bar tutorial with correct output. PR #199 by @n1ckdm.
  • 📝 Add docs and scripts to test completion in different shells. PR #953 by @tiangolo.
  • ✏️ Fix a typo in docs/virtual-environments.md. PR #952 by @tiangolo.
  • ✏️ Fix typo in docs/contributing.md. PR #947 by @tiangolo.
  • 📝 Add docs for virtual environments, environment variables, and update contributing. PR #946 by @tiangolo.

Internal

0.12.4

Features

  • ✨ Add support for Python 3.12, tests in CI and official marker. PR #807 by @ivantodorovich.

Fixes

  • 🐛 Fix support for UnionType (e.g. str | None) with Python 3.11. PR #548 by @jonaslb.
  • 🐛 Fix zsh autocompletion installation. PR #237 by @alexjurkiewicz.
  • 🐛 Fix usage of Annotated with future annotations in Python 3.7+. PR #814 by @ivantodorovich.
  • 🐛 Fix shell_complete not working for Arguments. PR #737 by @bckohan.

Docs

  • 📝 Update docs links, from tiangolo to new fastapi org. PR #919 by @tiangolo.
  • 📝 Add docs for team and repo management. PR #917 by @tiangolo.

Internal

  • 🔧 Add URLs to pyproject.toml, show up in PyPI. PR #931 by @tiangolo.
  • 👷 Do not sync labels as it overrides manually added labels. PR #930 by @tiangolo.
  • 👷 Update labeler GitHub Action to add only one label. PR #927 by @tiangolo.
  • 👷 Update labeler GitHub Actions permissions and dependencies. PR #926 by @tiangolo.
  • 👷 Add GitHub Action label-checker. PR #925 by @tiangolo.
  • 👷 Add GitHub Action labeler. PR #924 by @tiangolo.
  • 👷 Add GitHub Action add-to-project. PR #922 by @tiangolo.
  • 🔨 Update docs.py script to enable dirty reload conditionally. PR #918 by @tiangolo.
  • 🔧 Update MkDocs previews. PR #916 by @tiangolo.
  • 👷 Upgrade build docs configs. PR #914 by @tiangolo.
  • 🔧 Update MkDocs to have titles in Markdown files instead of config. PR #913 by @tiangolo.
  • 👷 Add alls-green for test-redistribute. PR #911 by @tiangolo.
  • 👷 Update docs-previews to handle no docs changes. PR #912 by @tiangolo.
  • 👷🏻 Show docs deployment status and preview URLs in comment. PR #910 by @tiangolo.
  • 🔧 Enable auto dark mode from system. PR #908 by @tiangolo.
  • 💄 Add dark mode logo. PR #907 by @tiangolo.
  • 🔧 Update tabs and admonitions with new syntax and new MkDocs features. PR #906 by @tiangolo.
  • 🔧 Enable MkDocs Material features. PR #905 by @tiangolo.
  • 🔧 Enable dark mode for docs. PR #904 by @tiangolo.
  • ➖ Do not install jieba for MkDocs Material as there are no chinese translations. PR #903 by @tiangolo.
  • 🙈 Add MkDocs Material cache to gitignore. PR #902 by @tiangolo.
  • 🔨 Update lint script. PR #901 by @tiangolo.
  • 🔧 Update MkDocs configs and docs build setup. PR #900 by @tiangolo.
  • ⬆ Bump actions/cache from 3 to 4. PR #839 by @dependabot[bot].
  • 🍱 Update Typer icon and logo. PR #899 by @tiangolo.
  • 👷 Update issue-manager.yml GitHub Action permissions. PR #897 by @tiangolo.
  • 👷 Refactor GitHub Action to comment docs deployment URLs and update token, preparing for GitHub org. PR #896 by @tiangolo.
  • 🔨 Update docs Termynal scripts to not include line nums for local dev. PR #882 by @tiangolo.
  • ⬆ Bump black from 23.3.0 to 24.3.0. PR #837 by @dependabot[bot].
  • ⬆ Bump pillow from 10.1.0 to 10.3.0. PR #836 by @dependabot[bot].
  • ✅ Add CI configs to run tests on Windows and MacOS. PR #824 by @svlandeg.
  • 👷 Update GitHub Actions to upload and download artifacts. PR #829 by @tiangolo.
  • 👷 Tweak CI for test-redistribute, add needed env vars for slim. PR #827 by @tiangolo.
  • ✅ Generalize test suite to run on Windows. PR #810 by @svlandeg.
  • ✅ Add __init__.py files to fix test suite. PR #809 by @svlandeg.
  • 🔧 Update MkDocs Material, enable plugins. PR #813 by @tiangolo.
  • 🔧 Tweak development scripts and configs after migration to PDM, Ruff, etc.. PR #797 by @tiangolo.

0.12.3

Fixes

  • 🐛 Fix Rich formatting with no commands. PR #796 by @svlandeg.

0.12.2

Features

  • ✨ Improve column help display, ensure commands column width is the same on all panels. PR #567 by @ssbarnea.

Fixes

  • 🐛 Add support for an argument of type Optional[Tuple] and default value None. PR #757 by @Asthestarsfalll.

Docs

0.12.1

Now you don't need to install typer[all]. When you install typer it comes with the default optional dependencies and the typer command.

If you don't want the extra optional dependencies (rich and shellingham), you can install typer-slim instead.

You can also install typer-slim[standard], which includes the default optional dependencies, but not the typer command.

Now the package typer-cli doesn't add anything on top of what typer has, it only depends on typer, and is there only for backwards compatibility, so that projects that depend on typer-cli can get the latest features of the typer command while they upgrade their dependencies to require typer directly.

Features

  • ✨ Add support for typer ./someprogram.py utils docs --title. PR #782 by @tiangolo.

Fixes

  • 🐛 Fix broken installation when upgrading from typer <0.12.0 to typer >=0.12.0, make typer independent of typer-slim, include typer command in typer package. PR #791 by @tiangolo.

This fixes a problem that would break the typer installation directory when upgrading from typer <0.12.0 to typer >=0.12.0, see issue #790.

By installing the latest version (0.12.1) it fixes it, for any previous version, even if the installation directory was already broken by the previous upgrade.

Internal

0.12.0

In version 0.12.0, the typer package depends on typer-slim[standard] which includes the default dependencies (instead of typer[all]) and typer-cli (that provides the typer command).

If you don't want the extra optional dependencies (rich and shellingham), you can install typer-slim instead.

You can also install typer-slim[standard], which includes the default optional dependencies, but not the typer command.

In version 0.12.0 the typer-cli package only provides the typer command, but the code is still in the main code, so even without installing typer-cli, it can be called with python -m typer.

This approach of having typer depend on typer-slim[standard] instead of including the whole code and dependencies itself caused an issue when upgrading from typer <0.12.0 to typer >=0.12.0, see issue #790. This is fixed in version 0.12.1.

Features

  • ✨ Add typer-slim package without extras, make typer include typer-slim[default] and integrate Typer CLI (typer command) into Typer. PR #780 by @tiangolo.

Internal

  • 🔧 Temporarily disable social plugin while a MkDocs issue is handled. PR #779 by @tiangolo.
  • 👷 Fix install MkDocs Insiders only when available. PR #778 by @tiangolo.

0.11.1

Fixes

  • 🔧 Explicitly include testing files in sdist for redistributors (e.g. OpenSUSE) and add CI to test redistribution. PR #773 by @tiangolo.

Internal

  • 👷 Do not use the cache for dependencies when publishing to PyPI. PR #774 by @tiangolo.

0.11.0

Breaking Changes

  • 🔧 Refactor package manager, move from Flit to PDM, remove private pip extras for test, doc, dev. PR #764 by @tiangolo.
  • 🔥 Remove support for Click 7, require Click 8+. PR #760 by @tiangolo.
  • 🔥 Remove support for Python 3.6. PR #758 by @tiangolo.

Refactors

  • 🔧 Migrate from Black, isort, flake8, autoflake, pyupgrade to Ruff. PR #763 by @tiangolo.

Internal

0.10.0

Fixes

  • 🐛 Fix default value of None for CLI Parameters when the type is list | None and the default value is None. PR #664 by @theowisear.

0.9.4

Features

  • ✨ Improve support for CLI translations using gettext. PR #417 by @mjodmj.

0.9.3

Fixes

  • 🐛 Fix evaluating stringified annotations in Python 3.10 (also from __future__ import annotations). PR #721 by @heckad.

0.9.2

Fixes

  • 🐛 Fix display of default value for Enum parameters inside of a list, include docs and tests. PR #473 by @asieira.
  • 🐛 Update type annotations for show_default parameter and update docs for setting a "Custom default string". PR #501 by @plannigan.

Docs

  • 📝 Add docs and test for no_args_is_help feature. PR #751 by @svlandeg.

0.9.1

Fixes

  • 🐛 Add missing default_factory in Argument overloads. PR #750 by @m9810223.
  • 🐛 Fix preserving case in enum values. PR #571 by @avaldebe.

Docs

  • 📝 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.

Internal

  • ⬆ [pre-commit.ci] pre-commit autoupdate. PR #606 by @pre-commit-ci[bot].
  • 👷 Install MkDocs Material Insiders only when secrets are available, for Dependabot. PR #685 by @tiangolo.
  • ⚒️ Update build-docs.yml, do not zip docs. PR #645 by @tiangolo.
  • 👷 Deploy docs to Cloudflare. PR #644 by @tiangolo.
  • 👷 Upgrade CI for docs. PR #642 by @tiangolo.
  • 👷 Update token for latest changes. PR #635 by @tiangolo.
  • 👷 Update CI workflow dispatch for latest changes. PR #643 by @tiangolo.
  • 👷 Update token for Material for MkDocs Insiders. PR #636 by @tiangolo.
  • 🐛 Fix internal type annotations and bump mypy version. PR #638 by @paulo-raca.
  • 💡 Add comments to document overload definitions in code. PR #752 by @svlandeg.
  • 🔥 Remove Jina QA Bot as it has been discontinued. PR #749 by @tiangolo.
  • 👷 Update build docs CI cache paths. PR #707 by @tiangolo.
  • 👷 Upgrade latest-changes GitHub Action. PR #691 by @tiangolo.

0.9.0

Features

  • ✨ Add support for PEP-593 Annotated for specifying options and arguments. Initial PR #584 by @ryangalamb.
    • New docs: Optional CLI arguments.
    • It is no longer required to pass a default value of ... to mark a CLI Argument or CLI Option as required.
    • It is now recommended to use Annotated for typer.Option() and typer.Argument().
    • All the docs have been updated to recommend Annotated.

Docs

  • 📝 Update docs examples for custom param types using Annotated, fix overloads for typer.Argument. PR #594 by @tiangolo.

Internal

0.8.0

Features

Upgrades

Docs

  • 📝 Tweak docs, Custom Types path, main page and READAME colors, broken links. PR #588 by @tiangolo.
  • ✏ Fix spelling (shinny -> shiny). PR #586 by @runofthemill.
  • 📝 Update docs about helping Typer. PR #547 by @tiangolo.
  • ✏️ Fix typo in datetime docs. PR #495 by @huxuan.
  • ✏️ Add quotes to package name that includes brackets in docs. PR #475 by @gjolga.

Internal

0.7.0

Features

Fixes

  • 🎨 Fix type annotation of typer.run(). PR #284 by @yassu.
  • 🎨 Fix type annotations for get_group. PR #430 by @tiangolo.

Docs

  • 📝 Add note about how subcommands with function names using underscores are converted to dashes. PR #403 by @targhs.
  • 📝 Fix typo in docs at docs/tutorial/commands/help.md. PR #466 by @fepegar.
  • ✏ Fix link in docs to datetime.strptime(). PR #464 by @Kobu.
  • ✏ Update first-steps.md, clarify distinction between parameter and argument. PR #176 by @mccarthysean.
  • ✏ Fix broken plac link. PR #275 by @mgielda.

Internal

0.6.1

Fixes

  • 🐛 Fix setting FORCE_TERMINAL with colors 2. PR #424 by @tiangolo.
  • 🐛 Fix setting FORCE_TERMINAL with colors. PR #423 by @tiangolo.

0.6.0

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! 🎉

Features

Docs

Internal

0.5.0

Features

  • ✨ Add pretty error tracebacks for user errors and support for Rich. PR #412 by @tiangolo.

Docs

  • ✏ Fix typo, "ASCII codes" to "ANSI escape sequences". PR #308 by @septatrix.

0.4.2

Fixes

  • 🐛 Fix type conversion for List and Tuple and their internal types. PR #143 by @hellowhistler.
  • 🐛 Fix context_settings for a Typer app with a single command. PR #210 by @daddycocoaman.

Docs

  • 📝 Clarify testing documentation about checking stderr. PR #335 by @cgabard.
  • ✏ Fix typo in docs for CLI Option autocompletion. PR #288 by @graue70.
  • 🎨 Fix header format for "Standard Input" in docs/tutorial/printing.md. PR #386 by @briancohan.
  • ✏ Fix typo in docs/tutorial/terminating.md. PR #382 by @kianmeng.
  • ✏ Fix syntax typo in docs/tutorial/package.md. PR #333 by @ryanstreur.
  • ✏ Fix typo, duplicated word in docs/tutorial/options/required.md.. PR #316 by @michaelriri.
  • ✏ Fix minor typo in index.md. PR #274 by @RmStorm.
  • ✏ Fix double "and" typo in first-steps tutorial. PR #225 by @softwarebloat.
  • 🎨 Fix format in docs explaining datetime parameter type. PR #220 by @DiegoPiloni.

Internal

0.4.1

Fixes

  • 🐛 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.

Internal

  • 📝 Add Jina's QA Bot to the docs to help people that want to ask quick questions. PR #368 by @tiangolo.
  • 💚 Only test on push when on master, avoid duplicate CI runs from PRs. PR #358 by @tiangolo.
  • ✨ Add support for previewing docs in PRs from forks and enable MkDocs Insiders. PR #357 by @tiangolo.
  • ⬆️ Upgrade MkDocs Material, MDX-Include, and MkDocs structure. PR #356 by @tiangolo.
  • 👷 Update publish GitHub action. PR #325 by @tiangolo.

0.4.0

Features

  • ✨ Add support for Click 8 while keeping compatibility with Click 7. PR #317 by @tiangolo.

Internal

0.3.2

Features

Docs

  • Update docs with new --help showing default values. PR #135 by @victorphoenix3.
  • Add Optional to docs for CLI Arguments and Options with a default of None. PR #131 by @rkbeatss.
  • Add valid date formats to docs. PR #122 by @IamCathal.

Internal

  • Report coverage in XML to support GitHub Actions. PR #146.
  • Update badges and remove Travis, now that GitHub Actions is the main CI. PR #145.

0.3.1

  • Add GitHub Actions, move from Travis. PR #144.
  • Pin dependencies. PR #138.
  • Add Dependabot. PR #136.
  • Upgrade Isort to version 5.x.x. PR #137.

0.3.0

0.2.1

  • Add support for forward references (types declared inside of strings). PR #93.

0.2.0

  • Add support for completion for commands/programs not available on startup.
    • This allows installing a Typer program/script in a virtual environment and still have completion globally installed.
    • PR #92.
  • Add note about typer.echo() and print() for colors in Windows. PR #89.
  • Upgrade Mkdocs-Material version, update contributing guide style. PR #90.

0.1.1

  • Fix completion evaluation for Bash and Zsh when the program is not installed/found. PR #83.
  • Fix completion script for Fish. PR #82.
  • Fix shell installation for Bash to ~/.bashrc and update Windows development docs. PR #81.
  • Update coverage badge. PR #78.

0.1.0

0.0.11

  • Re-implement completion system:
    • Remove optional dependency click-completion (with its sub-dependencies, like Jinja).
    • Add optional dependency shellingham to auto detect shell to install (it was used by click-completion).
    • Completion now doesn't require a third party library.
      • If shellingham is not installed/added as a dependency, --install-completion and --show-completion take a value with the name of the shell.
    • Fix support for user provided completion in CLI Parameters.
    • Fix completion for files in Bash, Zsh, and Fish.
    • Add support for modern versions of PowerShell, 5, 6, and 7 (e.g. in Windows 10).
    • Add support for pwsh (PowerShell Core).
      • PowerShell support includes help strings for commands and CLI Parameters.
    • Several bug fixes.
    • Tests for the completion logic/code.
    • Tested in all the shells in Linux and Windows.
    • PR #66.
  • Fix format in docs with highlighted lines. PR #65.
  • Add docs about Typer CLI - completion for small scripts. PR #64.
  • Add docs about Alternatives, Inspiration and Comparisons. PR #62.
  • Add Development - Contributing Guide. PR #61.

0.0.10

  • Add support for Click version 7.1.1. PR #60.

0.0.9

  • Add support for PEP 561, to allow mypy to type check applications built with Typer. PR #58.
  • Upgrade deploy docs to Netlify GitHub action. PR #57.
  • Add support for Mermaid JS for visualizations. PR #56.
  • Update CI to run docs deployment in GitHub actions. PR #50.
  • Update format for internal links. PR #38.
  • Tweak external links' format. PR #36.

0.0.8

0.0.7

0.0.6

0.0.5

  • Clean exports from Typer. Remove unneeded components from Click and add needed Exit exception. PR #11.
  • Fix and document extracting help from a function's docstring First Steps: Document your CLI app. PR #10.
  • Update references to --install-completion and --show-completion in docs. PR #9.
  • Fix testing utilities, add tests for First Steps examples. PR #8.
  • Add auto completion options by default when click-completion is installed: --install-completion and --show-completion. PR #7.
  • Update Termynal to have fixed sizes, add "fast" button, and use it in First Steps. PR #6.
  • Add custom automatic Termynal for docs. PR #5.

0.0.4

  • Update short descriptions and assets.
  • Docs rewording and fix typos. PR #1 by @mariacamilagl.

0.0.3

  • Fix group creation without name.

0.0.2

  • Add initial version of code, docs, etc.

0.0.1

  • First commit. Publish to PyPI to reserve package name.