Skip to content

Commit 2105925

Browse files
committed
Address review
1 parent 87b91c0 commit 2105925

File tree

2 files changed

+12
-4
lines changed

2 files changed

+12
-4
lines changed

Lib/test/test_type_aliases.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def test_generic(self):
211211
self.assertEqual(TA.__value__, list[T])
212212
self.assertEqual(TA.__type_params__, (T,))
213213
self.assertEqual(TA.__module__, __name__)
214-
self.assertIs(TA[int].__class__, types.GenericAlias)
214+
self.assertIs(type(TA[int]), types.GenericAlias)
215215

216216
def test_not_generic(self):
217217
TA = TypeAliasType("TA", list[int], type_params=())

Objects/typevarobject.c

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1914,7 +1914,16 @@ typealias_alloc(PyObject *name, PyObject *type_params, PyObject *compute_value,
19141914
return NULL;
19151915
}
19161916
ta->name = Py_NewRef(name);
1917-
ta->type_params = Py_IsNone(type_params) ? NULL : Py_XNewRef(type_params);
1917+
if (
1918+
type_params == NULL
1919+
|| Py_IsNone(type_params)
1920+
|| (PyTuple_Check(type_params) && PyTuple_GET_SIZE(type_params) == 0)
1921+
) {
1922+
ta->type_params = NULL;
1923+
}
1924+
else {
1925+
ta->type_params = Py_NewRef(type_params);
1926+
}
19181927
ta->compute_value = Py_XNewRef(compute_value);
19191928
ta->value = Py_XNewRef(value);
19201929
ta->module = Py_XNewRef(module);
@@ -1957,8 +1966,7 @@ typealias_reduce_impl(typealiasobject *self)
19571966
static PyObject *
19581967
typealias_subscript(PyObject *self, PyObject *args)
19591968
{
1960-
typealiasobject *ta = ((typealiasobject *)self);
1961-
if (ta->type_params == NULL || PyTuple_GET_SIZE(ta->type_params) == 0) {
1969+
if (((typealiasobject *)self)->type_params == NULL) {
19621970
PyErr_SetString(PyExc_TypeError,
19631971
"Only generic type aliases are subscriptable");
19641972
return NULL;

0 commit comments

Comments
 (0)