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

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

Сайт: https://pythonomania.github.io/
Download Telegram
📱Moka-py.

moka-py — это Python-библиотека, созданная для взаимодействия с мощной библиотекой кэширования Moka, написанной на Rust. Теперь вы можете использовать все возможности Moka для кэширования в своих Python-проектах.

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

🔘Синхронное кэширование: Потокобезопасное кэширование в памяти для Python-приложений.

🔘Поддержка TTL: Автоматическое удаление элементов по истечении заданного времени жизни (Time-to-Live).

🔘Поддержка TTI: Удаление элементов после заданного времени бездействия (Time-to-Idle).

🔘Удаление по размеру: Ограничение объема кэша с использованием политики TinyLFU.

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

❓Зачем использовать moka-py?

Если вашему проекту требуется высокоэффективное кэширование с богатым функционалом, moka-py — это идеальный инструмент. Легко интегрируется и повышает производительность вашего Python-кода.

✅Попробуйте мощь Moka в Python прямо сейчас!

#Python #Rust #MokaPy #Caching #Performance #OpenSource #SoftwareDevelopmen

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

robinzhon
— это высокопроизводительная Python-библиотека для быстрых и параллельных загрузок объектов из S3(Amazon Simple Storage Service, облачное хранилище от AWS).

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

🔘Скорость — асинхронные загрузки с несколькими потоками.

🔘Надёжность — продолжает загрузку даже при ошибках отдельных файлов.

🔘Простота — удобный API для одиночных и пакетных загрузок.

🔘Отчётность — подробная статистика успехов и ошибок.

🔻Пример:
from robinzhon import S3Downloader

client = S3Downloader("us-east-1")
client.download_file("bucket", "object", "./object")


📊 Тест производительности (1000 файлов):

🔘robinzhon: 10.30s (97.1 файлов/сек).

🔘threaded boto3: 24.16s.

🔘aioboto3: 27.70s.

🏆 robinzhon в 2.3× быстрее boto3 и в 2.7× быстрее aioboto3

#python #aws #s3 #async #aio #performance #opensource #devtools #cloud #robinzhon

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

Logly — это высокопроизводительная библиотека логирования, вдохновлённая Loguru, но построенная на Rust.

✅Она сочетает привычный API и безопасность через систему владения Rust.

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

🔘Rust-backend с PyO3/Maturin — скорость и безопасность.

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

🔘Поддержка TRACE, DEBUG, INFO, SUCCESS, WARNING, ERROR, CRITICAL.

🔘JSON-логирование, контекст, автоматический стек ошибок.

🔘Умное управление файлами: ротация, сжатие, хранение.

🔘Асинхронная запись и колбэки в фоне.

🔘Гибкое форматирование, цветной вывод, фильтрация по модулям и уровням.

🔻Установка:
pip install logly


#Python #Rust #Logging #Loguru #Performance #PyO3 #Maturin #Async #DevTools

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

httptap — мощный CLI-инструмент для глубокого анализа HTTP-запросов

Если вы работаете с API, отлавливаете сетевые тормоза или занимаетесь перфоманс-диагностикой — httptap станет вашим новым любимым инструментом.

Он разбирает HTTP-запрос пошагово: DNS, TCP, TLS-рукопожатие, ожидание ответа сервера, передача тела. Каждый этап — с точными таймингами, диаграммами и метриками.

❓Что делает httptap таким крутым:

🔘Показывает детальный таймлайн запроса — прямо как waterfall-диаграмма в DevTools.

🔘Поддерживает все HTTP-методы и любые типы тела запроса.

🔘Умеет автодетектить Content-Type.

🔘Даёт глубокую информацию по TLS: сертификат, срок действия, алгоритмы, версию протокола.

🔘Работает и с IPv4, и с IPv6.

🔘Экспортирует результаты в JSON.

🔘Есть компактный вывод для логов и метрик.

🔘Поддерживает прокси, кастомные CA, отключение SSL-проверки.

🔘Расширяем: можно подключить свой DNS-резолвер, TLS-инспектор или визуализатор.


🔬Кому пригодится?

🔘Бэкенд-разработчикам.

🔘Девопсам и SRE.

🔘Инженерам, работающим с производительностью.

🔘QA, проверяющим стабильность API.

🔘Аналитикам, ищущим сетевые узкие места.

#python #cli #networking #devtools #http #performance #debugging #api #opensource #httptap

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

Bengal — это быстрый статический генератор сайтов для Python 3.14+ с параллельной сборкой, автодоком и валидацией контента, ориентированный на современные проекты (блоги, документацию, лендинги и т.п.).

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

🔘Производительность: параллельные сборки, инкрементальные rebuild’ы, кэширование сжатое Zstandard.

🔘Современный стек: требует Python 3.14+, использует free-threading и полностью типизирован.

🔘«Из коробки»: автогенерация API‑доков (Python, CLI, OpenAPI), валидация контента, анализ структуры сайта.

🔘Расширяемость: сменные движки шаблонов, Markdown‑парсеров и подсветки кода без изменения контента.

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

🔘Установка и запуск dev‑сайта:
  pip install bengal
bengal new site mysite && cd mysite && bengal serve

Первая команда создаёт каркас, вторая поднимает dev‑сервер с live‑reload.

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

🔘bengal build — продакшн‑сборка.
🔘 bengal serve — dev‑сервер.
🔘bengal validate — проверки и валидация.
🔘bengal fix — авто‑фикс проблем.
🔘bengal graph report — отчёт по структуре сайта.

🔻Генерация структуры сайта:

🔘Интерактивный мастер: bengal new site задаёт вопросы и предлагает пресеты: blog, docs, portfolio, product, resume, blank, custom.

🔘Шаблоны без вопросов:
  bengal new site my-docs --template docs
bengal new site my-blog --template blog
bengal new site portfolio --template portfolio

Каждый шаблон создаёт готовые разделы (docs: getting-started, guides, reference; blog: blog + about и т.д.).

🔻Расширение существующего сайта:

🔘Добавление секций:
  bengal init --sections docs --sections tutorials
bengal init --sections blog --with-content --pages-per-section 5
bengal init --sections api --dry-run

Тип секции выводится из имени (blog/posts → blog, docs/guides → doc, about/contact → section).

🔘Сложные структуры можно описать YAML‑манифестами и применить через bengal project skeleton apply my-structure.yaml.[1]

🔻Технологический стек и лицензия:

🔘Тема по умолчанию: тёмная/светлая, адаптивная, с поиском, TOC и подсветкой.

🔘Движки: шаблоны Kida/Jinja2, Markdown‑парсеры Patitas/Mistune/Python‑Markdown, подсветка Rosettes (быстрее Pygments).

🔘Проект распространяется под лицензией MIT, что даёт максимально свободное использование и модификацию кода.

#Bengal #Python #StaticSiteGenerator #SSG #Python314 #FreeThreading #WebDev #Docs #Blog #Autodoc #Markdown #Jinja2 #Performance #DevTools

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

py2many — это Python‑транспайлер, который автоматически преобразует Python‑код в Rust, C++, Go, Zig, Julia, Kotlin, Nim, Dart и другие статически типизированные языки.

🔹Зачем транспилировать Python:

🔘Производительность: Python удобен для разработки, но медленный в рантайме — компиляция в Rust/C++/Go даёт нативную скорость.

🔘Кроссплатформенность: один Python‑код → нативные приложения для мобильных, embedded‑систем и WebAssembly.

🔘Безопасность: верифицируете логику тестами на Python, потом транспилируете в Rust для memory safety.

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

pip install py2many

# Конвертация в Rust
py2many --rust tests/cases/fib.py

# Конвертация в C++
py2many --cpp tests/cases/fib.py

# Конвертация в Go/Kotlin/Julia/Nim/Dart
py2many --go/--kotlin/--julia/--nim/--dart tests/cases/fib.py


#python #transpiler #rust #cpp #golang #performance #py2many

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

nitro-pandas — это pandas‑обёртка поверх Polars: пишете привычный pandas‑код, а под капотом крутится Rust‑движок Polars с 5–10x ускорением.

❓Зачем:

🔘Не переписывать тысячи строк кода: меняете import pandas as pd на import nitro_pandas as npd — всё остальное работает.

🔘Lazy evaluation: read_csv_lazy() + .query() + .collect() оптимизируют запросы до выполнения.

🔘Fallback: если метод ещё не реализован в Polars, автоматически вызывается pandas.

🔻Что не так же:

🔘Polars не разрешает смешанные типы в одном столбце — всё приводится к общему типу.

🔘Нет inplace=True: операции всегда возвращают новый DataFrame.

pip install nitro-pandas


#python #pandas #polars #nitropandas #datascience #performance

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

mypyc — компилятор Python в C‑расширения: пишешь обычный код с type hints (mypy), получаешь 2–4x ускорение без Cython‑синтаксиса.

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

🔘Компиляция модулей/проектов: mypy сам себя ускорил в 4x.

🔘Полная типизация: generics, unions, Optional — inference без аннотаций.

🔘Runtime checks + AOT — быстрый старт, работает как Python.

🔘Стдлиб/third‑party libs — всё ок, IDE/myPy совместимо.

🚀Старт:
pip install mypy mypyc  # В mypy repo
mypycify compile module.py # → module.cpython‑*.so


#python #mypyc #performance #types #compile

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

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

Традиционные профилировщики часто бывают перегружены деталями и плохо подходят для простого ответа на вопрос: «А не стал ли мой скрипт работать медленнее после последних правок?». OracleTrace решает именно эту задачу.

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

🔘Поиск регрессий: сравнивайте два JSON-файла с трейсами и моментально находите функции, которые стали работать медленнее, быстрее, или вовсе были удалены/добавлены.

🔘Идеально для CI/CD: инструмент умеет ронять пайплайн, если код замедлился больше заданного порога (флаг --fail-on-regression).

🔘Наглядный граф вызовов: строит визуальное дерево выполнения (кто, кого и сколько раз вызывал).

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

🔘Экспорт: результаты можно легко выгрузить в JSON (для автоматизации) или CSV (для отчетов).

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

Под капотом используется встроенная функция sys.setprofile() для перехвата вызовов (call) и возвратов (return). Инструмент замеряет время выполнения каждой функции и фиксирует связи между ними, не требуя тяжелой инструментации кода.

🚀Быстрый старт:
pip install oracletrace
(Требуется Python 3.10+)

💡 Пример использования:
Сначала сохраняем базовый трейс:
oracletrace my_app.py --json baseline.json

Затем сравниваем с новой версией (например, в CI):
oracletrace my_app.py --json current.json --compare baseline.json --fail-on-regression --threshold 25

#Python #Profiling #Backend #DevTools #CI #OpenSource #Performance #Programming

🔹Ссылка на репозиторий:
https://github.com/KaykCaputo/oracletrace
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍3⚡2🔥21
📱Python UUID Utils.

Python UUID Utils —
это сверхбыстрая замена стандартного модуля uuid в Python, написанная на Rust. Инструмент разработан как полноценная альтернатива (drop-in replacement): вы можете кратно ускорить генерацию уникальных идентификаторов в вашем приложении без кардинального переписывания кодовой базы.

🔹Доступные версии UUID:

🔘uuid1 / uuid6 — на основе временной метки и монотонного счетчика.

🔘uuid3 / uuid5 — на основе хэшей MD5 и SHA-1 от переданных данных.

🔘uuid4 — классический UUID на базе случайных данных.

🔘uuid7 — современный стандарт на основе Unix-времени, идеально подходящий для первичных ключей в базах данных благодаря сортировке по времени создания.

🔘uuid8 — кастомные UUID на основе пользовательских данных.

🚀Потрясающая производительность (Бенчмарки):

Согласно официальным тестам на Python 3.14, ускорение получается просто космическим:

🔘uuid4(): Стандартная библиотека — 1189 нс | uuid_utils — всего 61 нс (быстрее почти в 20 раз!).

🔘uuid7(): Стандартная библиотека — 1336 нс | uuid_utils — 84 нс (быстрее в 15 раз!).

🔘Парсинг идентификатора из строк (hex) или байтов работает быстрее в 4–5 раз.

🔧Совместимость с Django и другими фреймворками:

Некоторые крупные фреймворки строго требуют, чтобы объекты UUID были именно инстансами стандартного класса uuid.UUID из встроенной библиотеки Python, а не сторонними сабклассами. Разработчики это учли! Для таких случаев есть специальный модуль совместимости:

import uuid_utils.compat as uuid

# Возвращает родной объект stdlib uuid.UUID,
# но генерирует его в 4-5 раз быстрее стандартного модуля!
my_id = uuid.uuid4()


📦Установка:

pip install uuid-utils
# или через conda
conda install -c conda-forge uuid-utils


#Python #Rust #Performance #UUID #Backend #Django #DevTools #Programming #OpenSource #Оптимизация

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

NumCircBuf —
это высокопроизводительная библиотека для Python (реализованная на Cython), предоставляющая численные циклические буферы (circular buffers) со статистическими аккумуляторами, работающими за константное время O(1).

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

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

🔘Бешеная производительность: За счет обхода стандартного оверхеда Python/NumPy библиотека работает в 500–1500 раз быстрее, чем collections.deque или обычные списки при массовом добавлении данных (extend), и до 10 раз быстрее кольцевых буферов на чистом NumPy. Тесты показывают пропускную способность до 73 ГБ/с!

🔘Статистика за O(1): Специализированные буферы мгновенно выдают скользящее среднее или среднеквадратичное значение без необходимости каждый раз пересчитывать все элементы в окне.

🔘Zero-Copy представления: Метод .view() возвращает логическое read-only представление буфера без копирования данных в памяти. Оно ведет себя в коде точно так же, как стандартный одномерный NumPy-массив.

🔘Строгая типизация и безопасность: Полная поддержка типов данных fp32, fp64, int32, int64, uint32 и uint64. Привычный API с методами append, extend и clear позволяет внедрить библиотеку как drop-in замену.

🛠Основные типы буферов в комплекте:

🔘OverwriteCircBuffer — оптимизирован для сценариев с высокой интенсивностью записи, где старые данные автоматически заменяются новыми.

🔘BlockingCircBuffer — потокобезопасный блокирующий буфер для многопоточных приложений (паттерн Producer/Consumer). Писатель засыпает, если буфер полон, а читатель ждет, если в буфере пусто.

🔘RunningMeanBuffer и RunningMeanSqBuffer — утилиты со встроенным O(1) расчетом среднего и среднеквадратичного значений с защитой от накопления погрешности округления (floating-point drift).

🔘IntegratedGatedBuffer — узкоспециализированный буфер для расчета интегральной стробированной громкости звука (по международному стандарту ITU-R BS.1770).

📦Установка:

pip install numcircbuf


#Python #Cython #NumPy #DataScience #SignalProcessing #TimeSeries #Performance #DevTools #OpenSource #Оптимизация

📱Ссылка на репозиторий:
https://github.com/basimali-ai/NumCircBuf
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍11
📱Runloom.

Runloom
- это библиотека для Python, которая позволяет запускать сотни тысяч задач одновременно, не усложняя при этом код.

Если говорить простыми словами: обычно, чтобы сделать программы в Python быстрыми и параллельными, разработчикам приходится переписывать весь проект под async и await. Runloom позволяет писать самый обычный, понятный код (без асинхронной «лапши»), но выполняет его так же быстро и эффективно, как язык Go (Golang).

❓В чём главная фишка.

🔘Без async и await: Вы пишете привычные функции, а библиотека сама незаметно переключает задачи в фоновом режиме, пока одна из них ждет ответа от сети или диска.

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

🔘Работа на всех ядрах: Идеально раскрывается на новых версиях Python (3.13+ и 3.14+ с отключенным GIL), позволяя честно загрузить процессор на 100%.

🔘Каналы как в Go: Позволяет удобно и безопасно передавать данные между параллельными процессами.

🔘Прокачка старого кода в 1 строчку: Функция runloom.monkey.patch() умеет на лету превращать стандартные «медленные» библиотеки (например, urllib или socket) в параллельные без переписывания вашего кода.

🔻Простой пример:

import threading
import runloom
from urllib.request import urlopen

# Делаем стандартные сетевые запросы параллельными
runloom.monkey.patch()

def download(url):
# Код выглядит так, будто он блокирует программу и ждет ответа...
# Но Runloom не дает ему зависнуть и скачивает всё одновременно!
body = urlopen(url).read()
print("Скачано байт:", len(body))

def main():
# Запускаем 64 скачивания параллельно
for _ in range(64):
runloom.fiber(download, "http://example.com")

# Распределяем работу на 8 ядер процессора
runloom.run(8, main)


📦Установка:

pip install runloom


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

#Python #Runloom #Performance #Async #Concurrency #Go #Golang #DevTools #OpenSource #Программирование

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

Shed Skin
- это экспериментальный транспайлер, который переводит программы на чистом Python 3 с неявной статической типизацией в оптимизированный код на C++.

На выходе инструмент может собирать как автономные исполняемые файлы, так и скомпилированные C++ модули расширения, которые можно импортировать в обычный Python-код в качестве ускоренных библиотек. В отличие от Cython, Shed Skin не требует ручного описания типов в C-стиле — он выводит их автоматически из логики программы.

🔹Производительность и возможности:

🔘Ускорение в 1–100 раз: На наборе из 80+ нетривиальных программ (>25 000 строк кода) прирост скорости относительно CPython составляет в среднем 20× (медианное значение — 12×). На вычислительных задачах (например, алгоритмах решета Эратосфена) Shed Skin опережает PyPy и соревнуется по скорости с Numba.

🔘Два режима компиляции: Сборка в автономный бинарник (shedskin build my_script) или в нативный модуль расширения для вызова из стандартного CPython.

🔘Управление памятью: Под капотом использует сборщик мусора Boehm GC, избавляя от ручного контроля выделения памяти в сгенерированном C++ коде.

⚠️Ограничения и компромиссы:

Shed Skin поддерживает только строго ограниченное подмножество возможностей языка Python:

🔘Неявная статическая типизация: Переменные не могут менять свой тип во время выполнения.

🔘Ограниченная стандартная библиотека: Поддерживается около 25 базовых модулей (среди них random, re, math, time), произвольные тяжелые внешние зависимости подключить нельзя.

🔘Синтаксические рамки: Не поддерживаются некоторые динамические конструкции языка (например, вложенные функции, произвольное число аргументов *args / **kwargs).

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

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

🔘Код автономен и не привязан к внешним C-расширениям.

🔘Вы хотите остаться на CPython и не переписывать логику вручную на C++, Rust или Cython.

💻Пример сборки:

В Linux / macOS:

shedskin build test
./build/test


В Windows:


shedskin build test
build\test.exe


#Python #Cpp #ShedSkin #Transpiler #Compiler #Performance #Optimization #OpenSource #DevTools #Algorithms

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

TonIO
- это многопоточный асинхронный рантайм для free-threaded Python (сборки без GIL), написанный на Rust поверх крейта mio и вдохновленный архитектурой Tokio, Trio и TinyIO.

В отличие от стандартного asyncio, чей цикл событий (event loop) жестко привязан к одному системному потоку, TonIO спроектирован под реалии современного многопоточного Python 3.13+ (PEP 703): рантайм автоматически распределяет и исполняет корутины параллельно на нескольких ядрах процессора.

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

🐱Два стиля синтаксиса (Coloring vs Uncolored):

🔘Модуль tonio.colored предоставляет привычный синтаксис async / await.

🔘Базовый модуль tonio позволяет писать асинхронный код через обычные генераторы и yield, полностью избавляя от проблемы «цветных функций».

✔️Rust-ядро на mio: Высокопроизводительный неблокирующий системный I/O (epoll, kqueue, IOCP) и планировщик задач прямо под капотом Python.

✔️Структурная конкурентность (Structured Concurrency):

🔘tonio.scope() гарантирует корректную отмену и сбор всех дочерних корутин при выходе из контекста или возникновении исключений.

🔘tonio.select() для конкурентных гонок задач (отменяет оставшиеся корутины при первом завершении).

✔️Синхронизация и MPMC-каналы:

🔘События Event и комбинируемые ожидатели Waiter через операторы пересечения и объединения (w1 & w2, w1 | w2).

🔘Lock, Semaphore, Barrier и каналы передачи сообщений (bounded и unbounded) с неблокирующими методами send_nowait / receive_nowait.

✔️Сетевой стек и системные примитивы:

🔘Высокоуровневые стримы для TCP, Unix Domain Sockets и TLS (open_tcp_stream, serve_tcp).

🔘Низкоуровневый модуль tonio.io для подключения любых файловых дескрипторов ОС к системному поллеру.

🔘Асинхронная файловая система tonio.fs и управление подпроцессами (run_process, open_process).

✔️Интеграция с Pytest: Поставляется с готовым плагином, маркером @pytest.mark.tonio и авто-режимом для тестирования асинхронного кода.

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

С классическим синтаксисом async / await:

import tonio.colored as tonio

async def fetch_data(task_id: int):
await tonio.sleep(0.5)
return f"Результат {task_id}"

@tonio.main
async def main():
# Параллельный запуск задач в пуле потоков рантайма
parallel = tonio.spawn(
fetch_data(1),
fetch_data(2)
)

extra = await fetch_data(3)
res1, res2 = await parallel

print([res1, res2, extra])

main()


С синтаксисом на чистом
yield (без async/await):

import tonio

def fetch_data(task_id: int):
yield tonio.sleep(0.5)
return f"Результат {task_id}"

@tonio.main
def main():
parallel = tonio.spawn(fetch_data(1), fetch_data(2))
extra = yield fetch_data(3)
res1, res2 = yield parallel
print([res1, res2, extra])

main()


⚠️ Важно: Проект находится в активной разработке (WIP), не совместим напрямую с объектами asyncio (для интеграций доступен проект-патчер TonIO-Monkey) и рассчитан исключительно на free-threaded Python без GIL.

✅Лицензия: BSD 3-Clause.

#Python #Rust #TonIO #Async #NoGIL #FreeThreaded #Tokio #Concurrency #Multithreading #Performance #DevTools #OpenSource

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

Fastlogging-rs
- это сверхбыстрый и универсальный кросс-язычный фреймворк для логирования, написанный на Rust и предоставляющий унифицированный API для Python, Rust, C/C++, Go, Java и C#.

Главная проблема традиционных логгеров (например, стандартного модуля logging в Python) — синхронный ввод-вывод, способный сильно просаживать производительность под высокой нагрузкой.

fastlogging-rs решает это архитектурно: вызовы логов абсолютно неблокирующие (non-blocking) и потокобезопасные, а сброс данных во внешние приемники происходит в фоновых потоках. В бенчмарках на запись в файл с ротацией он оказывается быстрее стандартного Python-логгера более чем в 100 раз (0.17 с против 35.2 с).

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

🔘Экстремальная производительность: Запись сообщений не тормозит основной поток приложения, пока не переполнится внутренняя очередь.

🔘Полноценная кросс-язычность: Единый согласованный API для Rust, Python (>=3.10 через PyO3), C / C++ (FFI/CXX), Go, Java (через FFM и JNI) и C#.

🔘Автоматический сбор из подпроцессов: Автоматически перенаправляет логи из дочерних процессов (multiprocessing / child processes) в основной процесс с поддержкой глубоких уровней вложенности.

🔘Богатый выбор приемников (Sinks / Writers):

✔️Консоль с поддержкой цветов;

✔️Файлы с автоматической ротацией и сжатием;

✔️TCP-клиент с аутентификацией и AES-шифрованием сетевых логов;

✔️Системные журналы: Syslog (Linux) и EventLog (Windows);

✔️Пользовательские функции обратного вызова (Callbacks).

🔘Гибкая конфигурация: Настраивается как программно через API, так и декларативно через файлы конфигурации (JSON, XML, YAML).

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

from fastlogging import Logging

# Инициализация и логирование
log = Logging()
log.info("Привет из fastlogging!")

# Корректное завершение фоновых потоков
log.shutdown(False)


#Fastlogging #Rust #Python #Logging #Performance #Backend #DevTools #Cpp #Golang #Java #OpenSource

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

TurboPython
- это опережающий (AOT) компилятор, транслирующий статически типизированный Python через современный C++23 напрямую в автономный нативный бинарник без интерпретатора, сборщика мусора и GIL.

В отличие от Cython, mypyc или Nuitka, сгенерированный код вообще не опирается на рантайм CPython и подсчет ссылок, а в отличие от Codon и Shed Skin — не использует сторонний сборщик мусора (GC). Памятью управляет строгая модель владения (Ownership) в стиле Rust, проверяемая прямо во время компиляции. При этом исходные файлы остаются синтаксически валидным кодом на Python, понятным привычным линтерам, IDE и кодинг-агентам.

🔹Главные особенности:

🔘Никакого CPython, GC и GIL: На выходе получается чистый нативный C++23-бинарник. Нет оверхеда на виртуальную машину, трассирующий сборщик мусора или Reference Counting, а для критических участков доступна директива @noalloc.

🔘Модель владения (Ownership Model): Каждое значение имеет ровно одного владельца (стековый фрейм, поле класса или контейнер). Передача владения оформляется явно через Own[T], а неявные копирования данных подсвечиваются компилятором еще до запуска программы.

🔘Настоящий параллелизм с проверкой типов: Многопоточный запуск (spawn) нативных потоков ОС без ограничений GIL. Компилятор на этапе сборки статически проверяет контракты Send и Sync, предотвращая состояние гонки (data races). Доступ к разделяемым ресурсам идет через знакомые примитивы: Arc[Mutex[T]], RwLock, атомики и каналы.

🔘Фиксированные типы и контроль переполнений: Введены нативные целочисленные типы (например, int32), литералы и функция len() по умолчанию 32-битные с проверкой переполнения на аппаратном уровне (ошибка вместо тихого заворачивания значения). Стандартный int остается длинной арифметикой произвольной точности.

🔘Полная интеграция с экосистемой C/C++: Легко линкуется с внешними C/C++ библиотеками (@native, @export(binding="C")), генерирует чистый C++ код с готовыми CMakeLists.txt и умеет компилироваться как в автономные бинарники, так и в нативные модули расширения для стандартного CPython.

💻Пример кода:

from dataclasses import dataclass
from tpy import Own, int32

@dataclass
class Stats:
count: int32
total: int32
longest: int32

# Функция передает владение объектом Stats вызывающей стороне
def measure(words: list[str]) -> Own[Stats]:
total, longest = 0, 0
for w in words:
total += len(w)
longest = max(longest, len(w))
return Stats(len(words), total, longest)

s = measure("the quick brown fox jumps over the lazy dog".split())
print(s.count, s.total, s.longest)


🚀Сборка и запуск:

Установка компилятора (требуется Python 3.12+ и Clang 19+ / GCC 13+):

# Установка с бандлом компилятора Zig
pip install "tpy-lang[bundled]"


Компиляция и запуск:


# Запуск через JIT-подобный вызов или REPL
tpy stats.py

# Сборка в автономный нативный бинарный файл
tpyc -b stats.py
./__tpyc__/stats.d/release/stats

# Просмотр сгенерированного чистого C++ кода
tpy --dump-code stats.py


📌Статус проекта: Ранняя разработка (pre-1.0). Поддерживаются Linux и macOS (для Windows рекомендуется WSL). Лицензия — Apache 2.0 with LLVM Exceptions (позволяет распространять собранные бинарники без лицензионных ограничений).

#TurboPython #Python #Cpp #Compiler #AOT #Performance #Rust #NoGIL #Multithreading #DevTools #OpenSource #SoftwareEngineering

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