Привет!
Меня зовут Никита Соболев. Я занимаюсь опенсорс разработкой полный рабочий день.
Тут я рассказываю про #python, #c, #opensource и тд.
Поддержать: https://boosty.to/sobolevn
РКН: https://vk.cc/cOzn36
Связь: @sobolev_nikita
Post #987
4.02K
PEPы в Python окончательно вышли из-под контроля
Давайте посмотрим, что происходит с ПЕПами в CPython. Там много новых спорных штук.
Начнем с более базовых, перейдем к дичи в конце. Какие-то ПЕПы приняты, но большинство в обсуждении.
Докстринги для TypeAliasType
PEP-846: https://github.com/python/peps/pull/5116
Базовая база: пишем докстринги после ключевого слова
Привычный синтаксис из-за sphinx аннотаций для атрибутов.
Кстати, поддержка правила для поиска докстрингов вне правильных мест уже в wps!
Паттерн-матчинг конкретных значений
PEP-845: https://github.com/python/peps/pull/5107
В питоне была проблема, что нельзя сматчить конкретное значение из переменной. Все имена в PM всегда переписываются. В первой версии PEP-622 хотели сделать паттерны для сравнения с переменной, но потом отказались. А без такого - жить довольно сложно.
Такой синтаксис предлагают авторы:
Обратите внимание на
Мне нравится, выглядит полезно.
yield from в асинхронных генераторах
PEP-828: с python3.16 можно будет писать так:
Я нейтрален, зависит от сложности реализации и граничных случаев.
Явные public и private декораторы
PEP 844:
Манипуляция
Почему?
Ключевое слово export
PEP-843: Предлагают добавить ключевое слово
А, опять манипуляции
Ребята из FastAPI тащат синтаксис для себя в stdlib
PEP-835: Предлагают сделать
Крайне неудачный PEP на мой взгляд, о чем я написал авторам и собрал кучу поддержки.
Не поймите меня неправильно: я всячески за операции над типами. Просто я не думаю, что
Одной строкой
- На прошлой неделе я побывал в пресс-туре MAGNIT TECH в Суздале. Было очень круто. Приятно видеть, как развивается ритейл. Обсудил с коллегами умные кассы, внедрение ИИ, новые способы оплаты, предиктивную аналитику спроса, интересное в логистике, предложил им внедрить wps. Хорошо провел время с коллегами @alexgladkovblog, @t0digital, @MrTeamlead. Суздаль - очень красивый! Кароч, очень понравилось. Спасибо за приглашение!
- Мы релизнули
- Про PEP-805 будет отдельный пост
- В Нижний на конфу уже собралось очень много людей из разных городов, приезжайте и вы! Можно даже отбивку о регистрации не ждать, всех пустим :)
Обсуждение: Как вам данные ПЕПы? Нашли что-то полезное для себя?
Давайте посмотрим, что происходит с ПЕПами в CPython. Там много новых спорных штук.
Начнем с более базовых, перейдем к дичи в конце. Какие-то ПЕПы приняты, но большинство в обсуждении.
Докстринги для TypeAliasType
PEP-846: https://github.com/python/peps/pull/5116
Базовая база: пишем докстринги после ключевого слова
type - у нас появляется __doc__ атрибут.
type Timeout = float | None
"""Maximum wait in seconds. """
Привычный синтаксис из-за sphinx аннотаций для атрибутов.
Кстати, поддержка правила для поиска докстрингов вне правильных мест уже в wps!
Паттерн-матчинг конкретных значений
PEP-845: https://github.com/python/peps/pull/5107
В питоне была проблема, что нельзя сматчить конкретное значение из переменной. Все имена в PM всегда переписываются. В первой версии PEP-622 хотели сделать паттерны для сравнения с переменной, но потом отказались. А без такого - жить довольно сложно.
Такой синтаксис предлагают авторы:
def get_book_titles_for_author(author: str):
for book in BOOKS:
match book:
case {"title": title, "author": .author}:
yield title
Обратите внимание на
.author, что показывает матч со значением внутри author, а не переназначение переменной author. Если бы добавили $ для "констант", то было $author 🌚Мне нравится, выглядит полезно.
yield from в асинхронных генераторах
PEP-828: с python3.16 можно будет писать так:
async def agenerator():
yield 1
yield 2
return 3
async def main():
result = yield from agenerator()
assert result == 3
Я нейтрален, зависит от сложности реализации и граничных случаев.
Явные public и private декораторы
PEP 844:
# spam.py
@public
class Public:
...
@private
class Private:
...
# ex.py
import spam
spam.__all__ # ['Public']
Манипуляция
__all__ через декоратор. А можно не надо? Почему?
__all__ используется для from spam import * и не для чего больше. __all__ надо закапывать, а не развивать. Более того, декоратор нельзя повесить на имена и тайп-алиасы. Кажется очень непродуманным решением.Ключевое слово export
PEP-843: Предлагают добавить ключевое слово
export для ... я не знаю чего.А, опять манипуляции
__all__. Чем не устраивает простая текущая система? Если имя начинается с _ - то оно protected. Ключевое слово для управления списком! Я против.Ребята из FastAPI тащат синтаксис для себя в stdlib
PEP-835: Предлагают сделать
@ типовым и рантайм оператором для создания Annotated объектов.Крайне неудачный PEP на мой взгляд, о чем я написал авторам и собрал кучу поддержки.
Не поймите меня неправильно: я всячески за операции над типами. Просто я не думаю, что
int @ Field(max=100) должно значить Annotated[int, Field(max=100)]. Нет задачи сократить количество символов, которые мы пишем (а некоторые уже и не пишут). Одной строкой
- На прошлой неделе я побывал в пресс-туре MAGNIT TECH в Суздале. Было очень круто. Приятно видеть, как развивается ритейл. Обсудил с коллегами умные кассы, внедрение ИИ, новые способы оплаты, предиктивную аналитику спроса, интересное в логистике, предложил им внедрить wps. Хорошо провел время с коллегами @alexgladkovblog, @t0digital, @MrTeamlead. Суздаль - очень красивый! Кароч, очень понравилось. Спасибо за приглашение!
- Мы релизнули
dmr@0.15.0 в рамках #opensource_september, все большое спасибо за участие. Наш самый большой релиз. Пока что!- Про PEP-805 будет отдельный пост
- В Нижний на конфу уже собралось очень много людей из разных городов, приезжайте и вы! Можно даже отбивку о регистрации не ждать, всех пустим :)
Обсуждение: Как вам данные ПЕПы? Нашли что-то полезное для себя?
- 🔥 49
- 🤔 12
- ❤ 9
- 👍 8
- 👌 6
- 🎉 1
