Документация Python неофициальный перевод

Objects for Type Hinting

Various built-in types for type hinting are provided. Currently, two types exist – GenericAlias and Union. Only GenericAlias is exposed to C.

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)
Часть Stable ABI начиная с версии 3.9.

Создаёт объект GenericAlias. Эквивалентно вызову класса Python types.GenericAlias. Аргументы origin и args задают соответственно атрибуты __origin__ и __args__ объекта GenericAlias. origin должен быть PyTypeObject*, а args может быть PyTupleObject* или любым PyObject*. Если переданный args не является кортежем, автоматически создаётся кортеж из одного элемента и __args__ устанавливается в (args,). Проверка аргументов минимальна, поэтому функция выполнится успешно, даже если origin не является типом. Атрибут __parameters__ объекта GenericAlias создаётся лениво из __args__. В случае неудачи возникает исключение и возвращается NULL.

Вот пример того, как сделать тип расширения обобщённым:

...
static PyMethodDef my_obj_methods[] = {
    // Другие методы.
    ...
    {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"}
    ...
}

См. также

The data model method __class_getitem__().

Новое в версии 3.9.

PyTypeObject Py_GenericAliasType
Часть Stable ABI начиная с версии 3.9.

The C type of the object returned by Py_GenericAlias(). Equivalent to types.GenericAlias in Python.

Новое в версии 3.9.