Библиотека питониста | Python, Django, Flask

Логотип телеграм канала @pyproglib — Библиотека питониста | Python, Django, Flask
Актуальные темы из канала:
Розыгрыш
Развлекалово
Bust
Свежак
Next
All tags
Адрес канала: @pyproglib
Активный
Категории: Технологии , Образование
Язык: Русский
Страна: Россия
Количество подписчиков: 38.93K
Описание канала:

Все самое полезное для питониста в одном канале.
Список наших каналов: https://t.me/proglibrary/9197
Для обратной связи: @proglibrary_feeedback_bot
По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
#WXSSA

Рейтинги и Отзывы

3.33

3 отзыва

Оценить канал pyproglib и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

1

4 звезд

1

3 звезд

0

2 звезд

0

1 звезд

1


Последние сообщения

2 дня назад
Завтра стартуем: курс по разработке ИИ-агентов на Python

Хватит писать однотипные скрипты — начните проектировать автономные системы. Мы разберём создание мультиагентных связок на CrewAI, стейт-менеджмент в LangGraph и интеграцию агентов с API и базами данных.

Успейте занять место до начала занятий
1.33K views15:08
Подробнее
Поделиться:
Открыть/Комментировать
2 дня назад
Python новости за последние 7 дней

Flask в 2025: итоги года и состояние экосистемы
Жив ли Flask в эпоху FastAPI? Короткий ответ — да. Длинный — экосистема стала спокойнее, взрослее и менее хайповой.

Claude Code в 2026: гайд для тех, кто ещё пишет код руками
Немного провокационный, но полезный материал о том, как ИИ меняет процесс разработки. После прочтения хочется либо уволиться, либо автоматизировать всё подряд.

CPython — сборка мусора изнутри
Для тех, кто любит знать, что именно происходит под капотом.

Собираем LLM-агента на Python
Практический гайд по созданию AI-агента без лишней теории.

Pandas 3.0 — релиз
21 января 2026 вышел pandas 3.0 — большой апдейт с важными архитектурными изменениями. Обновляться стоит, но сначала лучше прочитать, что именно поменяли, чтобы потом не удивляться внезапным багам.

Навигация: Вакансии • Задачи • Собесы

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

#свежак
1.41K views14:21
Подробнее
Поделиться:
Открыть/Комментировать
3 дня назад
Напоминаем про наш полный курс «Самоучитель по Python для начинающих»

Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!

Часть 1: Особенности, сферы применения, установка, онлайн IDE
Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
Часть 3: Типы данных: преобразование и базовые операции
Часть 4: Методы работы со строками
Часть 5: Методы работы со списками и списковыми включениями
Часть 6: Методы работы со словарями и генераторами словарей
Часть 7: Методы работы с кортежами
Часть 8: Методы работы со множествами
Часть 9: Особенности цикла for
Часть 10: Условный цикл while
Часть 11: Функции с позиционными и именованными аргументами
Часть 12: Анонимные функции
Часть 13: Рекурсивные функции
Часть 14: Функции высшего порядка, замыкания и декораторы
Часть 15: Методы работы с файлами и файловой системой
Часть 16: Регулярные выражения
Часть 17: Основы скрапинга и парсинга
Часть 18: Основы ООП – инкапсуляция и наследование
Часть 19: Основы ООП – абстракция и полиморфизм
Часть 20: Графический интерфейс на Tkinter
Часть 21: Основы разработки игр на Pygame
Часть 22: Основы работы с SQLite
Часть 23: Основы веб-разработки на Flask
Часть 24: Основы работы с NumPy
Часть 25: Основы анализа данных с Pandas
1.81K views20:02
Подробнее
Поделиться:
Открыть/Комментировать
3 дня назад
Бенчмарк Python API фреймворков: FastAPI vs Django vs Litestar

Свежий бенчмарк сравнивает основные Python API-фреймворки на реальных PostgreSQL-нагрузках, а не на синтетическом JSON. Сложные запросы, вложенные связи, корректный eager loading для каждого стека — всё как в проде.

Главный вывод довольно отрезвляющий:
разница в производительности схлопывается, как только появляется база данных.
Если на простом JSON разброс достигает ~20×, то на пагинации это уже ~1.7×, а на сложных запросах — всего ~1.3×.

При правильно оптимизированных запросах FastAPI, Django (DRF, Ninja, Bolt) и Litestar показывают почти одинаковые результаты. Бутылочное горлышко — Database I/O, а не сам фреймворк.

Тесты запускались в изолированных Docker-контейнерах с жёсткими лимитами по CPU и памяти, на разных продакшен-серверах (Uvicorn, Granian, Gunicorn). Это честное сравнение именно архитектурных различий, а не случайных настроек.

Bottom line простой:
для database-heavy API имеет смысл тратить время на оптимизацию запросов и моделей данных, а не на бесконечный выбор «самого быстрого» фреймворка — при нормальном коде они все почти равны.

Код, цифры и воспроизводимый сетап: https://clc.to/D47EDw

Навигация: Вакансии • Задачи • Собесы

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

#буст
1.76K views18:36
Подробнее
Поделиться:
Открыть/Комментировать
3 дня назад
Скрипты копятся, а ты всё ещё вручную «жаришь» каждый вызов библиотеки?

Это работа в забегаловке. Настоящий Шеф не пишет однотипный код вечно — он проектирует Систему.

В понедельник, 26 января, стартует интенсив по разработке ИИ-агентов на Python. Мы научим создавать автономные решения, которые закроют бэклог, пока ты занимаешься архитектурой.

В программе:

— мультиагентные системы в CrewAI: делегирование задач и автоматическое ревью;
— сложная логика в LangGraph: управление состоянием и работа с графами;
— tool use интеграция: подключение Python-агентов к твоим БД и внешним сервисам.

Записаться на курс
1.87K views15:02
Подробнее
Поделиться:
Открыть/Комментировать
4 дня назад
Библиотека питониста

#развлекалово
2.06K views18:10
Подробнее
Поделиться:
Открыть/Комментировать
4 дня назад
PyTest: как параметризовать тесты с исключениями

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

Делать отдельный тест под каждый кейс — не всегда разумно.

Для этого удобно комбинировать pytest.mark.parametrize с contextlib.nullcontext:

from contextlib import nullcontext as does_not_raise
import pytest
from pytest import raises


@pytest.mark.parametrize(
["x", "y", "expectation"],
[
(3, 2, does_not_raise()),
(0, 1, does_not_raise()),
(1, 0, raises(ZeroDivisionError)),
(1, "0", raises(TypeError)),
],
)
def test_division(x, y, expectation):
with expectation:
x / y


Подход простой:
если исключения не ожидается используется nullcontext
если ожидается — pytest.raises(...)
все сценарии живут в одном параметризованном тесте

Метод описан в документации PyTest и обсуждался на StackOverflow, но на практике о нём знают не все.

Хорошо подходит, когда:
проверки на исключения однотипные
не хочется раздувать тестовый набор
нужно аккуратно покрыть все ветки кода

nullcontext — не самая очевидная часть стандартной библиотеки, но алиас does_not_raise делает намерение теста понятным с первого взгляда.

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.17K views13:46
Подробнее
Поделиться:
Открыть/Комментировать
4 дня назад
Пятница, 19:00. Худшее время для деплоя, но идеальное, чтобы научить твой Python-скрипт извлекать знания из PDF и скармливать их нейронке.

Хватит скармливать LLM гигантские простыни текста в промптах. Пора строить нормальный `Python`-пайплайн с использованием RAG.

На открытом уроке мы разберём:

— использование LangChain и LlamaIndex для связки документов и модели;
— работу с векторными базами данных для быстрого поиска контекста;
— написание кода, который заставит бота отвечать на вопросы по вашим файлам.

Один из спикеров — Алексей Яндутов, ML-инженер в поиске Яндекса.

Это вводное занятие курса «Разработка AI-агентов». Без воды и маркетинговых обещаний. Только код.

Записаться на урок
2.19K views11:04
Подробнее
Поделиться:
Открыть/Комментировать
5 дней назад
LFM2.5-1.2B-Thinking — бронирует билеты сам

Небольшой Python CLI, который ищет и бронирует авиабилеты через tool calling и reasoning.

Просто пишешь: «найди самый дешёвый рейс из Барселоны в Белград на 2026-01-31» — и агент сам разбивает задачу на шаги и решает её.

Проект — демо возможностей LFM2.5-1.2B-Thinking: маленькой, но умной модели, заточенной под логические задачи, цепочки действий и вызов инструментов.

И да — она может работать на edge-устройствах.

Проект

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.46K views18:38
Подробнее
Поделиться:
Открыть/Комментировать
5 дней назад
Релиз: Pandas 3.0

21 января 2026 вышел pandas 3.0.

Вот что реально стоит знать

Строки теперь — не object

Раньше строки в pandas = object.
Туда можно было засунуть что угодно. Медленно. Неявно. Больно.

Теперь по умолчанию:

pd.Series(["a", "b"]).dtype
# str


Что это даёт:
— dtype только для строк
— единая семантика пропусков (`NaN`)
— лучше память и производительность

Это давно назревшее исправление архитектурной ошибки.

Copy-on-Write: конец адскому chained assignment

Главное правило pandas 3.0: любой срез — ведёт себя как копия:

df2 = df[df.a > 0]
df2["b"] = 10 # больше НИКОГДА не меняет df


Что изменилось:
— SettingWithCopyWarning — удалён
— «а тут view или copy?» — больше нет
— модифицируешь объект → модифицируй его напрямую

Под капотом pandas всё ещё оптимизирует память. Но API теперь честный.

pd.col() выражения без лямбд

Было:

df.assign(c=lambda df: df.a + df.b)


Стало:

df.assign(c=pd.col("a") + pd.col("b"))


Arrow C Interface — zero-copy будущее

Pandas теперь:
— умеет принимать Arrow-таблицы
— умеет отдавать их без копирования


df.__arrow_c_stream__()


Новый порядок депрекейтов

Теперь всё прозрачно:
— Pandas4Warning → сломается в 4.0
— Pandas5Warning → сломается в 5.0

Совет: обновитесь сначала до 2.3, уберите warning’и — и только потом идите в 3.0.

Ссылка на релиз

Навигация: Вакансии • Задачи • Собесы

Библиотека дата-сайентиста

#буст
2.07K views11:10
👍 10 4
Подробнее
Поделиться:
Открыть/Комментировать
6 дней назад
Топ-вакансий для питонистов за неделю

Если вы обещали себе найти новую работу после праздников — вот тот самый «после»

Python Developer — от 3 000 $, удалёнка

Python developer (SRE Agent), удалёнка

LLM Engineer (Python, RAG) — от 200 000 ₽, удалёнка

Еще больше топовых вакансий — в нашем канале Python jobs

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.47K views18:46
Подробнее
Поделиться:
Открыть/Комментировать
6 дней назад
Как уменьшить память и ускорить доступ к атрибутам в Python-классах

По умолчанию каждый объект в Python хранит атрибуты в __dict__.

Гибко — да. Эффективно — не всегда:

class Point:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z

p = Point(1, 2, 3)
print(p.__dict__)
# {'x': 1, 'y': 2, 'z': 3}


У каждого экземпляра — свой словарь. Добавили p.w = 4 — словарь вырос:

p.w = 4
print(p.__dict__)
# {'x': 1, 'y': 2, 'z': 3, 'w': 4}


Но если структура объекта фиксированная, мы платим лишнюю цену за эту гибкость.

Решение: __slots__:

class Point:
__slots__ = ('x', 'y', 'z')

def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z


Поведение меняется:

p = Point(1, 2, 3)
p.x = 10 # ок
p.w = 4 # AttributeError


И главное:

p.__dict__
# AttributeError: object has no attribute '__dict__'


Что меняется:
больше нельзя добавлять произвольные атрибуты
нет __dict__
меньше памяти на каждый объект
чуть быстрее доступ к атрибутам

Python хранит значения в компактной структуре, а не в словаре.

Используйте __slots__, если:
у вас тысячи / миллионы объектов
структура объектов фиксированная
важны память и производительность

Не стоит, если:
объект — «мешок с атрибутами»
нужна динамика и расширяемость

Статья с примерами

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.34K viewsedited  11:59
Подробнее
Поделиться:
Открыть/Комментировать
21 янв
Создаём умного ассистента на Python: RAG vs Fine-tuning

23 января в 19:00 на открытом уроке к курсу «Разработка ИИ агентов» разберём, как научить LLM работать с вашим кодом и документацией. Обсудим, когда достаточно RAG, а когда не обойтись без дообучения модели, чтобы она понимала контекст проекта.

Занятие ведёт Игорь Стурейко, тимлид в «Газпроме» и эксперт с 20-летним опытом в ML. Игорь подготовил видеосообщение о том, как Python-разработчику перейти от написания простых скриптов к созданию сложных автономных агентов.

Технологический стек урока:

— библиотеки LangChain и LlamaIndex для оркестрации;
— векторные базы данных FAISS и Chroma;
— интеграция LLM в реальные бизнес-процессы.

Когда: 23.01 в 19:00 МСК

Узнать подробности
2.73K views08:49
Подробнее
Поделиться:
Открыть/Комментировать
20 янв
Библиотека питониста

#развлекалово
2.83K views19:05
Подробнее
Поделиться:
Открыть/Комментировать
20 янв
seapie: отладчик, где брейкпоинт — это просто `>>>`

seapie — это отладчик, который думает как человек, а не как учебник по gdb.

Без зависимостей, ставится одной командой и превращает отладку в обычный Python-REPL:

pip install seapie


Идея радикально простая:
брейкпоинт — это не клик мышкой и не спец-синтаксис, а обычный интерактивный >>>.

В seapie много подсказок, понятные ошибки и встроенная помощь, до которой можно дотянуться в любой момент.

Во-вторых, отладка через намерение, а не шаги.

seapie позволяет сказать: «остановись, когда функция вернёт None и в стеке будет myhelper» — обычным Python-выражением:

>>> !walk (_event_ == "return") and (_return_ is None) and ("myhelper" in _callstack_)


В-третьих, REPL-first по-настоящему.
Посмотреть переменную — это print(x) или просто x.
Поменять — x = None.
Команды отладчика живут рядом и не ломают мышление.

А состояние программы — это обычный словарь:

>>> _magic_
{
'_line_': 8,
'_source_': ' return round(total_with_tax, 2)',
'_path_': '/home/hirsimak/seapie/test/demo.py',
'_return_': 35.64,
'_exception_': None,
'_event_': 'return',
'_callstack_': ['', 'checkout']
}

Github

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.71K viewsedited  10:27
Подробнее
Поделиться:
Открыть/Комментировать
19 янв
Самая крутая фича Python 3.14 — удалённый дебаг без подготовки

Отладка Python-приложений в Docker и Kubernetes — боль.

Новая фича Python 3.14 — sys.remote_exec() превращает всё это в почти магию.

sys.remote_exec() позволяет выполнить Python-скрипт внутри уже запущенного процесса:
без перезапуска
с полным доступом к памяти, модулям и состоянию
прямо на лету

Идеально, чтобы вколоть debugpy в живое приложение.

И собственно, debugwand — zero-prep remote debugger для Python в контейнерах:
Находит нужный pod или контейнер
Выбирает правильный Python-процесс (учитывает `uvicorn --reload`)
Инжектит debugpy через sys.remote_exec()
Сам настраивает port-forwarding
Ты просто подключаешься из VS Code / nvim / любого DAP-клиента

Подключаешься к localhost:5679 — и у тебя полноценный дебаг: breakpoints, step-by-step, inspect variables.

debugwand

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.95K views19:01
👍 13 3
Подробнее
Поделиться:
Открыть/Комментировать
19 янв
Как правильно типизировать декораторы в Python

Декораторы — штука мощная, но для типизации долгое время были настоящим кошмаром. Кажется логичным сказать: «декоратор принимает функцию и возвращает такую же функцию». На практике mypy отвечает ошибками, потому что wrapper теряет исходную сигнатуру.

Вот как обычно пытаются сделать (и почему это ломается):

from functools import wraps
from typing import Any, Callable, TypeVar

F = TypeVar("F", bound=Callable[..., Any])

def info(func: F) -> F:
@wraps(func)
def wrapper(*args: Any, **kwargs: Any) -> Any:
print(func.__name__)
return func(*args, **kwargs)

return wrapper # mypy: incompatible return type


Типизатор видит, что wrapper — это уже другая функция с Callable[..., Any], а не тот же F.

Правильное современное решение — ParamSpec, который сохраняет параметры исходной функции:

from functools import wraps
from typing import Callable, ParamSpec, TypeVar

P = ParamSpec("P")
R = TypeVar("R")

def info(func: Callable[P, R]) -> Callable[P, R]:
@wraps(func)
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
print(func.__name__)
print(func.__doc__)
return func(*args, **kwargs)

return wrapper


Теперь сигнатура полностью «протаскивается» через декоратор и mypy счастлив.

А в Python 3.12+ это стало ещё красивее благодаря PEP 695:

from functools import wraps
from typing import Callable

def info[**P, R](func: Callable[P, R]) -> Callable[P, R]:
@wraps(func)
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
print(func.__name__)
print(func.__doc__)
return func(*args, **kwargs)

return wrapper


Без лишних объявлений, всё читается почти как generics в статически типизированных языках.

Подробная статья

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.72K views12:52
9 👍 5 🌚 1
Подробнее
Поделиться:
Открыть/Комментировать
19 янв
raise PriceIncrease(«Jan 20»)

Завтра стоимость всех программ Proglib.academy станет выше. Забирайте обучение сегодня по старому прайсу, пока конфиги не обновились.

Импортировать новые знания в бэкграунд
2.74K views10:40
🥱 3 2
Подробнее
Поделиться:
Открыть/Комментировать
9 янв
Библиотека питониста

#развлекалово
1.26K views18:41
Подробнее
Поделиться:
Открыть/Комментировать
9 янв
Библиотека задач по Data Science
1.68K views12:53
Подробнее
Поделиться:
Открыть/Комментировать
8 янв
Python typing в 2025 — уже не эксперимент, а норма

Вышли результаты Typed Python Survey 2025. Опросили 1 241 разработчика, и вывод довольно очевидный: типы в Python прижились — нравится это кому-то или нет.

Что по цифрам

— 86% используют type hints регулярно
— Причём почти независимо от опыта
— Самые активные — разработчики с 5–10 годами Python

Интересно, что у самых сеньоров (10+ лет) типы используют чуть реже — видимо, сказывается legacy и привычка писать «по-старому».

Почему typing зашёл

Разработчики любят его не за «строгую типизацию», а за практичные вещи:
— код становится понятнее без комментариев
— IDE начинает реально помогать, а не мешать
— меньше сюрпризов при рефакторинге
— можно внедрять постепенно, без переписывания проекта

Многие отдельно отмечают Protocol, generics и то, как типы работают с FastAPI / Pydantic.

Но проблем хватает

И тут всё довольно ожидаемо:
— типы в сторонних библиотеках часто сломаны или отсутствуют
— generics, TypeVar, декораторы — боль и тьма
— mypy, pyright и компания ведут себя по-разному
— иногда typing делает код слишком многословным
— legacy и динамический Python типизировать всё ещё тяжело

Чего хотят разработчики

Много запросов «смотреть в сторону TypeScript»:
— intersection types (`&`)
— Pick, Omit, conditional types
— нормальные enum / ADT (`Result`, `Option`)
— опциональные runtime-проверки типов
— один быстрый и официальный type checker

Инструменты

— Mypy всё ещё №1, но его доля падает
— активно растут новые Rust-чекеры
— VS Code лидирует, затем PyCharm
— и да, LLM уже часть процесса: люди реально просят ChatGPT объяснить typing

Ссылка на опрос

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.03K views18:32
Подробнее
Поделиться:
Открыть/Комментировать
7 янв
Как менялась производительность Python с 3.6 по 3.14

Автор протестировал реальную продакшен-нагрузку на собственной библиотеке и сравнил:
версии Python 3.6 → 3.14
разные CPU: Apple M1, Apple M5, Ryzen, Xeon
CPython, JIT, PyPy и MyPyC

Главные выводы

Самый большой прирост — между Python 3.7 и 3.11
После 3.11 ускорения почти нет

CPU всё ещё решает
M5 ≈ в 2 раза быстрее, чем M1 на той же версии Python

PyPy — безусловный лидер
Ускорение в 2–3 раза по сравнению с CPython

MyPyC даёт серьёзный буст
Компиляция в C заметно ускоряет CPU-bound код

JIT в 3.13–3.14 — аккуратный, но не революционный
Небольшие улучшения, без вау-эффекта

Основные тормоза:
огромное количество мелких функций
split / serialize / deserialize
накладные расходы вызовов и атрибутов

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

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.48K viewsedited  18:17
Подробнее
Поделиться:
Открыть/Комментировать
7 янв
Python в 2026-м: ваш код наконец-то обрёл разум

Зачем писать бесконечные if-else, если можно создать ReAct-агента, который сам решит, какую функцию вызвать? В новом году мы учим Python-разработчиков управлять автономными системами.

В программе праздничного интенсива:

— LangChain и CrewAI: собираем банду агентов для любых задач;
— n8n: визуальное программирование цепочек действий;
— протокол MCP: учим агентов понимать друг друга с полуслова;
— продвинутый RAG: чтобы ваш бот знал всё и даже больше.

Пока каникулы не кончились, забирайте курс по акции «3 в 1» до 12 января.

Стать Python AI-инженером
2.36K views15:08
Подробнее
Поделиться:
Открыть/Комментировать
7 янв
Static Protocols в Python: поведение важнее наследования

Static Protocols — это способ описывать типы через поведение, а не через иерархию классов.

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

Это особенно полезно в реальных проектах, где наследование быстро приводит к жёсткой связанности и сложным деревьям классов. Протоколы позволяют писать код, который остаётся гибким и при этом безопасным: статические анализаторы вроде mypy, pyright или ty проверяют совместимость ещё до запуска программы.

В отличие от обычного duck typing, static protocols работают на этапе разработки. IDE подсказывает ошибки в сигнатурах методов, автодополнение становится точнее, а несовместимые объекты отсекаются заранее. При этом код остаётся простым и не требует изменений существующих классов.

На практике это отлично ложится на ML-пайплайны, API и плагины. Например, разные модели могут реализовывать одно и то же поведение (`predict`, `predict_top_k`) без общего базового класса. Один разработчик пишет функциональный код, другой — объектно-ориентированный, а всё продолжает работать вместе.

Важно помнить, что static protocols не проверяются на runtime, если специально не включать @runtime_checkable. Их задача — помочь проектировать систему и ловить ошибки раньше, а не валидировать данные в продакшене.

Подробно, с примерами и нюансами — в статье

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.25K views10:52
Подробнее
Поделиться:
Открыть/Комментировать
6 янв
Top Python Libraries of 2025 — кратко и по делу

2025-й стал годом LLM и агентов, но Python — это гораздо больше.

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

Общего назначения

ty — сверхбыстрый type checker нового поколения
complexipy — измеряет сложность кода так, как её чувствует человек
Kreuzberg — извлечение данных из 50+ форматов
hrottled-py — rate limiting с 5 алгоритмами
httptap — HTTP waterfall прямо в терминале
fastapi-guard — безопасность FastAPI без боли
modshim — расширяй модули без monkey-patching
Spec Kit — спецификации → рабочий код
Skylos — dead code + уязвимости
FastOpenAPI — OpenAPI для любого фреймворка

AI / ML / Data

MCP Python SDK + FastMCP — стандарт интеграции LLM с инструментами
TOON — JSON, оптимизированный под токены
Deep Agents — агенты с планированием и памятью
smolagents — агенты, которые думают кодом
LlamaIndex Workflows — event-driven AI workflows
Batchata — дешёвые batch-запросы к LLM
MarkItDown — любые файлы → Markdown
Data Formulator — анализ данных через natural language
LangExtract — точное извлечение сущностей из текста
GeoAI — ML + геоданные без боли

Детально, с примерами и разбором — в полной статье

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.5K views19:04
Подробнее
Поделиться:
Открыть/Комментировать
6 янв
Как выбрать Docker-образ для Python data-задач

Для сравнения были взяты три популярных Docker-образа для Python batch-нагрузок в финансах:
python:3.14-slim
intel/python
anaconda3

В большинстве реальных workloads разница в производительности не превышает 10%, поэтому лучший дефолт — python:3.14-slim (~150 MB).

Исключение — тяжёлая линейная алгебра:
на Intel CPU образы с MKL могут дать 1.1×–2× ускорение
на AMD CPU MKL часто работает хуже OpenBLAS

Быстрое правило:
AMD → всегда python:3.14-slim
Intel → MKL только если у вас реально BLAS-heavy код
Всё остальное → python:3.14-slim

Почему так происходит — подробно разобрано в статье.

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.47K views12:33
Подробнее
Поделиться:
Открыть/Комментировать
5 янв
это было так давно...

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

#развлекалово
2.7K views17:20
Подробнее
Поделиться:
Открыть/Комментировать
5 янв
Безопасность supply chain: как защитить зависимости в проектах

Сегодня pip install может означать установку бэкдора, даже если пакет выглядит легитимным.

За последний год:
вредоносные обновления популярных библиотек
typosquatting-пакеты с удалённым управлением
фишинг аккаунтов мейнтейнеров и заражённые релизы

pip-audit — официальный инструмент PyPA для проверки зависимостей на известные уязвимости.

Что он делает:
— сканирует виртуальное окружение или requirements
— сверяется с официальной базой уязвимостей
— падает сразу, если найден риск

Лучший практический паттерн

Не только CI — запускать аудит прямо в unit-тестах.

Идея простая:
1. Добавить pip-audit в dev-зависимости
2. Написать тест, который:
— запускает pip-audit
— фейлит билд при проблемах

В итоге проверка выполняется:
— локально у разработчиков
— в CI
— в git hooks

Подробная статья по безопасным пакетам

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.87K views09:46
Подробнее
Поделиться:
Открыть/Комментировать
4 янв
Daffy — валидация DataFrame прямо в коде

Ошибки в данных редко падают сразу. Чаще они «всплывают» дальше по пайплайну — когда уже поздно. Daffy решает это просто: валидирует входы и выходы функций через декораторы.

Без схем, без отдельного слоя валидации, без рефакторинга.

Пример:

from daffy import df_in, df_out

@df_in(columns=["price", "bedrooms", "location"])
@df_out(columns=["price_per_room", "price_category"])
def analyze_housing(houses_df):
return analyzed_df


Daffy падает сразу — на границе функции, с понятной ошибкой.

Установка:

pip install daffy


Работает с уже установленной DataFrame-библиотекой.
Поддержка Python 3.10–3.14.

Daffy — decorator-first подход:
✓ добавляется за 30 секунд
✓ не меняет архитектуру
✓ не требует инфраструктуры
✓ легко удалить, если не зашло

Идеален для функций, трансформаций и ML/ETL пайплайнов.

Ссылка на проект

Навигация: Вакансии • Задачи • Собесы

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

#буст
2.82K views15:55
Подробнее
Поделиться:
Открыть/Комментировать
4 янв
Python 3.15 на Windows может стать быстрее на ~15%

Хорошие новости для пользователей Python на Windows x86-64:
в Python 3.15 тестируется новый интерпретатор с tail-call dispatch, который даёт в среднем 15–20% ускорения.

CPython экспериментирует с третьим типом интерпретатора:
switch-case
computed goto
tail-calling interpreter (каждый байткод — отдельная функция с обязательным tail-call)

Благодаря новым возможностям Visual Studio 2026 (MSVC 18) компилятор теперь гарантирует tail-call оптимизацию (`[[msvc::musttail]]`).

На Windows x86-64:
+15–20% в среднем по pyperformance
до +40% для небольших, долгоживущих скриптов
~14% ускорение для крупных pure-Python библиотек

Компилятору стало проще оптимизировать код

Раньше:
один огромный eval loop (~12 000 строк)
компилятор отказывался делать inlining

Теперь:
логика разбита на функции
inlining снова работает
регистры используются эффективнее

Подробная новость

Навигация: Вакансии • Задачи • Собесы

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

#буст
3.19K views11:47
Подробнее
Поделиться:
Открыть/Комментировать
Библиотека питониста... @pyproglib
Открыть в Telegram