Kirokyu — это локальная (local-first) система управления задачами, написанная на Python, с чистой и гибкой модульной архитектурой.
Проект создан для того, чтобы помочь вам организовывать, отслеживать и выполнять задачи в полностью изолированных рабочих пространствах (workspaces). Каждое такое пространство — это отдельный "бункер" данных со своей собственной базой.
Доменное ядро (бизнес-логика) абсолютно не зависит от инфраструктуры. Хранение данных, механизмы доставки и UI — это просто сменные адаптеры. Это значит, что к одной и той же логике вы можете обращаться через три совершенно разных интерфейса:
streamlit run src/kirokyu/adapters/ui/app.py).kirokyu task create "Купить продукты").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 #TaskTracker #HexagonalArchitecture #CleanArchitecture #FastAPI #Streamlit #CLI #OpenSource #DevTools
https://github.com/amryounis/kirokyu
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - amryounis/kirokyu: 🚀 Modular task management system built with Hexagonal Architecture. Features a FastAPI backend and…
🚀 Modular task management system built with Hexagonal Architecture. Features a FastAPI backend and Streamlit frontend. - amryounis/kirokyu
2 3👍2🔥1
Kubex — это современный и невероятно быстрый клиент Kubernetes для Python, вдохновленный rust-библиотекой
kube.rs.Если вы писали K8s-операторы на Python, то наверняка сталкивались с медлительностью и прожорливостью стандартного
kubernetes-asyncio.Kubex меняет правила игры, предоставляя инструмент по-настоящему энтерпрайз-уровня!
dict[str, Any]. Все ресурсы K8s, поля spec и status строго типизированы. IDE сама подскажет нужные параметры, а mypy защитит от ошибок еще до запуска.asyncio (aiohttp/httpx) и trio (httpx). Никакого вендор-лока.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
GitHub
GitHub - codemageddon/kubex: Python asynchronous client for Kubernetes
Python asynchronous client for Kubernetes. Contribute to codemageddon/kubex development by creating an account on GitHub.
2🔥5👍2⚡1
Presidio - это SDK для защиты данных и деидентификации (проект от Microsoft). Это контекстно-зависимый, модульный и гибко настраиваемый сервис для поиска и скрытия персональных данных (PII) в текстах и изображениях.
Инструмент позволяет быстро находить и анонимизировать такую чувствительную информацию, как номера кредитных карт, имена, адреса, номера социального страхования, криптокошельки, телефоны, финансовые выписки и многое другое.
Structured для работы с табличными и размеченными форматами.Библиотека поделена на модули, вы можете установить только то, что вам нужно (например, анализатор и анонимизатор текстов):
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
GitHub
GitHub - data-privacy-stack/presidio: An open-source framework for detecting, redacting, masking, and anonymizing sensitive data…
An open-source framework for detecting, redacting, masking, and anonymizing sensitive data (PII) across text, images, and structured data. Supports NLP, pattern matching, and customizable pipelines...
1👍3⚡2
Photolab - это CLI-инструмент для цветокоррекции фотографий и подготовки их к печати.
Вместо того чтобы вручную крутить ползунки, photolab автоматически генерирует 9 различных вариантов коррекции (от классического Auto Levels до алгоритмов Gray World) и собирает их на одном удобном контакт-листе (contact sheet). Вы можете выбрать лучший вариант "на глаз" или скомбинировать их сильные стороны перед финальным экспортом с ICC-профилями для принтера.
Изначально утилита создавалась для связки Fuji X-T1 (RAW/RAF) + iPhone (HEIC) + принтер Canon PRO-1000, но отлично работает с любыми камерами и устройствами печати.
Инструмент написан на 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
GitHub
GitHub - dimatosj/fotomagoufis
Contribute to dimatosj/fotomagoufis development by creating an account on GitHub.
1⚡3👍2🔥2
Feloxi - это мощная self-hosted платформа для мониторинга очередей задач Python, в первую очередь — Celery. Инструмент предоставляет живые дашборды, поиск по истории задач и гибкую систему алертов.
Вам не нужно устанавливать никаких дополнительных агентов или менять код приложения! Feloxi просто подключается к вашему брокеру (Redis или RabbitMQ), читает стандартные события, которые и так генерирует Celery, и бережно сохраняет их в ClickHouse.
GET /metrics для легкой интеграции с вашей инфраструктурой мониторинга.Добавьте в
celeryconfig.py:worker_send_task_events = True
task_send_sent_event = True
task_track_started = True
Перезапустите воркеры с флагом
--events.Зайдите в UI Feloxi, нажмите Add Broker и введите URL вашего Redis/RabbitMQ. Всё!
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
GitHub
GitHub - thesaadmirza/feloxi: Real-time Celery task queue monitoring — Rust/Axum backend, Next.js dashboard, ClickHouse analytics
Real-time Celery task queue monitoring — Rust/Axum backend, Next.js dashboard, ClickHouse analytics - thesaadmirza/feloxi
1👍4 2🔥1
Remove-AI-Watermarks — это универсальная утилита для удаления как видимых, так и невидимых водяных знаков и метаданных из изображений, сгенерированных популярными нейросетями (Google Gemini, ChatGPT/DALL-E, Stable Diffusion, Midjourney, Adobe Firefly и др.).
Инструмент позволяет в одну команду очистить картинку от любых следов ИИ, включая метки SynthID, криптографические манифесты C2PA и теги EXIF, из-за которых соцсети автоматически вешают плашку "Made with AI".
• Анализатор (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
GitHub
GitHub - wiltodelta/remove-ai-watermarks: Remove visible and invisible AI watermarks and provenance metadata from images and video.…
Remove visible and invisible AI watermarks and provenance metadata from images and video. Python library and CLI for SynthID, C2PA, EXIF, IPTC, XMP, and common generative-AI marks. - wiltodelta/rem...
1 3⚡2
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
CodeBoarding - это инструмент, который создает наглядную визуальную карту вашей кодовой базы.
Он помогает разработчикам и ИИ-агентам видеть архитектуру проекта целиком, чтобы понимать, как всё работает, еще до того, как неосторожный коммит что-нибудь сломает.
Проект объединяет классический статический анализ кода с логикой LLM. На выходе вы получаете архитектурные диаграммы, документацию на уровне компонентов и удобную навигацию прямо в вашей IDE, CI или документации.
.codeboarding/).Удобнее всего ставить через изолированную среду
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
GitHub
GitHub - CodeBoarding/CodeBoarding: Interactive architecture diagrams for codebases
Interactive architecture diagrams for codebases. Contribute to CodeBoarding/CodeBoarding development by creating an account on GitHub.
3⚡4🔥3
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
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
GitHub
GitHub - kamalfarahani/katharos: A functional programming and concurrency library for Python: algebraic abstractions (Semigroups…
A functional programming and concurrency library for Python: algebraic abstractions (Semigroups, Monoids, Functors, Applicatives, Monads), immutable data types, and message-passing concurrency, all...
1🔥3👍2
BleachBit - это легковесный, но мощный инструмент для очистки системы и защиты приватности на Windows и Linux.
Он удаляет временные файлы, кеши, журналы и прочий мусор, помогает освободить место на диске и уменьшить «следы» активности.
Скачайте и распакуйте 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
GitHub
GitHub - bleachbit/bleachbit: BleachBit system cleaner for Windows and Linux
BleachBit system cleaner for Windows and Linux. Contribute to bleachbit/bleachbit development by creating an account on GitHub.
1👍3🔥3 2
Lifeguard — это быстрый инструмент статического анализа, созданный для безопасного внедрения «ленивых» импортов (Lazy Imports) в Python-проектах.
Обычно в Python каждый
import выполняется моментально при чтении файла. Ленивые импорты откладывают реальную загрузку модуля до момента первого обращения к импортированному имени. Это радикально снижает потребление памяти и ускоряет запуск приложений, особенно в огромных кодовых базах с глубоким деревом зависимостей.Перевести старый код на ленивые импорты вслепую не выйдет — часть логики обязательно сломается. Например, проблемы возникнут, если:
sys.modules, ожидая, что предыдущие импорты уже выполнились.__init_subclass__.Найти все такие места в большом проекте вручную практически невозможно.
Инструмент (написанный на Rust) параллельно анализирует AST-дерево ваших исходников и выявляет все несовместимые паттерны. Lifeguard максимально консервативен: если он не может программно доказать, что модуль безопасен для ленивого импорта, он помечает его как небезопасный. Стабильность продакшена здесь ставится выше микрооптимизаций.
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
GitHub
GitHub - facebook/Lifeguard: Lifeguard is a static analyzer to detect Lazy Imports incompatibilities and ease the adoption overhead…
Lifeguard is a static analyzer to detect Lazy Imports incompatibilities and ease the adoption overhead for Lazy Imports in Python - facebook/Lifeguard
1🔥4⚡3
Nbpipe - это легковесная утилита, которая позволяет запускать последовательность Jupyter-ноутбуков как единый рабочий процесс (workflow). Вы можете управлять выполнением прямо из командной строки (CLI) или через удобную боковую панель в JupyterLab.
Это идеальное решение для ситуаций, когда ваш процесс разбит на несколько логических шагов (например: подготовка данных -> обучение модели ->генерация отчета), и их нужно выполнять строго друг за другом.
pip install nbpipe
.nbpipe/ в корне вашего проекта.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
GitHub
GitHub - ngafar/nbpipe: Run sequences of Jupyter notebooks as a workflow from the command line or the JupyterLab sidebar
Run sequences of Jupyter notebooks as a workflow from the command line or the JupyterLab sidebar - ngafar/nbpipe
1👍3⚡2
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
EverOS - это open-source Python-фреймворк, который наделяет ИИ-агентов (Claude Code, Codex, OpenClaw и др.) саморазвивающейся долгосрочной памятью.
Главная идея проекта — ваш контекст, принятые решения и файлы должны следовать за вашей работой, а не оставаться запертыми внутри одного конкретного инструмента.
.md файлы. Вы можете читать их, редактировать, версионировать через Git или открывать как базу знаний прямо в Obsidian.Установка и запуск занимают всего три команды:
pip install everos
everos init
everos server start
#EverOS #AI #Python #MachineLearning #LLM #OpenSource #DevTools #Нейросети #Разработка
https://github.com/EverMind-AI/EverOS
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - EverMind-AI/EverOS: One portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving…
One portable memory layer for every AI agent: local-first, Markdown-native, user-owned, and self-evolving across apps, tools, and workflows. - EverMind-AI/EverOS
1👍3🔥3 3
Dj-lite-tenant - это экспериментальная библиотека для Django, которая выводит изоляцию данных в мультиарендных (multi-tenant) приложениях на абсолютный максимум. Она автоматически создает отдельную базу данных SQLite для каждого пользователя.
Если вы строите легковесный SaaS или пет-проект, где пользователи не должны пересекаться данными ни при каких обстоятельствах, этот инструмент предлагает элегантное решение без развертывания тяжелых серверов БД.
.sqlite3 для указанных в настройках приложений.ForeignKey между БД пользователя и общей базой данных (например, таблицей самого User) работают прозрачно благодаря механизму ATTACH DATABASE в SQLite. Django ORM сама генерирует валидные SQL-запросы.USE_DATABASE_TEMPLATE. Первая чистая БД выполнит миграции, сохранится как шаблон, а для новых пользователей файлы будут просто клонироваться за миллисекунды.with tenant_db(user):.Установка:
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.#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
GitHub
GitHub - adamghill/dj-lite-tenant: Multi-tenant SQLite databases for Django.
Multi-tenant SQLite databases for Django. Contribute to adamghill/dj-lite-tenant development by creating an account on GitHub.
Spoof — это минималистичный и гибкий HTTP-сервер для Python, разработанный специально для изоляции и тестирования сетевого взаимодействия без боли.
Если вам когда-нибудь требовалось переписать клиентскую библиотеку, проверить её поведение в боевых условиях или полноценно замокать сторонний API на реальных сетевых сокетах (а не просто подменить методы в коде), Spoof станет идеальным решением.
http.server, не имеет внешних зависимостей и работает на Python 3.10–3.14..responses) или возвращает .defaultResponse. По умолчанию, если очередь пуста, он честно отдаст 503 Service Unavailable..requests. После тестов можно легко проверить, какие методы, заголовки, query-параметры или JSON-тела прилетали на сервер.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
GitHub
GitHub - lexsca/spoof: A simple HTTP server for test environments
A simple HTTP server for test environments. Contribute to lexsca/spoof development by creating an account on GitHub.
1🔥4👍3⚡2
Bocpy — это библиотека для Python, реализующая принципиально новую парадигму параллельного программирования — поведенческо-ориентированную конкурентность (Behavior-Oriented Concurrency, BOC).
В параллельном коде на Python часто возникают состояния гонки (data races), а с появлением сборки без GIL (free-threaded Python) защищать данные становится еще сложнее.
bocpy решает эту проблему фундаментально: данные разделяются так, что каждый поток выполнения («поведение») получает уникальное временное владение объектом. Больше не нужно вручную управлять блокировками (lock.acquire()), а риск дедлоков исключен на уровне архитектуры.@when и со стороны выглядят как обычный линейный код.bocpy обеспечивает честный параллелизм и показывает практически линейное масштабирование (до 7.5× ускорения на 8 воркерах).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() # Ждем завершения всех задач
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
GitHub
GitHub - microsoft/bocpy: Behavior-Oriented Concurrency in Python
Behavior-Oriented Concurrency in Python. Contribute to microsoft/bocpy development by creating an account on GitHub.
3👍2🔥2 2
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%).example.py:1:1: H601 class has low cohesionpip 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
GitHub
GitHub - mschwager/cohesion: A tool for measuring Python class cohesion.
A tool for measuring Python class cohesion. Contribute to mschwager/cohesion development by creating an account on GitHub.
2⚡3👍3🔥3