add_operators(): the __floordiv__ and __truediv__ descriptors (and
their 'i' and 'r' variants) were not being generated if the corresponding nb_ slots were present in the type object. I bet this is because floor and true division were introduced after I last looked at that part of the code.
This commit is contained in:
parent
29a67ced72
commit
874f15aa28
|
@ -1837,6 +1837,8 @@ BINARY(rshift, "x>>y");
|
|||
BINARY(and, "x&y");
|
||||
BINARY(xor, "x^y");
|
||||
BINARY(or, "x|y");
|
||||
BINARY(floordiv, "x//y");
|
||||
BINARY(truediv, "x/y # true division");
|
||||
|
||||
static PyObject *
|
||||
wrap_ternaryfunc(PyObject *self, PyObject *args, void *wrapped)
|
||||
|
@ -1915,6 +1917,8 @@ IBINARY(irshift, "x>>=y");
|
|||
IBINARY(iand, "x&=y");
|
||||
IBINARY(ixor, "x^=y");
|
||||
IBINARY(ior, "x|=y");
|
||||
IBINARY(ifloordiv, "x//=y");
|
||||
IBINARY(itruediv, "x/=y # true division");
|
||||
|
||||
#undef ITERNARY
|
||||
#define ITERNARY(NAME, OP) \
|
||||
|
@ -2586,6 +2590,12 @@ add_operators(PyTypeObject *type)
|
|||
ADD(nb->nb_inplace_and, tab_iand);
|
||||
ADD(nb->nb_inplace_xor, tab_ixor);
|
||||
ADD(nb->nb_inplace_or, tab_ior);
|
||||
if (type->tp_flags & Py_TPFLAGS_CHECKTYPES) {
|
||||
ADD(nb->nb_floor_divide, tab_floordiv);
|
||||
ADD(nb->nb_true_divide, tab_truediv);
|
||||
ADD(nb->nb_inplace_floor_divide, tab_ifloordiv);
|
||||
ADD(nb->nb_inplace_true_divide, tab_itruediv);
|
||||
}
|
||||
}
|
||||
|
||||
ADD(type->tp_getattro, tab_getattr);
|
||||
|
|
Loading…
Reference in New Issue