Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
В комментах к предыдущему посту скинули ссылку на крутой инструмент specialist, который умеет визуально показывать оптимизации, применённые к коду интерпретатором Python 3.11.

Напомню, что в 3.11 появится нечто под названием "Specializing Adaptive Interpreter". Это такая штука, которая будет выявлять в коде часто выполняющиеся операции (hot regions) и оптимизировать их, подменяя универсальные, медленные инструкции на более специфичные, быстрые. Например, если интерпретатор поймёт, что в определенной строчке кода часто происходит сложение целых чисел (а не конкатенация строк, например), то он подменит операцию на более быструю, которая специально заточена под целые числа. Если вдруг в какой-то момент в этом же самом месте кода окажутся строки, а не числа, то оптимизированную операцию придётся заменить обратно на обычную.

Вот, specialist как раз умеет понимать все эти трюки и раскрашивать код в разные цвета, в зависимости от степени примененных оптимизаций. На гитхабе проекта есть туториал с объяснением.
👍16
Хм, не прошло и полутора лет 😅
👍2
Узнал:

• что регулярные выражения можно удобно разбивать на кусочки, а затем собирать вместе через f-строки;
• что внутри регулярок можно использовать комментарии.

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

https://death.andgravity.com/f-re
👍13🔥2
В JetBrains решили переработать UI своих IDE, сделать его более современным и простым — больше иконок, меньше панелек.

Пока что это доступно только в превью (по запросу), но в какой-то момент новый UI станет дефолтным. Переход будет итеративным и постепенным. Обещают, что ещё пару лет будут держать возможность вернуться к старому UI, чтобы все успели переучиться.

Что скажете? Уже пробовали? Пользоваться можно?

Пост 1 | Пост 2

#jetbrains
15🤮4🤔3
Оказывается, крайний релиз форматтера black 22.1.0 (он же первый не-бета релиз) для всех основных платформ распространяется в виде колёс со скомпилированным нативным кодом. То есть там уже не обычный интерпретируемый питон, а именно нативный код, использующий Python API. На фоне долгожданной стабилизации форматтера эта новость осталась практически незамеченной.

Получается такое через компилятор mypyc, идущий в комплекте с тайп-чекером mypy. Он умеет транспилировать обычный код на питоне с тайп-аннотациями в исходники на C, а их уже можно скомпилировать в библиотеки для большинства платформ.

В итоге после компиляции и некоторых оптимизаций получилось ускорить работу форматтера в два раза. Время запуска тоже слегка сократилось. Из-за особенностей компилятора тайп-аннотации тоже стали строже.

Автор этой инициативы написал серию постов (раз, два, три) про возникшие по пути сложности. Любопытно.

#black #formatter #mypy #mypyc
👍9🔥1🤯1
Вот ещё статья в тему mypyc. Товарищ Glyph настойчиво предлагает всем начать пользоваться этим инструментом, показывая как он ускоряет FizzBuzz в два с лишним раза.

https://glyph.twistedmatrix.com/2022/04/you-should-compile-your-python-and-heres-why.html

#mypy #mypyc
👍3🥰1
согласны?
😁20🤡8👎7🤯1💩1
StackOverflow опубликовали результаты своего ежегодного опроса среди разработчиков.

Вот моя диванная аналитика:

* JS всё ещё самый популярный язык — его используют две трети всех разработчиков. TS продолжает набирать популярность.
* Если не брать в расчёт HTML и SQL (которые не совсем языки программирования), то следующим языком по популярности все ещё идёт Python.
* Go, Kotlin и Rust потихонечку растут, а Java и PHP потихонечку сдуваются. Популярность C# пока находится в относительном равновесии.
* Люди всё ещё в восторге от Rust.
* PostgreSQL продолжает откусывать от MySQL по чуть-чуть популярности год за годом.
* FastAPI стал в два раза популярнее, чем в прошлом году (3% и 6%).

В целом, всё вполне ожидаемо. Тенденции предыдущих лет сохраняются.

https://survey.stackoverflow.co/2022/
🔥43👍2❤‍🔥1
Среди питонячьих веб-фреймворков Django и Flask, понятное дело, лидируют, но идут они прям ноздря в ноздрю.
13🥰3
Веб-фреймворк Quart, который создавался как асинхронный Flask, присоединился к проекту Pallets.

Теперь у Pallets есть и WSGI, и ASGI микрофреймворк, а в итоге они в какой-то момент хотят слить их вместе. Думают над созданием универсальных плагинов, которые будут подходить к обоим фреймворкам.

https://palletsprojects.com/blog/quart-pallets/

#flask
👍12🔥2
Ещё в тему Flask. Зафиксировано невероятное: в большом популярном (75 млн установок в месяц) проекте нет открытых подвисших PR и issue. Ну не чудо ли?

#flask
🔥16❤‍🔥3
PyPI продолжает раскатывать многофакторную аутентификацию, и теперь для некоторых проектов она становится обязательных требованием. Топ 1% проектов по количеству скачиваний за последние полгода считаются «критически важными», и для владельцев и мейнтейнеров таких проектов MFA включат насильно.

Для таких юзеров сейчас как раз происходит раздача физических USB ключей безопасности. Отправляете заявочку и вам пришлют две штуки бесплатно.

Как понимаете, это всё ради того, чтобы аккаунты с правами на публикацию популярных проектов было сложнее угонять. Именно такие случаи потом зачастую приводят к громким заголовкам в новостях.

https://pypi.org/security-key-giveaway/
👍10
Новость про обязательность MFA для критически важных проектов на PyPI вызвала некоторое смятение.

Автор проекта atomicwrites (зависимость пайтеста, например) попытался удалить и восстановить проект на PyPI, чтобы избавиться от этого требования. Удалить-то получилось, а вот восстановить уже нельзя. Короче, старые версии оказались потеряны и были недоступны примерно 10 часов. Всё это время, видимо, где-то падали сборки. Пришлось призывать админов PyPI, и они всё починили.

От необходимости включать MFA это всё равно не избавило 😅

Странно, что PyPI позволяет удалять пакеты. Странно, что на исключительно положительную по моему мнению для всего сообщества новость люди так по-разному реагируют 🤔

https://github.com/untitaker/python-atomicwrites/issues/61
👍5
Понедельничная разминка
🤮11🤔3💩2
Что вернется?
Anonymous Quiz
42%
from_try
47%
from_finally
12%
ошибка
😁6🤩3👍2🤡1
Сегодня я узнал, что из finally лучше никогда не возвращать значения. Это работает, но лучше не надо. Судя по результатам опроса, узнал новое сегодня не только лишь я.

А пример этот вот из этой статьи, тут ещё много разной дичи: https://habr.com/ru/company/oleg-bunin/blog/485960/

Кстати, кто-нибудь пользуется wemake-python-styleguide? Расскажите, как оно вам?
😁5🤮1
GitHub в своём блоге выпустил пост про то, как Python и его либы (в частности, astropy) используются для обработки данных с телескопа Джеймса Уэбба: https://github.com/readme/featured/webb-telescope-astropy

🔭👽🛰
🔥11👍1👎1👏1
Ого, консольный Git становится чуть более человечным. Сколько же раз я копипастил команду, которую он выдаёт в ошибке.

#git
23👍6🎉3
Сейчас происходит серьёзное развесистое обсуждение инициативы по запрету удаления пакетов из PyPI.

Это, как вы понимаете, после недавнего инцидента, когда разработчик удалил свой популярный пакет в попытках сбросить счётчик скачиваний, чтобы обойти требование по настройке 2FA. Это, конечно, была проблема не масштабов left-pad из NPM, когда полыхало на весь интернет, но агония длилась около 10 часов и тоже много кого затронула. Получилось неприятно.

Кстати, PyPI находится в меньшинстве — в числе индексов, которые позволяют удаление пакетов и файлов. Вероятно, для этого нет каких-то веских причин, а скорее это из-за того, что PyPI появился ещё во времена, когда люди не думали о том, что подобные проблемы с зависимостями в принципе возможны (2003 год).

Кажется, что все более продвинутые индексы пакетов либо уже пришли к этому решению, либо изначально не давали такой возможности. И PyPI тоже рано или поздно придёт.
13👍1
Тут для PyCon в Москве ребята из Positive Technologies сделали квиз с интересными вопросиками. С первой попытки у меня получилось набрать 7/10. Узнал кое-что новое. Кто-то смог 8/10. Людей, набравших больше, я пока не встречал. Попробуйте, сколько сможете?

@Positive_QuizBot

После конференции, то есть уже в понедельник, бота скорее всего отключат. Сразу предупрежу, что бот соберёт с вас номер телефона, чтобы мировое правительство могло за вами следить.
🤮18🥰1