Интересный прикол
такое же поведение и тут
>>> t = Literal[True,2,3] >>> tt = Literal[1,2,3] >>> hex(id(t)) '0x7f970617e2b0' >>> hex(id(tt)) '0x7f970617e2b0' >>>
Хотя если так подумать наверное вполне нормальное поведение, если учитывать что буллы это под капотом инты, то смысла особо не теряется
Вот если у меня функция принимает только True, я указываю аннотацию Literal[True]. А она вдруг становится Literal[1]. И если верить этой новой аннотации, то моя функция может принимать 1, но ведь я ожидаю более специфичный тип (не int, а bool)
Так-то если 1 == True ты же ожидаешь True увидеть?
Ну то что при сравнее однёрки и True, ты ожидаешь что будет True
Ого. Выглядит как баг
неплохо бы зарепортить
👍
Пофиксили, прикольно) https://github.com/python/cpython/pull/29334
Обсуждают сегодня