Channel: Питонические атаки
Forwarded from ITGram
🐍 debuglater is a Python library that saves stacktrace into a file when your app crashes with an exception. Not just a traceback, but the whole stack, including all variables. It's all is saved using dill, so if you have the same code, you can load the saved stacktrace into a pdb session and debug the crash, as if you could if you had put an actual breakpoint into the place of failure. Pretty cool, huh?
❤17
Forwarded from Code Mining
Energy Efficiency across Programming Languages
Увлекательное и довольно очевидное по выводам исследование опубликовали коллеги из Португалии в 2017 году.
Рецепт прост: взяли 27 языков, взяли приличный список программ для замера эффективности исполнения (потребление энергии, время, ресурсы памяти), свели результаты в таблички.
Конечно не без выводов, но таблица как бы намекает ;)
Насладиться научным подходом можно здесь.
ЗЫ: только тссс, зелёным не говорите, а то ещё с забастовками против Python будут выходить.
Увлекательное и довольно очевидное по выводам исследование опубликовали коллеги из Португалии в 2017 году.
Рецепт прост: взяли 27 языков, взяли приличный список программ для замера эффективности исполнения (потребление энергии, время, ресурсы памяти), свели результаты в таблички.
Конечно не без выводов, но таблица как бы намекает ;)
Насладиться научным подходом можно здесь.
ЗЫ: только тссс, зелёным не говорите, а то ещё с забастовками против Python будут выходить.
❤7👍1👎1
Там проект Faster CPython (это где Гвидо ускоряет питон) опубликовал цели, над которыми собираются работать в рамках релиза 3.12.
* Вероятно, наконец станет можно запускать саб-интерпретаторы прямо из кода на питоне. Это позволит занять интерпретаторами все ядра в нескольких потоках (не процессах!), потому что у каждого будет свой собственный GIL.
* Зачатки JIT будут развиваться — добавят больше специализированных оп-кодов, интерпретатор научится заменять оп-коды на более эффективные целыми пачками, а не по одному.
* Сделают структуры в пямяти более компактными. Хотят уменьшить служебную информацию, которая приделывается к каждому объекту, с 5 до 2 машинных слов. Ожидается, что от этого не только уменьшится количество потребляемой памяти для всех программ на питоне, но и кэши процессора будут использоваться эффективнее.
https://github.com/faster-cpython/ideas/wiki/Python-3.12-Goals
* Вероятно, наконец станет можно запускать саб-интерпретаторы прямо из кода на питоне. Это позволит занять интерпретаторами все ядра в нескольких потоках (не процессах!), потому что у каждого будет свой собственный GIL.
* Зачатки JIT будут развиваться — добавят больше специализированных оп-кодов, интерпретатор научится заменять оп-коды на более эффективные целыми пачками, а не по одному.
* Сделают структуры в пямяти более компактными. Хотят уменьшить служебную информацию, которая приделывается к каждому объекту, с 5 до 2 машинных слов. Ожидается, что от этого не только уменьшится количество потребляемой памяти для всех программ на питоне, но и кэши процессора будут использоваться эффективнее.
https://github.com/faster-cpython/ideas/wiki/Python-3.12-Goals
GitHub
Python 3.12 Goals
Contribute to faster-cpython/ideas development by creating an account on GitHub.
👍25⚡3❤1
Forwarded from FEDOR BORSHEV
Типы в Python
Я познакомился с типизацией в Python ещё в 2018 году. Вернее не совсем познакомился — просто мы начали писать какие-то аннотации, без правил: кто хотел, тот и писал. С виду довольно бесполезное занятие — автодополнения не было, по рукам, если накосячил, никто не бил. Дальше такой опциональной типизации мы тогда не пошли — нормального инструментария не было.
Даже в такой типизации была польза: когда пишешь код с типами, начинаешь гораздо больше думать об API и данных, чем об алгоритмах и синтаксисе языка. Сдвиг мышления похож на то, что происходит с TDD — с ходу не видишь пользы, но если вкуришь, то мышление траснформируется и больше не возвращается обратно.
В 2021 году я наконец-то смог сделать проект по фен-шую: с django-stubs и mypy. На мой взгляд, стало гораздо лучше: помимо автодополнения и стандартизации кодовой базы, радикально улучшилась читаемость. Последний пункт особенно важен сейчас, когда я захожу в проекты пару раз в месяц, и с ходу должен понять, над чем работает команда.
С типизацией согласны далеко не все: и в нашей команде и в питоньем мире в целом есть чуваки, которые думают, что типы в коде забирают больше времени, чем экономят. Я этих ребят понимаю — сам несколько лет не мог определиться. До сих пор отдаю решение об обязательности типов в команду проекта: если хотят писать с нестрогими типами или вообще без них — пожалуйста.
В общем для согласных, несогласных и тех, кто хочет радикально улучшить знания по типизации, мы с Марьяной позвали в Школу Никиту Соболева. Если вдруг не знаете Никиту — он один из авторов django-stubs, член Django Software Foundation, коммитит в mypy, typeshed и CPython. Никита прочитает цикл из трёх вебинаров — об устройстве типов, о тайпчекерах и о практическом применении всего этого.
Курс — бесплатный: времена располагают, да и сообществу надо помогать. Для желающих получить обратную связь есть тариф с домашкой и сертификатами, 30% выручки от которого пойдёт на развитие системы типов в Python.
Стартует 11 октября, читаем по одному вебинару в неделю, заканчиваем 31 октября.
Зарегистрироваться →
Я познакомился с типизацией в Python ещё в 2018 году. Вернее не совсем познакомился — просто мы начали писать какие-то аннотации, без правил: кто хотел, тот и писал. С виду довольно бесполезное занятие — автодополнения не было, по рукам, если накосячил, никто не бил. Дальше такой опциональной типизации мы тогда не пошли — нормального инструментария не было.
Даже в такой типизации была польза: когда пишешь код с типами, начинаешь гораздо больше думать об API и данных, чем об алгоритмах и синтаксисе языка. Сдвиг мышления похож на то, что происходит с TDD — с ходу не видишь пользы, но если вкуришь, то мышление траснформируется и больше не возвращается обратно.
В 2021 году я наконец-то смог сделать проект по фен-шую: с django-stubs и mypy. На мой взгляд, стало гораздо лучше: помимо автодополнения и стандартизации кодовой базы, радикально улучшилась читаемость. Последний пункт особенно важен сейчас, когда я захожу в проекты пару раз в месяц, и с ходу должен понять, над чем работает команда.
С типизацией согласны далеко не все: и в нашей команде и в питоньем мире в целом есть чуваки, которые думают, что типы в коде забирают больше времени, чем экономят. Я этих ребят понимаю — сам несколько лет не мог определиться. До сих пор отдаю решение об обязательности типов в команду проекта: если хотят писать с нестрогими типами или вообще без них — пожалуйста.
В общем для согласных, несогласных и тех, кто хочет радикально улучшить знания по типизации, мы с Марьяной позвали в Школу Никиту Соболева. Если вдруг не знаете Никиту — он один из авторов django-stubs, член Django Software Foundation, коммитит в mypy, typeshed и CPython. Никита прочитает цикл из трёх вебинаров — об устройстве типов, о тайпчекерах и о практическом применении всего этого.
Курс — бесплатный: времена располагают, да и сообществу надо помогать. Для желающих получить обратную связь есть тариф с домашкой и сертификатами, 30% выручки от которого пойдёт на развитие системы типов в Python.
Стартует 11 октября, читаем по одному вебинару в неделю, заканчиваем 31 октября.
Зарегистрироваться →
🔥9👎6💩2👍1
FEDOR BORSHEV
Типы в Python Я познакомился с типизацией в Python ещё в 2018 году. Вернее не совсем познакомился — просто мы начали писать какие-то аннотации, без правил: кто хотел, тот и писал. С виду довольно бесполезное занятие — автодополнения не было, по рукам, если…
Бесплатный курс про тайп-хинты от Никиты Соболева. Ну это надо брать, я считаю.
💩15👍8❤🔥2
Уже примерно через сутки произойдёт релиз Python 3.11! Как и год назад, весь процесс будет проходить в прямом эфире, будут разные гости с торжественными речами. Смотреть вот тут.
Вы как, готовы уже обновлять все свои программки?
Вы как, готовы уже обновлять все свои программки?
🔥22🎉5💩2
Запустился уже шестой по счету ежегодный опрос Python Developers Survey от PSF и JetBrains. Как обычно, вопросы про версии языка, используемые фреймворки, библиотеки, инструменты и так далее. Надо проходить!
https://surveys.jetbrains.com/s3/c1-python-developers-survey-2022
https://surveys.jetbrains.com/s3/c1-python-developers-survey-2022
Jetbrains
Python Developers Survey 2022
The official Python Developers Survey 2022. Join and contribute to the community knowledge!
🤯1👌1
Сегодня с утра меня пайчарм встретил вот такой плашечкой. Умный, чертяга. Чует приближающийся релиз!
#jetbrains
#jetbrains
👍15
Питонические атаки
Уже примерно через сутки произойдёт релиз Python 3.11! Как и год назад, весь процесс будет проходить в прямом эфире, будут разные гости с торжественными речами. Смотреть вот тут. Вы как, готовы уже обновлять все свои программки?
⏰ Напоминаю, через 30 минут начало стрима с релизом Python 3.11: https://youtube.com/watch?v=PGZPSWZSkJI
YouTube
Python 3.11 Release
Timestamps
00:00 - Introduction
24:30 - Brandt Bucher, Specializing Adaptive Interpreter
50:40 - Mark Shannon, Other Speedups
1:07:42 - Irit Katriel, Exception Improvements and Features
1:42:13 - Pablo Galindo, Better Tracebacks
1:58:46 - Pablo Galindo, tomllib…
00:00 - Introduction
24:30 - Brandt Bucher, Specializing Adaptive Interpreter
50:40 - Mark Shannon, Other Speedups
1:07:42 - Irit Katriel, Exception Improvements and Features
1:42:13 - Pablo Galindo, Better Tracebacks
1:58:46 - Pablo Galindo, tomllib…
🥰6
Чем дольше смотрю, тем больше нравится. Символично, что два острова связывает лишь небольшой мост. Кажется, что культура и обычаи на северном и южном островах совсем разные. Только что говорят на одном языке, да и то с разными акцентами. Редко вылажу из своего асинхронного леса, но иногда заносит на юг, и каждый раз я такой: "ёшкин кот, о чём вообще говорят эти волшебники, чем они тут занимаются?".
А вы где на карте обычно обитаете?
Утащено отсюда, автор @Enchantner. Люблю красивые картинки.
А вы где на карте обычно обитаете?
Утащено отсюда, автор @Enchantner. Люблю красивые картинки.
❤20👏4🐳4🥰2
Вышел релиз 🔤 🔤 🔤 🔤 ==0.990.
Релиз получился объемный: там добавили базовую поддержку Python 3.11, рекурсивные типы, категории ошибок в вывод, и ещё на сдачу наложили разные ломающие изменения. Готовьтесь, при обновлении наверняка будут новые проблемы в коде, который раньше тайп-чекался без ошибок. Ниже выпишу самые важные, на мой взгляд, пункты, а за полным списком изменений идите в блог mypy.
Теперь по умолчанию отключены неявные
Релиз получился объемный: там добавили базовую поддержку Python 3.11, рекурсивные типы, категории ошибок в вывод, и ещё на сдачу наложили разные ломающие изменения. Готовьтесь, при обновлении наверняка будут новые проблемы в коде, который раньше тайп-чекался без ошибок. Ниже выпишу самые важные, на мой взгляд, пункты, а за полным списком изменений идите в блог mypy.
Теперь по умолчанию отключены неявные
Optional
типы. Придётся либо явно указывать в тайп хинте, что переменная/аргумент может принимать None
, либо переключать настройку, чтобы вернуть старое неявное поведение:def foo(s: str = None) -> int: ... # Error!Также тайп-чекер теперь перестал игнорировать пустые функции/методы. Раньше они не проверялись, а теперь проверяются и вызывают ошибки:
def foo(s: str | None = None) -> int: ... # OK
# Error: Missing return statement (no error before 0.990)Через forward reference'ы теперь можно определять рекурсивные типы. Для применения рекурсивных типов нужно обязательно явно указывать тип, потому что если не указать, то
def some_func(arg: str) -> int:
pass
mypy
выведет какой-то многоэтажный нерекурсивный тип. Вот как это выглядит:NaiveJSON = str | list["NaiveJSON"] | dict[str, "NaiveJSON"]Тайп чекер постепенно становится умнее и строже. Гаечки затягиваются — остаётся всё меньше неявного и игнорируемого. И это хорошо.
test_data: NaiveJSON = {"foo": {"bar": "baz"}} # OK
Please open Telegram to view this post
VIEW IN TELEGRAM
Blogspot
Mypy 0.991 Released
We’ve just uploaded mypy 0.991 to the Python Package Index ( PyPI ). Mypy is a static type checker for Python. This release includes new fea...
❤20👍3
Почти одновременно со стабильным релизом 3.11.0 вышел первый альфа-релиз следующей версии —
Например, питон научили работать с профилировщиком
Стоит отметить, что это будет работать только на Linux, потому что
Думаю, это изменение — это побочный результат работы Pablo над профилировщиком
В треде в твиттере больше подробностей и есть ссылка на черновик документации.
3.12.0a1
! И начали появляться первые сообщения о том, что нас там ждёт.Например, питон научили работать с профилировщиком
perf
из линукса. Можно будет отлаживать код на питоне, и видеть как вызовы функций внутри библиотек на C/Rust, так и вызовы функций внутри самого интерпретатора, и даже то, что происходит в это время в ядре ОС, включая даже всякие счётчики и кэши процессора. Это, конечно, можно было делать и раньше, но теперь, начиная с 3.12, профилировщик будет понимать код на питоне, так что станет куда проще соотносить результаты анализа с конкретными кусками кода в вашей программе.Стоит отметить, что это будет работать только на Linux, потому что
perf
— чисто линуксовый инструмент, который зашит прямо в ядро ОС.Думаю, это изменение — это побочный результат работы Pablo над профилировщиком
memray
.В треде в твиттере больше подробностей и есть ссылка на черновик документации.
👍17🔥1
Разные либы 🚀 продолжают релизить версии с поддержкой Python 3.11.
Напоминаю, что есть такой классный сервис, который отслеживает поддержку конкретной версии популярными библиотеками — https://pyreadiness.org/3.11/.
Сейчас поддержка 3.11 находится на уровне всего 19.4%, но цифра каждый день увеличивается. Это, конечно, не означает, что остальные 80% пакетов не заработают с 3.11. Это лишь значит, что они не задекларировали у себя эту поддержку явно.
Для сравнения, уровень поддержки Python 3.10 сейчас равен 63%, а 3.9 — 75%.
Напоминаю, что есть такой классный сервис, который отслеживает поддержку конкретной версии популярными библиотеками — https://pyreadiness.org/3.11/.
Сейчас поддержка 3.11 находится на уровне всего 19.4%, но цифра каждый день увеличивается. Это, конечно, не означает, что остальные 80% пакетов не заработают с 3.11. Это лишь значит, что они не задекларировали у себя эту поддержку явно.
Для сравнения, уровень поддержки Python 3.10 сейчас равен 63%, а 3.9 — 75%.
👍7
👍17🤔2
О, кстати, прикол. Не задумывался, что лямбда-функции тоже можно аннотировать. Делать я так, конечно, всё равно не буду.
Твит здесь.
Твит здесь.
❤🔥13⚡1🥰1
Свежие драмы из интернета.
На днях
Точнее, переехали они уже полтора года назад, а на днях они удалили свой старый репо на GitLab, который в последнее время был лишь зеркалом. И тут все внезапно заметили этот переезд, потому что у кучи народа отвалились
Мейнтейнер обеих утилит —
Если используете
На днях
flake8
переехал на GitHub. Они довольно долго были чуть ли не единственным известным мне проектом, который принципиально хостился на GitLab.Точнее, переехали они уже полтора года назад, а на днях они удалили свой старый репо на GitLab, который в последнее время был лишь зеркалом. И тут все внезапно заметили этот переезд, потому что у кучи народа отвалились
pre-commit
хуки локально и начали падать проверки в CI. Напомню, что pre-commit
устанавливает свои тулзы именно из git-репозитория по адресу, а не из PyPI по имени пакета. И хоть исправление этой проблемы — это всего лишь поправить 2 символа в ямле, и автор заранее везде, где только можно, анонсировал этот переезд, и даже написал скрипты, которые всё пофиксят автоматически, всё равно мало кто узнал об этом событии заранее. Неприятно получилось, и народ начал роптать.Мейнтейнер обеих утилит —
flake8
и pre-commit
(да, их обе поддерживает один человек, и он же поддерживает ещё кучу всего) — рассказал в комментах на реддите, чем был мотивирован этот переезд. Оказывается, причиной послужил неприятный инцидент с криптомайнером, который каким-то необъяснимым образом был запушен каким-то левым чуваком в репо flake8
на гитлабе. Поддержка гитлаба ушла в отрицание и помогла примерно никак: "мы ничего не знаем, вы сами виноваты". Вот 🤷♂️Если используете
pre-commit
, то проверьте у себя адрес к репо flake8
. Запуск pre-commit autoupdate
должен по идее всё автоматически обновить правильным образом.Reddit
Ph3rny's comment on "Flake8 took down the gitlab repository in favor of github"
Explore this conversation and more from the Python community
👍20🤔4👏2🖕1
HTML Embed Code: