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

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

Сайт: https://pythonomania.github.io/
Download Telegram
📱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
📱AuthTuna.

AuthTuna
— современный асинхронный фреймворк безопасности для Python.

✅Оптимизирован для FastAPI, но с ядром, независимым от фреймворка.

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

🔘Аутентификация и управление сессиями.

🔘RBAC (ролевая модель доступа).

🔘SSO (Google, GitHub и др.).

🔘MFA (многофакторная аутентификация).

🔘Гибкая настройка через .env, Secrets Manager или код.

🔘Проверка прав и ролей прямо в роутерах FastAPI.

🚀Быстрый старт:
pip install authtuna fastapi uvicorn[standard] asyncpg aiosqlite python-dotenv


🔻Простейший пример:
from fastapi import FastAPI, Depends
from authtuna.middlewares.session import DatabaseSessionMiddleware
from authtuna.integrations.fastapi_integration import get_current_user

app = FastAPI()
app.add_middleware(DatabaseSessionMiddleware)

@app.get("/me")
async def me(user=Depends(get_current_user)):
return {"id": user.id, "username": user.username}


#Python #FastAPI #Security #Auth #RBAC #SSO #MFA #Async #DevTools #OpenSource

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

holm
— это фреймворк для веб-разработки, который приносит опыт Next.js в мир Python.

Построен на FastAPI, htmy и FastHX — без сборки, без JS-зависимостей, только серверный рендеринг и чистый Python.

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

🔘Файловая маршрутизация как в Next.js.

🔘Компоненты с синтаксисом JSX (через htmy).

🔘Асинхронность во всём стеке.

🔘Поддержка JSON и HTML (SSR) API.

🔘Без JavaScript-зависимостей.

🔘Совместим со всем экосистемным FastAPI.

🔘Первая-классная интеграция с HTMX.

📦Установка:
pip install holm


#Python #FastAPI #Nextjs #HTMX #SSR #WebFramework #htmy #FastHX #DevTools

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

Air
— современный фреймворк, который объединяет FastAPI, Starlette и Pydantic, привнося в Python тот же комфорт, что Next.js дал JavaScript.

✅Создавай API и HTML-страницы в одном приложении — без лишнего кода, без лишней магии.

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

🔘Основан на FastAPI — простота и скорость.

🔘Air Tags — декларативное создание HTML прямо из Python.

🔘Полная совместимость с Jinja2.

🔘Поддержка HTMX для динамики без JavaScript-фреймворков.

🔘Валидация форм через Pydantic.

🔘Без сборок и зависимостей — чистый сервер-рендеринг.

🔘Расширяемость через экосистему пакетов.

📦Установка:
pip install -U air


#Python #FastAPI #WebFramework #HTMX #Jinja2 #Pydantic #AirFramework #WebDev #AsyncPython

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

Fastapi-voyager — это инструмент, который строит наглядную диаграмму всех роутов, схем и зависимостей вашего FastAPI-приложения.

Он помогает понять архитектуру, найти проблемы в связях данных, увидеть, какие модели используются эндпоинтами — и всё это в интерактивном веб-интерфейсе.

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

🔘Интерактивная карта API — визуализация всех маршрутов, моделей и их связей.

🔘Просмотр кода прямо из графа — двойной клик открывает исходник или файл в VSCode.

🔘Подсветка модулей — раскраска роутов и моделей по модулям (--module_color).

🔘Фокус-режим — показываются только связанные узлы.

🔘Поддержка Pydantic v2 — узлы и связи строятся на основе схем и зависимостей.

🔘Экспорт в DOT — генерация графа для Graphviz.

🔘Встраивание в FastAPI-проекты (app.mount('/voyager', create_voyager(...))).

🔘Архитектурный анализ — инструмент помогает выявлять неправильные зависимости и отношения между сущностями.

❓Для чего подходит fastapi-voyager:

🔘Архитектурные ревью.

🔘Аудит API.

🔘Отладка и рефакторинг внутренних сервисов.

🔘Учебные и демонстрационные проекты.

🔘Проекты с большим количеством схем и вложенных моделей.

✅Fastapi-voyager превращает FastAPI-приложение в красивую, понятную и интерактивную карту — идеальный инструмент для анализа и проектирования.

#FastAPI #Python #API #Visualization #DeveloperTools #Pydantic #Architecture #Graphviz #OpenSource #Backend

🔹Ссылка на репозиторий:
https://github.com/allmonday/fastapi-voyager
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
📱FastAPI and NiceGUI Full-Stack Template.

FastAPI + NiceGUI Full-Stack Template — это готовый шаблон для создания полноценных веб-приложений на Python.

🔹Если кратко:

Бэкенд на FastAPI + фронтенд на NiceGUI → и всё это пишется только на Python, без HTML, CSS и JavaScript.

❓Почему это круто:

🔘FastAPI — быстрый и современный фреймворк с валидацией через Pydantic и автодокументацией.

🔘NiceGUI — UI-фреймворк, который позволяет строить интерфейсы на Python, как будто вы пишете обычный скрипт.

🔘PostgreSQL в Docker — настроен и готов к работе.

🔘JWT-аутентификация из коробки.

🔘Чистая структура проекта — удобно развивать.

🔘Отлично подходит для демо, внутренних тулов и быстрых прототипов.

🔻Что включено:

🔘Backend на FastAPI.

🔘Frontend на NiceGUI.

🔘PostgreSQL + Docker Compose.

🔘SQLModel для работы с БД.

🔘JWT авторизация.

🔘Автогенерируемые Swagger/ReDoc.

🔘Готовый шаблон для мгновенного старта.

#FastAPI #NiceGUI #Python #FullStack #WebDev #Backend #Frontend #SQLModel #PostgreSQL #Docker #JWT #Uvicorn

📱Ссылка на репозиторий:
https://github.com/jaehyeon-kim/nicegui-fastapi-template
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍22
📱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
📱Svc-infra.

Svc-infra — это библиотека для FastAPI, которая упаковывает всю типовую backend-инфраструктуру (авторизацию, биллинг, фоновые задачи, вебхуки, кеширование) в готовые к использованию компоненты.

✅Вместо того чтобы каждый раз писать один и тот же код для аутентификации, работы с БД и очередями задач, вы просто импортируете нужные функции и фокусируетесь на бизнес-логике своего FastAPI-приложения.

❓Что внутри:

🔘Авторизация: JWT, сессии, OAuth/OIDC, MFA, API ключи.

🔘 Биллинг: Учет использования, подписки, счета, интеграция Stripe.

🔘БД: PostgreSQL + MongoDB, миграции, inbox/outbox паттерн.

🔘Фоновые задачи: Очереди, планировщик, повторы, DLQ.

🔘Вебхуки: Подписки, HMAC-подпись, автоповторы доставки.

🔘Кеш: Redis/память, декораторы, namespace'ы.

🔘Observability: Prometheus, Grafana дашборды, OTEL.

🔘Хранилище: S3, локальное, in-memory.

🔘Multi-tenancy: Изоляция тенантов.

🔘Rate Limiting: Ограничение по пользователю/эндпоинту.

#Python #FastAPI #Backend #API #WebDev #DevOps #SaaS #Microservices #Infrastructure #OpenSource #Coding #Programming #SoftwareDevelopment #CloudNative #ProductionReady

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

FastScheduler — это простой, лёгкий планировщик задач для Python с поддержкой async, учётом часовых поясов, cron‑выражениями и удобным дашбордом.

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

🔘Простое API: @scheduler.every(10).seconds, @scheduler.daily.at("09:00"), @scheduler.cron("*/15 * * * *") вешаются прямо на функции (sync или async).

🔘Богатый контроль: таймауты .timeout(30), ретраи .retries(5) с экспоненциальным backoff, отключение догоняющих запусков .no_catch_up(), pause/resume/cancel по ID или имени функции.

🔘Наблюдаемость: JSON‑персистентность (история, статистика, dead‑letter queue) и real‑time FastAPI‑дашборда с SSE, таблицей джобов, историей и вкладкой фейлов.

⚙️Как поставить и запустить:

🔘Установка:
базово: pip install fastscheduler.
с дашбордом: pip install fastscheduler[fastapi].
с cron: pip install fastscheduler[cron].
всё сразу: pip install fastscheduler[all].

🔘Минимальный пример:
  from fastscheduler import FastScheduler

scheduler = FastScheduler(quiet=True)

@scheduler.every(10).seconds
def task():
print("Task executed")

@scheduler.daily.at("14:30")
async def daily_task():
print("Daily task at 2:30 PM")

scheduler.start()


#FastScheduler #Python #Async #TaskScheduler #Cron #FastAPI #BackgroundJobs #DevTools #Monitoring #DeadLetterQueue

📱Ссылка на репозиторий:
https://github.com/MichielMe/fastscheduler
Please open Telegram to view this post
VIEW IN TELEGRAM
12⚡1👍1
📱Violit.

Violit — это высокопроизводительный Python‑фреймворк для UI, вдохновлённый Streamlit, но с O(1)‑обновлением состояния без полного перезапуска скрипта и с режимом десктоп‑приложения.

🔹Основная идея:

🔘Архитектура Zero Rerun: при взаимодействии обновляются только зависящие от состояния компоненты, а не весь скрипт целиком, что даёт «реактивность как в React» без мерцаний и перерасхода ресурсов.

🔘API почти как у Streamlit: app.write, app.button, app.metric, app.columns и т.п., плюс сигнал‑based app.state(...), так что миграция со Streamlit занимает минуты.

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

🔘Режимы работы:
✔️WebSocket (по умолчанию) для ultra‑low latency и real‑time broadcasting.
✔️Lite (HTTP/HTMX) для тысяч одновременных пользователей.

🔘Desktop Mode (--native --splash) через pywebview: превращает приложение в настольное без Electron и Node.js. [github](https://github.com/violit-dev/violit)

🔹Темы и UI:

🔘Встроено 30+ премиум‑тем (dark, light, tech, professional), переключаются одной строкой App(theme='cyberpunk', ...) или app.set_theme('ocean'), без верстки и CSS.

🔘Под капотом используются FastAPI, Shoelace‑компоненты, Plotly.js и AG‑Grid для таблиц и графиков.

🔻Установка и запуск:

🔘Установка:
  pip install violit


🔘Пример:
  import violit as vl

app = vl.App(title="Hello Violit", theme="ocean")
count = app.state(0)

app.button("Increase", on_click=lambda: count.set(count.value + 1))
app.write("Count:", count)

app.run()

Скрипт выполняется один раз, дальше всё держится на реактивном состоянии.

#Violit #Python #Streamlit #WebFramework #FastAPI #ReactiveUI #ZeroRerun #Dashboard #DataApps #DesktopApp

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

sprint-dash — это лёгкий спринт‑дашборд для Gitea на FastAPI + HTMX + SQLite: Kanban‑доска, backlog, burndown, зависимости, Woodpecker CI‑статус — без JS‑фреймворков и билда.

🔹Функции:

🔘Gitea read‑only: метаданные issues из API (кэш 60с), спринты в локальном SQLite.

🔘Drag‑and‑drop Kanban, live‑поиск, эпики, carry‑over незавершённых задач.

🔘CLI sd-cli: sd-cli sprint create 48 --start 2026-03-09 --end 2026-03-23.

🔻Старт:

git clone https://github.com/simoninglis/sprint-dash.git
uv sync
cp .env.example .env # GITEA_URL + token
uv run uvicorn app.main:app --reload


Docker: docker run -p 8080:8080 --env-file .env sprint-dash

#python #gitea #fastapi #htmx #sprint #dashboard #sprintrack

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

TurboAPI — быстрая замена FastAPI: Zig‑сервер ускоряет API в 10–14 раз (140k запросов/с без кэша), меняешь 1 строку импорта — код работает как раньше.

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

🔘Полная совместимость: роуты, Depends, OAuth2, модели (dhi вместо pydantic).

🔘Zero‑copy ответы, Zig‑валидация JSON до Python (экономия GIL).

🔘HTTP+БД: 70–260k rps vs FastAPI 3–9k.

🔘Кэш ответов/БД, async handlers, Native FFI (C/Zig без Python).

🔻**Старт:*

from turboapi import TurboAPI as FastAPI
app = TurboAPI()
@app.get("/") def hi(): return {"ok": True}
app.run()


#python #FastAPI #API #Zig #TurboAPI

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

PyWry — это
мощный кроссплатформенный рендеринг-движок и UI-тулкит для Python, который позволяет создавать интерактивные приложения с одним и тем же кодом для трех разных сред:

🔘Нативное окно — использует встроенный веб-просмотрщик ОС (webview) через PyTauri. Никакого тяжеловесного Electron или Qt, полная свобода HTML/CSS/JS.

🔘Jupyter виджет — работает в JupyterLab, VS Code и Colab благодаря связке anywidget + FastAPI + WebSocket.

🔘Вкладка браузера — запускается как FastAPI-сервер с поддержкой Redis для горизонтального масштабирования.

❗️Главный принцип: "Создай один раз, запускай где угодно". Вы можете быстро собрать прототип приложения для анализа данных прямо в Jupyter Notebook, затем развернуть его как веб-приложение, а в конце — скомпилировать в легкий и безопасный исполняемый файл .exe/.app (через PyInstaller).

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

🔘Богатый UI из коробки: Кнопки, селекты, ползунки, чекбоксы, модальные окна — всё на базе Pydantic-моделей.

🔘Двусторонние события: Легко связывайте Python и JavaScript через app.emit() и app.on().

🔘Интеграция с графиками: Нативная поддержка Pandas DataFrame (через AgGrid), Plotly и мощных графиков TradingView.

🔘AI-Чат: Встроенный виджет чата с поддержкой провайдеров (OpenAI, Anthropic, Magentic) для создания AI-агентов с собственным UI.

🔘MCP (Model Context Protocol): Серверная поддержка для управления виджетами и дашбордами прямо из AI-клиентов (например, Claude Desktop или Cursor).

🔧Установка:
pip install pywry

Быстрый старт (Нативный UI):
from pywry import PyWry
app = PyWry()
app.show("<h1>Hello World!</h1>")
app.block()


#Python #UI #PyWry #DataScience #WebDev #FastAPI #Jupyter #DevTools #OpenSource

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

Fstache -
это быстрый движок шаблонизации Mustache для Python 3.12+, созданный без единой сторонней зависимости (dependency-free).

Инструмент разработан специально для серверной веб-разработки в стиле HTML-over-the-wire (в связке с HTMX, Alpine.js и Tailwind CSS). Когда сервер рендерит готовую HTML-разметку фрагментами или целиком, скорость шаблонизатора становится критически важной — особенно на бюджетных VPS. Fstache решает эту задачу за счет глубокой оптимизации и предварительной компиляции компонентов.

❓Почему Fstache.

🔘Высокая скорость: По результатам бенчмарков рендерит страницы в 3.1–3.5 раза быстрее, чем популярные аналоги (Chevron, mstache, Pystache).

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

🔘Поддержка потоковой отдачи (Streaming): Генерация возвращает чанки (iter_chunks()), что позволяет передавать готовый HTML в браузер частями через StreamingResponse в Starlette, FastAPI или Flask.

🔘Удобная работа с данными: В качестве контекста можно передавать обычные словари Python, объекты, датаклассы, списки и функции (callables).

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

Установка:

pip install fstache


Использование в коде:

import fstache

# Создаем рендерер для продакшена (шаблоны предзагружаются один раз)
render = fstache.create_prod_renderer("./templates")

# Рендерим страницу
result = render("pages/home.mustache", {"name": "Ада"})

# Получаем результат в виде строки или байтов
print(result.to_string())


Библиотека предоставляет готовые пресеты для разных этапов разработки:

🔘create_dev_renderer() — подхватывает изменения файлов на лету без перезапуска сервера.

🔘create_test_renderer() — строго отлавливает пропущенные переменные и шаблоны во время прогона тестов.

🔘create_prod_renderer() — обеспечивает максимальную скорость и стабильность в продакшене.

#Python #Mustache #HTMX #WebDev #Backend #FastAPI #Flask #Starlette #DevTools #OpenSource

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

Envgap
- это диагностическая консольная утилита для Python-проектов, которая находит расхождения и рассинхрон между файлами .env, .env.example, переменными окружения в shell и вызовами в коде (os.environ, os.getenv или Pydantic BaseSettings).

Утилита не загружает ваши конфигурации в рантайм приложения. Её главная задача — показать, почему переменная окружения работает на вашей локальной машине, но внезапно вызывает сбой в CI/CD, внутри Docker-контейнера или на ПК другого разработчика.

❓Зачем нужен envgap.

🔘Поиск опечаток: Легко находит несоответствия в именах (например, DB_URL вместо DATABASE_URL).

🔘Контроль документации: Подсвечивает устаревшие или неполные файлы .env.example, в которых забыли указать новые переменные.

🔘Детектор секретов-заглушек: Находит оставленные в конфигах тестовые значения вроде changeme, todo или your-key-here.

🔘Поддержка Pydantic и FastAPI: Распознает поля BaseSettings, алиасы, префиксы и дефолтные значения.

🔘Простая проверка для CI/CD: Позволяет внедрить легкий автоматический аудит конфигураций без подключения сложных фреймворков.

🔻Пример работы.
Если в коде приложения указано:

import os
DATABASE_URL = os.environ["DATABASE_URL"]


А в файле .env прописано DB_URL=postgres://localhost/app, утилита покажет четкий диагноз:
DATABASE_URL отсутствует в .env (ошибка).
DB_URL в .env может быть опечаткой для DATABASE_URL (предложение переименовать).

🚀Установка и запуск.

Установка через pip:

pip install envgap


Запуск проверки в текущем проекте:

envgap check


Использование в CI пайплайнах (строгий режим с выходом с кодом 1 при предупреждениях):

envgap check --ci


#Python #DevTools #FastAPI #Docker #CICD #Dotenv #Pydantic #Backend #OpenSource #Debugging

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

Citry
- это строго типизированный фронтенд-фреймворк для Python, объединяющий серверные события и Alpine.js для создания реактивных веб-интерфейсов без необходимости вести отдельный frontend-проект на JavaScript.

Архитектура проекта вдохновлена идеями Vue и Laravel Livewire: один Python-компонент инкапсулирует HTML-разметку, стили CSS, логику браузера, серверные обработчики событий и переводы интерфейса.

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

🔘Строгая типизация (Full Typing): Входные параметры компонентов валидируются через аннотации типов Python (Kwargs). Опечатки в свойствах или пропущенные поля отлавливаются на этапе статического анализа, а метод template_data() изолирует контекст, доступный шаблону.

🔘Реактивность без тяжелого JS-стека: Бесшовная связка с Alpine.js и серверными событиями (Server Events) позволяет обновлять части DOM-дерева на лету прямо из Python-кода без сборщиков Webpack/Vite.

🔘HTML-подобная композиция: Компоненты вкладываются друг в друга через наглядные теги <c-ComponentName>, а атрибуты с префиксом c- вычисляют Python-выражения (например, c-messages="user.inbox").

🔘Фреймворк-агностик: Легко монтируется в существующие бэкенды на FastAPI, Django, Flask, Starlette, а также в любые чистые ASGI- и WSGI-приложения.

🔘Развитая экосистема разработки:

✔️Официальное расширение для VS Code с автодополнением, диагностикой и подсветкой синтаксиса шаблонов.

✔️Встроенный CLI-анализатор (citry check --static).

✔️Библиотека готовых доступных UI-компонентов (citry-ui) — диалоги, формы, навигация и таблицы.

💻Пример компонента:
from citry import Component

class Welcome(Component):
class Kwargs:
name: str
messages: list[str]

def template_data(self, kwargs, slots):
return {
"name": kwargs.name,
"messages": kwargs.messages,
}

template = """
<section class="welcome">
<h1>С возвращением, {{ name }}!</h1>
<ul>
<li c-for="message in messages">{{ message }}</li>
<li c-empty>Новых сообщений нет.</li>
</ul>
</section>
"""

css = """
.welcome { border-top: 3px solid #2563eb; }
"""

# Рендеринг компонента в HTML-строку
html = str(Welcome(name="Алексей", messages=["Сборка завершена", "Отчет готов"]))


📦Установка:
pip install citry
# или через uv:
uv add citry


✅Фреймворк поддерживает Python от 3.10 до 3.14 и распространяется под свободной лицензией MIT.

#Citry #Python #Frontend #Fullstack #FastAPI #Django #Flask #AlpineJS #Livewire #WebDev #OpenSource #DevTools

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