
June 8, 2021
6:40 p.m.
Am 08.06.21 um 18:51 schrieb Guido van Rossum:
Why do type checkers have to special-case sentinels? Until this idiom has become popular, using `Literal[SENTINEL]` seems the most logical approach. The only change to type checkers in that case would be to treat `sentinel` as one of the types whose values can be used in `Literal[]`.
Unless I misunderstand something (quite possible!), the following idiom does not currently work with type checkers and is not supposed to work: X = foo() def bar(x: Literal[X]) -> None: ... This means that "X = sentinel()" would need to be special-cased. - Sebastian