Size: a a a

2020 October 07

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
да я что то замучался с mypy когда последний раз пробовал
источник

A🚀

Andrey 🚀🚀🚀 Popp... in PiterPy Meetup
оч много писать аннотаций
источник
2020 October 08

KR

K R in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
оч много писать аннотаций
++, до 3.9 вообще не вижу особого смысла
источник

Б

Боброний in PiterPy Meetup
K R
++, до 3.9 вообще не вижу особого смысла
источник

E

Eugene in PiterPy Meetup
Вот когда будет TypePython, тогда поговорим 😃
источник

E

Eugene in PiterPy Meetup
Tython 😂
источник

E

Eugene in PiterPy Meetup
Andrey 🚀🚀🚀 Popp
а посоветуйте какой нибудь линтер для питона, который зироконфиг и делает хотя бы что то полезное (показывает неиспользуемые переменные и ссылки на несуществующие имена)... или mypy сразу только?
А в чём ты код пишешь? Просто после PyCharm, например, flake8 обычно ошибок не находит. Чаще всего всё подсвечивается и вылавливается на этапе написания.
источник

E

Eugene in PiterPy Meetup
но на CI конечно всё равно надо flake8
источник

MK

Maxim Koltsov in PiterPy Meetup
Eugene
но на CI конечно всё равно надо flake8
+100
источник

DB

Dima Boger in PiterPy Meetup
K R
++, до 3.9 вообще не вижу особого смысла
А что в 3.9?
источник

MK

Maxim Koltsov in PiterPy Meetup
Dima Boger
А что в 3.9?
list[int]
источник

DB

Dima Boger in PiterPy Meetup
Все равно писать 🌚
источник

N

Nikolai in PiterPy Meetup
Dima Boger
Все равно писать 🌚
источник

E

Eugene in PiterPy Meetup
Dima Boger
Все равно писать 🌚
Зато теперь можно корректно обрабатывать аннотации без костылей.

Раньше:
from typing import List
a = List[str]
a.__origin__[a.__args__ + (int,)]
TypeError: 'type' object is not subscriptable


Теперь
a = list[str]
a.__origin__[a.__args__ + (int,)]
list[str, int]


Как же криво до Python 3.9 :(
источник

S

Stan in PiterPy Meetup
Eugene
Зато теперь можно корректно обрабатывать аннотации без костылей.

Раньше:
from typing import List
a = List[str]
a.__origin__[a.__args__ + (int,)]
TypeError: 'type' object is not subscriptable


Теперь
a = list[str]
a.__origin__[a.__args__ + (int,)]
list[str, int]


Как же криво до Python 3.9 :(
а зачем это может пригодиться?
источник

E

Eugene in PiterPy Meetup
Stan
а зачем это может пригодиться?
Там где от аннотаций что-то зависит на этапе выполнения, те же валидаторы/парсеры типа Pydantic внутри делают нечто похожее.
источник

E

Eugene in PiterPy Meetup
Просто само по себе это дичь как нелогично и криво, что можно разобрать аннотацию, но собрать обратно уже нельзя
источник

E

Eugene in PiterPy Meetup
Потому что для List (и других стандартных контейнеров) __origin__ возвращает класс контейнера, а не subscriptable обёртку.

А в 3.9 это починилось, потому что классы стандартных контейнеров стали subscriptable.

Почему сразу так нельзя было сделать - не понятно. Но лучше поздно чем никогда
источник

Б

Боброний in PiterPy Meetup
Eugene
Потому что для List (и других стандартных контейнеров) __origin__ возвращает класс контейнера, а не subscriptable обёртку.

А в 3.9 это починилось, потому что классы стандартных контейнеров стали subscriptable.

Почему сразу так нельзя было сделать - не понятно. Но лучше поздно чем никогда
А это же обратно совместимо?
источник

Б

Боброний in PiterPy Meetup
Я мечтаю просто чтобы аннотации из 3.9 добавили патчем в 3.x версии 🌚
источник