Раз в месяц мы в Moscow Python Podcast собираемся и обсуждаем свежие релизы, заинтересовавшие нас инструменты и статьи. В апреле поговорили об исследовании экосистемы Django от JetBrains, LTS‑релизе Django 4.2, релизе Pandas 2.0 и свежих PEP.
Вы можете посмотреть на нас:
Или послушать на платформах — Apple, Google, Spotify, Яндекс.Музыка, сайт подкаста. А ниже текстовая выжимка выпуска.
LTS-релиз Django 4.2
LTS означает Long‑Term Support, релиз будут поддерживать три года до 2026.
Самые интересные на наш взгляд обновления:
Реализовали поддержку psycopg3. От psycopg2 в будущем планируют отказаться, но сейчас поддерживаются обе либы.
Добавили темную тему, в админке можно ее переключить. Раньше она тоже была доступна, но надо было ковыряться.
Новые асинхронные методы — asave(), adelete() и arefresh_from_db() для моделей; aadd(), aclear(), aremove() и aset() для relation managers.
На смену DEFAULT_FILE_STORAGE и STATICFILES_STORAGE приходит настройка STORAGES, которая позволяет объявлять столько файловых стореджей, сколько нужно.
И теперь минимальная версия для проектов на Postgres — 12.
Почитать про все обновления релиза можно здесь.
Pandas 2.0
Вышел релиз Pandas 2.0, подробности по ссылке, а коротко об обновлениях ниже:
Если раньше Pandas работал только поверх NumPy, то в новой версии можно выбрать в качестве бэкенда Apache Arrow.
Работа с отсутствующими значениями и строками стала эффективнее при использовании Arrow backend.
Copy‑on‑write — ленивое копирование, при котором реальное копирование данных откладывается до тех пор, пока мы не начнем изменять данные. Позволяет в ряде случаев, сохраняя идиоматичность кода, ускорить что‑то в 10, а при удачном стечении звезд и в 100 раз. Это уменьшит количество ошибок и не скажется на производительности, когда нам нужно только читать данные.
Числовые индексы теперь могут быть не только 64-х разрядные (Int64, UInt64, Float64), но и любых других числовых типов.
У datetime и timedelta теперь можно указывать единицу измерения. Если раньше Pandas приводил все к наносекундам, теперь можно явно указать что‑то типа
dtype="datetime64[s]"
.
Свежее исследование Django-экосистемы от JetBrains
JetBrains выкатили свежее исследование экосистемы Django, где можно почитать, как десятки тысяч разработчиков со всего мира используют Django. Ниже интересные на наш взгляд цифры:
Django 3.1 и ниже используют в основном опытные разработчики, новички выбирают новые версии. Опытные разработчики, скорее всего, сидят на каком‑то большом монолитном проекте, которому уже много лет, и каждое обновление требует дополнительных сил и времени.
80% опрошенных используют Postgres, 40% — SQLite, и только 28% — MySQL. 54% используют Redis, а Memcached используют только 16%.
-
Pytest, unittest и pytest‑django, они примерно одинаково популярны. Pytest — 41%, unittest — 36%, pytest‑django — 31%.
-
А по поводу джаваскриптовских фреймворков можно сказать, что React, Vue.js и неожиданно jQuery на первых местах, то есть 36% используют React, 32% используют jQuery, 25% используют Vue.js. И растет использование htmx.
Еще можно посмотреть, например, на популярность фронтенд‑фреймворков CSS. 62% используют Bootstrap, 22% — TailwindCSS. Тут мы видим, что Bootstrap все еще сильно‑сильно опережает.
-
Относительно Cloud‑провайдеров. Мы видим, что Amazon Web Services до сих пор на первом месте, 44%. Догоняющие — это Digital Ocean и неожиданно, Heroku. 23% и 21% соответственно. Все остальные, Google Cloud Platform, Microsoft Azure, PythonAnywhere, там 12, 8, 10 процентов, Linode 7%. Fly.io, новой игрок, уже целых 3%, он опередил какие‑нибудь Openshift и Openstack, что, в общем‑то говоря, очень и очень неплохо.
Доминирующая IDE все так же VS Code, 42%, догоняет PyCharm, 38%, и пользователей Vim традиционно 7%, Sublime Text 5%, и EMacs 2%. 1% пишут с использованием Notepad++.
Короткой строкой
В апреле отвечали на вопросы зрителей. Сравнили FastAPI и AIOHTTP, обсудили, как дебажить асинхронный код, как не сломать типы при использовании декоратора и другие вопросы. И готовим ближайшие выпуски:
про обучение Python поговорим c Артемом Рудаковским из Лицея Академии Яндекса 28 апреля.
новости за апрель обсудим 5 мая.
PEP 709 — предлагают инлайнить list/dict/set comprehensions вместо того чтобы, как сейчас, создавать nested‑функцию на этапе создания байткода. Получаем 11% выигрыша в скорости работы и минимум побочных эффектов.
Отклонили PEP 582 c pythonpackages. Решает простые задачи для новичков, но не является лучшей альтернативой виртуальным окружениям.
PEP 710 — предлагают сохранять ссылку и хеш для каждого установленного пакета.
pqbd
а что с опросом? :) почему 150%? (:
Voldar Автор
Можно выбирать несколько вариантов, поэтому больше 100%
Yuribtr
Хороший ответ, возможно смог бы подойти для объяснения тех самых 146% /sarcasm off