Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
Официально свершилось! Посты в блоге написаны, сборки выложены на официальном сайте, документация обновлена, тэги в репо проставлены!

Счастливого паттерн матчинга!

https://pythoninsider.blogspot.com/2021/10/python-3100-is-available.html
Forwarded from Python Daily
Трансляция началась. Начало немного упоротое

20:28 Запустили сборку документации, будет собираться минут 20, пока общаются

20:37 Рассказывают о новых возможностях тайп хинтов в 3.10

20:40 Наконец можно параметризовать generic декораторы PEP612

20:48 Про inspect.get_annotations

20:50 Подробнее про TypeGuard

20:57 Документация собралась. Презентация про Pattern Matching

21:20 Билдят CPython

21:23 Женщина в шапочке собачки рассказывает какие люди amazing

21:46 Всё ещё рассказывает

21:48 Готовят MacOS и Windows бинарники, релиз близок

21:58 Про новые сообщения об ошибках

22:17 Куда движется Python (обзор новых фич, которые появятся после 3.10)
https://speed.python.org/

22.30 Хотят добавить сахар для Sentinel Values

22:37 Как присоединиться к разработке Python

23:00 >>> 3.10 вышел в релиз! <<<
Вместе с Python 3.10 появились и новые проблемы. Но не потому что Python, а потому что вокруг сплошной YAML со своими неожиданными особенностями.

Когда будете настраивать CI или ещё где-нибудь указывать версию интерпретатора, не забудьте обязательно ставить кавычки, иначе заботливый YAML распарсит 3.10 как число с плавающей точкой. Не надо раскапывать Python 3.1, дайте ему спокойно разложиться 😅

https://dev.to/hugovk/the-python-3-1-problem-85g
Мониторинг поддержки Python 3.10 в 360 самых популярных библиотеках.

На данный момент лишь 11.9% явно декларируют поддержку новой версии языка. Среди оставшихся 88% есть ещё некоторое количество библиотек, которые тестируются и работают на 3.10, но не выставили классификатор у себя в метаданных, поэтому не определяются этим сайтом (например, Flask, Jinja и все другие проекты Pallets). Большинство библиотек все-таки пока что не гарантирует работу на 3.10.

Что ж, подождём ещё пару месяцев! Должно стать уже сильно лучше, наверняка можно будет уже более-менее полноценно пользоваться.

https://pyreadiness.org/3.10/
PyCharm тоже выпустили видео в честь релиза Python 3.10.

Самая интересная часть с 16:19 — это где Łukasz Langa рассказывает, почему black не сможет полноценно парсить код на новой версии языка с match-case (пока что).

https://youtu.be/JteTO3EE7y0

#jetbrains
Причины пока что не обновляться до 3.10.

Некоторые из них уже не актуальны. Например, вчера на Docker Hub появились официальные образы с 3.10.

В любом случае, хорошим правилом считается дождаться первого релиза с фиксами, прежде чем обновлять прод (будет через полтора-два месяца). А экспериментировать можно и нужно уже сейчас!

https://pythonspeed.com/articles/switch-python-3.10/
У меня вчера мир перевернулся, когда я попытался создать строку с одним бэкслешем при помощи r"\". Всё, во что я верил, оказалось ложью. Я даже сначала подумал, что у меня сломалась IDE, когда написанное вдруг начало светиться красным.

Обычно люди думают, что все бэкслеши в r-строках перестают быть экранирующими символами. Это не совсем так, потому что внутри строковых литералов люди часто зачем-то хотят использовать те же самые кавычки, в которых строка и записана. Чтобы это было возможным, нужно кавычки внутри литерала экранировать. Так что внутри r-строк бэкслеши в большинстве случаев просто символы, но перед кавычками они снова становятся экранирующими. А если тебе нужно сделать строковый литерал, который заканчивался бы на бэкслеш, то его тоже нужно заэкранировать (удвоить).

Так что самый короткий способ создать строку из одного бэкслеша — это всё-таки просто "\\". Raw строки тут никак не помогут.

Судя по результатам голосования, не только меня удивило такое поведение.

Даже в официальном FAQ есть такой пункт:

https://docs.python.org/3/faq/design.html#why-can-t-raw-strings-r-strings-end-with-a-backslash
Forwarded from Python Daily
А вы знали что у builtin функции iter() есть два варианта использования?

Первый, о котором знают все - вызывает у объекта метод __iter__() и возвращает результат.

А вот второй принимает Callable без аргументов и значение, на котором нужно остановиться. Можно применять, например, для чтения файлов блоками:
from functools import partial
with open('mydata.db', 'rb') as f:
for block in iter(partial(f.read, 64), b''):
process_block(block)

Более простой пример:
>>> a = (i for i in (1, 2, 3, 4, 5))
>>> list(iter(lambda: next(a), 4))
[1, 2, 3]

#python_cookbook #iter #nothabr #pydaily
Forwarded from oleg_log (Oleg Kovalov)
Был бы я более питонистом, сразу бы пошел собирать из сорцов, но нет.

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

https://realpython.com/cpython-source-code-guide/#what-does-a-compiler-do
match_statement_cheatsheet.png
4 MB
Офигенный читшит про новый структурный паттерн матчинг🐍

P.S. А за денюжку можно получить еще более подробную версию читшита: https://mathspp.gumroad.com/l/cheatsheet_match_statement
А вот ещё вдогонку статьи от того же автора, что сделал и читшит чуть выше.

Когда и как стоит использовать паттерн матчинг: https://mathspp.com/blog/pydonts/structural-pattern-matching-tutorial

И когда не стоит этим злоупотреблять и лучше отдать предпочтение другим инструментам: https://mathspp.com/blog/pydonts/structural-pattern-matching-anti-patterns
В 3.10 в модуль itertools добавилась функция pairwise. Кажется, more_itertools постепенно перетекает в стандартную библиотеку 😅

https://docs.python.org/3/library/itertools.html#itertools.pairwise
Чем вы заполняете пустые функции?
Anonymous Poll
75%
pass
15%
… (Ellipsis)
6%
пишу докстринг
4%
другое
toolz — набор утилит для функционального программирования в Python.

Код: https://github.com/pytoolz/toolz/
Документация: https://toolz.readthedocs.io/

Содержит в себе множество различных функций. Частично пересекается с more_itertools и boltons, про которые я писал чуть выше.

Все функции можно разбить на три категории:
* itertoolz;
* functoolz;
* dicttoolz.

Самыми интересными на мой взгляд являются функции compose и curry, которые составляют основу для ФП. В документации подробно расписано, зачем всё это нужно.

Вот здесь, например, можно посмотреть как используется каррирование: https://blog.drewolson.org/declarative-validation (отсюда я, кстати, и узнал про эту библиотеку).

#library
☝️ это в тему про то, что Python вышел на первое место в рейтинге языков TIOBE, сдвинув Java и C на 2 и 3 место. Не слишком доверяю этому рейтингу, так что не считаю это каким-то большим достижением. Но всё равно приятно. И картинка забавная.

https://opennet.ru/55945/
Вышел стабильный релиз psycopg==3.0. Можно пробовать внедрять в свои проекты.

pip install --upgrade pip           # to upgrade pip
pip install psycopg[binary,pool] # to install package and dependencies


🐍 + 🐘 = 🎉

https://twitter.com/psycopg/status/1447962001121157133?s=21

#psycopg