Size: a a a

2021 March 02

E

Eugene in PiterPy Meetup
Боброний
Так оно для List, угадай сколько там параметров
Вот поэтому костыль :)
источник

Б

Боброний in PiterPy Meetup
Eugene
Вот поэтому костыль :)
Кто говорит, что это не костыль?
источник

E

Eugene in PiterPy Meetup
Боброний
Кто говорит, что это не костыль?
как написать этот же код для N-типов?
источник

E

Eugene in PiterPy Meetup
Я не понимаю даже как для двух написать :)
источник

Б

Боброний in PiterPy Meetup
Eugene
как написать этот же код для N-типов?
Просто вместо одного типа сделать два везде. Подробнее не готов объяснять
источник

E

Eugene in PiterPy Meetup
Боброний
Просто вместо одного типа сделать два везде. Подробнее не готов объяснять
Я просто не понимаю, зачем вообще проверять
if isinstance(type_, tuple):
Что там может быть кроме tuple, если это __args__

И
зачем распаковывать тогда если там уже  tuple?
источник

Б

Боброний in PiterPy Meetup
Eugene
Я просто не понимаю, зачем вообще проверять
if isinstance(type_, tuple):
Что там может быть кроме tuple, если это __args__

И
зачем распаковывать тогда если там уже  tuple?
Я не знаю, что тебе ответить. Там может быть любой переданный тип, а не tuple.
источник

Б

Боброний in PiterPy Meetup
Ты точно знаешь, как работает __getitem__?
источник

Б

Боброний in PiterPy Meetup
Туда вполне может попасть и tuple, и единичный тип
источник

Б

Боброний in PiterPy Meetup
Когда типов несколько, такая проверка не нужна. В моём примере тип ожидается только один.
источник

E

Eugene in PiterPy Meetup
Боброний
Ты точно знаешь, как работает __getitem__?
Это вообще к чему вопрос? Я не вижу в этом коде `__getitem__. Я вижу метод `__class_getitem__ и как он работает я понятия не имею. И что такое type_ тоже.

Ребята, не отрывайтесь от реальности. Если вы живёте в кишках какой-то библиотеки, это не значит, что пользователи этой библиотеки знают их так же как вы.
источник

Б

Боброний in PiterPy Meetup
Eugene
Это вообще к чему вопрос? Я не вижу в этом коде `__getitem__. Я вижу метод `__class_getitem__ и как он работает я понятия не имею. И что такое type_ тоже.

Ребята, не отрывайтесь от реальности. Если вы живёте в кишках какой-то библиотеки, это не значит, что пользователи этой библиотеки знают их так же как вы.
__class_getitem__ - это встроенный в питон магический метод, работает так же как обычный  __getitem__, только для класса
источник

E

Eugene in PiterPy Meetup
Боброний
Когда типов несколько, такая проверка не нужна. В моём примере тип ожидается только один.
Когда типов несколько код дальше тоже работать не будет ну или не очевидно какая там должна быть логика.
        if isinstance(type_, TypeVar):
           pydantic_type = type(f'{name}[{type_}]', (cls,), {})
источник

E

Eugene in PiterPy Meetup
Боброний
__class_getitem__ - это встроенный в питон магический метод, работает так же как обычный  __getitem__, только для класса
Это когда появилось? Я такое через метаклассы делал.
источник

E

Eugene in PiterPy Meetup
Похоже, в 3.7
источник

Б

Боброний in PiterPy Meetup
Eugene
Это когда появилось? Я такое через метаклассы делал.
3.7
источник

E

Eugene in PiterPy Meetup
File "pydantic/validators.py", line 710, in find_validators
RuntimeError: error checking inheritance of (typing.Literal['appl_date', 'grant_date'], typing.Union[datetime.date, list[datetime.date]]) (type: tuple)


Пожалуй, на этом остановлюсь. Потому что смысл происходящего от меня ускользает. :)
источник

Б

Боброний in PiterPy Meetup
Eugene
File "pydantic/validators.py", line 710, in find_validators
RuntimeError: error checking inheritance of (typing.Literal['appl_date', 'grant_date'], typing.Union[datetime.date, list[datetime.date]]) (type: tuple)


Пожалуй, на этом остановлюсь. Потому что смысл происходящего от меня ускользает. :)
источник

E

Eugene in PiterPy Meetup
Эту фигню с ошибкой я поправил, но код по прежнему не вызывает метод __get_validators__

Вот gist сделал, который можно просто скопипастить в ipython, например.

https://gist.github.com/espdev/a49b7ebc1a4294ae7f5507ea1bb24833
источник

Б

Боброний in PiterPy Meetup
Eugene
Эту фигню с ошибкой я поправил, но код по прежнему не вызывает метод __get_validators__

Вот gist сделал, который можно просто скопипастить в ipython, например.

https://gist.github.com/espdev/a49b7ebc1a4294ae7f5507ea1bb24833
Мда, видимо тут сказываются особенности валидации маппинга. Это уже похоже на баг
источник