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

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

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

Deply
— это автономный инструмент на Python для контроля архитектурных паттернов и зависимостей в крупных Python проектах. Он анализирует структуру кода и зависимости, чтобы гарантировать соблюдение архитектурных правил. Это способствует созданию более чистого, модульного и поддерживаемого кода.

🔹Основные функции:

🔘Анализ на основе слоёв: Определяйте слои проекта и ограничивайте их зависимости для усиления модульности.

🔘Динамическая конфигурация слоёв: Настраивайте коллекторы для каждого слоя с помощью шаблонов файлов, наследования классов и логических условий.

🔘Правила кросс-слойных зависимостей: Задавайте правила, запрещающие доступ определённых слоёв к другим.

🔘Расширяемость и гибкость: Настраивайте слои и правила для любого Python проекта.

✅Deply — для тех, кто ценит порядок в архитектуре и чистый код!

#Python #Programming #SoftwareArchitecture #CleanCode #Deply #DependencyManagement #CodeQuality

📱Ссылка на репозиторий:
https://github.com/Vashkatsi/deply
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
📱Validoopsie.

Validoopsie
– это невероятно легковесная и удобная в использовании библиотека для валидации данных в Python. Она разработана для того, чтобы легко объявлять классы и связывать валидации в стиле популярных библиотек для работы с DataFrame. Это делает её интуитивно понятной для разработчиков, работающих с DataFrame.

🔘Благодаря отличной работе Narwhals, Validoopsie поддерживает концепцию "Bring Your Own DataFrame" (BYOD). Это позволяет использовать любой поддерживаемый Narwhals DataFrame для задач валидации данных.

🔘Синтаксис Validoopsie продуман для максимального удобства. Каждая функция валидации заключена в свой собственный метод, который можно легко связывать между собой. Такой подход повышает читаемость кода и избавляет от необходимости адаптироваться к новому API каждый раз при смене библиотеки, позволяя сосредоточиться на поддержании чистоты и понятности кода.

✅Проверяйте целостность данных или обеспечивайте их соответствие стандартам с помощью этого мощного и удобного решения.

#Validoopsie #Python #DataValidation #DataFrames #BYOD #GreatExpectations #Narwhals #DataIntegrity #CleanCode

📱Ссылка на репозиторий:
https://github.com/akmalsoliev/Validoopsie
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1🤔1
📱Pyscn.

pyscn
— это инструмент для глубокого структурного анализа Python-кода, созданный на Go с использованием tree-sitter.

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

✅Подходит тем, кто пишет с Cursor, Claude, или ChatGPT.

🔹Основные фичи pyscn:

🔘Dead code detection (CFG) — находит недостижимый код после цепочек if / elif / else.

🔘Clone detection (APTED + LSH) — определяет участки, которые стоит вынести или отрефакторить.

🔘Coupling metrics (CBO) — показывает, насколько тесно связаны модули.

🔘Cyclomatic complexity — измеряет сложность функций.

🔘Более 100 000 строк/сек — анализ на скорости Go.

⚡️Быстрый старт:
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


💬Почему pyscn?

🔘Потому что он не просто проверяет стиль — он понимает структуру кода.

🔘Подходит для ревью, CI и анализа крупных Python-проектов.

📚 Документация: 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
1⚡3👍3
📱Pyupgrade.

Pyupgrade — это инструмент, который автоматически обновляет ваш Python-код под современные версии языка.

Он сам переписывает устаревший или избыточный синтаксис, убирает легаси и приводит код к актуальным стандартам без ручных правок. Очень удобно ставить его как pre-commit hook — и тогда каждый коммит автоматически делает проект чище.

❓Что делает Pyupgrade:

🔘Заменяет старые строки форматирования на f-строки.

🔘Убирает six, Python-2 конструкции и ненужные костыли.

🔘Упрощает super(), open(), defaultdict, проверки типов.

🔘Обновляет аннотации типов на синтаксис из PEP 585/604.

🔘Чистит лишние импорты и исправляет устаревшие вызовы.

🔘Делает код современным, компактным и читаемым.

✅Если хотите, чтобы ваш проект выглядел так, будто он написан в 2025 — добавьте Pyupgrade в свой workflow.

#Python #Pyupgrade #Refactoring #CleanCode #PreCommit #PythonTools #DevTools

📱Ссылка на репозиторий:
https://github.com/asottile/pyupgrade
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍2🔥2
📱Katharos.

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
1🔥3👍2
📱Cohesion.

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%).

🔘Интеграция с Flake8: Инструмент работает как плагин для линтера. При проверке кода он автоматически выдаст предупреждение, если найдет перегруженный класс:
example.py:1:1: H601 class has low cohesion

🔧Установка:

pip 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
2⚡3👍3🔥3
📱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
📱Arid.

Arid
- это сверхбыстрый инструмент для поиска дублирующегося кода в Python-проектах, написанный на Rust.

Проект создан как узкоспециализированная замена анализатору дубликатов из Pylint (правило R0801 / утилита symilar). Arid не пытается быть еще одним универсальным линтером, а идеально дополняет Ruff: пока Ruff форматирует и линтит код, Arid берет на себя строгий контроль принципа DRY (Don't Repeat Yourself).

🔹Главные фичи и преимущества:

🔘Производительность Rust: В бенчмарках на реальных кодовых базах (Requests, Pydantic, Polaris) отрабатывает в 190–250 раз быстрее, чем анализатор Pylint.

🔘Понимание синтаксиса Python: В отличие от универсальных текстовых утилит вроде jscpd, Arid парсит синтаксис языка и поддерживает умную нормализацию. При поиске дубликатов можно исключать комментарии, докстринги, блоки импортов и сигнатуры функций.

🔘Baselines: Позволяет зафиксировать текущий техдолг в легаси-проектах (--write-baseline arid-baseline.json). В CI проверяются только новые дубликаты, не ломая сборки на старом коде.

🔘Suppression audit: Намеренные дубликаты можно изолировать директивами # arid: disable / # arid: enable. Опция --suppression-status --fail-on-stale отслеживает и требует удалять комментарии подавления, если код вокруг изменился и дубликата больше нет.

🔘Машиночитаемые отчеты: Поддерживает вывод в Text, JSON, Markdown и стандартный формат SARIF (для бесшовной интеграции с GitHub Code Scanning).

🔘Готовая экосистема: Официальный GitHub Action, хук для 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
4⚡31