Библиотека питониста | Python, Django, Flask
40.1K subscribers
2.85K photos
79 videos
51 files
4.44K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.iss.one/proglibrary/9197

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
📱 Новости и релизы Python‑пакетов за последние 7 дней

📦 Свежие релизы пакетов
pydantic-ai 1.0.0 — фреймворк-обёртка для использования Pydantic вместе с LLM.
lancedb 0.25.0 — embedded-движок для мультимодального поиска.
graphiti-core 0.20.x — библиотека для построения временных графов.
torchao 0.13.0 — инструменты оптимизации GPU-моделей.
dag-factory 1.0.0 — генерация Airflow DAG-ов из YAML.
certbot-dns-cloudflare 5.0.0 — плагин DNS-аутентификации для Certbot.
pyrefly 0.31.0 — быстрый type checker на Rust.
fastexcel 0.15.x — быстрый Excel reader на Rust.
pyexasol 1.0.0 — Python-драйвер для Exasol с расширенными функциями.
trl 0.22.x — обучение трансформеров с подкреплением.
inference-cli 0.54.x — простой деплой CV-моделей с Roboflow.
sparkmeasure 0.26.0 — API для анализа производительности Spark.
tokenizers 0.22.0 — быстрые токенайзеры для продакшна и ресерча.

📚 Полезные статьи и материалы
Что с Python? Меньше производительности, никакого сахара и больше багов
Python и множества: генераторы, которые делают код чище
Почему асинхронный Python не такой популярный?
Самые популярные Python-фреймворки и библиотеки 2025 года
Особенности Python, о которых вас точно спросят на собеседовании
Самый быстрый способ читать Excel в Python
Быстрый Django: всё о производительности
Как НЕ нужно писать автотесты на Python
Обзор UDTF в PySpark

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤩1
⚡️ Будь как этот гений с картинки — предлагай свои условия работодателю, а не наоборот!

Кто нужен?

Senior ML-Engineer с опытом работы более 6 месяцев в FAANG компаниях. Требование: разработать кросс-платформенное приложение-трекер зарплат с AI-распознаванием вакансий по резюме.


Но если вы пока джун — я бы предложил:

- Full-time контракт: 180к/мес после курса + опцион на карьеру в топ-компаниях

- Либо фикс за проект: стань ML-инженером за 39к вместо 44к с промокодом LASTCALL

🔗 Старт 9 сентября
👍4🤩1
Иногда реально ощущение, что нас держат в Матрице.

Большинство сидит, читает статьи про ML, смотрит ролики «как это работает» — и всё.

Сегодня последний день промокода Lastcall (−5000 ₽).
Уже завтра стартует первый вебинар по Машинному обучению — полный набор для выхода из Матрицы.

Кто готов вырваться из симуляции и ворваться в сезон найма?

👾 — я уже в команде Нео
👍 — хочу красную таблетку
🤔 — пока думаю, но интересно

👉 Забронируй место сейчас
🌚32
This media is not supported in your browser
VIEW IN TELEGRAM
💾 RecoverPy — интерактивное восстановление данных на Linux

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

Особенности:
Восстановление удалённых и перезаписанных файлов
Поиск содержимого файлов по строке, даже в бинарных файлах
Совместимость со всеми файловыми системами Linux
Быстро, использует мощь стандартных утилит Linux (grep, dd, lsblk)

📱 Репозиторий

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92
🐍 Python 3.14+: новый SyntaxWarning про return в finally

В Python 3.14 появился свежий ворнинг, связанный с тем, что в блоках finally нельзя (и не стоит) использовать:
return
break
continue

Пример:
import random

def d6() -> int:
try:
return random.randint(1, 6)
finally:
return 4 # всегда перезапишет результат!


Теперь при запуске:
SyntaxWarning: 'return' in a 'finally' block


❗️ Проблема в том, что return внутри finally переопределяет любое предыдущее значение — то есть в примере выше кубик всегда возвращает 4, даже если генератор случайных чисел сработал корректно.

Решение: вынести return из finally, например:
def d6() -> int:
try:
return random.randint(1, 6)
except Exception:
return 4 # fallback


А ещё лучше — просто:
def d6() -> int:
return random.randint(1, 6)


👉 Идея ворнинга (PEP 765) в том, чтобы спасти разработчиков от коварных багов и неожиданных перезаписей return/break/continue внутри finally.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍183🤔3
⚡️ Фоновая обработка задач в Python с Celery и RabbitMQ

В современных приложениях важно уметь запускать фоновые задачи:
— регулярные джобы (очистка данных, отчёты),
— долгие вычисления,
— асинхронные уведомления или рассылки.

Для этого в Python чаще всего используют Celery и брокер сообщений, например RabbitMQ.

Почему Celery:
➡️ Один из самых популярных task-queue фреймворков в Python.
➡️ Легко интегрируется с Django, Flask и любыми Python-проектами.
➡️ Использует понятные концепции: декораторы для задач, питоновские структуры данных для сообщений.
➡️ Масштабируется до тысяч задач в секунду.

Почему RabbitMQ:
➡️ Проверенный брокер сообщений.
➡️ Поддержка сложной маршрутизации (exchanges, queues).
➡️ Гарантии доставки (ack, persistence).
➡️ Кросс-языковая совместимость (AMQP, MQTT, STOMP).

Пример приложения: сервис Slack-уведомлений о дожде:
🟠OpenWeatherMap API → получаем прогноз.
🟠GitHub API → используем как простую JSON-базу для защиты от дубликатов.
🟠Slack API → отправляем уведомления.
🟠Celery + RabbitMQ → автоматический запуск задачи каждый день в 12:00.

🔗 Полный гайд с кодом: https://clc.to/Bl_Rww

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍2
🐍 Python 3.14: три маленькие, но очень полезные фичи

Все говорят про free-threading, мульти-интерпретаторы и новый REPL в Python 3.14. Но как всегда, в релизе есть и «мелочи», которые могут реально облегчить жизнь.

Вот три из них:

1️⃣ `contextvars.Token` теперь контекстный менеджер

Больше не нужно вручную ресетить ContextVar через токены. Теперь всё лаконично:
from contextvars import ContextVar

A = ContextVar("A")

with A.set("val"):
...


2️⃣ `functools.Placeholder` для `partial`

Теперь можно легко фиксировать позиционные аргументы без костылей:
from functools import partial, Placeholder

def div(a, b, /): ...
div_by_2 = partial(div, Placeholder, 2)

div_by_2(10) # 5


Больше не нужны лямбды или лишние функции.

3️⃣ Поддержка UUID v6, v7 и v8

Особенно интересен UUID v7: он сочетает случайность с возможностью сортировки по времени:
from uuid import uuid7
uuid7() < uuid7() # сортируется хронологически


Это упрощает работу с ключами в БД: и уникальность, и порядок в одном флаконе.

Python 3.14 снова доказывает: полезные фичи бывают не только «громкими», но и тихими, но именно они делают повседневный код проще.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍82