class MySentinel(Sentinel):
pass
Am 08.06.21 um 20:54 schrieb Paul Bryan:On Tue, 2021-06-08 at 20:40 +0200, Sebastian Rittau wrote: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.
Why can't a sentinel class itself be used? Why would it need to be instantiated?Do you mean something like this?
# sentinels.pyi
class Sentinel: ... # this is currently not part of the PEP and wouldn't exist at runtime
def sentinel(...) -> Sentinel: ...# foo.py
X = sentinel()
def bar(x: X) -> None: ...Apart from the part that a "Sentinel" class currently isn't part of the PEP (although I'd prefer if it was), this means that all sentinels would be type compatible with each other and using the wrong sentinel wouldn't be caught at type checking time.
If this is not what you meant, could you give an example?
- Sebastian
_______________________________________________Typing-sig mailing list -- typing-sig@python.orgTo unsubscribe send an email to typing-sig-leave@python.orgMember address: pbryan@anode.ca