Deply — это автономный инструмент на Python для контроля архитектурных паттернов и зависимостей в крупных Python проектах. Он анализирует структуру кода и зависимости, чтобы гарантировать соблюдение архитектурных правил. Это способствует созданию более чистого, модульного и поддерживаемого кода.
#Python #Programming #SoftwareArchitecture #CleanCode #Deply #DependencyManagement #CodeQuality
https://github.com/Vashkatsi/deply
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - Vashkatsi/deply: Keep your python architecture clean.
Keep your python architecture clean. Contribute to Vashkatsi/deply development by creating an account on GitHub.
🔥3👍2
Validoopsie – это невероятно легковесная и удобная в использовании библиотека для валидации данных в Python. Она разработана для того, чтобы легко объявлять классы и связывать валидации в стиле популярных библиотек для работы с DataFrame. Это делает её интуитивно понятной для разработчиков, работающих с DataFrame.
#Validoopsie #Python #DataValidation #DataFrames #BYOD #GreatExpectations #Narwhals #DataIntegrity #CleanCode
https://github.com/akmalsoliev/Validoopsie
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - akmalsoliev/Validoopsie: A simple and easy to use Data Validation library for Python.
A simple and easy to use Data Validation library for Python. - akmalsoliev/Validoopsie
👍2🔥1🤔1
pyscn — это инструмент для глубокого структурного анализа Python-кода, созданный на Go с использованием tree-sitter.
uvx pyscn analyze .
# или
pipx run pyscn analyze .
pipx install pyscn
# или
uv tool install pyscn
pyscn analyze . # Полный анализ с HTML-отчётом
pyscn analyze --json . # JSON-отчёт
pyscn analyze --select deps,complexity . # Выборочные метрики
pyscn check . # Быстрая CI-проверка
pyscn init # Создание .pyscn.toml
📚 Документация: github.com/ludo-tech/pyscn
#Python #StaticAnalysis #CodeQuality #CleanCode #CyclomaticComplexity #DeadCode #TreeSitter #GoLang #Cursor #Claude #ChatGPT #pyscn #CodeRefactoring #SoftwareArchitecture
https://github.com/ludo-technologies/pyscn
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - ludo-technologies/pyscn: Code quality analysis for Python in the age of AI coding.
Code quality analysis for Python in the age of AI coding. - ludo-technologies/pyscn
1⚡3👍3
Pyupgrade — это инструмент, который автоматически обновляет ваш Python-код под современные версии языка.
Он сам переписывает устаревший или избыточный синтаксис, убирает легаси и приводит код к актуальным стандартам без ручных правок. Очень удобно ставить его как pre-commit hook — и тогда каждый коммит автоматически делает проект чище.
#Python #Pyupgrade #Refactoring #CleanCode #PreCommit #PythonTools #DevTools
https://github.com/asottile/pyupgrade
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - asottile/pyupgrade: A tool (and pre-commit hook) to automatically upgrade syntax for newer versions of the language.
A tool (and pre-commit hook) to automatically upgrade syntax for newer versions of the language. - asottile/pyupgrade
1 3👍2🔥2
Katharos — это библиотека для Python, которая помогает писать чистый и безопасный код без боли, используя лучшие фишки функционального программирования.
Если вас тоже бесят бесконечные проверки
if something is None и многоэтажные try/except, то этот инструмент вам точно понравится! None: Специальный тип Maybe позволяет строить безопасные цепочки действий. Если на каком-то этапе данных не оказалось, код не упадет с ошибкой, а просто аккуратно прервется.Result ошибки обрабатываются как обычные переменные. Вы можете передавать их по цепочке, не оборачивая каждый чих в блоки try/except.@do вы пишете код ровно и линейно (как обычно), а все рутинные проверки на пустоту или ошибки библиотека делает за вас под капотом.Было (лапша из проверок):
user = find_user(user_id)
if user is None:
return None
account = find_account(user)
if account is None:
return None
return account.discount
Стало (красиво и лаконично):
from katharos.types import Maybe
from katharos.syntax_sugar import do
@do(Maybe)
def lookup_discount(user_id):
# Если функция ничего не найдет, выполнение само остановится
user = yield find_user(user_id)
account = yield find_account(user)
return account.discount
pip install katharos#Python #CleanCode #DevTools #Programming #OpenSource #Разработка
https://github.com/kamalfarahani/katharos
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - kamalfarahani/katharos: A functional programming and concurrency library for Python: algebraic abstractions (Semigroups…
A functional programming and concurrency library for Python: algebraic abstractions (Semigroups, Monoids, Functors, Applicatives, Monads), immutable data types, and message-passing concurrency, all...
1🔥3👍2
Cohesion — это инструмент статического анализа для измерения связанности (когезии) классов в Python.
В программировании cohesion (связанность) определяет, насколько сильно методы и переменные внутри одного модуля или класса логически подходят друг другу. Как писал Роберт Мартин в книге «Чистый код»: «Когда связанность высока, это означает, что методы и переменные класса зависят друг от друга и составляют единое логическое целое».
Cohesion проверяет, как именно методы класса используют переменные этого класса (как уровня класса, так и уровня экземпляра
self), и выводит процентную оценку для каждого из них.Пример отчета (
cohesion --files example.py --verbose):Class: ExampleClass1
Function: func1 -> Использует 2 из 3 переменных (66.67%)
Function: func2 -> Использует 1 из 3 переменных (33.33%)
Function: func3 -> Использует 0 из 3 переменных (0.00%)
Total (Общая связанность класса): 33.33%
Если общая оценка слишком низкая, это явный сигнал о том, что класс делает слишком много разных вещей и его пора разбивать (нарушен принцип Single Responsibility).
--below и --above позволяют отфильтровать вывод (например, подсветить только те классы, у которых связанность ниже 50%).example.py:1:1: H601 class has low cohesionpip install cohesion
#Python #CleanCode #Cohesion #Refactoring #Flake8 #Linter #DevTools #StaticAnalysis #OpenSource
https://github.com/mschwager/cohesion
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - mschwager/cohesion: A tool for measuring Python class cohesion.
A tool for measuring Python class cohesion. Contribute to mschwager/cohesion development by creating an account on GitHub.
2⚡3👍3🔥3
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.
Arid - это сверхбыстрый инструмент для поиска дублирующегося кода в Python-проектах, написанный на Rust.
Проект создан как узкоспециализированная замена анализатору дубликатов из Pylint (правило
R0801 / утилита symilar). Arid не пытается быть еще одним универсальным линтером, а идеально дополняет Ruff: пока Ruff форматирует и линтит код, Arid берет на себя строгий контроль принципа DRY (Don't Repeat Yourself).jscpd, Arid парсит синтаксис языка и поддерживает умную нормализацию. При поиске дубликатов можно исключать комментарии, докстринги, блоки импортов и сигнатуры функций.--write-baseline arid-baseline.json). В CI проверяются только новые дубликаты, не ломая сборки на старом коде.# arid: disable / # arid: enable. Опция --suppression-status --fail-on-stale отслеживает и требует удалять комментарии подавления, если код вокруг изменился и дубликата больше нет.pre-commit (анализирует весь проект целиком, а не только staged-файлы) и конфигурация через секцию [tool.arid] в pyproject.toml.Установка:
# Через uv (изолированно):
uv tool install arid
# Или через pip:
pip install arid
Использование в связке с Ruff:
ruff check .
arid .
Пример конфигурации в
pyproject.toml:Ini, TOML
[tool.arid]
min-lines = 5
ignore-comments = true
ignore-docstrings = true
ignore-imports = true
ignore-signatures = true
exclude = ["generated/**", "vendor/**"]
#Python #Rust #Arid #Ruff #Pylint #DRY #CodeQuality #CleanCode #DevTools #OpenSource #CICD
https://github.com/sponge-b0b/arid
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - sponge-b0b/arid: Fast Python duplicate-code checker written in Rust. A focused replacement for Pylint R0801 that complements…
Fast Python duplicate-code checker written in Rust. A focused replacement for Pylint R0801 that complements Ruff. - sponge-b0b/arid