Skip to content

Commit 4d2bdcb

Browse files
committed
split tests in two groups
1 parent 06e5cff commit 4d2bdcb

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

src/test_typing_extensions.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5301,7 +5301,6 @@ class Z(Generic[P]):
53015301
class ProtoZ(Protocol[P]):
53025302
pass
53035303

5304-
things = "arguments" if sys.version_info >= (3, 10) else "parameters"
53055304
for klass in Z, ProtoZ:
53065305
with self.subTest(klass=klass.__name__):
53075306
# Note: For 3.10+ __args__ are nested tuples here ((int, ),) instead of (int, )
@@ -5317,6 +5316,7 @@ class ProtoZ(Protocol[P]):
53175316

53185317
G8 = klass[Concatenate[T, ...]]
53195318
self.assertEqual(G8.__args__, (Concatenate[T, ...], ))
5319+
self.assertEqual(G8.__parameters__, (T,))
53205320

53215321
G9 = klass[Concatenate[T, P_2]]
53225322
self.assertEqual(G9.__args__, (Concatenate[T, P_2], ))
@@ -5326,6 +5326,25 @@ class ProtoZ(Protocol[P]):
53265326
G10args = G10.__args__[0] if sys.version_info >= (3, 10) else G10.__args__
53275327
self.assertEqual(G10args, (int, Concatenate[str, P], ))
53285328

5329+
def test_single_argument_generic_with_parameter_expressions(self):
5330+
P = ParamSpec("P")
5331+
T = TypeVar("T")
5332+
P_2 = ParamSpec("P_2")
5333+
5334+
class Z(Generic[P]):
5335+
pass
5336+
5337+
class ProtoZ(Protocol[P]):
5338+
pass
5339+
5340+
things = "arguments" if sys.version_info >= (3, 10) else "parameters"
5341+
for klass in Z, ProtoZ:
5342+
with self.subTest(klass=klass.__name__):
5343+
G6 = klass[int, str, T]
5344+
G8 = klass[Concatenate[T, ...]]
5345+
G9 = klass[Concatenate[T, P_2]]
5346+
G10 = klass[int, Concatenate[str, P]]
5347+
53295348
with self.subTest("Check generic substitution", klass=klass.__name__):
53305349
if sys.version_info < (3, 10):
53315350
self.skipTest("_ConcatenateGenericAlias not subscriptable")
@@ -5339,14 +5358,13 @@ class ProtoZ(Protocol[P]):
53395358
self.assertEqual(G5.__args__, ((int, str, T),))
53405359
H9 = G9[int, [T]]
53415360

5361+
self.assertEqual(G9.__parameters__, (T, P_2))
53425362
with self.subTest("Check parametrization", klass=klass.__name__):
53435363
if sys.version_info[:2] == (3, 10):
53445364
self.skipTest("Parameter detection fails in 3.10")
53455365
with self.assertRaisesRegex(TypeError, f"Too few {things}"):
53465366
G9[int] # for python 3.10 this has no parameters
53475367
self.assertEqual(G6.__parameters__, (T,))
5348-
self.assertEqual(G8.__parameters__, (T,))
5349-
self.assertEqual(G9.__parameters__, (T, P_2))
53505368
if sys.version_info >= (3, 10): # skipped above
53515369
self.assertEqual(G5.__parameters__, (T,))
53525370
self.assertEqual(H9.__parameters__, (T,))

0 commit comments

Comments
 (0)