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

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

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

ty
— это новый статический анализатор и language server для Python, написанный на Rust.

🔹Подходит для:

🔘Быстрой проверки типов (uvx ty check).

🔘Работы с виртуальными окружениями.

🔘Использования в проектах с pyproject.toml.

🔻Особенности:

🔘Молниеносная скорость.

🔘CLI-интерфейс (команда check).

🔘Интеграция с uv и uvx.

⚠️Пока в стадии preview — могут быть ошибки и недоработки.

#Python #TypeChecker #RustPython #TyChecker #StaticAnalysis #uvx #PythonTools #Программирование #PythonДляНовичков #МолниеносныйPython #RuffTools

📱Ссылка на репозиторий:
https://github.com/astral-sh/ty
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥11
📱Skylos.

Skylos — это инструмент статического анализа кода на Python, который вычищает мёртвый код.

🔍Что находит Skylos:

🔘Неиспользуемые функции и методы.

🔘Неиспользуемые классы.

🔘Неиспользуемые импорты.

🔘И делает это по всему проекту, даже между модулями.

🔻Пример запуска:
# Установка
pip install skylos

# Анализ проекта
skylos /path/to/project

# Режим с выбором — удалить только то, что хочешь
skylos --interactive

# Предпросмотр изменений без удаления
skylos --dry-run


✅Ставь реакцию, если хочешь меньше мёртвого кода в мире.

#Python #DeadCode #StaticAnalysis #OpenSource #Refactoring #CLI #Skylos #DevTools #PyPI #Rustless

📱Ссылка на репозиторий:
https://github.com/duriantaco/skylos
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡22👍1
📱Ahocorasick_rs.

ahocorasick_rs
— это Python-обёртка над высокопроизводительной библиотекой на Rust aho-corasick, предназначенная для поиска сразу нескольких паттернов в строке. Работает быстрее и эффективнее, чем pyahocorasick.

🔹Возможности:

🔘Поиск подстрок по алгоритму Ахо-Корасика.

🔘Поддержка как строк (str), так и байтов (bytes).

🔘Три типа совпадений: Standard, LeftmostFirst, LeftmostLongest.

🔘Поиск перекрывающихся совпадений.

🔘Тонкая настройка производительности и памяти.

🔻Пример:
import ahocorasick_rs
patterns = ["hello", "world"]
text = "hello world, hello!"
ac = ahocorasick_rs.AhoCorasick(patterns)
print(ac.find_matches_as_strings(text))
# ['hello', 'world', 'hello']


#Python #Rust #AhoCorasick #Regex #StaticAnalysis #DevTools #Search #PyPI #PythonTips #OpenSource #FastCode #TextProcessing #ahocorasick_rs

📱Ссылка на репозиторий:
https://github.com/G-Research/ahocorasick_rs
Please open Telegram to view this post
VIEW IN TELEGRAM
16⚡2🔥21
📱Complexipy.

complexipy — это библиотека для анализа когнитивной сложности Python-кода. Написана на Rust, с поддержкой CLI, Python API, GitHub Actions, VSCode и pre-commit-хуков.

🧠Что такое когнитивная сложность?

Это метрика, которая оценивает, насколько сложно человеку понять код. В отличие от цикломатической сложности, она учитывает вложенность, ветвления и общее когнитивное восприятие.

🔹Возможности:

🔘Анализ файлов, каталогов и репозиториев.

🔘Отчёты в CSV и JSON.

🔘Быстрая интеграция в CI/CD и pre-commit.

🔘Поддержка VSCode (расширение).

🔘API для Python (анализ кода из файла или строки).

🔻Интеграции:

🔘GitHub Actions для автоматических проверок.

🔘Pre-commit hook для контроля качества перед коммитом.

🔘VSCode Extension — анализ в реальном времени с цветовой индикацией сложности.

#Python #complexipy #CodeQuality #CognitiveComplexity #RustPowered #DevTools #VSCode #PreCommit #GitHubActions #StaticAnalysis #ComplexityAnalysis #PythonDev #CItools

📱Ссылка на репозиторий:
https://github.com/rohaquinlop/complexipy
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥2313👍6
📱Hexora.

Hexora
— инструмент для поиска вредоносных и опасных паттернов в Python-проектах. Подходит для:

🔘Аудита зависимостей и пакетов (PyPI, venv).

🔘Анализа скриптов из Pastebin, GitHub, открытых директорий

🔘Проверки IoC-файлов из инцидентов

🔘Выявления supply-chain атак

🔹Примеры использования:

# Проверка файла
hexora audit
test.py

# Проверка директории
hexora audit resources/test/

# Использование в Python
import hexora
results = hexora.audit_path("resources/test/")


#Python #Security #StaticAnalysis #SupplyChain #CyberSecurity #Hexora #DevSecOps #OpenSource #MalwareDetection #CodeAudit

📱Ссылка на репозиторий:
https://github.com/rushter/hexora
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍32
📱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
📱Bandit.

Bandit — это инструмент для поиска распространенных проблем безопасности в Python-коде. Он анализирует каждый файл, строит из него AST(Abstract Syntax Tree) и запускает соответствующие плагины для проверки узлов дерева. После сканирования всех файлов Bandit генерирует подробный отчет.

🔹Ключевые особенности:

🔘Бесплатное ПО с лицензией Apache.

🔘7.5k звезд на GitHub.

🔘Поддержка контейнеров для различных архитектур (amd64, arm64, armv7, armv8).

🔘Изначально разработан в рамках OpenStack Security Project.

✅Отличный инструмент для автоматизации проверок безопасности в CI/CD пайплайне!

#Python #Security #Bandit #Linter #CodeQuality #DevSecOps #StaticAnalysis #OpenSource #SecurityTools #PyCQA #Automation

📱Ссылка на репозиторий:
https://github.com/PyCQA/bandit
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡2🔥2
📱Pymetrica.

Pymetrica — это
мощный инструмент статического анализа, который вычисляет метрики программной инженерии для проектов на Python.

С помощью парсинга абстрактного синтаксического дерева (AST), инструмент оценивает классические показатели качества: сложность, удобство сопровождения и стабильность архитектуры.

Pymetrica не просто считает строки кода. Инструмент выделяется тем, что группирует метрики по слоям архитектуры (на основе структуры директорий) и может генерировать наглядные схемы связей в формате Mermaid.

❓Что умеет измерять (Метрики):

🔘ALOC (Abstract Lines of Code): Измеряет уровень абстракции в коде. Слишком высокие значения могут указывать на "оверинжиниринг".

🔘Cyclomatic Complexity (CC): Оценивает количество независимых путей выполнения программы (ветвления, циклы, обработка исключений). Чем выше значение, тем сложнее поддерживать код.

🔘Halstead Volume (HV): Оценивает сложность реализации, базируясь на количестве операторов и операндов.

🔘Primitive Obsession (PO): Показывает, насколько сильно код зависит от примитивных типов (int, str, dict) вместо доменно-специфичных абстракций (классов/моделей).

🔘Maintainability Cost (MC): Композитная оценка стоимости поддержки кода. Чем ниже, тем лучше.

🔘Instability (LI): Анализ архитектурной стабильности и связанности (coupling) слоев на основе импортов.

🔹 Главные фичи:

🔘Оценка качества архитектуры, а не только "линтер ошибок".

🔘Генерация красивых Mermaid-диаграмм архитектуры (слои и компоненты).

🔘Гибкая настройка порогов качества и паттернов игнорирования файлов прямо в pyproject.toml.

🔘Удобный Python API для использования внутри ваших скриптов + готовые хуки для pre-commit.

🔘Встроенный модульный CLI-интерфейс.

🚀Быстрый старт:
pip install pymetrica

Запуск полного анализа проекта:
pymetrica run-all path/to/project

Генерация архитектурной диаграммы:
pymetrica base-stats --diagram path/to/project


#Python #Pymetrica #StaticAnalysis #Architecture #CodeQuality #DevTools #Metrics #OpenSource

📱Ссылка на репозиторий:
https://github.com/JuanJFarina/pymetrica
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4🔥3
📱Lifeguard.

Lifeguard —
это быстрый инструмент статического анализа, созданный для безопасного внедрения «ленивых» импортов (Lazy Imports) в Python-проектах.

❓Зачем нужны ленивые импорты (PEP 810).

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

🔻В чем подвох?

Перевести старый код на ленивые импорты вслепую не выйдет — часть логики обязательно сломается. Например, проблемы возникнут, если:

🔘У модуля есть сайд-эффекты при загрузке (он меняет глобальное состояние).

🔘Используется паттерн «Реестр» (Registry), где модуль регистрирует себя в глобальном словаре в момент импорта.

🔘Код манипулирует sys.modules, ожидая, что предыдущие импорты уже выполнились.

🔘Используются сложные метаклассы или __init_subclass__.

Найти все такие места в большом проекте вручную практически невозможно.

🔧Как помогает Lifeguard:

Инструмент (написанный на Rust) параллельно анализирует AST-дерево ваших исходников и выявляет все несовместимые паттерны. Lifeguard максимально консервативен: если он не может программно доказать, что модуль безопасен для ленивого импорта, он помечает его как небезопасный. Стабильность продакшена здесь ставится выше микрооптимизаций.

🔹 Два главных сценария использования:

🔘Как классический линтер: Запуск в подробном режиме (verbose) покажет конкретные строки в файлах, которые мешают отложенной загрузке. Вы можете постепенно исправлять их в коде.

🔘Как генератор конфига: Lifeguard выдает JSON-файл с двумя списками: LAZY_ELIGIBLE (полностью безопасные модули) и LOAD_IMPORTS_EAGERLY (модули-исключения). В будущем (в Python 3.15) этот JSON можно будет использовать в качестве фильтра для функции importlib.util.lazy_import, чтобы управлять импортами автоматически.

❗️Статус проекта:

Находится в стадии беты и готовится к выходу Python 3.15 (уже протестирован на версиях 3.12 и 3.14). Сейчас для работы требуется Rust (nightly) и запуск через cargo run, но разработчики уже готовят пакет для PyPI и готовые GitHub Actions.

#Python #Rust #LazyImports #PEP810 #StaticAnalysis #DevTools #Backend #Оптимизация

📱Ссылка на репозиторий:
https://github.com/facebook/Lifeguard
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4⚡3
📱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