Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Раз в месяц мы в 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, View и неожиданно 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 – предлагают сохранять ссылку и хеш для каждого установленного пакета.