Выступление пророка нашего Гвидо ван Россума, где он презентует идею тайп-аннотаций на PyCon 2015. Иногда любопытно погрузиться в историю и посмотреть, как оно всё тогда было. Кстати, выступление кроме исторической ценности имеет еще и образовательную — с тех пор не так уж и много поменялось, так что если вам нужно введение в тему, то тоже можно посмотреть.
https://youtu.be/2wDvzy6Hgxg
https://youtu.be/2wDvzy6Hgxg
YouTube
Type Hints - Guido van Rossum - PyCon 2015
Forwarded from Кисель из IT
PyCon 2016, Гвидо еще не знает, как будут объявляться переменные с типами
Спасибо, что выбрали последний вариант, остальное выглядит очень сомнительно
Спасибо, что выбрали последний вариант, остальное выглядит очень сомнительно
Как сообщают в чате, вышел мажорный релиз Flask 2.0 и других связанных с ним библиотек (Werkzeug, Jinja, Click, ItsDangerous).
https://palletsprojects.com/blog/flask-2-0-released/
* Python 2 больше не поддерживается;
* Добавлены тайп-аннотации;
* Можно делать асинхронные обработчики запросов;
* Добавлены удобные декораторы-шорткаты для объявления обработчиков запросов с разными HTTP-методами.
Пора обновляться! Ну, или хотя бы аккуратно начинать задумываться об обновлении.
#flask
https://palletsprojects.com/blog/flask-2-0-released/
* Python 2 больше не поддерживается;
* Добавлены тайп-аннотации;
* Можно делать асинхронные обработчики запросов;
* Добавлены удобные декораторы-шорткаты для объявления обработчиков запросов с разными HTTP-методами.
Пора обновляться! Ну, или хотя бы аккуратно начинать задумываться об обновлении.
#flask
Forwarded from Aleksandr Bukin
🐍 Важные новости!
🏡 Друзья, через 2 недели мы проводим Pytup в онлайне.
⏱ В среду 26 мая в 17:00 Мск обсудим, когда нейросети заменят программистов, какие возможности Python используются в реальном мире чаще всего и как понять, что Поиск работает хорошо.
📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.
🏡 Друзья, через 2 недели мы проводим Pytup в онлайне.
⏱ В среду 26 мая в 17:00 Мск обсудим, когда нейросети заменят программистов, какие возможности Python используются в реальном мире чаще всего и как понять, что Поиск работает хорошо.
📆 Участие, как обычно, бесплатное, программа и регистрация на сайте.
Pytup
Приглашаем Python-разработчиков с любым опытом на Pytup Online 26 мая в 17:00 по Москве.
⚡️Ломающие новости! ⚡️
Вчера на Language Summit, проходящем в рамках PyCon US, стало известно, что Гвидо ван Россум, Марк Шеннон и Эрик Сноу работают фулл-тайм над проектом по ускорению CPython. Спонсирует работу Microsoft.
Работа пока что происходит вот в этой организации на GitHub: https://github.com/faster-cpython/. Там у них есть свой форк CPython.
Кстати, вот здесь лежит презентация Гвидо с этого Language Summit: https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf
Вчера на Language Summit, проходящем в рамках PyCon US, стало известно, что Гвидо ван Россум, Марк Шеннон и Эрик Сноу работают фулл-тайм над проектом по ускорению CPython. Спонсирует работу Microsoft.
Работа пока что происходит вот в этой организации на GitHub: https://github.com/faster-cpython/. Там у них есть свой форк CPython.
Кстати, вот здесь лежит презентация Гвидо с этого Language Summit: https://github.com/faster-cpython/ideas/blob/main/FasterCPythonDark.pdf
GitHub
faster-cpython
faster-cpython has 8 repositories available. Follow their code on GitHub.
Я пока только пытаюсь вникнуть, что всё это значит, но первые результаты работы по ускорению CPython уже можно увидеть в PEP 659: https://www.python.org/dev/peps/pep-0659/
Похоже, что в CPython хотят вкрутить какое-то подмножество полноценного JIT-компилятора.
Похоже, что в CPython хотят вкрутить какое-то подмножество полноценного JIT-компилятора.
Python.org
PEP 659 -- Specializing Adaptive Interpreter
The official home of the Python Programming Language
Чуваки из RealPython всё-таки добили меня рекламой своей новой книги. Так и быть, беру! Правда, учитывая мою очередь из книг и скорость, с которой я их читаю, доберусь я до неё года через три.
Автор книги — Энтони Шоу — по совместительству ещё и мейнтейнер
Если вдруг вам тоже такое интересно, то вот здесь эта книга продаётся. Говорят, что сейчас там пока не полная цена.
Автор книги — Энтони Шоу — по совместительству ещё и мейнтейнер
pyjion
(Python с JIT-компилятором из .NET), так что он наверняка знает своё дело.Если вдруг вам тоже такое интересно, то вот здесь эта книга продаётся. Говорят, что сейчас там пока не полная цена.
Неделю назад появился черновик PEP 657, который предлагает в трейсбеках показывать не только номер строки, где возникла ошибка, но и смещение (то есть номера символов в строке). Таким образом вместо вот такой расплывчатой ошибки:
Так как для ветки 3.10 уже наступил фича-фриз, эту функциональность стоит ждать не раньше 3.11.
Traceback (most recent call last):Интерпретатор сможет указать на конкретное выражение в строке, вызвавшее ошибку:
File "test.py", line 19, in <module>
foo(a.name, b.name, c.name)
AttributeError: 'NoneType' object has no attribute 'name'
Traceback (most recent call last):
File "test.py", line 17, in <module>
foo(a.name, b.name, c.name)
^^^^^^
AttributeError: 'NoneType' object has no attribute 'name'
В документе есть и другие примеры. Выглядит приятно! 👍Так как для ветки 3.10 уже наступил фича-фриз, эту функциональность стоит ждать не раньше 3.11.
Python Enhancement Proposals (PEPs)
PEP 657 – Include Fine Grained Error Locations in Tracebacks | peps.python.org
This PEP proposes adding a mapping from each bytecode instruction to the start and end column offsets of the line that generated them as well as the end line number. This data will be used to improve tracebacks displayed by the CPython interpreter in or...
Всегда казалось, что чуваки, которые сидят на тяжёлом ФП, затем творят какую-то тёмную магию. Вот, например, статья про создание библиотеки для декларативной валидации пользовательского ввода в полтора экрана кода. И ведь, блин, красиво получилось. Как так уметь?
https://blog.drewolson.org/declarative-validation
https://blog.drewolson.org/declarative-validation
Forwarded from Кисель из IT
Мне очень не нравится, как в стандартной библиотеке
pathlib
переопределили оператор деления:>>> from pathlib import Path
>>> exmpl = Path("/test")
>>> exmpl
PosixPath('/test')
>>> exmpl / "nested"
PosixPath('/test/nested')
С первого взгляда кажется, что это классная и логичная фича, но когда в твоей голове вполне сформировано, что "/" это деление, то такой код плавит голову...☝️ А мне нравится
pathlib
и его оператор конкатенации путей. По-моему, очень лаконично смотрится. В Python много операторов имеют разные смыслы в зависимости от контекста, и это одно из проявлений могучего динамизма языка. Например, +
складывает числа, конкатенирует строки, а унарный плюс еще и создает копию объекта collections.Counter
(а вот это и правда внезапно, я до сих пор не понимаю зачем).In [7]: from collections import Counter
In [8]: c = Counter("avada kedavra")
In [9]: c
Out[9]: Counter({'a': 5, 'v': 2, 'd': 2, ' ': 1, 'k': 1, 'e': 1, 'r': 1})
In [10]: +c
Out[10]: Counter({'a': 5, 'v': 2, 'd': 2, ' ': 1, 'k': 1, 'e': 1, 'r': 1})
In [11]: c is +c
Out[11]: False
Питонические атаки
JetBrains (да блин, опять я про них пишу) собирают деньги для Django Software Foundation. До 29 апреля можно купить подписку на PyCharm Professional со скидкой 30%, а все собранные деньги пойдут в DSF. Промокод на странице: https://www.jetbrains.com/pych…
JetBrains смогли собрать $45K для Django Software Foundation в этом году. Это примерно 20% годового бюджета DSF, который тратится на разработку фреймворка и проведение конференций.
https://blog.jetbrains.com/pycharm/2021/05/dsf-campaign-results/
#jetbrains
https://blog.jetbrains.com/pycharm/2021/05/dsf-campaign-results/
#jetbrains
JetBrains Blog
Thank You for Supporting the PyCharm and DSF Campaign | The PyCharm Blog
This April we joined forces with the Django Software Foundation to get as much support as possible from our audience for Django.
In one month we managed to reach out to thousands of Pythonistas who h
In one month we managed to reach out to thousands of Pythonistas who h
Forwarded from Python Заметки
В PyCharm есть окно со статистикой продуктивности (Help / Productivity Guide), где отображена интересная информация об использовании IDE.
В частности, можно узнать сколько нажатий на кнопки вам сэкономил автокомплит.
У меня 231К за 14 месяцев !
Не плохо конечно, но клавиатура всё равно стёрлась)))
🙌⌨️😵
#offtop
В частности, можно узнать сколько нажатий на кнопки вам сэкономил автокомплит.
У меня 231К за 14 месяцев !
Не плохо конечно, но клавиатура всё равно стёрлась)))
🙌⌨️😵
#offtop
На Хабре в последнее время чего-то не так много интересных статей, но вот эта прям супер годная. Я пока не настолько хорош в иностранных языках, чтобы прям уверенно мочь читать художественную литературу в оригинале, так что обязательно как-нибудь попробую сделать себе параллельную книгу и перечитать что-нибудь типа «Автостопом по галактике». Наверное, в оригинале должно быть ещё круче.
https://habr.com/p/557664/
https://habr.com/p/557664/
Хабр
Сам себе Гутенберг. Делаем параллельные книги
Если вам нравится изучать языки (или вы их преподаете), то вы наверняка сталкивались с таким способом освоения языка как параллельное чтение. Он помогает погруз...
В очередной раз обновил пост про настройку точечного обхода блокировок на роутере, потому что сменил провайдера VPN. Теперь я пользуюсь Red Shield VPN — это VPN от админа канала @itsorm, так что дух цифрового сопротивления зашкаливает. Они буквально пару недель назад запилили поддержку WireGuard и теперь удовлетворяют всем моим запросам. И они вроде классные — скорость хорошая и по деньгам выходит раза в полтора дешевле, чем мой предыдущий VPN. Так как я уже очень привык не замечать козни Роскомнадзора, в этот раз я подписался на VPN сразу на год.
Если вам тоже такое интересно, то я там в посте приложил рефералку, по ней вам дадут месяц бесплатного VPN. А еще вот тут есть промокод на удешевлённый тариф.
Если вам тоже такое интересно, то я там в посте приложил рефералку, по ней вам дадут месяц бесплатного VPN. А еще вот тут есть промокод на удешевлённый тариф.
Питонические атаки
Настройка точечного обхода блокировок на роутере с OpenWRT
Как перестать думать о блокировках сайтов и начать жить
This media is not supported in your browser
VIEW IN TELEGRAM
Мигель Гринберг — широко известный в кругах пользователей Flask автор библиотек, туториалов и статей — изобрёл ещё одну классную штуку под названием
https://blog.miguelgrinberg.com/post/dynamically-update-your-flask-web-pages-using-turbo-flask
#flask
Turbo-Flask
. Этот плагин интегрирует во Flask-приложение фронтендовую библиотеку turbo.js
, которая слушает команды от сервера через WebSocket и обновляет части страницы динамически. Похоже, что в итоге можно сделать практически какую угодно динамическую логику на фронтенде, не написав ни одной строчки на JS. Если не учитывать того, что рендеринг всё-таки происходит на бэкенде, то выглядит это прям как настоящее SPA (Single Page Application).https://blog.miguelgrinberg.com/post/dynamically-update-your-flask-web-pages-using-turbo-flask
#flask
На недавно прошедшем Language Summit был презентован PEP 654 — Exception Groups and except*, который сейчас находится на стадии черновика и, вероятно, попадёт в язык в версии 3.11. Этот PEP предлагает добавить в Python возможность запускать сразу несколько не связанных друг с другом исключений, и обрабатывать тоже по несколько штук сразу в одном специальном блоке
Вот так можно будет запустить группу исключений:
Исключения
Да, группировка исключений — это весьма своеобразная фича. Авторы документа не предполагают, что такой способ работы с исключениями получит широкое распространение. Насколько я понимаю, этот новый механизм создаётся для решения каких-то специфичных проблем.
except*
. Это позволит более удобным образом спроектировать API в различных местах stdlib и сторонних библиотек, а также сделает поведение более правильным и в некоторых краевых случаях позволит не терять исключения.Вот так можно будет запустить группу исключений:
raise ExceptionGroup(
"everything is bad",
[
ValueError("bad value"),
TypeError("bad type")
],
)
Можно создавать из групп исключений целые иерархии и запускать их (вложить ExceptionGroup
внутрь ExceptionGroup
).Исключения
ExceptionGroup
можно перехватывать как обычные исключения (при помощи except
), а можно вот так разбивать группу на отдельные исключения и обрабатывать в каждом блоке except*
исключения только определенного типа:try:
...
except *TypeError:
print("type is bad")
except *ValueError as e:
assert isinstance(e, ExceptionGroup) # it's a group!
print("value is bad")
При выполнении куска кода выше по идее должно будет напечататься следующее:type is bad
value is bad
То есть будут выполнены сразу два блока except*
. Причём в каждый блок except*
приходит не одно исключение, а целая группа. Обработанные исключения удаляются из исходной группы, а необработанные идут по следующим блокам except*
. При разбивании группы исключений на подгруппы происходит обход группы как дерева. Если после проверки всех блоков группа исключений осталась непустой, то она рейзится дальше. Нельзя для одного блока try
иметь и обычный except
, и групповой except*
.Да, группировка исключений — это весьма своеобразная фича. Авторы документа не предполагают, что такой способ работы с исключениями получит широкое распространение. Насколько я понимаю, этот новый механизм создаётся для решения каких-то специфичных проблем.
peps.python.org
PEP 654 – Exception Groups and except* | peps.python.org
Python Enhancement Proposals (PEPs)
Питонические атаки
На недавно прошедшем Language Summit был презентован PEP 654 — Exception Groups and except*, который сейчас находится на стадии черновика и, вероятно, попадёт в язык в версии 3.11. Этот PEP предлагает добавить в Python возможность запускать сразу несколько…
Первое впечатление об этом документе у меня было такое: "ну и дичь". Когда попытался вникнуть получше и пересказать, то всё стало более-менее логично и понятно, но до сих пор не уверен, что те краевые случаи, которыми мотивировано добавление этого далеко не самого простого механизма, того стоят. Посмотрим, конечно, попадёт ли это в язык, и если попадёт, то в каком виде. Если уж над этим PEP работает сам Гвидо и его презентовали на языковом саммите, то, наверное, высоки шансы, что эта фича в том или ином виде пройдёт в язык.