2026, Jan 13 03:02
TypeError TyperArgument.make_metavar в Typer 0.15.3: как быстро исправить
TypeError TyperArgument.make_metavar в Typer 0.15.3 вызван несовместимостью с Click. Обновите Typer до 0.16.0+, чтобы исправить ошибку. Подробности в статье.
Запуск минимальной CLI на Typer на современных версиях Python может неожиданно завершаться с ошибкой TypeError с упоминанием TyperArgument.make_metavar. Если у вас установлен Typer 0.15.3, скорее всего, вместо ожидаемой справки вы видите именно это.
Как воспроизвести проблему
Этой минимальной конфигурации и скрипта достаточно, чтобы вызвать ошибку.
[project]
name = 'typer-example'
version = '0.1.0'
description = 'Add your description here'
readme = 'README.md'
requires-python = '>=3.13'
dependencies = [
'typer>=0.15.3',
]
import typer as ty
def cli_handler(user: str):
print(f'Hello, {user}!')
ty.run(cli_handler)
uv run python main.py
TypeError: TyperArgument.make_metavar() takes 1 positional argument but 2 were given
Что происходит на самом деле
Ошибка вызвана несовместимостью между Typer и Click, о которой сообщили в сообществе и которую позже исправили мейнтенеры Typer. Исправление вошло в релиз Typer v0.16.0.
Как исправить
Рекомендация проста: обновите Typer или зафиксируйте версию на 0.16.0 или новее. После этого минимальная CLI больше не падает с TypeError.
[project]
name = 'typer-example'
version = '0.1.0'
description = 'Add your description here'
readme = 'README.md'
requires-python = '>=3.13'
dependencies = [
'typer>=0.16.0',
]
Код приложения менять не нужно: тот же минимальный скрипт корректно работает после обновления Typer.
import typer as ty
def cli_handler(user: str):
print(f'Hello, {user}!')
ty.run(cli_handler)
Почему это важно
Для CLI-инструментов на Typer и Click совместимость версий библиотек напрямую влияет на поведение во время выполнения. Даже небольшой рассинхрон может проявиться как TypeError в самой простой программе. Использование Typer 0.16.0 и новее помогает избежать именно этой проблемы.
Выводы
Если в базовой CLI на Typer вы сталкиваетесь с TypeError TyperArgument.make_metavar, обновите Typer или зафиксируйте версию на 0.16.0 и выше. Это устраняет несовместимость и возвращает ожидаемое поведение без каких‑либо изменений в вашем коде.