bpo-42233: Add union type expression support for GenericAlias and fix de-duplicating of GenericAlias (GH-23077)
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "Python.h"
|
||||
#include "pycore_object.h"
|
||||
#include "pycore_unionobject.h" // _Py_union_as_number
|
||||
#include "structmember.h" // PyMemberDef
|
||||
|
||||
typedef struct {
|
||||
@@ -573,6 +574,10 @@ ga_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||
return Py_GenericAlias(origin, arguments);
|
||||
}
|
||||
|
||||
static PyNumberMethods ga_as_number = {
|
||||
.nb_or = (binaryfunc)_Py_union_type_or, // Add __or__ function
|
||||
};
|
||||
|
||||
// TODO:
|
||||
// - argument clinic?
|
||||
// - __doc__?
|
||||
@@ -586,6 +591,7 @@ PyTypeObject Py_GenericAliasType = {
|
||||
.tp_basicsize = sizeof(gaobject),
|
||||
.tp_dealloc = ga_dealloc,
|
||||
.tp_repr = ga_repr,
|
||||
.tp_as_number = &ga_as_number, // allow X | Y of GenericAlias objs
|
||||
.tp_as_mapping = &ga_as_mapping,
|
||||
.tp_hash = ga_hash,
|
||||
.tp_call = ga_call,
|
||||
|
||||
Reference in New Issue
Block a user