pyproglib | Unsorted

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

39269

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

Subscribe to a channel

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

🐍 Состояние типизации в Django к 2026

Django появился за 10 лет до того, как в Python стандартизировали аннотации типов, поэтому подружить их — задача не из легких.

Вот краткий срез того, как обстоят дела сегодня:

1️⃣ Золотой стандарт: django-stubs + mypy
Если вам нужна максимальная точность, это ваш выбор. Пакет поставляется с плагином для mypy, который «разбирает» динамическую магию Django.

Минус: Это медленно. Очень. На больших проектах mypy может работать минуты, что делает его неудобным для использования прямо в редакторе кода. Часто его оставляют только для CI.

2️⃣ Быстрые альтернативы: Pyright, Ty, Pyrefly
Эти чекеры работают за секунды, но не поддерживают плагины mypy. Итог — куча ложных срабатываний (false positives).

Типичная ошибка: Чекер не видит поле .id или связанные имена (related names).

Лайфхак: Вместо .id используйте .pk — инструменты обычно понимают его лучше. Или же явно определяйте id = models.AutoField(primary_key=True) в модели.

3️⃣ Новый подход: Django-Mantle
Интересная библиотека, которая предлагает вообще не работать с динамическими типами моделей напрямую. Вместо этого вы описываете attrs`-классы и используете их как типизированные DTO для данных из БД. Если логика работает с `BookmarkAttrs, а не с Bookmark(models.Model), проблем с типами не будет.

4️⃣ Проблема версий
Сторонние библиотеки типов (django-stubs/django-types) часто отстают от релизов Django. Например, Django 6.0 вышла 3 месяца назад, а полной поддержки типов для неё всё ещё нет.

Хорошие новости: управляющий совет Django одобрил внедрение типов в само ядро фреймворка! Также есть надежда на PEP-0827, который может добавить в Python новые возможности для типизации динамических структур без специальных плагинов.

🔛 Полный пост

Читать полностью…

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

🛠 Шпаргалка по lambda-функциям в Python

lambda — это не «замена функций», а способ написать простую логику там, где она нужна.

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

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

#буст

Читать полностью…

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

🎤 Ваши знания по ИИ-агентам + наша аудитория в 1 млн человек = профит

Мы в Proglib активно качаем тему ИИ-агентов. Если вы в теме, то у нас есть предложение 👇

Что с нас?

- Огромный охват: пропиарим ваши соцсети и продукты на 1 000 000+ айтишников.
- Личный бренд: станете узнаваемым экспертом в самой горячей нише 2026 года.
- Никакой рутины: наши редакторы сами упакуют ваши мысли в крутые посты.

Что с вас?

Любой экспертный контент по ИИ-агентам: кейсы из прода, шпаргалки, статьи, наработки по стеку (LangGraph, CrewAI, AutoGen и др.) или просто мысли по архитектуре.

👉 Стать экспертом и заявить о себе

Читать полностью…

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

10 концепций Docker, которые должен освоить каждый разработчик

✔️ Образы — шаблоны только для чтения, используемые для создания контейнеров

✔️ Контейнеры — легковесные, изолированные среды для запуска приложений

✔️ Dockerfile — инструкции для сборки пользовательских образов

✔️ Docker Hub — реестр для хранения и обмена образами

✔️ Томы — сохраняют данные вне контейнеров

✔️ Сети — обеспечивают взаимодействие между контейнерами

✔️ Docker Compose — определяет и запускает приложения из нескольких контейнеров

✔️ Порты — открывают сервисы контейнеров для хоста

✔️ Слои — оптимизируют сборку образов и кэширование

✔️ Реестр — управляет и распространяет образы контейнеров

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

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

#буст

Читать полностью…

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

🦾 Почему ваши AI-продукты на базе LLM ломаются (и как это чинить)?

Выкатили ИИ-фичу в прод, а она галлюцинирует, падает или выдает мусор? Приглашаем на открытый вебинар, где разберем реальную боль внедрения LLM-агентов и научимся делать так, чтобы «всё работало».

🗓️ Когда: 7 мая в 19:00 МСК
⏱️ Формат: 60 минут мяса + 30 минут ответов на ваши вопросы

🧑🏻‍💻 Кто вещает: Эмиль Сатаев — Backend Platform Developer (8+ лет в разработке). Человек, который своими руками внедряет LLM и агентные системы в реальные коммерческие сервисы.

🎁 Главный бонус для онлайна:
Только участникам прямого эфира подарим уникальный промокод на скидку 10.000 ₽ на большой курс AgentOps.

👉 Занять место на вебинаре

Читать полностью…

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

🔍 Алгоритмы Джеффа Эриксона: одна из лучших книг по алгоритмам

Иллюстрации делают сложные концепции удивительно лёгкими для понимания.

Настоятельно рекомендуем.

🔗 Ссылка на книгу

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

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

#буст

Читать полностью…

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

📚Напоминаем про наш полный курс «Самоучитель по 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

Читать полностью…

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

⚠️ Supply chain атака в AI/ML: PyTorch Lightning с бэкдором

Если вы используете PyTorch Lightning — проверьте версии прямо сейчас.

👉 Версии 2.6.2 и 2.6.3 оказались скомпрометированы
👉 Безопасная версия: 2.6.1

Атака сработала максимально незаметно:
— вредоносный код запускался прямо при import lightning
— создавался фоновый поток
— подтягивался payload (~11MB через Bun runtime)
— начинался сбор чувствительных данных

Экфильтрация шла сразу по нескольким каналам:
— SSH-ключи
— cloud credentials (AWS, GCP и т.д.)
— GitHub / npm токены
— shell history
— криптокошельки

И всё это — тихо, через HTTPS (порт 443)

Если находился npm-токен:
→ вредоносный код внедрялся в пакеты
→ версия повышалась
→ пакеты публиковались заново

📌 То есть атака сама распространялась дальше

🔗 Ссылка на новость

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

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

#буст

Читать полностью…

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

🔥 Быстрый sanity-check для любого Python-проекта

Речь про vibescore — утилиту, которая за 10 секунд оценивает проект и ставит ему оценку как в школе.

Запуск — одна команда:


vibescore .


И ты получаешь что-то вроде:

Code Quality F
Security A+
Dependencies A+
Testing A+
Overall B+


Что проверяет:
✔️ Код: сложность функций, длина, аннотации типов
✔️ Безопасность: секреты, SQL-инъекции, eval и т.д.
✔️ Зависимости: версии, lock-файлы
✔️ Тесты: есть ли они вообще и насколько их хватает

Кейс

в CI:

vibescore . --min-score 70


JSON-отчёт:

vibescore . --format json


как библиотека:

from vibescore import scan
report = scan(".")


Как считается итог:
✳️ Security — 30%
✳️ Code Quality — 25%
✳️ Testing — 25%
✳️ Dependencies — 20%

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

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

#буст

Читать полностью…

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

🐍 Django: 20 лет на арене. Почему мы всё еще верим в мифы о «старичке»?

Django исполнилось 20 лет — для технологий это солидный возраст.

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

Вот некоторые мифы:

1. «Django находится в режиме поддержки (maintenance mode)»

Многие думают, что в Django только исправляют баги.
Реальность: Новая фича вливается в проект в среднем каждые 5,5 дней, а релизы с новыми функциями выходят каждые 8 месяцев.
Почему возник миф: Из-за политики строгой стабильности и обратной совместимости старый код продолжает работать годами, что создает иллюзию отсутствия изменений.

2. «Django — это медленно»

Сравнения с Fast API в бенчмарках часто показывают Django не в лучшем свете.
Реальность: Бенчмарки часто сравнивают «яблоки с апельсинами». Django по умолчанию включает в себя промежуточное ПО (middleware) для безопасности и удобства, в то время как в микрофреймворках это нужно добавлять вручную.
Инсайт: В реальных приложениях узким местом почти всегда является база данных, а не сам фреймворк. При правильной настройке индексов и запросов Django показывает отличную производительность.

3. «Django не подходит для API»

На официальном сайте всё еще нет документации по созданию API, а туториалы учат рендерить HTML-шаблоны.
Реальность: Более 50% сообщества используют Django именно для создания API, применяя Django Rest Framework (DRF) или Django Ninja.
Экосистема: Вокруг фреймворка существует живая и растущая среда библиотек для работы с API, просто об этом мало говорят на официальных ресурсах.

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

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

#буст

Читать полностью…

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

Логирование в Python в 2026: что реально использовать

Если вы всё ещё думаете, что логирование — это просто print(), пора обновить картину.

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

1. Стандартный `logging`
База всей экосистемы. Через него логируют Django, FastAPI и почти все библиотеки.
Подходит, если вам нужна стабильность, интеграции и контроль.
Минус — многословная настройка и «олдскульный» API.

2. structlog
Лучший выбор для продакшена и микросервисов.
Логи — это словари → легко превращаются в JSON → удобно для аналитики и observability.
Плюс: нормальная работа с контекстом (request_id, user_id) через contextvars.

3. Loguru
Когда хочется просто и быстро.
Импортировали logger — и уже логируете.
Отлично подходит для небольших сервисов, скриптов и MVP.

🔗 Полный обзор: https://clc.to/fxbIEA

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

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

#буст

Читать полностью…

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

🔥 4 привычки кодеров

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

но, я собрал 4 привычки адептов «чистого кода», (которые обычно все практикуют) 🤡

• Бесконечный рефакторинг рабочего кода.
Кажется, что так ты делаешь продукт лучше. Итог: жестко падаешь в перфекционизм. Переписываешь функцию по три раза, а бизнес ждет релиз. Закрываешь вкладку и в голове абсолютная пустота, время потрачено, а новых фичей ноль.

• Упарывание в сложную архитектуру

Сеньоры на ютубе обещают золотые горы, если внедрить микросервисы куда угодно. Итог: получаешь красивый overengineering-проект для мамы и 0 запущенных продуктов в срок, пока конкуренты клепают MVP на коленке.

• Душные споры на ревью
Неплохо, но как итог: ты пишешь полотна текста и тратишь часы на поиск глупой придирки к стилю, потому что банально фокус сместился с реальной задачи на эго.

• Ручная микро-оптимизация
Классика для тех, кто любит алгоритмы из универа. Итог: убиваешь дни жизни и выжимаешь миллисекунды, хотя бизнесу нужен был просто грязный, но рабочий скрипт еще вчера.

Проблема в том, что ни один из этих путей не дает самого главного - скорости и проверки гипотез. Реальному рынку плевать на твой идеальный код за 3 дня. Бизнес предпочтет код от ИИ-агента за 5 минут, который уже завтра начнет приносить деньги.

Хочешь обкатанный на нас лично и 100х учениках метод, как перестать кодить руками и начать делегировать задачи автономным системам?

👉 Заходи сюда, но у нас осталось всего 4 места, набор идет до завтрашнего дня.

P. S. Если интересно еще что-нибудь почитать от меня, то заходите в «Азбуку Айтишника», там я рассказываю об айти-базе, также у меня там есть бесплатный гайд на 15 глав по ии-агентам

Читать полностью…

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

🐍 В Python 3.15 появятся sentinel values (PEP 661)

После ~5 лет обсуждений в Python добавляют простую, но очень полезную вещь — sentinel-значения.

Иногда важно отличать:
— аргумент вообще не передали
— передали None
— передали конкретное значение

Раньше это делали через костыли (типа `object()`), теперь — нативно.

👉 Пример:


MISSING = sentinel("MISSING")

class Logger:
def __init__(self, level: MISSING | None | str = MISSING):
if level is MISSING:
self.level = get_global_default_level()
elif level is None:
self.level = None # отключить логирование
else:
self.level = level


Что это даёт:
— можно чётко понять: аргумент не передан или передан None
— чище API
— меньше неочевидных багов

По сути, теперь у функции есть 3 состояния:
1. не передали → взять дефолт
2. передали None → особая логика
3. передали значение → использовать его

⚡️ Это мелкое изменение, но оно сильно упрощает дизайн функций и библиотек.

Использовали ли вы подобные паттерны раньше или обходились None?

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

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

#буст

Читать полностью…

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

🐍 Python tip: как писать чище — `enumerate()` + распаковка

Иногда в цикле вам нужно сразу две вещи:
номер элемента и значения внутри него.

Вместо лишнего кода это можно сделать в одну строку:


for index, (service, status) in enumerate(services, start=1):


Что здесь происходит:
enumerate() даёт вам индекс,
а (service, status) сразу распаковывает кортеж.

Код получается заметно чище:
не нужно заводить отдельный счётчик,
не нужно писать item[0], item[1],
и в целом легче читать, что происходит.

Особенно полезно, если работаете с:
— API-ответами
— списками кортежей
— логами / мониторингом

📌 По сути, это маленький приём, который сильно улучшает читаемость.

А вы как обычно пишете такие циклы — через распаковку или по индексам?

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

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

#буст

Читать полностью…

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

🚀 Современный паттерн «Состояние» в Python: прощай, наследование

Традиционная реализация паттерна State через классы и наследование часто превращается в кошмар: куча мелких классов, дублирование методов и разбросанная логика переходов. В Python есть более элегантный способ.

В чем проблема классики?
В обычном ООП-подходе каждое состояние — это отдельный класс. Это приводит к тому, что вы пишете много одинаковых методов raise RuntimeError, если действие недоступно в текущем состоянии. В итоге сложно увидеть всю картину переходов целиком.

Pythonic-подход: Дженерики и Декораторы
Вместо иерархии классов можно создать универсальный движок State Machine, который работает как явная таблица соответствий:
(Текущее состояние + Событие) -> (Следующее состояние + Действие).

Основные фишки такого дизайна:
1️⃣ Генерики (`Generic`): Движок типизируется через состояния, события и контекст (например, данные о платеже).

2️⃣ Декораторы @transition: Позволяют описывать логику переходов прямо над функциями действий. Это превращает ваш код в читаемую спецификацию: сразу видно, какие события переводят систему из одного статуса в другой.

3️⃣ Принцип открытости/закрытости: Чтобы добавить новый переход, вам не нужно менять существующие классы — достаточно написать новую функцию с декоратором.

4️⃣ Гибкость: Одно действие (например, «ошибка») можно легко привязать сразу к нескольким начальным состояниям через итерируемые объекты в декораторе.

Этот подход идеален для систем с четкими потоками данных: платежи, обработка заказов, логистика или парсеры. Классические классы стоит оставить только в случаях, когда каждое состояние имеет крайне сложную внутреннюю логику и специфичные только для него данные.

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

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

#буст

Читать полностью…

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

🐍 Селф-хостинг для разработчика: дорожная карта цифрового суверенитета в 2026 году

Селф-хостинг сегодня — это прагматичный контроль над своими данными.

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

🛡 Инструментарий: YAML вместо Bash-скриптов
Забудьте про настройку Linux-сервисов. Если приложение не запускается в Docker, оно не стоит вашего времени.

Docker Compose стал универсальным языком: 15 строк YAML-конфига заменяют часы копания в systemd и init`-скриптах. Для Python-разработчика это так же естественно, как `requirements.txt.

🛡 Безопасность без дыр в роутере

Используйте Tailscale. Он создает зашифрованную Mesh-сеть (VPN) между вашими устройствами, используя WireGuard. Вы получаете доступ к домашнему серверу из любой точки мира, не подставляя его под атаки ботнетов.

🛡 ZFS: Снапшоты как страховка от «кривых» апдейтов

Файловая система ZFS позволяет делать мгновенные снимки (снапшоты) перед любым рискованным действием. Если миграция пошла не так — откат до рабочего состояния занимает секунды.

🛡 ИИ — ваш личный DevOps на аутсорсе

Инструменты вроде Codex или Claude Code радикально снижают порог входа в системное администрирование. Они могут не только писать скрипты для бэкапов, но и диагностировать «железные» проблемы (например, умирающий SSD) по косвенным признакам задержек записи ещё до того, как сработает SMART.

С чего начать:
1. Immich — мощная замена Google Photos с AI-распознаванием лиц, работающая на вашем железе.
2. AdGuard Home / Pi-hole — блокировка рекламы и трекинга на уровне DNS для всех устройств в доме (включая ТВ и мобильные игры).
3. Home Assistant — объединение всех «умных» устройств в одну локальную сеть без зависимости от вендорских облаков.

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

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

#буст

Читать полностью…

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

Шпаргалка по uv: 40+ команд, которые реально пригодятся


Удобную шпаргалка с командами, которые закрывают почти весь повседневный workflow:
— создание проектов
— управление зависимостями
— работа с версиями Python
— запуск скриптов и инструментов
— жизненный цикл проекта
— миграция с привычного pip-подхода
— обновление и настройка самого uv

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

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

#буст

Читать полностью…

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

📘 Книга: структуры данных на Python

Обратите внимание на A First Course on Data Structures in Python. Это не перегруженный академический учебник и не набор задач ради задач.

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

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

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

#буст

Читать полностью…

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

🚀 Как собрать идеальную Python-библиотеку в 2026 году

Вот краткий чек-лист:

🔹 Основа — uv от Astral. В 2026 году uv стал «позвоночником» разработки, объединяя в себе управление зависимостями, сборку и публикацию.

🔹 Структура и метаданные. Используйте стандартную структуру с папкой src/ и обязательно заполняйте pyproject.toml. Для названий пакетов лучше всего подходит lower-skewer-case.

🔹 Качество кода превыше всего:
— Линтинг и форматирование: Используйте ruff — он заменяет сразу несколько старых инструментов и работает молниеносно.
— Типизация: В 2026 году библиотека не может считаться качественной без аннотаций типов. Для проверки используйте mypy или pyright.
Тесты: Золотой стандарт pytest. Важно тестировать библиотеку на всех поддерживаемых версиях Python, что легко делается через uv --python.

🔹 Автоматизация (DX):
— Настройте pre-commit хуки, чтобы ошибки линтинга не попадали в репозиторий.
— Используйте CI/CD (GitHub Actions или альтернативы вроде Codeberg) для проверки кода перед каждым релизом.

🔗 Полная статья

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

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

#буст

Читать полностью…

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

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

#развлекалово

Читать полностью…

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

👨‍💻 PyPy снова ускорился — и уже догоняет CPython в неожиданных местах

Вышел свежий релиз PyPy 7.3.22

Что поправили:
— пофиксили старый баг в JIT
— подтянули совместимость с CPython
— меньше странных расхождений в stdlib

Самое интересное — ускорения

pickle:
раньше PyPy был ≈ в 5.7 раза медленнее
теперь ≈ в 1.6 раза

json:
было медленнее CPython
стало быстрее (~0.7x от CPython)

PyPy всегда был «быстрый, но не везде». Сейчас постепенно закрываются именно те узкие места, где раньше приходилось откатываться на CPython

Когда вообще стоит смотреть на PyPy:
— много Python-кода без C-расширений
— CPU-bound задачи
— долгоживущие процессы (где JIT успевает разогнаться)

🔗 Ссылка на новость

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

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

#буст

Читать полностью…

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

PyWry — нормальный способ делать UI на Python без боли

Нашли интересный проект — PyWry. Суть простая: пишешь один Python-код — запускаешь где угодно (десктоп, браузер, ноутбук)

Что по факту умеет:
— UI собирается декларативно (через модели, без верстки-адa)
— под капотом нативные webview через PyTauri, не Electron
— работает в Jupyter, можно сразу прототипить
— из коробки FastAPI + WebSocket для веба
— есть мост Python ↔ JS (графики, таблицы и т.д.)

Интересный момент: можно начать в ноутбуке → потом без переписывания выкатить в веб → потом собрать в десктоп-приложение

Подходит, если:
— надо быстро сделать интерфейс к ML/данным
— не хочется городить фронтенд отдельно
— нужен lightweight вариант без тяжёлых рантаймов

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

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

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

#буст

Читать полностью…

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

🐍 Где практиковать Python в 2026 году

Знать теорию — хорошо, но без практики код писать не научишься. Собрали для вас подборку лучших платформ для оттачивания навыков Python, разделенную по целям:

1️⃣ Изучение основ
✳️ Python Tutor — визуализация выполнения кода.
✳️ W3Schools — уроки и редактор для начинающих.
✳️ SoloLearn — интерактив и задачи в дорогу.

2️⃣ Практика и улучшение
✳️ CodeSignal — подготовка к интервью.
✳️ Codewars — решение задач (ката) разной сложности.
✳️ Exercism — менторство и открытый исходный код.

3️⃣ Подготовка к интервью
✳️ LeetCode — классика кодинг-интервью с решениями.
✳️ StrataScratch — фокус на SQL + Python и кейсы ведущих компаний.
✳️ HackerRank — сертификация и задачи от работодателей.

4️⃣ Геймификация
✳️ CheckiO — игровые задачи для увлекательного обучения.
✳️ CodingBat — быстрые задачи с мгновенной проверкой.

Какую платформу выберете сегодня? Сохраняйте себе, чтобы не потерять! 📌

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

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

#буст

Читать полностью…

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

🧠 Почему потоки в Python не всегда ускоряют код

Частая мысль:

«Добавлю threading → станет быстрее»


На практике — не факт.

В чём причина

В классическом Python есть GIL — он не даёт нескольким потокам выполнять код одновременно.

Поэтому:
✔️ I/O (API, файлы) → быстрее
✔️ CPU (вычисления) → почти нет

С появлением PEP 703 Python постепенно уходит от GIL. Теперь потоки могут работать параллельно.

Где всё ломается:

counter += 1


На деле это: read → compute → write

В потоках это приводит к race condition:

import threading

counter = 0

def worker():
global counter
for _ in range(1_000_000):
counter += 1

threads = [threading.Thread(target=worker) for _ in range(8)]

for t in threads: t.start()
for t in threads: t.join()

print(counter) # ≠ 8_000_000


«Фикс», который замедляет:

lock = threading.Lock()

with lock:
counter += 1


Работает правильно, но: потоки стоят в очереди → параллельности нет

Как правильно:

from concurrent.futures import ThreadPoolExecutor

def worker():
local = 0
for _ in range(1_000_000):
local += 1
return local

with ThreadPoolExecutor(max_workers=8) as ex:
result = sum(ex.map(lambda _: worker(), range(8)))

print(result) # 8_000_000


💡 Главное правило

Потоки не должны делить данные во время работы: делят → медленно, независимы → быстро

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

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

#буст

Читать полностью…

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

🚀 pip 26.1: lock-файлы и “cooldown” зависимостей

Вышел pip 26.1, и это один из самых интересных апдейтов за последнее время.

Главное изменение — pip начинает двигаться в сторону детерминированных зависимостей и безопасности.

Теперь pip экспериментально поддерживает lock-файлы:


pip install -r pylock.toml


Это означает:
— фиксированные версии зависимостей
— воспроизводимые окружения
— меньше сюрпризов при деплое

По сути, pip догоняет то, что уже давно есть в poetry, uv и других инструментах.

🧊 Dependency cooldowns

Очень интересная идея:

--uploaded-prior-to P7D


Позволяет не устанавливать свежие пакеты, загруженные, например, за последние 7 дней.

Зачем это нужно:
— защита от supply chain атак
— время на обнаружение вредоносных пакетов
— снижение риска “нулевого дня”

Фактически — простой способ добавить слой безопасности без сложной инфраструктуры.

Что ещё улучшили:
— лучшее разрешение зависимостей (быстрее и стабильнее)
— улучшена работа с hash’ами и constraints
— оптимизация памяти
— фиксы багов и security issues

🔗 Ссылка на блог-пост

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

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

#буст

Читать полностью…

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

Вот компактная и полезная версия поста, которую можно сразу публиковать:

---

## Логирование в Python в 2026: что реально использовать

Если вы всё ещё думаете, что логирование — это просто print(), пора обновить картину.

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

1. Стандартный `logging`
База всей экосистемы. Через него логируют Django, FastAPI и почти все библиотеки.
Подходит, если вам нужна стабильность, интеграции и контроль.
Минус — многословная настройка и «олдскульный» API.

2. structlog
Лучший выбор для продакшена и микросервисов.
Логи — это словари → легко превращаются в JSON → удобно для аналитики и observability.
Плюс: нормальная работа с контекстом (request_id, user_id) через contextvars.

3. Loguru
Когда хочется просто и быстро.
Импортировали logger — и уже логируете.
Отлично подходит для небольших сервисов, скриптов и MVP.

---

### Что важно на практике

Не так важно, какую библиотеку вы выберете.
Важно, *как* вы логируете:

— структурированные логи (JSON вместо строк)
— единый формат полей
— контекст (request_id, user_id, trace_id)
— адекватные уровни (INFO / ERROR / DEBUG)

Без этого даже самый «модный» логгер превращается в шум.

---

### Быстрый ориентир

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

— хотите максимум контроля и совместимости → logging
— строите серьёзный прод → structlog
— нужно быстро и без боли → Loguru

---

Логирование — это не про вывод текста.
Это про наблюдаемость системы.

А у вас сейчас что в проекте: классический logging или уже перешли на что-то современнее? 👇

Читать полностью…

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

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

#развлекалово

Читать полностью…

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

🗓️ Уже через пару часов стартует вебинар!

Тема:

Как эффективно управлять контекстным окном LLM в мультиагентных системах и не сливать бюджет на токены


Ждем вас сегодня в 19:00 по московскому времени. Не пропустите начало, будет много практики!

👉 Успей занять место

Читать полностью…

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

📚 В Read the Docs теперь нативно поддерживается uv Python package manager

Небольшая, но очень приятная новость для тех, кто собирает документацию.

Теперь uv можно использовать прямо в .readthedocs.yaml — без костылей и кастомных шагов установки.

💡 Что это даёт
— быстрее установка зависимостей
— чище конфигурация
— нормальная поддержка pyproject.toml и uv.lock

Если используете современный стек:


python:
install:
- method: uv
command: sync
groups:
- docs


Если остались на requirements.txt:

python:
install:
- method: uv
command: pip
requirements: docs/requirements.txt


💬 Если у вас документация ещё на pip — возможно, это тот самый момент попробовать перейти.

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

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

#буст

Читать полностью…

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

🖥 Как настроить логирование в Textual (файл + живая консоль)

Если вы разрабатываете TUI на Textual, у вас уже есть удобный инструмент для логирования «из коробки» — без дополнительных библиотек.

В Textual есть встроенный TextualHandler, который полностью совместим со стандартным модулем Python logging module.

Это позволяет одновременно:
— сохранять логи в файл
— видеть их в реальном времени в консоли
— использовать привычный logging без изменений

👉 Минимальная настройка


import logging
from textual.logging import TextualHandler

logger = logging.getLogger("app")
logger.setLevel(logging.INFO)

# запись в файл
file_handler = logging.FileHandler("app.log")
logger.addHandler(file_handler)

# вывод в Textual
textual_handler = TextualHandler()
logger.addHandler(textual_handler)


Теперь все logger.info(...) будут записываться и в файл, и в интерфейс.

⚡️ Как смотреть логи в реальном времени

1. Установите devtools:

pip install textual-dev


2. В отдельном терминале запустите:

textual console


3. Приложение запускайте в dev-режиме:

textual run --dev app.py


👉 После этого вы будете видеть все события и логи в отдельной консоли.

Почему это удобно:
— не нужно переключаться между интерфейсом и терминалом
— проще отслеживать действия пользователя
— удобно дебажить поведение приложения

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

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

#буст

Читать полностью…
Subscribe to a channel