Matchify - это CLI-утилита, которая автоматически преобразует длинные цепочки
if/elif/else в современные конструкции match/case (сопоставление с образцом, появившееся в Python 3.10+), сохраняя логику работы и исходное форматирование кода.Инструмент построен на базе LibCST, благодаря чему не ломает существующие отступы, комментарии и стиль оформления кодовой базы.
x == 1, x == 2) и идентичности (x is None).isinstance(p, Point) and p.x == 5 в элегантный case Point(x=5):.len(x) == 2 and x[0] == 0) на распаковку case 0, _:.--safe) утилита переписывает код только тогда, когда семантика гарантированно сохраняется. Для спорных случаев есть флаги явных допущений (--assume pure-subjects, --assume identity-equality и др.).--check) и готовые хуки для pre-commit.До:
if isinstance(node, Point) and node.x == 5:
print("x is 5")
elif isinstance(node, Point):
print("other point")
После обработки Matchify:
match node:
case Point(x=5):
print("x is 5")
case Point():
print("other point")
Запуск на проекте без предварительной установки:
uvx matchify path/to/project/
Или установка в качестве постоянной CLI-утилиты:
uv tool install matchify
# Проверить проект без записи изменений
matchify path/to/project/ --check
#Python #Matchify #PatternMatching #Refactoring #DevTools #LibCST #CleanCode #OpenSource #Programming
https://github.com/15r10nk/matchify
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - 15r10nk/matchify: converts if-else code to match statements
converts if-else code to match statements. Contribute to 15r10nk/matchify development by creating an account on GitHub.