PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Matchify.

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 и др.).

🔘Параллелизм и CI: Поддерживает многопоточную обработку для больших репозиториев, проверку без изменения файлов (--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
4⚡1🔥1