TGViewer
max.sh max.sh @max_dot_sh · 3.27K subscribers
Post #59 1.82K
💡 Фреймворк дня. typer - замена старому доброму argparse

Каждый питонист точно написал в своей жизни хотя бы одно CLI приложение. И наверняка для этого использовался старый добрый модуль argparse - встроенный тул для CLI нужд.

Мне всегда казалось, что argparse какой-то кривой, неинтуитивный, слишком избыточной (заставляя писать новую портянку для каждого нового скрипта, копируя, по большом счету один и тот же набор команд). Но пересесть на простую и комфортную альтернативу не получалось.

Наконец-то нашел тул, который решил запрос. Тестирую либу typer последние пару месяцев и очень доволен - все запросы покрывает. Может, так нравится, потому что typer - родственник FastAPI (есть кто-то, кто не любит этот фреймворк?) и в core контрибьюторах те же люди, или потому что реально вышло удобно и просто. Заонбордился за пару минут.

Посмотреть кучу примеров можно в официальной доке: https://typer.tiangolo.com/#run-the-upgraded-example

Совсем базовый пример может быть таким скриптом


import typer

from pathlib import Path

app = typer.Typer()

@app.command()
def annotate(
book: Path = typer.Argument(..., help="Path to the book file"),
num_jobs: int = typer.Option(1, help="Number of parallel jobs"),
):
print(f'Reading book stored under {book} and processing it with {num_jobs} jobs')

if __name__ == '__main__':
app()


Ну а дальше запускаем как обычно python3 demo_with_typer.py --help

Получаем красивый интерфейс как на картинке выше.


По итогу, чтобы добавить CLI режим для своего приложения нужно добавить декоратор над функцией, и аннотировать входные аргументы произвольными пользовательскими типами.

- Пишется все очень интуитивно
- Минимальное количество дублирования кода
- Можно писать произвольные вложенные парсеры, с командами и подкомандами
- Эстетически приятный интерфейс, который превращает даже самую стандартную и скучную оболочку во что-то цветное и футуристичное ⚡️
  • ✍ 12
  • 👍 7
  • ❤ 2
  • 🔥 2
  • 👨‍💻 2
  • 👌 1
  • 🦄 1
More from @max_dot_sh
  1. Sep 16, 2026Вышел из отпуска и сразу в лондонскую подземку. А тут снова ждет креативная it-шная реклам…
  2. Aug 30, 2026Post #230
  3. Aug 21, 2026По этикету, уходя из хорошего места - найди хорошую замену. Поэтому пост с вакансией Компа…
  4. Aug 17, 2026К слову о конкурсах. И почему в них круто участвовать. Расскажу свою историю. В 2018 году…
  5. Aug 12, 2026🏎 Пост для для любителей контестов. Цель конкурса: разработать систему, которая передает…
  6. Aug 10, 2026Небольшой анекдот-история, чтобы задать правильный ритм на неделю. А кому и настроение под…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →