Раз в месяц мы в 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 — предлагают сохранять ссылку и хеш для каждого установленного пакета.

Комментарии (3)


  1. pqbd
    24.04.2023 07:52

    а что с опросом? :) почему 150%? (:


    1. Voldar Автор
      24.04.2023 07:52
      +3

      Можно выбирать несколько вариантов, поэтому больше 100%


      1. Yuribtr
        24.04.2023 07:52

        Хороший ответ, возможно смог бы подойти для объяснения тех самых 146% /sarcasm off