Multiplex — мощный CLI-мультиплексор и 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
GitHub
GitHub - sebastien/multiplex: Command-line process multiplexer
Command-line process multiplexer. Contribute to sebastien/multiplex development by creating an account on GitHub.
2👍3⚡2🔥1
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 предложит:
Recording stopped. Press Enter to copy everything together or Ctrl-C to quit.
import cliprec
cliprec.main()
#Python #CLI #Clipboard #Productivity #Automation #DevTools #cliprec #pyperclip
https://github.com/asweigart/cliprec
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - asweigart/cliprec: A cross-platform clipboard monitoring and recording tool. Only works for text.
A cross-platform clipboard monitoring and recording tool. Only works for text. - asweigart/cliprec
1👍5
Cronboard — это интерактивное TUI-приложение на Python, которое позволяет просматривать, добавлять, редактировать, приостанавливать и удалять cron-задания — как на локальной машине, так и на удалённом сервере по 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
GitHub
GitHub - antoniorodr/cronboard: A terminal-based dashboard for managing cron jobs locally and on servers.
A terminal-based dashboard for managing cron jobs locally and on servers. - antoniorodr/cronboard
👍3🔥2
Scoop — это менеджер пакетов для Windows, который делает установку программ через PowerShell простой, чистой и автоматизированной.
scoop install python
scoop search mongo
scoop install mongosh
#Scoop #Windows #PowerShell #DevTools #CLI #PackageManager #OpenSource #Automation
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2⚡1🤔1
Code Spy — это инструмент для Python-разработчиков, который следит за изменениями в вашем проекте и автоматически запускает нужные проверки и задачи.
Представьте: вы сохраняете файл — а Code Spy сам запускает MyPy, Pylint, Pytest, Black или даже перезапускает dev-сервер. Вам не нужно переключаться в терминал, вручную запускать команды или следить, что что-то забыли проверить. Всё происходит автоматически.
Вы просто указываете путь к проекту, настраиваете задачи — и 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
GitHub
GitHub - joegasewicz/code-spy: Watches for file changes & runs tasks against your Python code.
Watches for file changes & runs tasks against your Python code. - joegasewicz/code-spy
1⚡3 2 2
Bandit — это инструмент для поиска распространенных проблем безопасности в Python-коде. Он анализирует каждый файл, строит из него AST(Abstract Syntax Tree) и запускает соответствующие плагины для проверки узлов дерева. После сканирования всех файлов Bandit генерирует подробный отчет.
#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
GitHub
GitHub - PyCQA/bandit: Bandit is a tool designed to find common security issues in Python code.
Bandit is a tool designed to find common security issues in Python code. - PyCQA/bandit
1⚡2🔥2
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. webctl snapshot --interactive-only --limit 30 | grep -i "submit" или ... --format jsonl | jq ....webctl init генерирует skill‑/prompt‑файлы для Claude Code, Goose, Gemini, Copilot, Codex, чтобы агент знал, как вызывать webctl. .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
GitHub
GitHub - cosinusalpha/webctl: Browser automation via CLI — for humans and agents
Browser automation via CLI — for humans and agents - cosinusalpha/webctl
1👍2🔥1 1
Calgebra — это алгебра множеств для календарей в Python: позволяет комбинировать временные интервалы (|, &, -, ~) и эффективно запрашивать свободные/занятые слоты во временных диапазонах .
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]).calgebra.gcsa.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
GitHub
GitHub - ashenfad/calgebra: Set operations for calendar intervals
Set operations for calendar intervals. Contribute to ashenfad/calgebra development by creating an account on GitHub.
1👍3🔥3
nanobot — это ультра-лёгкий персональный AI-ассистент в духе Clawdbot, но с ядром всего ~3.4k строк кода (примерно на 99% меньше исходника Clawdbot). Его идея — дать все базовые возможности агента без громоздкой инфраструктуры: установил, прописал ключ — и можно общаться через 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 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.nanobot gateway.nanobot channels login.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 пользователей, которые могут общаться с ботом.~/.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
GitHub
GitHub - HKUDS/nanobot: Ultra-lightweight, open-source, self-hosted personal AI agent framework in Python with WebUI, tools, memory…
Ultra-lightweight, open-source, self-hosted personal AI agent framework in Python with WebUI, tools, memory, MCP, multi-agent workflows, automation, and chat apps - HKUDS/nanobot
2 5🔥2
Win11toast — это небольшая Python‑библиотека для нативных toast‑уведомлений в Windows 10/11 на базе WinRT. С её помощью можно за пару строк кода показать системный баннер с текстом, кнопками, прогресс‑баром, звуком, картинками и даже запуском скриптов по клику.
from win11toast import toast; toast('Hello Python🐍'). notify + update_progress для отображения прогресса задач (скачивание, бэкапы, длительные скрипты).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
GitHub
GitHub - GitHub30/win11toast: Toast notifications for Windows 10 and 11 based on WinRT
Toast notifications for Windows 10 and 11 based on WinRT - GitHub30/win11toast
1🔥5👍2
PPT Master — это мощный инструмент (workflow) для ИИ-редакторов кода вроде Cursor, Claude Code или VS Code, который превращает любые PDF, DOCX, Markdown или ссылки в полностью редактируемые презентации PowerPoint (.pptx).
Вам понадобится только установленный 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
GitHub
GitHub - hugohe3/ppt-master: AI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and…
AI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations, data-backed charts and tables on demand, audio narration from speaker notes, and supp...
1👍2🔥2 1
Postman2pytest. — это инструмент, который позволяет конвертировать JSON-файлы из Postman (коллекции v2.1) в готовые для запуска тесты
pytest. И всё это одной командой!Часто коллекции Postman служат отличной документацией для вашего API. Утилита
postman2pytest превращает эту "документацию" в исполняемые регрессионные тесты на Python, которые легко встраиваются в CI/CD. Больше не нужно переписывать тесты вручную — вы избавляетесь от рутины и рассинхрона между доками и кодом.pm.response.to.have.status(200).def test_users_post_create_user()).--filter-folder).{{base_url}} автоматически преобразуются в f-строки и подхватываются через переменные окружения (например, BASE_URL).pip install postman2pytestpostman2pytest \
--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
GitHub
GitHub - golikovichev/postman2pytest: Convert Postman Collection v2.1 JSON into executable pytest test suites
Convert Postman Collection v2.1 JSON into executable pytest test suites - golikovichev/postman2pytest
1⚡2👍2🔥2
ESPectre — это инновационная система обнаружения движения, которая работает на основе анализа спектра Wi-Fi (CSI — Channel State Information). Она полностью интегрируется с Home Assistant через ESPHome.
Для работы вам не понадобятся камеры, микрофоны или носимые датчики. Всё, что нужно — обычный Wi-Fi роутер и недорогая плата ESP32 (рекомендуются версии S3 или C6, цена вопроса ~10€).
Представьте, что вы проводите рукой перед лучом фонарика — тень меняется. Так же и здесь: когда человек перемещается по комнате, он "искажает" радиоволны Wi-Fi, идущие от роутера к ESP32. Устройство улавливает эти микроизменения и понимает, что в помещении есть движение.
#IoT #SmartHome #HomeAssistant #ESP32 #ESPHome #WiFi #ESPectre #Automation #УмныйДом
https://github.com/francescopace/espectre
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - francescopace/espectre: Wi-Fi CSI motion sensing for ESP32. C++ SDK, ESPHome, Native, and Matter frontends, browser tools…
Wi-Fi CSI motion sensing for ESP32. C++ SDK, ESPHome, Native, and Matter frontends, browser tools, and a CLI for the full device lifecycle. GPLv3 and commercial licensing. - francescopace/espectre
1🔥4👍3
Remote CMD - это легковесная Python-утилита (CLI) и API для управления серверами по SSH. Без лишнего оверхеда, сложных конфигураций Ansible или громоздких bash-циклов.
Инструмент идеально подходит для ситуаций, когда вам нужно быстро выполнить команду на нескольких серверах, раскидать файлы или автоматизировать деплой, используя удобный синтаксис прямо "из коробки".
production, web, db).remote-cmd batch-run -t production "df -h /".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"
#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
GitHub
GitHub - Vae-Scrooge/remote-cmd: A lightweight Python CLI + API for managing servers over SSH. Add hosts, run commands, transfer…
A lightweight Python CLI + API for managing servers over SSH. Add hosts, run commands, transfer files, target groups by tags — no Ansible DSL required. - Vae-Scrooge/remote-cmd
1🔥4👍2 2
Tia - это инструмент анализа влияния тестов (Test Impact Analysis) для
pytest, который позволяет запускать только те тесты, на которые действительно повлияли ваши изменения в коде.Зачем тратить драгоценное время CI-пайплайнов на прогон сотен тестов, которые физически не могли сломаться от вашей правки?
Tia один раз собирает карту покрытия, а затем с помощью git diff вычисляет и запускает строго минимальный набор тестов. Эту же концепцию оптимизации используют внутри себя такие гиганты, как Google и Meta.Главный грех подобных утилит — случайно пропустить тест, который на самом деле должен был упасть. Разработчики
tia подошли к вопросу жестко:boltons) реальный показатель пропуска достигает 96%!black или добавление докстрингов, tia поймет через сравнение AST-деревьев, что рантайм-код не изменился, и пропустит 99%+ тестов.if TYPE_CHECKING: не запускают тесты зря. Но если вы измените тип поля в Pydantic или dataclass (что влияет на логику работы), утилита это честно отловит.tia record — запускает полную кодовую базу и строит карту на уровне конкретных методов и функций {тест -> {файл -> функции}}, сохраняя её в .tia/map.json. Благодаря системным аудит-хукам утилита запоминает даже не-Python файлы (фикстуры, шаблоны, конфиги), которые читал тест.tia run — анализирует текущий git diff, сопоставляет измененные строки с функциями и на основе 4 правил (попадание в функцию, изменение модуля, дата-зависимость и появление нового теста) отправляет в pytest только целевой набор.Карту тестов, собранную на базовой ветке, можно легко передавать в задачи пул-реквестов.
tia поддерживает работу с удаленными хранилищами из коробки:tia serve) без внешних зависимостей.s3://) и Google Cloud Storage (gs://).$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
GitHub
GitHub - breadMSA/pytest-tia: Test Impact Analysis for pytest: run only the tests your change actually affects. Method-level, tracks…
Test Impact Analysis for pytest: run only the tests your change actually affects. Method-level, tracks non-.py deps, CI-ready, and honest about its limits. - breadMSA/pytest-tia
1🔥2 2👍1
Centaur - это self-hosted платформа для командной работы с ИИ-агентами прямо через интерфейс Slack или REST API.
Вместо того чтобы каждый инженер настраивал персональных ботов и локальные скрипты на своей машине, Centaur предоставляет единого общего ассистента: вы тегаете
@centaur в треде Slack, бот выделяет изолированную среду, запускает задачи, использует внутренние инструменты компании и возвращает готовый ответ в переписку.iron-proxy, агент никогда не получает «сырые» API-ключи в переменные окружения. Внутри песочницы используются токены-заглушки, а реальные учетные данные из 1Password подставляются на лету только при исходящих запросах к доверенным адресам.centaur-tools).Панель управления и 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
GitHub
GitHub - paradigmxyz/centaur: Centaur is frontier, agentic infrastructure that you own. Centaur is like Claude Tag, but open source…
Centaur is frontier, agentic infrastructure that you own. Centaur is like Claude Tag, but open source and on steroids. - paradigmxyz/centaur
3⚡2🔥2 1
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
#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
GitHub
GitHub - mgaitan/pytest-leak-finder: Find the test that's leaking before the one that fails
Find the test that's leaking before the one that fails - mgaitan/pytest-leak-finder
1⚡2🔥2 1
Pyrig - это пакет и CLI-инструмент, который стандартизирует и автоматизирует создание, настройку, разработку и поддержку Python-проектов под ключ.
В отличие от простых генераторов шаблонов (cookiecutter, copier, pyscaffold),
pyrig не просто создает структуру папок, но и берет на себя управление конфигурацией, генерацию CLI, тестовую инфраструктуру и настройку CI/CD.pyrig init разворачивает проект со стандартизированной структурой, полностью настроенными линтерами, форматтерами, тайп-чекерами, фреймворками для тестирования и Git-хуками.pyrig можно переопределить через наследование (pyrig mk subcls). Команда pyrig sync синхронизирует и обновляет все конфиги разом.pyrig mk cmd <name>.pyrig sync автоматически создает заготовки тестов для всех исходных модулей и актуализирует их по мере развития кодовой базы.Для работы требуются 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
GitHub
GitHub - Winipedia/pyrig: A tool that standardizes and automates Python project setup, configuration, development, and maintenance.
A tool that standardizes and automates Python project setup, configuration, development, and maintenance. - Winipedia/pyrig
3⚡2🔥2 1
Apkfile - это мощная Python-библиотека и удобный CLI-инструмент для чтения метаданных, глубокого аудита безопасности и установки Android-приложений любых форматов (.apk, .apkm, .xapk, .apks, .apkv).
Библиотека парсит
AndroidManifest.xml и resources.arsc напрямую через чистый Python (на базе androguard). Чтение метаданных происходит «лениво» прямо из байтов архива без распаковки на диск, а для работы больше не требуется утилита aapt..apk, сплиты и бандлы (.apkm, .xapk, .apks), а также формат .apkv (включая зашифрованные архивы).adaptive/anydpi/nodpi).debug_signed)./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
GitHub
GitHub - david-lev/apkfile: ⛏️ Python library for reading Android .apk/.apkm/.xapk/.apks/.apkv metadata and installing/uninstalling…
⛏️ Python library for reading Android .apk/.apkm/.xapk/.apks/.apkv metadata and installing/uninstalling over adb - david-lev/apkfile
3🔥3 3
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
#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
GitHub
GitHub - huskago/bashautom: Persistent bash sessions for Python - stateful shell automation with timeouts, streaming, and multi…
Persistent bash sessions for Python - stateful shell automation with timeouts, streaming, and multi-session support. - huskago/bashautom
👍3 1