Питонические атаки
1.2K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Я вам говорю, скоро он их обоих подожмёт
Но как вы объясните вот это? Разве бывает FastAPI без Starlette?
JetBrains добавили в свои IDE ИИ ассистента

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

Выделяешь кусок самого мутного кода в проекте, нажимаешь хоткей Alt/Option+Enter > AI Actions > Explain code, тут же открывается чат, где заботливый ИИ на чистейшем английском объясняет тебе суть. Правда, видимо, я выбирал слишком мутные куски кода, поэтому мне не особо помогло. Всё равно понравилось.

Пока что доступно только в EAP-сборках всех IDE на основе IntelliJ IDEA. В будущем фича наверняка станет платной (конечно, счета от OpenAI сами себя не оплатят). Не работает на территории РФ. В прочем, не думаю, что это вызовет у вас какие-то затруднения.

https://blog.jetbrains.com/idea/2023/06/ai-assistant-in-jetbrains-ides/

#jetbrains
Ещё одна новость про JetBrains, но вот это уже настоящая революция, а не эти ваши ИИ попсовые.

Наконец-то в PyCharm добавляют встроенную поддержку форматтера black! 🎉

Прямо без каких-либо плагинов, IDE задетектит наличие black в виртуальном окружении и предложит использовать его вместо дефолтного форматтера пайчарма. Настройки подхватывает из pyproject.toml. И всё, просто берёт и форматирует!

Правда, заметил, что люди жалуются на модальное окошко, которое выскакивает на мгновение в процессе форматирования. Ещё пока что нет поддержки blackd, который использовали для ускорения форматирования, но это обещали добавить. Короче, не идеально, но для начала хорошо.

Доступно только в EAP, а по-настоящему опубликуют в версии 2023.2.

https://blog.jetbrains.com/pycharm/2023/07/2023-2-eap-5/

#jetbrains #black
Появился PEP 723, который предлагает "встраивать" pyproject.toml в однофайловые скрипты.
Предлагается добавить переменную __pyproject__, которая будет содержать в себе валидный TOML, описывающий метадату скрипта, в том числе как скрипт запускать и какие зависимости необходимы для запуска.

К примеру, вот так будет выглядеть скрипт, которому для работы нужна библиотека requests и питон 3.11 или выше:

__pyproject__ = """
[project]
requires-python = ">=3.11"
dependencies = [
"requests<3",
]
"""
import requests
resp = requests.get("https://peps.python.org/api/peps.json")
print(resp.json())

PEP прикольный, что-то такое есть в качестве экспериментального RFC в Rust. Из минусов хотел бы отметить то, что автоматическая установка зависимостей может привести к запуску нежелательного кода. Но решение банальное - перед тем как что-то запускать, проверяйте, что вы запускаете.

#pep
Apple рассказывает про часы — точно такие же, как старые, только новее и розовее. А тем временем без больших презентаций происходят куда более интересные вещи. Например, в Ruff появился встроенный форматтер.

Пока что это только экспериментальная альфа-версия, но уже обещают 99% совместимость с Black. Уже можно поставить последнюю версию Ruff и попробовать. Позже в этом году планируется уже пригодный к продакшн использованию релиз.
Офигеть, уже вышел Python 3.12.0rc2. Это последняя предрелизная версия. Дальше уже только настоящий релиз, который запланирован на 2 октября. Как правило, между вторым релиз-кандидатом и релизом почти ничего не меняется, так что, в принципе, уже можно с нежной осторожностью трогать свежую версию интерпретатора.

Вот здесь можно почитать What’s new.
О, пошло дело. В репозитории python/cpython на гитхабе появился тэг v3.12.0, что означает... Ну, думаю, вы и сами понимаете. Скоро будет официально релизнуто. 🍾

Правда, в этот раз как-то скромно. Без помпезных стримов со спикерами и шляпами. Или это я просто не нашел где стримят?
Pydantic нанимает фронтендера. Что-то происходит 🤔

Видать начали что-то делать из своего роадмапа.

Twi
PSF и JetBrains выложили результаты опроса среди питонистов за 2022 год: https://lp.jetbrains.com/python-developers-survey-2022/

По результатам вижу несколько интересных пунктов:

🔹 Значительно увеличилась доля тех, кто считает себя Data Scientist'ом — 34% против 29% в прошлом году; и этот опрос ещё проходил до или в самом начале нынешней GPT-лихорадки; интересно будет посмотреть на результаты следующего года.

🔹 Среди сценариев использования Machine Learning обогнал девопсов и сисадминов, а доля веб-девелоперов почему-то снижается. Баланс сил нарушен — раньше веб-разработка и data science/machine learning были примерно в одинаковых пропорциях.

🔹 Чёрт побери, почему доля Python 2 выросла? Всё же хорошо шло, вы зачем раскопали-то опять. Это как-то связано с предыдущими пунктами? 🤔

🔹 Доля Poetry среди пакетных менеджеров постепенно растёт. Люди постепенно пересаживаются с Requests на httpx. FastAPI надёжно закрепился в тройке популярных веб-вреймворков и продолжает откусывать доли у Flask и Django.
Судя по опросу выше, для многих релиз 3.12 не содержит каких-то больших сносящих крышу фич. Сложно с этим поспорить. Что ж, давайте тогда смотреть на мелкие фичи. По мелочам много всего приятно поменялось.

Например, в itertools добавили функцию batched, которая разбивает список или любой итерируемый объект на кортежи указанной длины. Последний кортеж может быть короче указанной длины, если не хватит элементов.

Пример:

>>> list(batched('ABCDEFG', 3))
[('A', 'B', 'C'), ('D', 'E', 'F'), ('G',)]

Раньше для этого приходилось либо определять эту функцию самостоятельно, взяв её из документации Python, либо устанавливать библиотеки, типа more-itertools. Да, эта функция испокон веков лежит в виде сниппета кода в документации, но в стандартной библиотеке её нигде не было. Теперь есть 🤷‍♂️ Возможно, теперь я буду чуть реже ставить more-itertools.

Документация: https://docs.python.org/3/library/itertools.html#itertools.batched
Ещё один прикол в 3.12 — встроенная функция sum() теперь использует специальный алгоритм для сложения чисел с плавающей точкой с минимальной потерей точности (прочитать про алгоритм можно на вики).

Раньше было как, складываешь 10 чиселок, где в результате ожидаешь получить 1, но получаешь что-то немного другое:

>>> sum([0.1] * 10)
0.9999999999999999

И ладно бы оно просто всегда ошибалось одинаково, дак ведь погрешность ещё и зависит от порядка, в котором складывать числа:

>>> sum([0.1] * 5 + [0.05] * 10)
1.0000000000000004
>>> sum([0.05] * 10 + [0.1] * 5)
0.9999999999999999
>>> sum([0.1, 0.05, 0.05, 0.05, 0.05, 0.1, 0.1, 0.05, 0.05, 0.1, 0.05, 0.05, 0.05, 0.1, 0.05])
1.0000000000000002

А вы разве не знали, что сложение float'ов не коммутативно?

Но была специальная функция math.fsum(), которая всё делает правильно:

>>> math.fsum([0.1] * 10)
1.0
>>> math.fsum([0.1] * 5 + [0.05] * 10)
1.0
>>> math.fsum([0.05] * 10 + [0.1] * 5)
1.0

Дак вот в 3.12 встроенная функция sum() даёт такие же результаты, как math.fsum(). По крайней мере, я не смог найти примера, где они дали бы разный результат. Кроме того, по моим замерам, sum() работает ещё и раза в полтора быстрее math.fsum():

>>> timeit.timeit("sum([0.05] * 10 + [0.1] * 5)")
0.26875441599986516
>>> timeit.timeit("math.fsum([0.05] * 10 + [0.1] * 5)", setup="import math")
0.34194887499961624

Кто-нибудь понимает, зачем теперь нужна math.fsum()?
Летом успел съездить на PyCon Russia и выступить с докладом про новый язык программирования Mojo. История там такая: Крис Латнер, некогда очень активно поучаствовавший в создании LLVM, clang и Swift, вместе со своей командой решил сделать платформу для обучения нейросеточек и другого ML, а для этого делает свой язык программирования, максимально похожий на питон и тесно интегрированный с ним.

Анонс языка был очень мощным: вышло несколько статей, буквально пророчащих смерть обычного питона и становление Mojo в качестве его замены. Мне, разумеется, захотелось разобраться, насколько это серьёзные заявления, а насколько — хайп и кликбейт.

Разобрался! А теперь и вы можете: https://youtu.be/kzNwVdA3t_s.

P. S. А буквально позавчера Mojo стало можно загрузить и попробовать локально, ура: https://www.modular.com/blog/mojo-its-finally-here
Гвидо наградят премией NEC C&C Prize за разработку языка Python, который сильно повлиял на развитие технологий и общества.

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

* Кен Томпсон и Деннис Ритчи
* Тим Бернерс-Ли
* Эдсгер Дейкстра
* Гордон Мур
* Линус Торвальдс

Это должно быть почетно! Поздравляем Гвидо! 🥳

Награда включает в себя сертификат, почётный значок и денежный приз в 10 миллионов йен.

Ссылка на анонс
Почитать про премию на вики
Кажется, PSF нанимает второго разработчика по программе Developer in Residence. Им станет давнишний кор-контрибьютор Петр Викторин из Чехии. Сейчас Петр работает лидом команды Python Maintenance в Red Hat.
Успели обновиться до 3.12? А там уже вовсю пилят 3.13 и вышел первый альфа-релиз: https://discuss.python.org/t/python-3-13-0-alpha-1/36109

Пока что в 3.13 есть только куча удалений давно задепрекейченных модулей и ещё много разных штук объявляются deprecated. Но это только самое начало цикла разработки. Сейчас на peps.python.org есть около 10 предложений, которые целятся попасть в версию 3.13. Среди которых самые интересные, пожалуй:

* PEP 649 – Deferred Evaluation Of Annotations Using Descriptors — уже принят
* PEP 554 – Multiple Interpreters in the Stdlib
* PEP 703 – Making the Global Interpreter Lock Optional in CPython
* PEP 730 – Adding iOS as a supported platform

Релиз обещает быть интересным.
Иногда аж вскрикиваю с заголовков рандомных статей в интернете. Если я когда-нибудь окончательно упорюсь в журнализм и начну писать такое, то... Даже не знаю, поставьте класс, подпишитесь на меня на бусти, онлифансе и медиуме. Ведь мне наверняка нужны будут деньги на таблетки. Главное не спорьте, со всем просто молча соглашайтесь, а то я могу воспринять это как сигнал, что нужно писать ещё. У автора заголовка явно неправильно подобрана доза.
Pycon 2023 - Архитектура кнута и пряника (запись)

Не так давно опубликовали записи докладов, так что думаю, пришла пора опубликовать. Изначально доклад планировал сделать про DDD и структуру проекта, но в итоге получился доклад про линтеры. Почему так вышло, смотрите в докладе. В презентации на все есть ссылки, можно скачать и прокликать.

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

Ссылка на youtube
Презентация в посте вот тут