Dennis Sweeney <[email protected]> added the comment:
I think the behavior is consistent between tuple and an empty subclass:
>>> from typing import List
>>> class T(tuple):
pass
====== Empty tuple/T ======
>>> List[()]
Traceback (most recent call last):
...
TypeError: Too few parameters for typing.List; actual 0, expected 1
>>> List[T()]
Traceback (most recent call last):
...
TypeError: Too few parameters for typing.List; actual 0, expected 1
====== tuple/T whose only entry is 1 ======
>>> List[(1,)]
Traceback (most recent call last):
...
TypeError: Parameters to generic types must be types. Got 1.
>>> List[T((1,))]
Traceback (most recent call last):
...
TypeError: Parameters to generic types must be types. Got 1.
====== tuple/T whose only entry is "" ======
>>> List[T(("",))]
Traceback (most recent call last):
...
SyntaxError: unexpected EOF while parsing
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
...
SyntaxError: Forward reference must be an expression -- got ''
>>> List[("",)]
Traceback (most recent call last):
...
SyntaxError: unexpected EOF while parsing
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
...
SyntaxError: Forward reference must be an expression -- got ''
====== tuple/T whose only entry can rightly become a forward reference ======
>>> List[("Foo",)]
typing.List[ForwardRef('Foo')]
>>> List[T(("Foo",))]
typing.List[ForwardRef('Foo')]
Your ``return tuple.__new__(cls, ("",))`` constructor is just always
returning the same as ``T(("",))``
----------
nosy: +Dennis Sweeney
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue40582>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com