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

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

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

Multiplex — мощный CLI-мультиплексор и Python API для параллельного запуска процессов.

✅Если вам нужно одновременно запустить несколько процессов (например, веб-сервер, очередь задач и базу данных) и грамотно управлять их завершением — используйте Multiplex.

❓Что умеет Multiplex:

🔘Запускает несколько команд параллельно.

🔘Позволяет задавать задержки и зависимости между процессами.

🔘Грациозно завершает все дочерние процессы.

🔘Объединяет stdout/stderr в удобный для парсинга вывод.

🔘Имеет лаконичный синтаксис и полноценный Python API.

🔹Пример:
Запустить сервер, подождать 2 сек, затем выполнить бенчмарк и завершить всё:
multiplex "SERVER|silent=python3 -m http.server" "+2s|end=ab -n1000 http://localhost:8000/"


#Python #DevTools #CLI #Async #Multiprocessing #Automation #DevOps #Multiplex #OpenSource #Параллелизм #Скрипты #PythonTools #Разработка

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

cliprec — это кроссплатформенный инструмент на Python для записи текста из буфера обмена в реальном времени.

✅Он запоминает всё, что ты копируешь, и позволяет собрать все скопированные куски текста в один блок без ручных вставок.

⚙️Установка:
pip install cliprec


🚀Быстрый старт:
python -m cliprec


Ты увидишь:
Recording clipboard... (Ctrl-C to stop)


Каждый раз, когда копируешь текст — он отображается:
Copied this text.
Copied this text too.
Lorem ipsum.


Когда нажимаешь Ctrl-C, cliprec предложит:

🔘Enter → скопировать всё сразу (с разделением по строкам).

🔘Ctrl-C → выйти без сохранения.
Recording stopped. Press Enter to copy everything together or Ctrl-C to quit.


🐍Можно использовать из Python:
import cliprec
cliprec.main()


🧠Отлично подходит, если:

🔘нужно быстро собрать несколько цитат;

🔘копируешь логи или фрагменты кода;

🔘работаешь в IDE, терминале или браузере и не хочешь терять контекст.

#Python #CLI #Clipboard #Productivity #Automation #DevTools #cliprec #pyperclip

📱Ссылка на репозиторий:
https://github.com/asweigart/cliprec
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5
📱Cronboard.

Cronboard — это интерактивное TUI-приложение на Python, которое позволяет просматривать, добавлять, редактировать, приостанавливать и удалять cron-задания — как на локальной машине, так и на удалённом сервере по SSH.

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

🔘Просмотр и проверка cron-задач.

🔘Создание заданий с валидацией и подсказками.

🔘Пауза и возобновление заданий.

🔘Редактирование существующих cron-записей.

🔘Удаление заданий.

🔘Отображение времени последнего и следующего запуска.

🔘Поддержка специальных выражений (@daily, @weekly, @monthly, @yearly).

🔘Подключение к серверам через SSH (по паролю или ключу).

⚙️Установка:
git clone https://github.com/antoniorodr/cronboard
cd cronboard
pip install .


🚀Запуск:
cronboard

После запуска появится интерфейс с нижней панелью Textual, где показаны доступные команды.

#Python #CLI #DevTools #Automation #SysAdmin #Scheduler #CronJobs #TUI #OpenSource #Cronboard

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

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

📦Устанавливай всё — от Python до Node.js и Neovim — одной командой:
scoop install python


🔹Преимущества Scoop:

🔘Без прав администратора и всплывающих окон.

🔘Без «мусора» в PATH и реестре.

🔘Полностью портативный — хранит всё в ~/scoop.

🔘Простое удаление и обновление пакетов.

🔘Расширяемость через «buckets» (репозитории с манифестами).

🔻Пример:
scoop search mongo
scoop install mongosh


✅Scoop — это brew для Windows, только чище, умнее и ближе к разработчику.

#Scoop #Windows #PowerShell #DevTools #CLI #PackageManager #OpenSource #Automation

🔗Оф. сайт: https://scoop.sh
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2⚡1🤔1
📱Code Spy.

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

Представьте: вы сохраняете файл — а Code Spy сам запускает MyPy, Pylint, Pytest, Black или даже перезапускает dev-сервер. Вам не нужно переключаться в терминал, вручную запускать команды или следить, что что-то забыли проверить. Всё происходит автоматически.

❓Что умеет Code Spy:

🔘MyPy — проверка типов.

🔘Black — автоформатирование.

🔘Pylint — линтинг.

🔘Pytest — тесты.

🔘DevServer — перезапуск приложения (например, Flask).

🔻Дополнительные задачи (при установке соответствующих библиотек):

🔘ISort.

🔘Flake8.

🔘Bandit.

🔘Sphinx.

🔘Custom Tasks.

Вы просто указываете путь к проекту, настраиваете задачи — и Code Spy начинает «шпионить» за файлами, реагируя на любые изменения.

✅Отличный инструмент, если хотите постоянно поддерживать качество кода, не думая о рутине.

#Python #CodeSpy #Automation #DevTools #Pytest #Pylint #MyPy #Black #Flask #CodeQuality

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

webctl — это CLI-обёртка над Chromium/Playwright для автоматизации браузера людьми и AI‑агентами, с акцентом на фильтрацию вывода до попадания в контекст LLM и удобную интеграцию со skill‑системами (Claude, Goose и др.).

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

🔘Автоматизация браузера командами вроде:
webctl start, webctl navigate "https://example.com", webctl click 'role=button name~="Submit"', webctl snapshot --interactive-only.

🔘Архитектура CLI + daemon: утилита отправляет JSON‑RPC по Unix‑сокету в фоновой процесс, который держит Chromium и сессию (cookies, профиль) живыми между командами.

❓Почему CLI, а не MCP:

🔘MCP обычно льёт в контекст кучу «шума» (полный accessibility tree, логи и т.д.), быстро забивая окно контекста модели.

🔘В CLI‑подходе ты сам решаешь, что покажется LLM:
webctl snapshot --interactive-only --limit 30 | grep -i "submit" или ... --format jsonl | jq ....

🔻Интеграция с агентами:

🔘webctl init генерирует skill‑/prompt‑файлы для Claude Code, Goose, Gemini, Copilot, Codex, чтобы агент знал, как вызывать webctl.

🔘Skills подхватываются по файлам (.claude/skills/webctl/SKILL.md, .agents/skills/... и т.п.), загружаются по требованию, чтобы не засорять системный промпт.

🔻Основные команды:

🔘Навигация и наблюдение: navigate, back/forward/reload, snapshot, query, screenshot.

🔘Взаимодействие: click, type, select, check, press, scroll, wait ..., плюс status, console, save для сессии.

#webctl #Playwright #CLI #BrowserAutomation #AIAgents #LLM #UnixTools #Chromium #DevTools #Automation

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

Calgebra — это алгебра множеств для календарей в Python: позволяет комбинировать временные интервалы (|, &, -, ~) и эффективно запрашивать свободные/занятые слоты во временных диапазонах .

❓Зачем это нужно:

🔘Поиск общих свободных окон команды для митингов.

🔘Анализ занятости (кто перегружен, какие слоты пустуют).

🔘Построение «правил времени» для ботов и автоматизации (рабочие часы, исключения, recurring‑паттерны).

🔹Как это выглядит в коде:

from calgebra import day_of_week, time_of_day, at_tz, pprint, hours, HOUR
from itertools import islice

tz = "US/Pacific"
at = at_tz(tz)

# Календари команды (Google / .ics / свои источники)
alice, bob, charlie = ...

# Будни и рабочие часы
weekend = day_of_week(["saturday", "sunday"], tz=tz)
weekdays = ~weekend
workhours = time_of_day(start=9*HOUR, duration=8*HOUR, tz=tz)
business_hours = weekdays & workhours

# Кто когда занят
team_busy = alice | bob | charlie

# Свободные слоты в рабочее время, минимум на 2 часа
free_slots = (business_hours - team_busy) & (hours >= 2)

pprint(islice(free_slots[at("2025-01-01"):at("2025-02-01")], 5), tz=tz)
# 2025-01-06 14:00:00 -> 17:00:00
# 2025-01-08 09:00:00 -> 12:00:00
# ...


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

🔘Операции множеств для времени: объединение (|), пересечение (&), разность (-), дополнение (~) над календарными интервалами.

🔘Конструкции «поверх дат»: day_of_week(), time_of_day(), recurring() в стиле RFC 5545 (как в iCalendar).

🔘Фильтрация интервалов: hours >= 2, summary == "standup", кастомные свойства событий.

🔘Отложенное выполнение запросов: вы описываете правила и комбинации, а фактический расчёт происходит при слайсинге по диапазону дат (timeline[start:end]).

🔘Интеграция с реальными календарями:

✔️Google Calendar: чтение и запись через calgebra.gcsa.

✔️iCalendar (.ics): загрузка/сохранение стандартных RFC 5545 файлов.

🔧Установка:

pip install calgebra
# с поддержкой Google Calendar
pip install calgebra[google-calendar]
# с поддержкой iCalendar (.ics)
pip install calgebra[ical]


#Calgebra #Python #Calendar #Scheduling #GoogleCalendar #ICS #SetAlgebra #Automation #OpenSource

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

nanobot — это ультра-лёгкий персональный AI-ассистент в духе Clawdbot, но с ядром всего ~3.4k строк кода (примерно на 99% меньше исходника Clawdbot). Его идея — дать все базовые возможности агента без громоздкой инфраструктуры: установил, прописал ключ — и можно общаться через CLI или мессенджеры.

🔹Что умеет nanobot:

🔘24/7 мониторинг рынка и поиск инсайтов.

🔘Помощник full‑stack‑разработчика (код, поиск, отладка, генерация).

🔘Менеджер рутины: расписания, напоминания, авто‑задачи (cron).

🔘Личный knowledge‑ассистент с памятью и навыками.

Каналы и провайдеры:

🔘Telegram, Discord, WhatsApp, Feishu — единый AI‑бот, доступный отовсюду.

🔘Множество LLM‑провайдеров: OpenRouter, Anthropic, OpenAI, DeepSeek, Groq, Gemini и др.

🔘Поддержка локальных моделей через vLLM или любой OpenAI‑совместимый сервер (Llama 3.1 и пр.).

🐱Быстрый старт (CLI):

1. Установка:
pip install nanobot-ai
# или через uv:
uv tool install nanobot-ai

2. Инициализация:
nanobot onboard

3. Настройка ~/.nanobot/config.json (API‑ключи, модель, инструменты веб‑поиска).
4. Чат из терминала:
nanobot agent -m "Что такое nanobot и чем он полезен?"


🔻Локальные модели (vLLM):

🔘Поднимаете сервер:
vllm serve meta-llama/Llama-3.1-8B-Instruct --port 8000

🔘В конфиге указываете:
"providers": {
"vllm": {
"apiKey": "dummy",
"apiBase": "http://localhost:8000/v1"
}
},
"agents": {
"defaults": {
"model": "meta-llama/Llama-3.1-8B-Instruct"
}
}

🔘И дальше общаетесь через nanobot agent.

🔻Интеграция с мессенджерами:

🔘Telegram: токен от BotFather + nanobot gateway.

🔘Discord: bot token + intents.

🔘WhatsApp: привязка через QR и nanobot channels login.

🔘Feishu: WebSocket‑режим без публичного IP, достаточно appId/appSecret.

🔻Планирование и автоматизация:

🔘Встроенный cron для задач:
nanobot cron add --name "daily" --message "Good morning!" --cron "0 9 * * *"
nanobot cron list
nanobot cron remove <job_id>

🔘Можно использовать как личного «оркестратора» рутинных проверок, отчётов, напоминаний.

🔻Безопасность и деплой:

🔘tools.restrictToWorkspace: true — жёстко ограничивает инструменты (shell, файлы) рабочей директорией.

🔘allowFrom для каналов — whitelist пользователей, которые могут общаться с ботом.

🔘Официальный Docker‑образ/ Dockerfile: монтируете ~/.nanobot в контейнер и получаете постоянный конфиг и workspace.

#nanobot #AIassistant #Python #LLM #vLLM #Agents #TelegramBot #DiscordBot #WhatsApp #Feishu #Automation #OpenSource

📱Ссылка на репозиторий:
https://github.com/HKUDS/nanobot
Please open Telegram to view this post
VIEW IN TELEGRAM
25🔥2
📱Win11toast.

Win11toast — это небольшая Python‑библиотека для нативных toast‑уведомлений в Windows 10/11 на базе WinRT. С её помощью можно за пару строк кода показать системный баннер с текстом, кнопками, прогресс‑баром, звуком, картинками и даже запуском скриптов по клику.

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

🔘Простые уведомления: from win11toast import toast; toast('Hello Python🐍').

🔘Клик‑действия: открытие URL, запуск .pyw‑скрипта или свой callback, который получает аргументы клика.

🔘Кнопки и формы: одна или несколько кнопок, поля ввода, выбор из списка — можно собирать мини‑интерфейсы прямо в уведомлении.

🔘Прогресс‑бар: notify + update_progress для отображения прогресса задач (скачивание, бэкапы, длительные скрипты).

🔘Медиа и звук: иконки, изображения, системные или свои звуки, сценарии вроде alarm/reminder/incomingCall, режим «без тайм‑аута».

🔘Async и Jupyter: есть notify (не блокирует поток) и toast_async для использования в асинхронном коде и ноутбуках.

🔧Установка:
pip install win11toast.

#Python #Windows #win11toast #ToastNotification #Automation #WinRT #DevTools

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

PPT Master — это мощный инструмент (workflow) для ИИ-редакторов кода вроде Cursor, Claude Code или VS Code, который превращает любые PDF, DOCX, Markdown или ссылки в полностью редактируемые презентации PowerPoint (.pptx).

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

🔘Настоящий PowerPoint: Генерирует не плоские скриншоты, а реальные векторные фигуры, текстовые блоки и диаграммы. Любой элемент на слайде можно кликнуть и изменить руками!

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

🔘Без подписок и lock-in: Инструмент полностью бесплатный (Open Source). Вы платите только за API-токены самой нейросети (выходит сущие копейки, в районе $0.08 за готовую презентацию).

🔘Мультимодельность: Вы не привязаны к одной ИИ. Можно использовать Claude, OpenAI, Gemini или Kimi.

❓Как это работает:

Вам понадобится только установленный Python и ваш любимый AI IDE. Вы скачиваете репозиторий, закидываете исходный документ (например, годовой отчет) в папку и пишете в чат редактора: "Сделай презентацию на 10 слайдов из этого PDF". ИИ сам проанализирует текст, подберет структуру, сверстает слайды и сохранит готовый .pptx файл в папку экспорта.

#PowerPoint #AI #Productivity #OpenSource #Claude #Cursor #Presentation #Automation #DevTools

📱Ссылка на репозиторий:
https://github.com/hugohe3/ppt-master
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥21
📱Postman2pytest.

Postman2pytest. — это
инструмент, который позволяет конвертировать JSON-файлы из Postman (коллекции v2.1) в готовые для запуска тесты pytest. И всё это одной командой!

Часто коллекции Postman служат отличной документацией для вашего API. Утилита postman2pytest превращает эту "документацию" в исполняемые регрессионные тесты на Python, которые легко встраиваются в CI/CD. Больше не нужно переписывать тесты вручную — вы избавляетесь от рутины и рассинхрона между доками и кодом.

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

🔘Поддерживает GET, POST, PUT, DELETE, PATCH, HEAD и OPTIONS.

🔘Распознает заголовки (включая отключенные) и JSON-тела запросов (raw JSON body).

🔘Умеет вытаскивать ожидаемый HTTP-статус из скриптов Postman вида pm.response.to.have.status(200).

🔘Разворачивает вложенные папки Postman в плоский список тестов с понятными названиями (например, def test_users_post_create_user()).

🔘Позволяет сгенерировать тесты только для одной конкретной папки из коллекции (--filter-folder).

🔘Переменные вроде {{base_url}} автоматически преобразуются в f-строки и подхватываются через переменные окружения (например, BASE_URL).

🔧Установка:

pip install postman2pytest

🔻Как использовать:
postman2pytest \
--collection data/my_api.postman_collection.json \
--out generated_tests/test_api.py

# Запуск сгенерированных тестов
BASE_URL=https://staging.example.com pytest generated_tests/test_api.py -v


⚠️Ограничения: В текущей версии инструмент не переносит сложные тестовые скрипты (кроме проверки статуса), не поддерживает данные form-data и не читает Pre-request скрипты (например, автоматическое получение токенов OAuth придется завернуть в фикстуру pytest руками). Развитие проекта продолжается, и многие из этих пунктов уже в Roadmap.

#Python #Testing #QA #Postman #Pytest #API #DevTools #Backend #Automation

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

ESPectre —
это инновационная система обнаружения движения, которая работает на основе анализа спектра Wi-Fi (CSI — Channel State Information). Она полностью интегрируется с Home Assistant через ESPHome.

Для работы вам не понадобятся камеры, микрофоны или носимые датчики. Всё, что нужно — обычный Wi-Fi роутер и недорогая плата ESP32 (рекомендуются версии S3 или C6, цена вопроса ~10€).

❓Как это работает:

Представьте, что вы проводите рукой перед лучом фонарика — тень меняется. Так же и здесь: когда человек перемещается по комнате, он "искажает" радиоволны Wi-Fi, идущие от роутера к ESP32. Устройство улавливает эти микроизменения и понимает, что в помещении есть движение.

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

🔘Абсолютная приватность: Нет камер — никто не подглядывает, нет микрофонов — никто не подслушивает.

🔘Работает сквозь стены: Wi-Fi сигнал на частоте 2.4 ГГц отлично пробивает межкомнатные перегородки.

🔘Дешевизна: Вся аппаратная часть обойдется примерно в 10 евро.

🔘Никакого программирования: Настройка занимает 10-15 минут через обычные YAML-конфиги в ESPHome. Ваш роутер перенастраивать тоже не придется.

🔘Умная калибровка: Система автоматически выбирает лучшие поднесущие (алгоритм NBVI) для точного детектирования.

🔘Нейросетевой детектор (Новинка!): В экспериментальном режиме доступно распознавание движения на базе встроенной ML-модели, которой даже не требуется калибровка.

🔻Что с этим можно делать:

🔘Безопасность: Получать уведомления, если кто-то ходит по дому, пока вас нет.

🔘Умный свет/климат: Включать освещение или отопление только тогда, когда в комнате кто-то находится.

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

🔘Присмотр за детьми: Узнавать, если ребенок вышел из комнаты посреди ночи.

#IoT #SmartHome #HomeAssistant #ESP32 #ESPHome #WiFi #ESPectre #Automation #УмныйДом

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

Remote CMD -
это легковесная Python-утилита (CLI) и API для управления серверами по SSH. Без лишнего оверхеда, сложных конфигураций Ansible или громоздких bash-циклов.
Инструмент идеально подходит для ситуаций, когда вам нужно быстро выполнить команду на нескольких серверах, раскидать файлы или автоматизировать деплой, используя удобный синтаксис прямо "из коробки".

🔹Главные возможности:

🔘Управление инвентарем и тегами: Добавляйте серверы в базу (JSON/YAML) и группируйте их по тегам (например, production, web, db).

🔘Массовое выполнение (Batch Ops): Запускайте команды сразу на группе серверов. Например, узнать свободное место на всех продакшен-машинах: remote-cmd batch-run -t production "df -h /".

🔘Передача файлов: Встроенная поддержка загрузки и скачивания файлов по SFTP.

🔘Python API: Инструмент можно использовать как библиотеку внутри ваших собственных Python-скриптов для сложной автоматизации (поддерживает выполнение sudo команд с паролем).

🔘Нулевая настройка: Никаких ansible.cfg или конфигураций SSH-агента. Установили через pip — и можно работать.

🚀Быстрый старт:

# Установка
pip install remote_cmd_manager

# Добавление сервера
remote-cmd host add web-01 192.168.1.10 ubuntu --key ~/.ssh/id_rsa

# Выполнение команды на одном сервере
remote-cmd run web-01 "uptime"


✅Если Ansible для ваших текущих задач — это "стрельба из пушки по воробьям", а голый SSH уже не справляется с количеством машин, Remote CMD станет отличным балансом. В планах разработчиков — добавление асинхронного выполнения команд для еще большей скорости.

#Python #SSH #DevOps #SysAdmin #CLI #Automation #OpenSource #DevTools #Администрирование

📱Ссылка на репозиторий:
https://github.com/Vae-Scrooge/remote-cmd
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥4👍22
📱Tia.

Tia -
это инструмент анализа влияния тестов (Test Impact Analysis) для pytest, который позволяет запускать только те тесты, на которые действительно повлияли ваши изменения в коде.

Зачем тратить драгоценное время CI-пайплайнов на прогон сотен тестов, которые физически не могли сломаться от вашей правки?

Tia
один раз собирает карту покрытия, а затем с помощью git diff вычисляет и запускает строго минимальный набор тестов. Эту же концепцию оптимизации используют внутри себя такие гиганты, как Google и Meta.

🔹Честность и точность на реальных данных:

Главный грех подобных утилит — случайно пропустить тест, который на самом деле должен был упасть. Разработчики tia подошли к вопросу жестко:

🔘Никаких красивых сказок: На связанных и плотных проектах (как Flask) утилита безопасно пропускает около 21% тестов. А вот на хорошо модулированных библиотеках (как boltons) реальный показатель пропуска достигает 96%!

🔘Умный фильтр «косметики»: Если коммит содержит только правку опечаток в комментариях, форматирование через black или добавление докстрингов, tia поймет через сравнение AST-деревьев, что рантайм-код не изменился, и пропустит 99%+ тестов.

🔘Игнорирование «мертвых» тайп-хинтов: Правки внутри блоков if TYPE_CHECKING: не запускают тесты зря. Но если вы измените тип поля в Pydantic или dataclass (что влияет на логику работы), утилита это честно отловит.

🛠Как это работает?

🔘tia record — запускает полную кодовую базу и строит карту на уровне конкретных методов и функций {тест -> {файл -> функции}}, сохраняя её в .tia/map.json. Благодаря системным аудит-хукам утилита запоминает даже не-Python файлы (фикстуры, шаблоны, конфиги), которые читал тест.

🔘tia run — анализирует текущий git diff, сопоставляет измененные строки с функциями и на основе 4 правил (попадание в функцию, изменение модуля, дата-зависимость и появление нового теста) отправляет в pytest только целевой набор.

🔻Готовность к CI и Облаку:

Карту тестов, собранную на базовой ветке, можно легко передавать в задачи пул-реквестов. tia поддерживает работу с удаленными хранилищами из коробки:

🔘Собственный легковесный HTTP-сервер (tia serve) без внешних зависимостей.

🔘Ленивая загрузка SDK для нативных облачных бакетов AWS S3 (s3://) и Google Cloud Storage (gs://).

🔘Автоматическая генерация красивых Markdown-отчетов для GitHub Actions ($GITHUB_STEP_SUMMARY) с детальной таблицей: что изменилось и почему были выбраны именно эти тесты.

🚀Быстрый старт:

pip install -e .

tia record # Строим карту (запуск из корня репозитория)
tia run # Запускаем только затронутые тесты
tia run --since main # Сравниваем изменения относительно ветки main


#Python #Pytest #Testing #QA #Automation #CI #CD #DevOps #Optimization #OpenSource

📱Ссылка на репозиторий:
https://github.com/breadMSA/pytest-tia
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥22👍1
📱Centaur.

Centaur
- это self-hosted платформа для командной работы с ИИ-агентами прямо через интерфейс Slack или REST API.

Вместо того чтобы каждый инженер настраивал персональных ботов и локальные скрипты на своей машине, Centaur предоставляет единого общего ассистента: вы тегаете @centaur в треде Slack, бот выделяет изолированную среду, запускает задачи, использует внутренние инструменты компании и возвращает готовый ответ в переписку.

🔹Ключевые возможности:

🔘Интеграция со Slack «из коробки»: Общение происходит прямо в тредах — бот публикует промежуточный прогресс выполнения и финальный результат.

🔘Изолированные песочницы Kubernetes: Каждая сессия запускается в отдельном контейнере (для локальной работы достаточно легковесного k3s) с доступом к терминалу, Git, Python, Node.js, Bun и рабочему пространству.

🔘Поддержка любых агентских CLI (BYOH): Внутри песочницы можно запускать такие среды и агентские движки, как Claude Code, Codex, Amp или собственные скрипты.

🔘Безопасная работа с секретами: Благодаря специальному сервису iron-proxy, агент никогда не получает «сырые» API-ключи в переменные окружения. Внутри песочницы используются токены-заглушки, а реальные учетные данные из 1Password подставляются на лету только при исходящих запросах к доверенным адресам.

🔘Общие инструменты команды: Достаточно один раз оформить скрипт на Python в виде плагина, и он станет доступен агенту во всех задачах через локальный CLI-мост (centaur-tools).

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

🛠Сценарии использования:

🔘Быстрый поиск причин падения тестов и сбоев в CI/CD.

🔘Ответы на вопросы команды с использованием внутренних баз данных и закрытых сервисов.

🔘Формирование регулярных дайджестов и выжимок из длинных переписок.

🔘Автоматизация рутинных многошаговых операций и дежурств (On-Call).

⚙️Стек и архитектура:

Панель управления и API платформы написаны на Rust (Axum) с сохранением состояний в PostgreSQL, интерфейс взаимодействия со Slack реализован отдельным микросервисом, а задачи оркестрируются в среде Kubernetes.

#Centaur #AIAgents #Slack #Kubernetes #Rust #DevOps #DevTools #OpenSource #Automation #Security

📱Ссылка на репозиторий:
https://github.com/paradigmxyz/centaur
Please open Telegram to view this post
VIEW IN TELEGRAM
3⚡2🔥21
📱Pytest-leak-finder.

Pytest-leak-finder
- это плагин для pytest, который помогает быстро найти конкретный тест, загрязняющий общее состояние и ломающий последующие тесты в сьюте.

Знакома ситуация, когда тест стабильно падает при общем прогоне набора, но проходит без единой ошибки при изолированном запуске (pytest -v --lf)? Причина почти всегда в том, что один из предыдущих тестов оставил за собой «мусор» (неочищенный стейт, глобальную переменную или незакрытый ресурс). Но как найти виновника, если тестов сотни?

❓Как это работает.

Плагин автоматизирует поиск с помощью бинарного поиска (бисекции) — по аналогии с алгоритмом git bisect:

🔘Фиксация цели: При первом запуске с флагом --leak-finder упавший тест автоматически помечается как target.

🔘Деление пополам: На следующем шаге запускается первая половина тестов, предшествовавших цели, плюс сам целевой тест.

🔘Локализация:

✔️Если таргет снова упал — виновник в этой половине, диапазон поиска сужается еще вдвое.

✔️Если таргет прошел успешно — эта половина чистая, и плагин автоматически переключается на вторую часть сьюта.

🔘Результат: Итерации повторяются до тех пор, пока утилита не назовет точный тест, создающий утечку состояния.

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

Запуск поиска:

pytest -v --leak-finder demo/test_demo.py


После нескольких быстрых шагов бисекции плагин выдаст точный вердикт:

======================= Leak finder =======================
We found a leak!
Leak found in: tests/test_demo.py::test3


✅Инструмент экономит массу времени при отладке нестабильных (flaky) тестов и распутывании скрытых зависимостей в больших тест-паках.

#Python #Pytest #Testing #QA #Automation #Debugging #DevTools #OpenSource

📱Ссылка на репозиторий:
https://github.com/mgaitan/pytest-leak-finder
Please open Telegram to view this post
VIEW IN TELEGRAM
1⚡2🔥21
📱Pyrig.

Pyrig
- это пакет и CLI-инструмент, который стандартизирует и автоматизирует создание, настройку, разработку и поддержку Python-проектов под ключ.

В отличие от простых генераторов шаблонов (cookiecutter, copier, pyscaffold), pyrig не просто создает структуру папок, но и берет на себя управление конфигурацией, генерацию CLI, тестовую инфраструктуру и настройку CI/CD.

🔹Главные фичи и возможности:

🔘Генерация проекта из коробки: Команда pyrig init разворачивает проект со стандартизированной структурой, полностью настроенными линтерами, форматтерами, тайп-чекерами, фреймворками для тестирования и Git-хуками.

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

🔘Автоматический CLI: Сразу создает рабочий интерфейс командной строки для вашего проекта. Добавлять новые команды можно в один клик: pyrig mk cmd <name>.

🔘Зеркальная генерация тестов: pyrig sync автоматически создает заготовки тестов для всех исходных модулей и актуализирует их по мере развития кодовой базы.

🔘CI/CD и защита репозитория: Генерирует пайплайны GitHub Actions для автоматического тестирования и релизов, а также настраивает правила защиты веток и репозитория.

🚀Быстрый старт:

Для работы требуются Python 3.12+, Git и пакетный менеджер uv:

# 1. Создаем проект
uv init my-project --python 3.12
cd my-project

# 2. Добавляем pyrig в dev-зависимости
uv add pyrig --dev

# 3. Инициализируем окружение
uv run pyrig init


После инициализации готовый CLI вашего проекта можно проверить командой my-project --help.

#Python #Pyrig #uv #DevTools #Automation #CICD #Testing #GitHubActions #OpenSource #Scaffolding

📱Ссылка на репозиторий:
https://github.com/Winipedia/pyrig
Please open Telegram to view this post
VIEW IN TELEGRAM
3⚡2🔥21
📱Apkfile.

Apkfile
- это мощная Python-библиотека и удобный CLI-инструмент для чтения метаданных, глубокого аудита безопасности и установки Android-приложений любых форматов (.apk, .apkm, .xapk, .apks, .apkv).

Библиотека парсит AndroidManifest.xml и resources.arsc напрямую через чистый Python (на базе androguard). Чтение метаданных происходит «лениво» прямо из байтов архива без распаковки на диск, а для работы больше не требуется утилита aapt.

🔹Главные фичи и возможности:

🔘Поддержка всех форматов пакетов: Читает классические .apk, сплиты и бандлы (.apkm, .xapk, .apks), а также формат .apkv (включая зашифрованные архивы).

🔘Полный срез метаданных: Извлекает название пакета, версию, поддерживаемые ABI (ARM64, x86 и т.д.), языки, плотность экранов, структуру DEX-файлов и иконки всех разрешений (adaptive/anydpi/nodpi).

🔘Аудит безопасности манифеста:

✔️Находит незащищенные экспортированные компоненты (Activities, Services, Providers без разрешений).

✔️Подсвечивает опасные разрешения (dangerous permissions) и неявные доступы (implied permissions).

✔️Проверяет сертификаты подписи (схемы v1-v4, sha256-хеши, отладочную подпись debug_signed).

✔️Diff двух версий приложения: Умеет сравнивать старый и новый APK/бандл, возвращая разницу в правах, объеме кода, DEX-составе и изменениях в сертификатах.

✔️Параллельная установка через ADB: Устанавливает APK и бандлы на все подключенные устройства одновременно, автоматически подгружает OBB-файлы расширений (/sdcard/Android/obb/), проверяет совместимость ABI и умеет сразу запускать указанную Activity.

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

В коде Python:
from apkfile import ApkFile

apk = ApkFile("app.apk")

# Базовая информация
print(apk.package_name, apk.version_name, apk.version_code)

# Безопасность и компоненты
print("Опасные разрешения:", apk.security.dangerous_permissions)
print("Незащищенный экспорт:", apk.security.unprotected_exported_components)

# Сравнение двух версий приложения
old_apk, new_apk = ApkFile("v1.apk"), ApkFile("v2.apk")
diff = old_apk.diff(new_apk)
print("Добавленные права:", diff.permissions_added)

# Установка через ADB с последующим запуском
apk.install(upgrade=True, launch=True)


Через командную строку (CLI):

# Получить полную JSON-сводку о приложении
apkfile info app.apk --full

# Сравнить две версии APK
apkfile diff old.apk new.apk

# Установить и сразу запустить на устройстве
apkfile install app.xapk --launch


📦Установка:
pip install -U apkfile
# или через uv:
uv add apkfile


#Python #Android #APK #MobileSecurity #AppSec #QA #Automation #DevTools #OpenSource #ADB

📱Ссылка на репозиторий:
https://github.com/david-lev/apkfile
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥33
📱Bashautom.

Bashautom
- это легковесная Python-библиотека для управления персистентными (долгоживущими) сессиями Bash, сохраняющая контекст и состояние шелла между последовательными командами.

При использовании стандартного subprocess.run() на каждый вызов порождается абсолютно новый изолированный процесс: изменения рабочей директории (cd), экспортированные переменные (export) и активированные виртуальные окружения (source .env) моментально сбрасываются. Библиотека pexpect решает проблему персистентности, но завязана на хрупкий интерактивный парсинг шелл-промптов.

bashautom держит один живой процесс /bin/bash в фоновом режиме и возвращает чистый структурированный результат по каждой команде без необходимости писать регулярные выражения и шаблоны expect.

🔹Ключевые возможности:

🔘Персистентность окружения: Переменные среды, активная директория (cwd) и результаты выполнения скриптов через source сохраняются между вызовами метода .execute().

🔘Структурированный CommandResult: Каждая команда возвращает подробный статус: stdout, stderr, exit_code, флаг success, флаг timed_out и точное время выполнения в секундах (duration).

🔘Безопасные таймауты: Если команда превышает заданный лимит времени (timeout=N), она принудительно прерывается, но сама bash-сессия остается живой и готовой принимать следующие команды.

🔘Потоковый вывод в реальном времени: Поддержка коллбеков (stream_callback) для чтения stdout/stderr по мере генерации (полезно для логов сборки и долгих циклов).

🔘Менеджер сессий (SessionManager): Удобное создание, координация и параллельное управление несколькими именованными bash-сессиями в разных директориях.

🔘Встроенные хелперы: Быстрый доступ к состоянию процесса через методы set_env(), get_env(), get_cwd(), проверку PID и флага alive.

💻Пример использования:
from bashautom import Session

with Session() as s:
# Состояние сохраняется от шага к шагу:
s.execute("cd /opt/myproject")
s.execute("source .env")
s.execute("export BUILD_ID=42")

# Выполнение с контролем времени
result = s.execute("make build", timeout=120)

if result.success:
print(f"Сборка завершена за {result.duration:.2f} сек")
print(result.stdout)
else:
print(f"Ошибка (код {result.exit_code}):", result.stderr)


Потоковый вывод (Streaming):

from bashautom import Session
from bashautom.session import StreamEvent

def on_output(event: StreamEvent):
print(f"[{event.stream}] {event.data.strip()}")

with Session() as s:
s.execute("for i in 1 2 3; do echo $i; sleep 0.5; done", stream_callback=on_output)


📦Установка:
pip install bashautom


✅Требования: Python 3.10+, поддержка Linux и macOS. Лицензия: MIT.

#Bashautom #Python #Bash #DevOps #Automation #Linux #MacOS #CLI #Scripting #OpenSource #DevTools

📱Ссылка на репозиторий:
https://github.com/huskago/bashautom
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31