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

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

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

picows – высокопроизводительная библиотека на Python, созданная для разработки asyncio WebSocket клиентов и серверов. Реализованная на Cython, она обеспечивает исключительную скорость и эффективность, превосходя другие популярные WebSocket библиотеки на Python.

🔹Популярные библиотеки WebSocket предлагают высокоуровневые интерфейсы, включая управление таймаутами, контроль потоков, сжатие и декомпрессию, а также сборку сообщений WebSocket из фреймов. Эти функции часто реализуются на чистом Python и имеют высокую стоимость по ресурсам, особенно при работе с небольшими сообщениями. Async-итерации создают дополнительные задачи для цикла событий и могут вызывать задержки.

🔻Дизайн API: API picows следует низкоуровневому подходу, передавая фреймы обработчику пользователя, а не сообщения. Пользователю предоставляется полная свобода для выбора стратегии сжатия и управления потоками.

🟦В большинстве случаев фреймы и сообщения совпадают, то есть сообщение состоит из одного фрейма без сжатия.

#Python #WebSocket #Asyncio #Cython #picows #HighPerformance

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

aiopandas — это легковесное расширение для Pandas, добавляющее асинхронную поддержку в map, apply, applymap, aggregate и transform.

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

🔘Полностью совместим с Pandas — просто замените import pandas as pd на import aiopandas as pd.

🔘Автоматическое асинхронное выполнение с управляемой конкуренцией (max_parallel).

🔘Встроенная обработка ошибок — можно настроить поднятие исключений, игнорирование или логирование.

🔘Поддержка tqdm для отслеживания прогресса в реальном времени.

🔻Пример:
import aiopandas as pd
import asyncio

df = pd.DataFrame({'x': range(10)}) # Пример DataFrame

async def f(x):
await asyncio.sleep(0.1 * x) # Симуляция асинхронных операций
return x * 2

df['y'] = await df.x.amap(f, max_parallel=5) # Асинхронное преобразование
print(df)


✅Теперь обработка данных выполняется асинхронно с контролируемым параллелизмом!

#Python #Pandas #aiopandas #AsyncIO #BigData #DataScience #ParallelProcessing #AsyncProgramming

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

PynneX — минималистичная альтернатива тяжелым signal-slot и concurrency-фреймворкам в Python!

❓Нужна простая, безопасная и читаемая событийная модель без внешних зависимостей?

✅PynneX = asyncio + декораторы + потокобезопасность

🔹Основные фишки:

🔘@nx_emitter, @nx_listener — удобные декораторы для событий.

🔘Потокобезопасность из коробки, без блокировок.

🔘Поддержка async и sync listener'ов.

🔘Легко запускайте фоновую работу с @nx_with_worker

🔘Альтернативные стили: @signal/@slot, @publisher/@subscriber — как в Qt или Pub/Sub.

🔘Без сторонних зависимостей (только Python 3.10+).

🔻Идеально для:

🔘Асинхронных CLI/GUI приложений.

🔘Микросервисов.

🔘Локальных worker'ов и задач в фоне.

#PynneX #PythonAsync #EventDriven #SignalSlot #PubSub #ThreadSafe #PythonConcurrency #Asyncio #PythonDecorators #DevTools #PythonMinimalism #OpenSourcePython

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

pyftpdlib
— асинхронная библиотека на Python для создания быстрых, масштабируемых и совместимых с RFC-959 FTP-серверов.

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

🔘Полностью на Python, без зависимостей.

🔘Поддержка FTPS, IPv6, Unicode, виртуальных пользователей.

🔘Асинхронность через epoll / kqueue / select.

🔘Поддержка sendfile(2) для высокой скорости загрузок (Linux).

🔘Альтернативный режим: многопоточность или многопроцессность.

🔘Превосходная производительность: быстрее многих FTP-серверов на C.

🔘Удобный CLI и API.

#Python #pyftpdlib #FTP #PythonNetwork #AsyncIO #PythonDev #FTPLibrary #PythonTools #OpenSource #DevOps #PythonServer #Программирование

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

Samps — современная, безопасная и лёгкая Python-библиотека для работы с последовательным портом (serial port) без внешних зависимостей!

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

🔘Поддержка POSIX, Windows и MacOS.

🔘Синхронный и асинхронный интерфейсы.

🔘Подключение по TCP (telnet RFC 2217).

🔘Нулевая зависимость и типобезопасность.

🔻Пример синхронного использования:
from samps import SerialCommonInterface as Serial

with Serial(port="/dev/tty.usbserial-0001", baudrate=9600) as serial:
print("Порт открыт?", "Да" if serial.is_open() else "Нет")
line = serial.readline()
print(line.decode("utf-8").strip())

print("Порт закрыт")


✅Проверьте samps — удобный инструмент для работы с последовательными портами в Python!

#Python #SerialPort #samps #AsyncIO #DevTools #PythonLibrary #SerialCommunication #Программирование #PythonDev #OpenSource #TechTools

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

pyleak — это инструмент для обнаружения утечек asyncio задач, потоков и блокировок event loop в Python.

🔹pyleak помогает выявить:

🔘Утечки asyncio задач.

🔘Утечки потоков.

🔘Блокировки event loop, которые замедляют асинхронный код.

🔻Быстрый старт:
import asyncio
from pyleak import no_task_leaks, no_thread_leaks, no_event_loop_blocking

async def main():
async with no_task_leaks():
asyncio.create_task(asyncio.sleep(10)) # Эта задача будет обнаружена
await asyncio.sleep(0.1)

def sync_main():
with no_thread_leaks():
threading.Thread(target=lambda: time.sleep(10)).start() # Этот поток будет обнаружен

async def async_main():
with no_event_loop_blocking():
time.sleep(0.5) # Это блокирование будет обнаружено


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

🔘Использование как контекст-менеджеров и декораторов.

🔘Вывод подробных стеков вызовов для утечек и блокировок.

🔘Фильтрация по именам задач и потоков.

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

🔘Интеграция с pytest для автоматического контроля утечек в тестах.

❓Почему pyleak:

🔘Помогает избежать утечек памяти и ресурсов.

🔘Позволяет выявить проблемы с производительностью и блокировками.

🔘Упрощает отладку сложного асинхронного кода.

#Python #AsyncIO #pyleak #Разработка #Тестирование #Программирование #PythonTools #AsyncTasks #Threads #EventLoop #Debugging #OpenSource

📱Ссылка на репозиторий:
https://github.com/deepankarm/pyleak
Please open Telegram to view this post
VIEW IN TELEGRAM
15⚡2
📱DripDrop.

DripDrop — это библиотека для Python, которая добавляет поддержку прогрессивного стриминга JSON в веб-API.

✅ Вместо того чтобы ждать, пока весь JSON будет готов, DripDrop позволяет отправлять данные по мере их появления — как React Server Components, но в мире Python и FastAPI.

🔹Прогрессивный JSON — это когда:

🔘Структура ответа приходит сразу с заглушками ($1, $2, ...),

🔘Затем сервер постепенно "достримливает" недостающие части, как только они готовы,

🔘Быстрая информация не тормозится из-за медленных операций.

⚠️Пока это Proof of Concept — но уже рабочий и с примерами.

#Python #FastAPI #Streaming #JSON #WebAPI #AsyncIO #BackendDev #OpenSource #DripDrop #DevTools #ProgressiveJSON #DanAbramov #PoC #ReactIdeas #APIInnovation

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

aiosqlitepool — пул соединений для SQLite в asyncio-приложениях.

aiosqlitepool — это высокопроизводительный пул соединений для асинхронных SQLite-приложений. Он устраняет издержки на создание/закрытие соединений и ускоряет работу с БД за счёт повторного использования «горячих» соединений.

⚠️Это не драйвер SQLite, а надстройка над aiosqlite, повышающая производительность.

❓Зачем использовать aiosqlitepool:

🔘Устраняет накладные расходы на соединения.

🔘Ускоряет запросы за счёт кэша в памяти.

🔘Увеличивает пропускную способность при высокой нагрузке.

🔹Пример базового использования:
async with pool.connection() as conn:
await conn.execute("INSERT INTO users VALUES (?)", ("Alice",))
await conn.commit()


❓Когда стоит использовать:

🔘5–10 запросов к БД в секунду.

🔘30 запросов в секунду от фоновых воркеров.

🔘P99 латентность < 50 мс.

🔘минимизация нагрузки на CPU/диск.

#Python #SQLite #AsyncIO #FastAPI #aiosqlite #aiosqlitepool #Backend #Performance #DevTools #WebDev #DataEngineering #Database

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

Transfunctions
— это Python-библиотека, которая позволяет из одного шаблона создавать синхронные, асинхронные и генераторные функции.

✅Transfunctions решает одну из ключевых проблем Python — дублирование кода из-за разделения функций на синхронные и асинхронные.

С помощью шаблонов вы пишете логику один раз и генерируете сразу несколько версий:

🔘Обычную (sync).

🔘Асинхронную (async).

🔘Генератор (generator).

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

🔘Используются маркеры (sync_context, async_context, generator_context) для выделения специфичных блоков.

🔘На базе одного шаблона создаются разные типы функций без изменения синтаксиса Python.

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

🔹Пример:
@transfunction
def template():
print('so, ', end='')
with sync_context:
print("it's just usual function!")
with async_context:
print("it's an async function!")
with generator_context:
print("it's a generator function!")
yield


➡️Далее:
template.get_usual_function()
template.get_async_function()
template.get_generator_function()


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

🔘Нет дублирования кода.

🔘Простая поддержка sync/async/generator.

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

🔘Легко интегрировать в существующий код.

#Python #AsyncIO #Generators #CodeQuality #DevTools #Backend #Transfunctions #Refactoring #CodeReuse #PythonTips

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

Subprocesslib — это лёгкая библиотека для Python, которая делает работу с subprocess такой же удобной, как с путями в pathlib.

✅Вместо громоздких вызовов — чистый и читаемый API для запуска системных команд.

🔹 Пример:
from subprocesslib import Command

cmd = Command('tail', '-n', 5, '/var/log/syslog')
print(cmd) # tail -n 5 /var/log/syslog

cmd.run() # subprocess.run(...)
cmd.output() # subprocess.check_output(...)
cmd.spawn() # subprocess.Popen(...)

await cmd.spawn_async() # asyncio.create_subprocess_exec(...)


#Python #Asyncio #Subprocess #CLI #pathlib #DevTools #PythonTips

📱Ссылка на репозиторий:
https://gitlab.com/chwitlabs/subprocesslib
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4⚡3
📱Wove.

Wove — это новая библиотека, делающая асинхронный Python красивым и понятным.
Она позволяет писать асинхронный код линейно, без множества вложенных async/await и колбэков.

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

🔘Читаемость: код в with weave() блоке выполняется сверху вниз, как обычный Python.

🔘Автоматическая параллельность: Wove сама строит граф зависимостей и запускает независимые задачи параллельно.

🔘Поддержка sync и async: можно смешивать def и async def без боли.

🔘Фоновая обработка: выполнение в потоке или даже отдельном процессе.

🔘Отладка и мониторинг: встроенные инструменты для визуализации зависимостей, времени и ошибок.

🔘Никаких зависимостей — чистый Python, совместим с asyncio.

🔘Совместима с Python 3.8–3.14 (включая free-threaded).

✅Wove — это asyncio без боли.
Пиши красиво, выполняй параллельно.


#Python #AsyncIO #Concurrency #DevTools #OpenSource #Wove #Multithreading #AsyncProgramming

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

qCrawl — это быстрый асинхронный фреймворк для веб‑краулинга и скрейпинга на Python, заточенный под извлечение структурированных данных с сайтов и высокую нагрузку.

❓Что это за библиотека:

qCrawl позволяет писать пауков на asyncio, параллельно обходить тысячи страниц и сразу выгружать данные в удобные форматы (JSON, CSV, XML). Фреймворк крутится вокруг очередей, пайплайнов и плагиноподобных компонентов, так что архитектура получается ближе к Scrapy, но с современным асинхронным стеком.

🔹Ключевые фичи:

🔘Асинхронный движок: конкурентный краулинг на базе asyncio без ручного микроменеджмента задач.

🔘Оптимизированная очередь: backend на Redis, messagepack‑сериализация, connection pooling и DNS‑кеширование для высокой пропускной способности.

🔘Мощный парсинг: CSS/XPath селекторы через lxml для удобного извлечения данных.

🔘Middleware и pipelines: настраиваемая обработка запросов/ответов и последующая валидация/трансформация данных.

🔘Гибкие бэкенды очередей: in‑memory или Redis (+диск) — от мелких задач до прод‑нагрузки.

🔘Плагиновые даунлоадеры: aiohttp для обычного HTTP и Camoufox (stealth‑браузер) для JS‑сайтов и обхода антиботов.

🔻Кому стоит посмотреть:

Если ты пишешь свои краулеры, сейчас на Scrapy/playwright/обычный aiohttp и хочешь более современную, асинхронную и расширяемую основу — qCrawl выглядит как мощный кандидат. Плюс он кроссплатформенный и ставится через pip или conda, так что порог входа минимальный.

#python #asyncio #webscraping #crawler #qcrawl #pythondeveloper

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

Embar — это новый ORM для Python с сильной типизацией и SQL‑образным синтаксисом, вдохновлённый Drizzle и рассчитанный на Python 3.14 и выше.

❓Что такое Embar:

Embar ставит целью сделать работу с БД в Python максимально типобезопасной: ваш type checker знает валидные аргументы и точные типы результатов, а LSP подсказывает, как собрать нужный запрос. Запросы пишутся в SQL‑подобном стиле, но при этом вы всегда можете просто использовать сырой SQL, когда нужно.

🔹Поддерживаемые БД и стек:

Сейчас Embar поддерживает три клиента: SQLite 3 через стандартную библиотеку, Postgres через psycopg3 и Postgres через async‑клиент psycopg3 (рекомендуется именно async‑вариант). Для валидации используется Pydantic, а дизайн библиотеки хорошо ложится на привычные сценарии с FastAPI.

🔻Фичи и ограничения:

Embar активно использует новые template strings (t‑строки), поэтому поддерживает только Python 3.14. Есть CLI для генерации миграций с помощью LLM и ANTHROPIC_API_KEY, но корректный diff миграций пока в разработке.

#python #orm #asyncio #postgres #sqlite #typing #pydantic #python314 #fastapi #drizzleinspired

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

silkworm-rs — async‑first фреймворк для веб‑скрейпинга на Python с «двигателем» на Rust: HTTP‑клиент rnet (имперсонация браузера) + быстрый HTML‑парсер scraper-rs, минимальная модель Spider/Request/Response, middlewares и pipelines без тонны бойлерплейта. Он сразу даёт конкурентный движок с backpressure (очередь по умолчанию concurrency * 10), таймаутами на запрос, дедупликацией по URL и структурированным логгированием со статистикой по RPS, памяти, количеству URL и ошибок.

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

🔘HTTP‑клиент с «маскарадом» под браузер, поддержкой редиректов с защитой от циклов, мерджем query‑параметров и прокси через request.meta["proxy"].

🔘Типизированные пауки и коллбэки, которые могут возвращать как items, так и новые Request; HTMLResponse даёт удобные селекторы (select, select_first) и response.follow() для переходов.

🔘Готовые middlewares: ротация User‑Agent, прокси, ретраи с экспоненциальным бэкоффом и «sleep‑кодами», гибкие задержки (фикс/рандом/функция), SkipNonHTMLMiddleware для отбрасывания не‑HTML.

🔘Богатый набор pipelines «из коробки»: JSONL, CSV, XML, SQLite, MsgPack, Polars/Parquet, Excel, YAML, Avro, куча БД (Postgres, MySQL, Mongo, Cassandra, DynamoDB, DuckDB и др.), S3, FTP/SFTP, Elasticsearch, Google Sheets, Snowflake, вебхуки и Taskiq‑очереди.

🔘Поддержка разных event loop’ов: стандартный asyncio (run_spider), uvloop на *nix, winloop на Windows и trio‑бэкенд (run_spider_trio) — для I/O‑bound задач это даёт 2–4x прирост.

🔘JavaScript‑страницы можно рендерить через экспериментальную интеграцию с Lightpanda/Chrome по CDP (fetch_html_cdp, CDPClient и spider‑примеры).

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

pip install silkworm-rs
# или (рекомендуется)
uv pip install --prerelease=allow silkworm-rs

Дальше — наследуете Spider, реализуете async def parse(...), yield’ите словари или Request, а run_spider(...) берёт на себя конкурентный движок, middleware’ы и выгрузку данных в нужные пайплайны.

#Python #Rust #WebScraping #AsyncIO #silkworm #rnet #scraperRS #DataEngineering #ETL #uvloop

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

Oxyde ORM — асинхронный type‑safe ORM с Pydantic v2 и быстрым Rust‑ядром, сделанный в духе Django ORM, но с современным API и предсказуемым поведением.

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

🔘Django‑стиль: привычный User.objects.filter(...), аннотации полей и Meta‑класс для таблиц.

🔘Pydantic‑центричность: модели — полноценные Pydantic v2, с валидацией, тайпингом и удобной сериализацией.

🔘Rust‑производительность: генерация и выполнение SQL вынесены в Rust‑core (oxyde-core), что даёт высокий ops/sec в бенчмарках против популярных ORM.

🔘Async‑first: всё на asyncio, с поддержкой PostgreSQL, SQLite и MySQL, транзакций и nested transaction.atomic().

🔘Интеграция с FastAPI: готовый db.lifespan(...) для подключения БД на уровне приложения.

🔻Установка и быстрый старт:

pip install oxyde


from oxyde import Model, Field

class User(Model):
id: int | None = Field(default=None, db_pk=True)
name: str
email: str = Field(db_unique=True)


#python #orm #asyncio #pydantic #rust #fastapi #postgresql #sqlite #mysql

📱Ссылка на репозиторий:
https://github.com/mr-fatalyst/oxyde
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡2👍22
📱Rsloop.

rsloop — это альтернативный event loop для asyncio, написанный на Rust через PyO3.

Каждый rsloop.Loop держит выделенный Rust‑поток для координации цикла и I/O, при этом ваши Python‑корутины продолжают выполняться в том же потоке, откуда вы вызываете run_forever() / run_until_complete() (обычно main‑поток).

🔧Установка:
pip install rsloop
# или
uv add rsloop


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

async def main():
...

rsloop.run(main())


Или вручную:

import asyncio, rsloop

loop = rsloop.new_event_loop()
asyncio.set_event_loop(loop)
try:
loop.run_until_complete(...)
finally:
asyncio.set_event_loop(None)
loop.close()


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

🔘Отдельный Rust runtime‑поток: координация цикла и I/O (на Linux — через compio с io_uring), Python‑колбэки и таски остаются на Python‑потоке.

🔘Полноценная реализация core‑поверхности asyncio: жизненный цикл лупа, задачи, future, run_in_executor, TCP/Unix сокеты, пайпы, сабпроцессы, сигналы, Windows‑пайпы и subprocess‑workflow.

🔘Fast Streams: импорт rsloop патчит asyncio.open_connection() и asyncio.start_server() для использования нативных быстрых стримов, когда запущен rsloop.Loop и не используется TLS; поведение можно отключить через RSLOOP_USE_FAST_STREAMS=0.

🔘Профилирование через Tracy: with rsloop.profile(): rsloop.run(main()) или ручное start_profiler()/stop_profiler() при сборке с фичей profiler.

🔘Производительность: в бенчмарках callbacks/tcp‑streams rsloop сопоставим или быстрее stdlib asyncio и близок к uvloop, иногда чуть медленнее по задачам, но выигрывает по p99‑латентности в реальных API‑нагрузках.

#python #asyncio #rust #rsloop #eventloop #io_uring #fastapi #uvloop #PyO3 #profiling

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

Pywho — удобный CLI‑инспектор для Python‑окружения: одной командой показывает, какой интерпретатор и venv запущены, куда смотрит sys.path, куда реально резолвятся импорты.

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

🔘Инспекция окружения

pywho выводит интерпретатор (путь, версия, архитектура), активный venv (тип: venv/virtualenv/uv/conda/poetry/pipenv и т.п.), пути site-packages, менеджер пакетов (pip/uv/conda/poetry/pipenv/pyenv) и полный sys.path.

Есть режим pywho --json и pywho --packages (список установленных пакетов с версиями и путями) для CI/issue‑репортов.

🔘Трассировка импортов

pywho trace <module> показывает, из какого файла реально грузится модуль, его тип (stdlib/third-party/local), кэширован ли он и какой порядок поиска по sys.path был использован.

- Поиск шадоу‑модулей по проекту
pywho scan . проходит дерево проекта и находит файлы, которые шадовят модули stdlib или установленные пакеты, с градацией по важности: HIGH (stdlib), MEDIUM (third-party).

Стандартные мусорные директории вроде .venv, __pycache__, node_modules, dist, build, .git автоматически игнорируются.

🔘Python API

Можно использовать как библиотеку:

- inspect_environment() — объект с инфой про интерпретатор, venv, менеджер пакетов, пути, плюс to_dict() для JSON.

- trace_import("name") — программный аналог pywho trace с полями resolved_path, module_type, is_cached, shadows.

- scan_path(Path(".")) — результаты сканирования на шадоу с уровнем серьёзности.

🔘Интеграция в рабочие процессы

- “Works on my machine” debug: попросить пользователя выполнить pywho --json --packages и приложить результат к issue или в чат.

- Онбординг: pywho для быстрой проверки, что окружение настроено как надо.

- CI: pywho --json --packages > env.json как снимок окружения сборки.

✅Если резюмировать, pywho — это удобный “однокнопочный” отчёт по окружению + инструменты для объяснения, какой именно Python вы запускаете, почему `import X` подхватил тот самый файл и где у вас лежит опасный `json.py` рядом с проектом.

#python #pywho #debugging #virtualenv #asyncio #packagemanagement #devtools #cli #stdlib #import #shadowing

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

Kademlia-dynamic
- это легковесная асинхронная реализация распределенной хэш-таблицы (DHT) на базе алгоритма Kademlia, написанная на чистом Python и не имеющая никаких внешних зависимостей.

В отличие от классического пакета kademlia с PyPI, данный модуль спроектирован с упором на современный asyncio (импортируется как kademlia_dynamic), работает из коробки без сторонних библиотек и поддерживает тонкую настройку параметров сети.

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

🔘Чистый Python & Asyncio: Работает исключительно на стандартной библиотеке Python, обрабатывая UDP-пакеты в асинхронном режиме.

🔘Поддержка строк и бинарных данных: Методы set() и get() нативно принимают и возвращают как обычные строки (str), так и бинарные файлы (bytes).

🔘Два формата сериализации: Из коробки доступны наглядный JSON (удобен для отладки) и компактный Bencode в стиле BitTorrent (BEP 5).

🔘Защита от подмены ответов: Встроенный механизм verify_response_source сбрасывает пакеты, пришедшие с неисходных IP/портов, защищая узел от спуфинга.

🔘Умный TTL и кэширование: Время жизни закэшированных значений рассчитывается динамически и обратно пропорционально XOR-расстоянию до узла, что избавляет сеть от устаревших данных.

🔘Контроль нагрузки (Backpressure): Ограничение очереди входящих задач (max_dispatch_tasks) защищает узел от перегрузки при высоком сетевом трафике.

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

Установка из PyPI:

pip install kademlia-dynamic


Пример создания и запуска DHT-узла:

import asyncio
from kademlia_dynamic import KademliaServer

async def main():
# Создаем сервер (можно выбрать serialization="bencode")
server = KademliaServer(serialization="json")

# Слушаем UDP-порт (для работы в LAN/WAN можно передать ip="0.0.0.0")
await server.listen(port=8000)

# Подключаемся к существующему узлу
await server.bootstrap([("192.168.1.100", 8000)])

# Сохраняем текстовые или бинарные данные в сеть
await server.set("my_key", "Hello, P2P!")
await server.set("my_bytes", b"\x00\x01\x02\x03")

# Читаем данные из DHT
value = await server.get("my_key")
print("Результат:", value)

server.stop()

asyncio.run(main())


#Python #P2P #Kademlia #DHT #AsyncIO #Networking #OpenSource #DevTools #Decentralized

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

Tortoise ORM
- это простая и производительная асинхронная ORM (Object-Relational Mapper) для Python 3.10+, созданная под сильным вдохновением от Django ORM.

Библиотека разработана специально для asyncio и сочетает привычный, выразительный синтаксис моделей Django с нативной асинхронностью, избавляя от бойлерплейта и необходимости писать «сырые» SQL-запросы в асинхронных микросервисах.

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

🔘Нативная асинхронность: Спроектирована с нуля для работы с современным асинхронным стеком Python (async/await) без блокировки event loop.

🔘Django-подобный API: Привычное объявление моделей через классы Model, строгая типизация полей (fields), поддержка связей ForeignKeyField / ManyToManyField и удобный QuerySet (filter, annotate, prefetch_related).

🔘Широкая поддержка баз данных:

✔️PostgreSQL (asyncpg, psycopg)

✔️MySQL / MariaDB (asyncmy, aiomysql)

✔️SQLite (aiosqlite)

✔️MS SQL & Oracle (asyncodbc)

🔘Встроенные миграции: Поставляется с готовым CLI-инструментом (tortoise makemigrations, tortoise migrate, tortoise sqlmigrate) для автоматического отслеживания изменений схем и генерации миграций.

🔘Бесшовная интеграция: Идеально подходит для связки с FastAPI, Sanic, Litestar, Quart и другими современными веб-фреймворками.

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

1. Определение моделей:
from tortoise import fields
from tortoise.models import Model

class Tournament(Model):
id = fields.IntField(primary_key=True)
name = fields.CharField(max_length=50)

class Event(Model):
id = fields.BigIntField(primary_key=True)
name = fields.TextField()
tournament = fields.ForeignKeyField('models.Tournament', related_name='events')


2. Инициализация и работа с данными:

import asyncio
from tortoise import Tortoise

async def main():
# Подключение к БД
await Tortoise.init(
db_url='sqlite://db.sqlite3',
modules={'models': ['__main__']}
)
# Генерация таблиц (для dev-режима)
await Tortoise.generate_schemas()

# Создание записей
tournament = await Tournament.create(name='Cyber Cup 2026')
await Event.create(name='Final Match', tournament=tournament)

# Выборка с подгрузкой связанных связей
events = await Event.filter(tournament=tournament).prefetch_related('tournament')
for event in events:
print(f"Событие: {event.name}, Турнир: {event.tournament.name}")

await Tortoise.close_connections()

asyncio.run(main())


📦Установка:
# Базовая версия (SQLite):
pip install tortoise-orm

# С драйвером для PostgreSQL:
pip install "tortoise-orm[asyncpg]"

# С драйвером для MySQL:
pip install "tortoise-orm[asyncmy]"


✅Проект распространяется под открытой лицензией Apache 2.0.

#Python #TortoiseORM #ORM #AsyncIO #FastAPI #PostgreSQL #MySQL #Database #Backend #DevTools #OpenSource

📱Ссылка на репозиторий:
https://github.com/tortoise/tortoise-orm
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥11