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

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

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

Pandera
— проект от Union.ai, предоставляющий гибкий API для валидации данных в объектах, похожих на DataFrame, чтобы сделать обработку данных более читаемой и надежной.

🔹Что умеет Pandera:

🔘Определяйте схему данных один раз и используйте её для валидации разных типов DataFrame: pandas, polars, dask, modin, pyspark.

🔘Проверяйте типы и свойства колонок DataFrame или значения Series.

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

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

🔘Интегрируйте Pandera с вашими пайплайнами через декораторы функций.

🔘Определяйте модели DataFrame с помощью синтаксиса, похожего на pydantic, и проверяйте данные через аннотации типов.

🔘Создавайте данные из схем для тестирования на основе свойств с помощью pandas-структур.

🔘Выполняйте ленивую проверку, чтобы сразу видеть все ошибки после валидации.

🔘Интегрируйтесь с такими инструментами Python, как pydantic, fastapi и mypy.

#Python #DataValidation #Pandera #Pandas #DataScience #OpenSource #FastAPI #Pydantic

📱Ссылка на репозиторий:
https://github.com/unionai-oss/pandera
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡3👍3🔥2
📱VLM Run Hub.

VLM Run Hub — это обширный репозиторий предопределённых Pydantic-схем для извлечения структурированных данных из неструктурированных визуальных данных, таких как изображения, видео и документы.

❓Почему это важно?

Современные модели, такие как GPT-4o и Claude Vision, отлично работают с визуальными данными, но их сложно интегрировать в автоматизированные системы. Structured Outputs API позволяет получать строго типизированные и валидированные данные в Pydantic формате , устраняя необходимость сложного парсинга.

❓Что даёт VLM Run Hub?

🔘Готовые к использованию Pydantic-схемы для реальных индустриальных задач (финансы, медицина, медиа).

🔘Автоматическая валидация данных — чистота, точность и отсутствие ошибок.

🔘Типобезопасность — совместимость с mypy, pyright и другими инструментами.

🔘Гибкость — единые схемы можно использовать с разными VLM-провайдерами.

🔘Оптимизация под Visual ETL — превращение изображений и документов в структурированные данные.

🔹Каталог схем:

🔘Документы: выписки, счета, чеки, резюме, водительские удостоверения (US), коммунальные счета, W2-формы.

🔘Медицина: страховые карты.

🔘Ритейл: e-commerce описания товаров.

🔘Медиа: расшифровки новостей.

🔘Аэрокосмос: данные дистанционного зондирования.

#VLM #Pydantic #AI #DataExtraction #ML #Python #ComputerVision #StructuredData #Automation

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

Patito — это Python-библиотека, которая объединяет возможности Pydantic и Polars для удобной, строгой и типизированной работы с датафреймами.

Хочешь валидировать датафреймы так же удобно, как Pydantic-модели? Patito позволяет описывать схему данных с помощью аннотаций типов, генерировать валидные тестовые данные и легко превращать строки таблицы в полноценные Python-объекты.

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

🔘Валидация датафреймов с понятными ошибками.

🔘Генерация mock-данных для тестов.

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

🔘Автоматическое заполнение полей по выражениям (derive).

#python #patito #pydantic #polars #датасайенс #типизация #валидация #pytest #данные #тестирование

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

Tyro — это генератор CLI из аннотированного Python-кода.

Он автоматически превращает функции или классы (с @dataclass, pydantic, attrs) в удобный командный интерфейс.

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

🔘Использует стандартные Python-типы и аннотации.

🔘Поддерживает вложенные структуры, подкоманды, автокомплит.

🔘Работает с mypy, pyright, IDE и статической проверкой.

🔘Позволяет писать меньше кода, не теряя читаемости и гибкости.

✅Используется в ML и AI-проектах, включая Nerfstudio, CleanRL, SDFStudio и др.

#Tyro #Python #CLI #Dataclass #Pydantic #PythonTools #DevTools #OpenSource #TypeHints #Pyright #Mypy

📱Ссылка на репозиторий:
https://github.com/brentyi/tyro
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍21
📱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
📱Onlymaps.

Onlymaps
— лёгкая Python-библиотека (micro-ORM) для работы с базой данных через обычные SQL-запросы.

❓Что делает:

🔘Позволяет писать чистый SQL, при этом автоматически мапит результаты в Python-объекты.

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

🔘Типизация и валидация через Pydantic.

🔘Работает с PostgreSQL, MySQL, MariaDB, MS SQL Server и SQLite.

🔘Поддержка connection pooling для многопоточных приложений.

🔘Удобные обёртки для JSON и bulk-запросов.

🔘Простое управление транзакциями через контекстный менеджер.

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

from onlymaps import connect
from pydantic import BaseModel

class User(BaseModel):
name: str
age: int

with connect("postgresql://user:pass@localhost:5432/mydb") as db:
users: list[User] = db.fetch_many(User, "SELECT name, age FROM users")


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

🔘Можно использовать как обычные типы Python (tuple, dict) или модели Pydantic для маппинга.

🔘Контейнеры (tuple, list, set) для данных без имён колонок.

🔘Модели (dict, dataclass, BaseModel) для сохранения структуры и валидации.

🔘Полная поддержка транзакций и безопасное выполнение bulk-запросов.

#Python #ORM #SQL #Pydantic #PostgreSQL #MySQL #SQLite #AsyncPython #MicroORM #DatabaseTools

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

Typerform — это генератор типобезопасных CLI-интерфейсов, работающий на базе Pydantic и Prompt-Toolkit.

Он превращает ваши Pydantic-модели в профессиональные, интерактивные пошаговые CLI-визарды. Забудьте про написание скучных циклов ввода input() и ручную валидацию — теперь за пользовательский опыт отвечают ваши схемы данных!

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

🔘Zero Boilerplate: Нужна всего одна строчка кода, чтобы сгенерировать полноценный многошаговый мастер настройки.

🔘Типобезопасность: Инструмент автоматически подхватывает все ограничения из Pydantic (например, min_length, ge, EmailStr).

🔘Шаг назад (Backtracking): Ошиблись при вводе? Просто напишите :b или :back, чтобы вернуться к предыдущему полю и отредактировать его.

🔘Условная логика: Динамически скрывайте или показывайте поля в зависимости от ответов пользователя (через параметр when).

🔘Безопасность из коробки: Автоматическое скрытие ввода (звездочками) для полей SecretStr (идеально для паролей и API-ключей).

🔘Умное автодополнение: Нечеткий поиск (fuzzy search) и подсказки в реальном времени для типов Enum и Literal.

🔘Списки и коллекции: Встроенная поддержка List[T] — визард сам запустит цикл для добавления нескольких элементов.

🔘Гидратация: Умеет предзаполнять форму данными из переменных окружения или файлов конфигурации.

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

pip install pytypeform

from typing import Literal
from pydantic import BaseModel, Field
from typeform import form

class SetupConfig(BaseModel):
project_name: str = Field(description="Project Name", min_length=3)
environment: Literal["dev", "staging", "prod"] = Field(default="dev")

# Генерация визарда одной строкой!
config = form(SetupConfig, title="Project Setup")
print(config.model_dump())


#Python #Pydantic #CLI #Backend #DevTools #Programming #OpenSource

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

Mellea
- это библиотека для Python, которая позволяет создавать предсказуемые и надежные ИИ-приложения без гадания на кофейной гуще.

Мы все знаем, какое звено в любом ИИ-пайплайне самое нестабильное — это сам вызов LLM. Скрытые сбои, непредсказуемые ответы и полное отсутствие гарантий. Mellea предлагает заменить хрупкие промпты и капризных агентов на структурированные, жестко тестируемые рабочие процессы (workflows).

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

🔘Нативный структурированный вывод: Декоратор @generative превращает обычные функции с аннотациями типов в структурированные вызовы ИИ. Ваши докстринги автоматически становятся промптами, а тайп-хинты — схемами валидации. Схемы Pydantic форсируются прямо в момент генерации текста моделью.

🔘Проверка требований и самоисправление (Requirements & repair): Вы можете прикрепить к любому вызову условия на естественном языке. Mellea сама проверит результат выполнения и запустит автоматические повторные попытки (retries), если модель ошиблась.

🔘Умные стратегии сэмплинга: Нужна максимальная точность? Запустите генерацию несколько раз и выберите лучший результат, переключаясь между rejection sampling (выборка с отклонением), majority voting (голосование большинства) и другими стратегиями с помощью одного параметра.

🔘Мультиплатформенность: Из коробки поддерживаются Ollama, OpenAI, HuggingFace, WatsonX, LiteLLM и AWS Bedrock.

🔘Совместимость с MCP: Любую генеративную программу можно легко превратить в инструмент для экосистемы MCP (Model Context Protocol).

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

Вам больше не нужны громоздкие шаблоны и ручные парсеры ответов:

from pydantic import BaseModel
from mellea import generative, start_session

class UserProfile(BaseModel):
name: str
age: int

@generative
def extract_user(text: str) -> UserProfile:
"""Extract the user's name and age from the text."""

m = start_session()
user = extract_user(m, text="User log 42: Alice is 31 years old.")

print(user.name) # Выведет: Alice
print(user.age) # Выведет: 31 (гарантированно тип int)


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

Проект запущен командой IBM Research (Кембридж, Массачусетс) и распространяется под открытой лицензией Apache-2.0. Установить библиотеку со всеми расширениями можно одной командой:

uv pip install 'mellea[all]'


#Python #Mellea #AI #LLM #Pydantic #GenerativeAI #IBMResearch #OpenSource #DevTools #SoftwareEngineering

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

Pydantic Pint - это библиотека для Python, объединяющая возможности валидации данных из Pydantic с библиотекой для работы с физическими величинами и единицами измерения.

Если ваш проект связан с инженерией, научными вычислениями, геоданными или физикой, вам наверняка знакома проблема: Pydantic отлично проверяет типы и структуры, а Pint берет на себя математику над размерными величинами (метры, килограммы, секунды, градусы). По умолчанию они несовместимы, и разработчикам приходится писать кастомные сериализаторы. pydantic-pint устраняет этот разрыв с помощью чистого синтаксиса typing.Annotated.

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

🔘Строгая типизация размерностей: Позволяет задать целевую единицу измерения для поля модели через аннотацию PydanticPintQuantity("unit").

🔘Автоматическая конвертация: Если поле ожидает километры (km), а на вход передали строку "12 meters", библиотека проверит размерность и сама пересчитает значение в 0.012 kilometer. Ошибочные размерности (например, попытка передать секунды вместо метров) приведут к ошибке валидации.

🔘Полная поддержка сериализации: Корректно выгружается в структуры Python и JSON через стандартные методы Pydantic V2 (model_dump() и model_dump_json()).

🔘Современный синтаксис: Не требует наследования от специальных базовых классов — работает прямо внутри стандартного pydantic.BaseModel.

🔻Пример использования:
from typing import Annotated
from pydantic import BaseModel
from pydantic_pint import PydanticPintQuantity
from pint import Quantity

class Coordinates(BaseModel):
latitude: Annotated[Quantity, PydanticPintQuantity("deg")]
longitude: Annotated[Quantity, PydanticPintQuantity("deg")]
# Поле ожидает километры:
altitude: Annotated[Quantity, PydanticPintQuantity("km")]

# Передаем высоту в метрах — библиотека сконвертирует её сама:
coord = Coordinates(
latitude="39.905705 deg",
longitude="-75.166519 deg",
altitude="12 meters",
)

print(coord.altitude)
# -> <Quantity(0.012, 'kilometer')>

# Сериализация в JSON
print(coord.model_dump_json())
# -> {"latitude":"39.905705 degree","longitude":"-75.166519 degree","altitude":"0.012 kilometer"}


📦Установка:
pip install pydantic-pint


#Python #Pydantic #Pint #DataValidation #DataScience #Physics #Engineering #Backend #OpenSource #DevTools

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