with self.assertRaises(TypeError):
list[T][arg]
+ def test_many_weakrefs(self):
+ # gh-108295: this used to segfault
+ for cls in (ParamSpec, TypeVarTuple, TypeVar):
+ with self.subTest(cls=cls):
+ vals = weakref.WeakValueDictionary()
+
+ for x in range(100000):
+ vals[x] = cls(str(x))
+ del vals
+
def template_replace(templates: list[str], replacements: dict[str, list[str]]) -> list[tuple[str]]:
"""Renders templates with possible combinations of replacements.
Py_XDECREF(tv->constraints);
Py_XDECREF(tv->evaluate_constraints);
_PyObject_ClearManagedDict(self);
+ PyObject_ClearWeakRefs(self);
Py_TYPE(self)->tp_free(self);
Py_DECREF(tp);
Py_DECREF(ps->name);
Py_XDECREF(ps->bound);
_PyObject_ClearManagedDict(self);
+ PyObject_ClearWeakRefs(self);
Py_TYPE(self)->tp_free(self);
Py_DECREF(tp);
Py_DECREF(tvt->name);
_PyObject_ClearManagedDict(self);
+ PyObject_ClearWeakRefs(self);
Py_TYPE(self)->tp_free(self);
Py_DECREF(tp);