-
-
Notifications
You must be signed in to change notification settings - Fork 33.4k
Closed
Labels
testsTests in the Lib/test dirTests in the Lib/test dirtopic-typingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Description
Right now get_args() has a lot of test arguments:
cpython/Lib/test/test_typing.py
Lines 4938 to 4975 in 1756ffd
| def test_get_args(self): | |
| T = TypeVar('T') | |
| class C(Generic[T]): pass | |
| self.assertEqual(get_args(C[int]), (int,)) | |
| self.assertEqual(get_args(C[T]), (T,)) | |
| self.assertEqual(get_args(int), ()) | |
| self.assertEqual(get_args(ClassVar[int]), (int,)) | |
| self.assertEqual(get_args(Union[int, str]), (int, str)) | |
| self.assertEqual(get_args(Literal[42, 43]), (42, 43)) | |
| self.assertEqual(get_args(Final[List[int]]), (List[int],)) | |
| self.assertEqual(get_args(Union[int, Tuple[T, int]][str]), | |
| (int, Tuple[str, int])) | |
| self.assertEqual(get_args(typing.Dict[int, Tuple[T, T]][Optional[int]]), | |
| (int, Tuple[Optional[int], Optional[int]])) | |
| self.assertEqual(get_args(Callable[[], T][int]), ([], int)) | |
| self.assertEqual(get_args(Callable[..., int]), (..., int)) | |
| self.assertEqual(get_args(Union[int, Callable[[Tuple[T, ...]], str]]), | |
| (int, Callable[[Tuple[T, ...]], str])) | |
| self.assertEqual(get_args(Tuple[int, ...]), (int, ...)) | |
| self.assertEqual(get_args(Tuple[()]), ()) | |
| self.assertEqual(get_args(Annotated[T, 'one', 2, ['three']]), (T, 'one', 2, ['three'])) | |
| self.assertEqual(get_args(List), ()) | |
| self.assertEqual(get_args(Tuple), ()) | |
| self.assertEqual(get_args(Callable), ()) | |
| self.assertEqual(get_args(list[int]), (int,)) | |
| self.assertEqual(get_args(list), ()) | |
| self.assertEqual(get_args(collections.abc.Callable[[int], str]), ([int], str)) | |
| self.assertEqual(get_args(collections.abc.Callable[..., str]), (..., str)) | |
| self.assertEqual(get_args(collections.abc.Callable[[], str]), ([], str)) | |
| self.assertEqual(get_args(collections.abc.Callable[[int], str]), | |
| get_args(Callable[[int], str])) | |
| P = ParamSpec('P') | |
| self.assertEqual(get_args(Callable[P, int]), (P, int)) | |
| self.assertEqual(get_args(Callable[Concatenate[int, P], int]), | |
| (Concatenate[int, P], int)) | |
| self.assertEqual(get_args(list | str), (list, str)) | |
| self.assertEqual(get_args(Required[int]), (int,)) | |
| self.assertEqual(get_args(NotRequired[int]), (int,)) |
But, it still misses a lot more:
collections.abc.CallablewithParamSpec(it is special cased inget_args)- Different type variables and
P.args/P.kwargs - Raw
Concatenatetype UnpackAnyOptionalTypeAliasTypeGuardLiteralStringSelfProtocolsubtypes- Generic
TypedDict/NamedTuple
I am already working on a PR for this. Will send it later today.
Metadata
Metadata
Assignees
Labels
testsTests in the Lib/test dirTests in the Lib/test dirtopic-typingtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error