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

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

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

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

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
📊 State of Django 2025 — итоги ежегодного опроса разработчиков

Опрос Django Developers Survey 2025 собрал ответы более 4600 разработчиков со всего мира и показал, что экосистема Django продолжает активно развиваться — даже спустя 20 лет с момента появления фреймворка:
🈁 Django остаётся стабильным и зрелым — крупные изменения в обратной совместимости крайне редки.
🈁 Новые релизы выходят каждые 8 месяцев (5.2, 6.0, 6.1 …).
🈁 Активность сообщества: десятки PR еженедельно, рост числа мейнтейнеров и ревьюеров.
🈁 Сила экосистемы — официальная поддержка Redis (с Django 4.0), выход django-mongodb-backend.

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

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72😁1
👉 CocoIndex — база знаний о вашем коде для AI и IDE

CocoIndex — это инструмент для построения и обновления индекса кода в реальном времени. Он использует Tree-sitter для точного разбора кода и поддерживает инкрементальную обработку — пересчитывает только изменённые части проекта.

Возможности и кейсы:
— Семантический контекст для AI-агентов (Claude, Codex, Gemini CLI)
— MCP-интеграции с IDE: Cursor, Windsurf, VSCode
— Semantic code search и поиск кода по естественному языку
— Автоматический AI code review, анализ и суммаризация PR
— Масштабные авторефакторинги и миграции кода
— SRE и DevOps сценарии: быстрое RCA, анализ влияния изменений, поиск по IaC и конфигам
— Автогенерация и обновление design-документации из кода

🔍 Реальное время, точность и масштабируемость — всё, что нужно для умных инструментов поверх кода.

📱 Github

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4
👏 Конфиги по-человечески: CueLang, Starlark и боль Python-разработчика

Когда проект растёт, обычные .toml, .yaml и .json превращаются в кошмар — без импортов, функций, комментариев и валидации.

CueLang решает почти всё: строгая типизация, DRY, схемы и экспорт в JSON/YAML. Но беда — только Go, без питонячих биндингов.

А вот Starlark неожиданно оказался достойной альтернативой:
— безопасен (песочница, без доступа к FS и сети);
— расширяем (можно подключать Python-функции);
— даёт контроль над импортами и окружением;
— похож на Python, но только внешне — внутри это совсем другой зверь.

Пример:
import starlark

with open("config.star") as f:
code = f.read()

module = starlark.Module()
stdlib = starlark.Globals.standard()
ast = starlark.parse("config.star", code)
starlark.eval(module, ast, stdlib, None)


Starlark — не замена CueLang, а отличный инструмент, если нужно встроить безопасный DSL в продукт.
Но для личных проектов — Python + Pydantic всё ещё проще и удобнее.

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

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
🔥 Официально утверждены два новых PEP: PEP 798 и PEP 810

1️⃣ PEP 798 — Unpacking in Comprehensions

Теперь в Python 3.15 можно будет использовать распаковку прямо в comprehensions (списковых, словарных и генераторных выражениях).
Python Steering Council внёс небольшое уточнение — и потребовал использовать явные циклы вместо yield from, чтобы сохранить простоту и симметрию между синхронными и асинхронными выражениями.

💡 Это сделает comprehensions более мощными и при этом предсказуемыми.

2️⃣ PEP 810 — Explicit Lazy Imports

Наконец-то появятся явные ленивые импорты через ключевое слово lazy.
Теперь можно будет писать:
lazy import numpy  
from pandas lazy import DataFrame


Импорт произойдёт только при первом обращении к модулю, что ускорит запуск и сократит время старта больших проектов.
Также добавят sys.get_lazy_imports() и уточнят приоритет между флагами среды (PYTHON_LAZY_IMPORTS, -X, sys.set_lazy_imports()).

👍 Оба улучшения появятся в Python 3.15 — релиз, который явно принесёт много приятных сюрпризов разработчикам.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍128🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
➡️ PyTogether — Google Docs для Python

Онлайн-IDE, созданная специально для обучения и совместного кодинга. Простая, быстрая и дружелюбная к новичкам.

Основные фишки:
— Совместное редактирование кода в реальном времени (на Y.js)
— Безопасная авторизация — вручную или через Google
— Группы и проекты — удобно организуйте командную работу
— Рисование прямо в IDE — идеально для преподавателей
— Подсветка и линтинг — помогает писать чистый код
— Чат и голосовые комнаты — как в Discord, прямо внутри проекта
— Умное автосохранение — ничего не потеряется

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

🔗 Github

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3
💡 Как часто Python делает аллокации

Короткий ответ — очень часто.

🐁 Каждое число — объект

В CPython каждое целое число — это объект PyLongObject*, хранящийся в куче. Даже операция i + 1 создаёт новый объект.

Если бы каждое число выделялось через malloc/free, арифметика была бы в сотни раз медленнее, чем машинная инструкция ADD.

Но Python применяет несколько хитрых оптимизаций.

Добавим вывод в функцию аллокации чисел и запустим код:
for i in range(0, 100_000):
print(i + 1)


Результат:
Allocating number object 100904 times


Кажется, создаётся новый объект на каждой итерации.
Но без print():
for i in range(0, 100_000):
a = i + 1


Теперь:
Allocating number object 905 times


То есть новые объекты создаются редко — большинство просто переиспользуются.

🐁 Как это работает

Функция сложения в CPython выглядит примерно так:
static PyLongObject *
long_add(PyLongObject *a, PyLongObject *b)
{
stwodigits z = medium_value(a) + medium_value(b);
return _PyLong_FromSTwoDigits(z);
}


_PyLong_FromSTwoDigits решает, брать ли объект из freelist (списка свободных объектов) или выделять новый:
PyLongObject *v = _Py_FREELIST_POP(PyLongObject, ints);
if (v == NULL) v = PyObject_Malloc(sizeof(PyLongObject));


После освобождения объект возвращается обратно во freelist, а не в систему.

Результат эксперимента:
102 ALLOCATING
99193 REUSING


99% чисел просто переиспользуются!

🐁 Малые числа предсозданы

Для диапазона -5..1024 объекты создаются заранее:
PyLongObject small_ints[_PY_NSMALLNEGINTS + _PY_NSMALLPOSINTS];


Такие числа никогда не аллоцируются — просто возвращаются из таблицы. Это ещё одна оптимизация CPython.

🐁 Как Python управляет памятью

CPython использует собственный пуловый аллокатор (pymalloc). Память разбита на пулы фиксированного размера (по 256 КБ).
Выделение из пула выполняется почти мгновенно, без системных вызовов malloc() или mmap().
Физическая память подгружается лениво — по мере использования.

🐁 На практике это значит: Python «аллoцирует» очень часто, но реальных системных аллокаций почти нет.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍138💯1
🎁 И мозг прокачать, и макбук утащить!

Proglib.academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻

Условия:

1️⃣ Покупаешь любой курс Proglib до 15 ноября.
2️⃣ Проходишь минимум 2 учебные недели (можно осилить за два вечера).
3️⃣ Пишешь куратору в чат своего курса: #розыгрыш.

Что за курсы?

Математика для Data Science (6 месяцев боли и просветления).
Основы Python, ML, алгоритмы, AI-агенты и даже курс для тех, кто в IT, но не кодит.

👉 Участвовать в розыгрыше
1
💻 ВАЖНО: макбук ещё не забрали!

Proglib.academy продолжает розыгрыш MacBook Pro 14» (M3 Pro, 36 Гб, 1 Тб SSD).

Что нужно для участия?

— Берёшь любой курс Академии до 15 ноября.
— Проходишь хотя бы 2 недели обучения (можно за два дня).
— Пишешь куратору #розыгрыш. Всё — ты в игре!

Что за курсы?

▫️Алгоритмы и структуры данных — если хочешь готовиться к собесам в Яндекс, FAANG и не сидеть на джуне вечно.

▫️Архитектуры и шаблоны проектирования — учат думать как senior, а не просто писать код.

▫️ Python, математика для DS, основы IT и другие темы — можно стартовать с нуля или усилить то, что уже знаешь.

👉 Влетай, не думай!
😁3🥱1
📦 Управление зависимостями Python с помощью `uv` (наглядно)

В экосистеме Python существует множество форматов для управления зависимостями — requirements.txt, pyproject.toml, uv.lock и другие.

С помощью `uv` можно управлять почти всеми из них — легко переходить между состояниями, обновлять, синхронизировать и восстанавливать окружения.

На графике показано, как именно можно переходить от одного состояния к другому с помощью команд uv.

> 💡 Примечание: “libs in env” обозначает установленные зависимости в виртуальном окружении, созданном через uv venv.

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

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113🤩3
📱 Python новости за последние 7 дней

🧩 Чистый и безопасный код
Как `with` делает Python-код безопаснее и читабельнее — пояснение работы контекстных менеджеров и best practices их использования.
Код, за который не стыдно — практика чистописания: читаемый, поддерживаемый и аккуратный Python-код для начинающих.
Сначала логика, потом код — как писать программы для ESP на MicroPython, правильно разделяя логику и реализацию.

⚙️ Веб, API и контейнеризация
Как не положить API: rate limiting в Python — реализация ограничений по количеству запросов для защиты сервиса.
Docker для Python-разработчика — как упаковать приложение в контейнер и запускать его где угодно.
Библиотека для доступа к данным ЦБ: cbrapi — работа с финансовыми данными через Python, быстрый старт.

🌐 Проекты и инструменты
Создаем GUI на Python с Flet — от простого скрипта до полноценного Markdown-редактора.
Создаем свой create-react-app на Python — интерактивный генератор проектов с Typer и Questionary для быстрого старта.

🧠 Карьерные и трендовые темы
Особенности Python для собеседований. Часть 2 — на что точно обратят внимание на техническом интервью.
Почему Python так популярен в 2025 году — анализ трендов, причин популярности и перспектив развития языка.

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

#свежак
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
💻 Хочешь MacBook Pro? Просто начни учиться!

Да-да, вы не ослышались: Proglib.academy дарит макбук за учёбу!

Всё просто:

— купи любой курс Академии до 15 ноября;
— пройди 2 недели обучения (можно за два дня);
— напиши куратору в чате курса хэштег #розыгрыш.

📚 Выбирай свой курс:

▫️ «Математика для DS» — для тех, кто хочет уверенно работать с данными;
▫️ «Основы Python» — чтобы начать писать код с нуля;
▫️ «Алгоритмы и структуры данных» — для будущих инженеров;
▫️ «AI-агенты» или «Машинное обучение» — для тех, кто хочет прокачаться в ИИ.

👉 Участвовать в розыгрыше
😁21👾1
📅 Предложение по годовому циклу релизов Django

Django в этом году отметил 20-летие. За это время текущий график релизов доказал свою эффективность, но возникают вопросы:

☹️ Номера версий мало что говорят. Видя Django 2.2, сложно понять, когда он вышел и насколько устарел.
☹️ Версии выглядят как семантические (x.0), но на деле не содержат серьёзных изменений. Например, Django 6.0 почти не отличается от 5.2 LTS.

Проблемы текущего цикла:
Поддержка старых LTS-версий затрудняет обновления Python и создаёт нагрузку на CI.
Разработчикам сторонних пакетов приходится поддерживать старые версии дольше, чем хотелось бы.
Большая часть пользователей долго остаётся на неподдерживаемых версиях.

Решение — годовой цикл релизов:
✔️ Один крупный релиз Django в год, вместо одного каждые 8 месяцев.
✔️ Использование календарного версионирования: первая цифра — год, вторая — номер релиза.
✔️ Пример: Django 2028.1 — первый релиз серии, 2028.2 — следующий.
✔️ Каждый релиз получает 1 год исправлений багов и 2 года безопасности, то есть каждая версия будет фактически LTS.
✔️ Поддержка только актуальных версий Python (или плюс последняя «жёлтая»), что снижает нагрузку на CI и синхронизирует EOL Django с EOL Python.

Преимущества:
Прозрачный и предсказуемый график релизов.
Облегчённое обновление для компаний и пользователей.
Каждая версия получает долгосрочную поддержку и безопасность.
Возможность смелых изменений API без потери стабильности, особенно с инструментом django-upgrade для автоматических обновлений кода.

📌 Итог:
Предлагается внедрить годовой цикл релизов начиная с Django 7.0, с предсказуемой поддержкой Python и LTS для каждого релиза. Это улучшит обновляемость, снизит нагрузку на разработчиков и повысит долю пользователей на поддерживаемых версиях.

Что думаете?

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

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