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

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

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

Kirokyu — это
локальная (local-first) система управления задачами, написанная на Python, с чистой и гибкой модульной архитектурой.

Проект создан для того, чтобы помочь вам организовывать, отслеживать и выполнять задачи в полностью изолированных рабочих пространствах (workspaces). Каждое такое пространство — это отдельный "бункер" данных со своей собственной базой.

🔹Главная фишка проекта — Гексагональная архитектура (Ports and Adapters).

Доменное ядро (бизнес-логика) абсолютно не зависит от инфраструктуры. Хранение данных, механизмы доставки и UI — это просто сменные адаптеры. Это значит, что к одной и той же логике вы можете обращаться через три совершенно разных интерфейса:

🔘Web UI: Браузерный интерфейс на базе Streamlit с дашбордом аналитики (streamlit run src/kirokyu/adapters/ui/app.py).

🔘CLI: Мощный интерфейс командной строки на базе Typer (kirokyu task create "Купить продукты").

🔘REST API: Полноценный API на FastAPI с интерактивной документацией Swagger (uvicorn kirokyu.adapters.api.app:app --reload).

🔘Изолированные воркспейсы.

Легко разделяйте личные и рабочие дела. Каждый воркспейс хранится в отдельном файле базы данных SQLite в директории ~/.kirokyu/workspaces/.

kirokyu workspace create personal
kirokyu workspace create work


🔘Сменные хранилища данных.

Благодаря чистой архитектуре, тип базы данных можно сменить одной переменной окружения KIROKYU_ADAPTER:

✔️sqlite — локальная БД (по умолчанию).

✔️json — сохранение в JSON-файл.

✔️memory — хранение в оперативной памяти (идеально для тестов).

🔘Отличный референс для разработчиков.

✅Проект написан на Python 3.12+ и использует лучшие современные практики: покрытие тестами (pytest), строгая типизация (mypy), быстрый линтер (ruff) и pre-commit хуки.

#Python #TaskTracker #HexagonalArchitecture #CleanArchitecture #FastAPI #Streamlit #CLI #OpenSource #DevTools

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

Kubex — это
современный и невероятно быстрый клиент Kubernetes для Python, вдохновленный rust-библиотекой kube.rs.

Если вы писали K8s-операторы на Python, то наверняка сталкивались с медлительностью и прожорливостью стандартного kubernetes-asyncio.

Kubex меняет правила игры, предоставляя инструмент по-настоящему энтерпрайз-уровня!

🔹Главные фишки библиотеки:

🔘Космическая производительность: Работает до 40 раз быстрее (например, при получении списка из 500 подов), потребляет на 47% меньше памяти и делает в 5 раз меньше аллокаций. Давление на Garbage Collector минимально!

🔘Pydantic v2 под капотом: Забудьте про dict[str, Any]. Все ресурсы K8s, поля spec и status строго типизированы. IDE сама подскажет нужные параметры, а mypy защитит от ошибок еще до запуска.

🔘Мультиверсионность: Модели генерируются из OpenAPI (поддерживаются K8s с 1.32 по 1.37). Вы можете использовать модели разных версий одновременно, если управляете зоопарком кластеров.

🔘Свобода от фреймворков: Работает с asyncio (aiohttp/httpx) и trio (httpx). Никакого вендор-лока.

🔘Интерактивность: Экспериментальная, но мощная поддержка WebSocket. Выполнение команд (exec), подключение к потокам (attach) и проброс портов (portforward) работают прямо из кода, как в kubectl.

❓Как это выглядит в коде:
from kubex.api import Api
from kubex.client import create_client
from kubex.k8s.v1_35.core.v1.pod import Pod

async with await create_client() as client:
api: Api[Pod] = Api(Pod, client=client, namespace="default")
pod = await api.get("my-pod")
# pod.spec и pod.status полностью типизированы!


#Kubernetes #Python #DevOps #Pydantic #OpenSource #K8s #Asyncio #Backend

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

Presidio -
это SDK для защиты данных и деидентификации (проект от Microsoft). Это контекстно-зависимый, модульный и гибко настраиваемый сервис для поиска и скрытия персональных данных (PII) в текстах и изображениях.

Инструмент позволяет быстро находить и анонимизировать такую чувствительную информацию, как номера кредитных карт, имена, адреса, номера социального страхования, криптокошельки, телефоны, финансовые выписки и многое другое.

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

🔘Умный поиск (Analyzer): Использует алгоритмы распознавания именованных сущностей (NER), регулярные выражения, логику на основе правил и проверку контрольных сумм с учетом контекста (поддерживает множество языков).

🔘Работа с изображениями (Image-Redactor): Специальный модуль умеет "замазывать" персональные данные не только в тексте, но и прямо на картинках, включая медицинские снимки формата DICOM.

🔘Кастомизация и расширяемость: Вы можете подключать собственные или внешние ML-модели для обнаружения специфических данных и настраивать правила анонимизации под конкретные бизнес-задачи.

🔘Масштабируемость: Инструмент легко интегрируется в любые пайплайны — от обычных скриптов на Python и аналитики в PySpark до микросервисов в Docker и Kubernetes.

🔘Структурированные данные: Наличие отдельного модуля Structured для работы с табличными и размеченными форматами.

⚠️Обратите внимание: поскольку Presidio использует автоматизированные механизмы обнаружения, он не дает 100% гарантии нахождения абсолютно всей конфиденциальной информации. В критически важных системах его следует применять в связке с дополнительными уровнями защиты.

❓Как начать:

Библиотека поделена на модули, вы можете установить только то, что вам нужно (например, анализатор и анонимизатор текстов):

pip install presidio-analyzer presidio-anonymizer


Также доступны готовые Docker-образы для быстрого развертывания.

#Python #Security #DataProtection #PII #Microsoft #MachineLearning #NLP #OpenSource #DevTools #АнализДанных

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

Photolab
- это CLI-инструмент для цветокоррекции фотографий и подготовки их к печати.

Вместо того чтобы вручную крутить ползунки, photolab автоматически генерирует 9 различных вариантов коррекции (от классического Auto Levels до алгоритмов Gray World) и собирает их на одном удобном контакт-листе (contact sheet). Вы можете выбрать лучший вариант "на глаз" или скомбинировать их сильные стороны перед финальным экспортом с ICC-профилями для принтера.

Изначально утилита создавалась для связки Fuji X-T1 (RAW/RAF) + iPhone (HEIC) + принтер Canon PRO-1000, но отлично работает с любыми камерами и устройствами печати.

🔹Главные фишки:

🔘Адаптивный пайплайн с ИИ: Утилита умеет использовать Claude (через Claude Code или напрямую через Anthropic API). Нейросеть сама изучит сгенерированный контакт-лист и напишет "рецепт", объединяющий плюсы разных вариантов (например, правильный скинтон от одного + защита светов от другого).

🔘Умная подготовка к печати: Команда photolab pick автоматически конвертирует цветовое пространство по нужным ICC-профилям и применяет резкость в зависимости от типа бумаги (глянец, мат, файн-арт), выдавая на выходе готовый 16-битный TIFF.

🔘Анализ снимков: Команда photolab analyze покажет температуру, паразитные оттенки, клиппинг в тенях/светах и процент попадания снимка в цветовой охват вашего принтера.

🔘Пакетная обработка: Команду photolab batch можно натравить на целую папку с фотографиями.

🔘Поддержка любых форматов: Работает с JPEG, PNG, TIFF, HEIC и любыми RAW-файлами, которые понимает LibRaw (RAF, CR2, NEF, DNG, ARW и др.).

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

Инструмент написан на Python (3.11+) и требует C-компилятор в системе для установки rawpy.
git clone https://github.com/dimatosj/fotomagoufis.git
cd fotomagoufis
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"


(Если планируете использовать авто-оценку снимков нейросетью, устанавливайте версию pip install -e ".[evaluate]" и задайте переменную среды ANTHROPIC_API_KEY).


#photolab #Python #Photography #CLI #ColorCorrection #OpenSource #ClaudeAI #Print #DevTools

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

Feloxi - это
мощная self-hosted платформа для мониторинга очередей задач Python, в первую очередь — Celery. Инструмент предоставляет живые дашборды, поиск по истории задач и гибкую систему алертов.

Вам не нужно устанавливать никаких дополнительных агентов или менять код приложения! Feloxi просто подключается к вашему брокеру (Redis или RabbitMQ), читает стандартные события, которые и так генерирует Celery, и бережно сохраняет их в ClickHouse.

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

🔘Продвинутый поиск: Ищите таски по ID, названию, аргументам (args/kwargs), результатам и даже по тексту ошибок. Смотрите таймлайны, ретраи и полные трейсбеки.

🔘Health-мониторинг воркеров: Следите за загрузкой CPU, памятью, размером пула, активными задачами и пропусками heartbeat.

🔘Визуализация цепочек: Сложные воркфлоу (chains, groups, chords) автоматически отрисовываются в виде интерактивных DAG (направленных ациклических графов). Если пайплайн упадет, вы сразу увидите, на каком именно шаге это произошло.

🔘Контроль периодических задач (Celery Beat): Вы всегда будете знать расписание задач, время последнего запуска и не пропустили ли они свой "бит".

🔘Умные алерты: Доступно 10 типов условий (например, падение скорости обработки, медленные таски, оффлайн воркер, аномалии в глубине очереди). Уведомления можно отправлять в Slack, PagerDuty, на email или через Webhook.

🔘Prometheus из коробки: Метрики доступны по эндпоинту GET /metrics для легкой интеграции с вашей инфраструктурой мониторинга.

❓Как подключить (нужно всего 3 шага):

Добавьте в celeryconfig.py:
worker_send_task_events = True
task_send_sent_event = True
task_track_started = True


Перезапустите воркеры с флагом --events.

Зайдите в UI Feloxi, нажмите Add Broker и введите URL вашего Redis/RabbitMQ. Всё!

🚀Быстрый старт (через Docker Compose):

git clone https://github.com/thesaadmirza/feloxi.git
cd feloxi
cp .env.example .env
docker compose up -d

Стек: Rust (Axum), Next.js 15, PostgreSQL, ClickHouse и Redis. Поддерживается установка в Kubernetes через Helm-чарты.

#Python #Celery #DevOps #Monitoring #RabbitMQ #Redis #Rust #NextJS #OpenSource #Backend

📱Ссылка на репозиторий:
https://github.com/thesaadmirza/feloxi
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍42🔥1
📱Remove-AI-Watermarks.

Remove-AI-Watermarks —
это универсальная утилита для удаления как видимых, так и невидимых водяных знаков и метаданных из изображений, сгенерированных популярными нейросетями (Google Gemini, ChatGPT/DALL-E, Stable Diffusion, Midjourney, Adobe Firefly и др.).

Инструмент позволяет в одну команду очистить картинку от любых следов ИИ, включая метки SynthID, криптографические манифесты C2PA и теги EXIF, из-за которых соцсети автоматически вешают плашку "Made with AI".

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

🔘Удаление видимых знаков: Например, логотип-звездочка от Google Gemini убирается за 0.05 сек с помощью обратного альфа-блендинга (работает оффлайн, без потери качества).

🔘Удаление невидимых знаков (SynthID, TreeRing): Прогоняет картинку через процесс диффузии (добавление шума и его подавление через SDXL), стирая частотные паттерны, которые выживают даже при сильном сжатии JPEG.

🔘Стирание метаданных: Полностью вычищает данные C2PA, EXIF (промпты, сиды) и текстовые чанки PNG, оставляя только стандартные поля (автор, копирайт).

🔘Умная защита лиц: Перед обработкой инструмент находит лица людей на фото и маскирует их, чтобы процесс стирания водяного знака (диффузия) не исказил черты лица.

🔘Analog Humanizer: Накладывает легкое пленочное зерно и хроматические аберрации, чтобы запутать детекторы ИИ-контента.

• Анализатор (Identify): Команда identify сканирует файл и выдает полную сводку о том, в какой нейросети он был создан и какие метки в нем зашиты.

🔧Установка и использование:

Рекомендуется устанавливать через pipx или uv для изоляции зависимостей:
uv tool install git+https://github.com/wiltodelta/remove-ai-watermarks.git

(Примечание: для удаления невидимых знаков потребуется установить пакет с флагом
[gpu]).

🔻Пример использования:
# Удалить ВСЕ следы ИИ с одной картинки
remove-ai-watermarks all image.png -o clean.png

# Узнать, где была сгенерирована картинка
remove-ai-watermarks identify image.png


#AI #MachineLearning #Watermarks #StableDiffusion #Midjourney #Gemini #Privacy #Python #DevTools #OpenSource

📱Ссылка на репозиторий:
https://github.com/wiltodelta/remove-ai-watermarks
Please open Telegram to view this post
VIEW IN TELEGRAM
13⚡2
📱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
📱CodeBoarding.

CodeBoarding -
это инструмент, который создает наглядную визуальную карту вашей кодовой базы.

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

Проект объединяет классический статический анализ кода с логикой LLM. На выходе вы получаете архитектурные диаграммы, документацию на уровне компонентов и удобную навигацию прямо в вашей IDE, CI или документации.

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

🔘Умные диаграммы: Генерирует как высокоуровневые схемы всей системы, так и глубокие разборы конкретных подсистем.

🔘Mermaid & Markdown: Все схемы выводятся в формате Mermaid, который легко встраивается в GitHub PR, Notion или любую Markdown-документацию (в папку .codeboarding/).

🔘Инкрементальные обновления: Утилита умеет обновлять схемы только для измененных участков кода, экономя время и токены.

🔘Широкий стек: Поддерживает код на Python, TypeScript, JavaScript, Java, Go, PHP, Rust и C#.

🔘Любые LLM: Работает с OpenAI, Anthropic, Google, Ollama (для локального запуска), OpenRouter и AWS Bedrock.

💡Зачем это нужно?

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

🔘Онбординг: Позволяет быстрее въехать в устройство огромных незнакомых репозиториев (можно просто натравить утилиту на чужой GitHub-репозиторий).

🔘Синхронизация: Единая визуальная модель для локальной разработки, IDE и документации. Доступно в виде CLI, GitHub Action и расширения для VS Code.

🚀Быстрый старт (через CLI):

Удобнее всего ставить через изолированную среду pipx (потребуется Python 3.12+):

pipx install codeboarding --python python3.12
codeboarding-setup
codeboarding full --local /path/to/repo


(Для работы парсеров TypeScript, JavaScript, PHP и Python также потребуется установленный в системе Node.js)


#CodeBoarding #AI #Architecture #LLM #DevTools #VSCode #Mermaid #OpenSource #GitHub #Программирование

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

BleachBit - это легковесный, но мощный инструмент для очистки системы и защиты приватности на Windows и Linux.

Он удаляет временные файлы, кеши, журналы и прочий мусор, помогает освободить место на диске и уменьшить «следы» активности.

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

🔘Очистка системы от временных и ненужных файлов.

🔘Удаление кешей и логов для разных приложений и браузеров.

🔘Поддержка безопасного (без восстановления) удаления файлов.

🔘Открытый исходный код под лицензией GNU GPLv3+.

🚀Запуск без установки (из исходников)

Скачайте и распакуйте tar-архив BleachBit.

Соберите переводы:
make -C po local


Запустите приложение:
python3 bleachbit.py


Откройте настройки, выберите нужные опции, нажмите Preview, проверьте список файлов и затем нажмите Delete.

🖥Командная строка

Для справки по CLI:
python3 bleachbit.py --help


🐳 Docker-сборки для Linux

Для сборки пакетов под выбранный дистрибутив (debian/fedora/opensuse) есть скрипт:
./docker/build.sh <distro>

Готовые артефакты будут в ./docker-artifacts/<distro> на хосте.

#BleachBit #Linux #Windows #OpenSource #Privacy #DiskCleanup #SysAdmin #DevTools #Python #Docker

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

Nbpipe - это
легковесная утилита, которая позволяет запускать последовательность Jupyter-ноутбуков как единый рабочий процесс (workflow). Вы можете управлять выполнением прямо из командной строки (CLI) или через удобную боковую панель в JupyterLab.

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

🔧 Установка:

pip install nbpipe


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

🔘Создайте папку .nbpipe/ в корне вашего проекта.

🔘Опишите ваши шаги в YAML-файле (например, my_workflow.yaml):

name: my_workflow
steps:
- notebook: prepare_data.ipynb
output: data/processed.csv
- notebook: train_model.ipynb


🔘Запустите пайплайн одной командой:

nbpipe run .nbpipe/my_workflow.yaml


💡Что важно знать про шаги:

🔘Поле notebook (обязательное) — указывает путь к ноутбуку относительно корня проекта.

🔘Поле output (опциональное) — файл, который должен быть сгенерирован после выполнения этого шага. Работает как проверка качества: если ноутбук отработал, а нужный файл не появился — пайплайн упадет с ошибкой. Поле поддерживает маски файлов (например, report_*.csv).

#Python #Jupyter #JupyterLab #DataScience #DataEngineering #MachineLearning #DevTools #Workflow #Автоматизация

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

EverOS -
это open-source Python-фреймворк, который наделяет ИИ-агентов (Claude Code, Codex, OpenClaw и др.) саморазвивающейся долгосрочной памятью.
Главная идея проекта — ваш контекст, принятые решения и файлы должны следовать за вашей работой, а не оставаться запертыми внутри одного конкретного инструмента.

🔹Главные фишки релиза 1.0.0:

🔘Markdown как источник правды: Вся память сохраняется в обычные .md файлы. Вы можете читать их, редактировать, версионировать через Git или открывать как базу знаний прямо в Obsidian.

🔘Легковесный локальный стек: Работает полностью локально на связке Markdown + SQLite + LanceDB (для векторного и BM25 поиска). Никаких тяжеловесных MongoDB, Redis или Elasticsearch!

🔘Двойная память (Dual-Track): Данные логично разделяются на агентские (навыки, рабочие кейсы) и пользовательские (профили, история общения).

🔘Мультимодальность: Запоминает и осуществляет поиск не только по тексту, но и по картинкам, аудио, PDF, HTML и офисным документам.

🔘Саморазвитие: Агент учится на основе реального использования. Повторяющиеся паттерны автоматически превращаются в готовые переиспользуемые процессы без необходимости переобучения модели.

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

Установка и запуск занимают всего три команды:
pip install everos
everos init
everos server start


✅Инструмент полностью совместим с API OpenAI, поэтому вы легко можете направить его на OpenRouter, vLLM, Ollama или DeepInfra.

#EverOS #AI #Python #MachineLearning #LLM #OpenSource #DevTools #Нейросети #Разработка

📱Ссылка на репозиторий:
https://github.com/EverMind-AI/EverOS
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3🔥33
📱Dj-lite-tenant.

Dj-lite-tenant -
это экспериментальная библиотека для Django, которая выводит изоляцию данных в мультиарендных (multi-tenant) приложениях на абсолютный максимум. Она автоматически создает отдельную базу данных SQLite для каждого пользователя.
Если вы строите легковесный SaaS или пет-проект, где пользователи не должны пересекаться данными ни при каких обстоятельствах, этот инструмент предлагает элегантное решение без развертывания тяжелых серверов БД.

🔹Основные возможности:

🔘Абсолютная изоляция: Каждый зарегистрированный пользователь получает свой собственный изолированный файл .sqlite3 для указанных в настройках приложений.

🔘Кросс-базовые связи: Связи типа ForeignKey между БД пользователя и общей базой данных (например, таблицей самого User) работают прозрачно благодаря механизму ATTACH DATABASE в SQLite. Django ORM сама генерирует валидные SQL-запросы.

🔘Автоматический роутинг: Специальный Middleware сам определяет текущего пользователя в запросе и направляет все запросы ORM в нужный файл. Есть полная поддержка синхронного и асинхронного выполнения.

🔘Мгновенное создание БД (Шаблоны): Чтобы не гонять миграции при регистрации каждого нового юзера, можно включить опцию USE_DATABASE_TEMPLATE. Первая чистая БД выполнит миграции, сохранится как шаблон, а для новых пользователей файлы будут просто клонироваться за миллисекунды.

🔘Фоновые задачи: Для работы вне контекста HTTP-запроса (например, в Celery-тасках) есть удобный контекстный менеджер: with tenant_db(user):.

🔘Интеграция с админкой: Суперпользователи могут переключаться между базами данных пользователей прямо через стандартную панель Django Admin.

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

Установка:
uv add dj-lite-tenant
# или pip install dj-lite-tenant


Минимальная настройка в settings.py:
INSTALLED_APPS = [
...
"dj_lite_tenant",
]

MIDDLEWARE = [
...
"django.contrib.auth.middleware.AuthenticationMiddleware",
"dj_lite_tenant.middleware.TenantDatabaseMiddleware", # Строго после Auth
]

DATABASE_ROUTERS = ["dj_lite_tenant.routers.TenantDatabaseRouter"]

DJ_LITE_TENANT = {
"DIR": BASE_DIR / "db/tenants",
"APPS": {"notes"}, # Приложения, данные которых улетят в персональные БД
}

Для применения новых миграций ко всем базам данных пользователей используется специальная команда: python manage.py migrate_tenant_dbs.

⚠️Важное примечание: Автор честно предупреждает, что проект пока очень экспериментальный. В текущем виде он не предназначен для production-сред с высокой нагрузкой, но концепт изоляции на уровне SQLite-файлов выглядит чертовски интересно!

#Django #Python #SQLite #MultiTenant #Backend #WebDev #SaaS #Database #OpenSource

📱Ссылка на репозиторий:
https://github.com/adamghill/dj-lite-tenant
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2⚡1
📱Spoof.

Spoof —
это минималистичный и гибкий HTTP-сервер для Python, разработанный специально для изоляции и тестирования сетевого взаимодействия без боли.

Если вам когда-нибудь требовалось переписать клиентскую библиотеку, проверить её поведение в боевых условиях или полноценно замокать сторонний API на реальных сетевых сокетах (а не просто подменить методы в коде), Spoof станет идеальным решением.

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

🔘Батарейки в комплекте: Написан на базе стандартного модуля http.server, не имеет внешних зависимостей и работает на Python 3.10–3.14.

🔘Динамическая очередь ответов: В отличие от классических серверов, где роуты прописываются заранее, Spoof принимает любые запросы. Он выдает ответы из настроенной FIFO-очереди (.responses) или возвращает .defaultResponse. По умолчанию, если очередь пуста, он честно отдаст 503 Service Unavailable.

🔘Живой лог запросов: Каждый чих со стороны клиента записывается в историю .requests. После тестов можно легко проверить, какие методы, заголовки, query-параметры или JSON-тела прилетали на сервер.

🔘Постквантовая криптография: Из коробки поддерживает SSL/TLS с самоподписанными сертификатами, а если в системе установлен OpenSSL 3.5+, вы можете тестировать соединения с использованием постквантовых алгоритмов (PQC)!

🔘Проксирование и IPv6: Поддерживает прокси-туннелирование через обработку CONNECT-запросов, а также умеет слушать исключительно IPv6-сокеты через класс spoof.http6.

🔘Интерактивный дебаг: Вы можете передать в качестве ответа функцию-колбэк с обычным breakpoint(). При отправке запроса выполнение встанет на паузу, и вы сможете изучить объект request прямо в консоли через Pdb.

❓Как это выглядит в тестах:

import requests
import spoof

# Поднимаем сервер в контекстном менеджере
with spoof.http() as http:
# Задаем цепочку ответов
http.responses.extend([
[200, [("Content-Type", "application/json")], b'{"id": 1111}'],
[200, [("Content-Type", "application/json")], b'{"id": 2222}'],
])
http.defaultResponse = [404, [], "Not found"]

# Проверяем поведение клиента
assert requests.get(http.url + "/users").json() == {"id": 1111}
assert requests.get(http.url + "/posts").json() == {"id": 2222}
assert requests.get(http.url + "/unknown").status_code == 404

# Проверяем историю логов сервера
assert [r.path for r in http.requests] == ["/users", "/posts", "/unknown"]


🔧Установка:

pip install spoof


#Python #Testing #QA #Backend #Mock #HTTPServer #DevTools #OpenSource #WebDevelopment

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

Bocpy —
это библиотека для Python, реализующая принципиально новую парадигму параллельного программирования — поведенческо-ориентированную конкурентность (Behavior-Oriented Concurrency, BOC).

В параллельном коде на Python часто возникают состояния гонки (data races), а с появлением сборки без GIL (free-threaded Python) защищать данные становится еще сложнее. bocpy решает эту проблему фундаментально: данные разделяются так, что каждый поток выполнения («поведение») получает уникальное временное владение объектом. Больше не нужно вручную управлять блокировками (lock.acquire()), а риск дедлоков исключен на уровне архитектуры.

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

🔘Фокус на потоке данных: Задача разработчика смещается с решения проблем параллельного доступа к простой организации логики. Функции оборачиваются в декораторы @when и со стороны выглядят как обычный линейный код.

🔘Настоящая многоядерность: Библиотека написана на C и использует механизм суб-интерпретаторов Python. Начиная с Python 3.12, где у каждого суб-интерпретатора свой собственный GIL (PEP 684), bocpy обеспечивает честный параллелизм и показывает практически линейное масштабирование (до 7.5× ускорения на 8 воркерах).

🔘Безопасность по умолчанию: Под капотом движок на C реализует двухфазное запирание (2PL) и MCS-очереди. Потоки изолированы друг от друга, поэтому данные обрабатываются так, будто программа работает в один поток.

🔘Поддержка тяжелых объектов (PinnedCown): Если объект не может быть передан между интерпретаторами (например, контекст GPU, файловые дескрипторы или UI-виджеты), его можно закрепить за главным потоком, не ломая параллельную работу остальных воркеров.

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

Вместо сложной синхронизации вы объявляете разделяемые ресурсы как Cown (concurrently-owned objects) и указываете, какие функции должны дождаться их готовности:

from bocpy import Cown, when, wait

# Создаем защищенные ресурсы
cheese = Cown(None)
meal = Cown(None)

# Задачи запустятся параллельно на разных ядрах
@when(cheese)
def buy_cheese(cheese):
cheese.value = "Пармезан"

@when(meal)
def order_meal(meal):
meal.value = "Салат"

# Этот блок выполнится автоматически, как только ОБОИ ресурсы освободятся
@when(cheese, meal)
def eat_dinner(cheese, meal):
print(f"Ужинаем: {meal.value} и {cheese.value}!")

wait() # Ждем завершения всех задач


📈Поддержка версий Python:

🔘Python 3.10 / 3.11: Полная совместимость, но из-за общего глобального GIL задачи будут выполняться последовательно. Подходит для отладки и портативности.

🔘Python 3.12+: Идеальный вариант. Задачи распределяются по суб-интерпретаторам со своими GIL и работают на полную мощность процессора.

🔘Python 3.13t+ (Free-threaded): Полная нативная поддержка сборки без GIL.

🔧Установка:

pip install bocpy


#Python #bocpy #Concurrency #Parallelism #GIL #Multithreading #SubInterpreters #Backend #OpenSource

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