Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
b813a0e9
Kaydet (Commit)
b813a0e9
authored
Ock 19, 2017
tarafından
Serhiy Storchaka
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Issue #20186: Converted the _operator module to Argument Clinic.
Patch by Tal Einat.
üst
bd584f16
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
2428 additions
and
245 deletions
+2428
-245
_operator.c
Modules/_operator.c
+780
-245
_operator.c.h
Modules/clinic/_operator.c.h
+1648
-0
No files found.
Modules/_operator.c
Dosyayı görüntüle @
b813a0e9
#include "Python.h"
#include "clinic/_operator.c.h"
/*[clinic input]
module _operator
[clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=672ecf48487521e7]*/
PyDoc_STRVAR
(
operator_doc
,
"Operator interface.
\n
\
\n
\
...
...
@@ -10,158 +17,702 @@ is equivalent to the expression x+y. The function names are those\n\
used for special methods; variants without leading and trailing
\n
\
'__' are also provided for convenience."
);
#define spam1(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a1) { \
return AOP(a1); }
#define spam2(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1, *a2; \
if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
return AOP(a1,a2); }
#define spamoi(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1; int a2; \
if(! PyArg_ParseTuple(a,"Oi:" #OP,&a1,&a2)) return NULL; \
return AOP(a1,a2); }
#define spam2n(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1, *a2; \
if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
if(-1 == AOP(a1,a2)) return NULL; \
Py_INCREF(Py_None); \
return Py_None; }
#define spam3n(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1, *a2, *a3; \
if(! PyArg_UnpackTuple(a,#OP,3,3,&a1,&a2,&a3)) return NULL; \
if(-1 == AOP(a1,a2,a3)) return NULL; \
Py_INCREF(Py_None); \
return Py_None; }
#define spami(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a1) { \
long r; \
if(-1 == (r=AOP(a1))) return NULL; \
return PyBool_FromLong(r); }
#define spami2(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1, *a2; long r; \
if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
if(-1 == (r=AOP(a1,a2))) return NULL; \
return PyLong_FromLong(r); }
#define spamn2(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1, *a2; Py_ssize_t r; \
if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
if(-1 == (r=AOP(a1,a2))) return NULL; \
return PyLong_FromSsize_t(r); }
#define spami2b(OP,AOP) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1, *a2; long r; \
if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
if(-1 == (r=AOP(a1,a2))) return NULL; \
return PyBool_FromLong(r); }
#define spamrc(OP,A) static PyObject *OP(PyObject *s, PyObject *a) { \
PyObject *a1, *a2; \
if(! PyArg_UnpackTuple(a,#OP,2,2,&a1,&a2)) return NULL; \
return PyObject_RichCompare(a1,a2,A); }
spami
(
truth
,
PyObject_IsTrue
)
spam2
(
op_add
,
PyNumber_Add
)
spam2
(
op_sub
,
PyNumber_Subtract
)
spam2
(
op_mul
,
PyNumber_Multiply
)
spam2
(
op_matmul
,
PyNumber_MatrixMultiply
)
spam2
(
op_floordiv
,
PyNumber_FloorDivide
)
spam2
(
op_truediv
,
PyNumber_TrueDivide
)
spam2
(
op_mod
,
PyNumber_Remainder
)
spam1
(
op_neg
,
PyNumber_Negative
)
spam1
(
op_pos
,
PyNumber_Positive
)
spam1
(
op_abs
,
PyNumber_Absolute
)
spam1
(
op_inv
,
PyNumber_Invert
)
spam1
(
op_invert
,
PyNumber_Invert
)
spam2
(
op_lshift
,
PyNumber_Lshift
)
spam2
(
op_rshift
,
PyNumber_Rshift
)
spami
(
op_not_
,
PyObject_Not
)
spam2
(
op_and_
,
PyNumber_And
)
spam2
(
op_xor
,
PyNumber_Xor
)
spam2
(
op_or_
,
PyNumber_Or
)
spam2
(
op_iadd
,
PyNumber_InPlaceAdd
)
spam2
(
op_isub
,
PyNumber_InPlaceSubtract
)
spam2
(
op_imul
,
PyNumber_InPlaceMultiply
)
spam2
(
op_imatmul
,
PyNumber_InPlaceMatrixMultiply
)
spam2
(
op_ifloordiv
,
PyNumber_InPlaceFloorDivide
)
spam2
(
op_itruediv
,
PyNumber_InPlaceTrueDivide
)
spam2
(
op_imod
,
PyNumber_InPlaceRemainder
)
spam2
(
op_ilshift
,
PyNumber_InPlaceLshift
)
spam2
(
op_irshift
,
PyNumber_InPlaceRshift
)
spam2
(
op_iand
,
PyNumber_InPlaceAnd
)
spam2
(
op_ixor
,
PyNumber_InPlaceXor
)
spam2
(
op_ior
,
PyNumber_InPlaceOr
)
spam2
(
op_concat
,
PySequence_Concat
)
spam2
(
op_iconcat
,
PySequence_InPlaceConcat
)
spami2b
(
op_contains
,
PySequence_Contains
)
spamn2
(
indexOf
,
PySequence_Index
)
spamn2
(
countOf
,
PySequence_Count
)
spam2
(
op_getitem
,
PyObject_GetItem
)
spam2n
(
op_delitem
,
PyObject_DelItem
)
spam3n
(
op_setitem
,
PyObject_SetItem
)
spamrc
(
op_lt
,
Py_LT
)
spamrc
(
op_le
,
Py_LE
)
spamrc
(
op_eq
,
Py_EQ
)
spamrc
(
op_ne
,
Py_NE
)
spamrc
(
op_gt
,
Py_GT
)
spamrc
(
op_ge
,
Py_GE
)
static
PyObject
*
op_pow
(
PyObject
*
s
,
PyObject
*
a
)
{
PyObject
*
a1
,
*
a2
;
if
(
PyArg_UnpackTuple
(
a
,
"pow"
,
2
,
2
,
&
a1
,
&
a2
))
return
PyNumber_Power
(
a1
,
a2
,
Py_None
);
return
NULL
;
}
static
PyObject
*
op_ipow
(
PyObject
*
s
,
PyObject
*
a
)
{
PyObject
*
a1
,
*
a2
;
if
(
PyArg_UnpackTuple
(
a
,
"ipow"
,
2
,
2
,
&
a1
,
&
a2
))
return
PyNumber_InPlacePower
(
a1
,
a2
,
Py_None
);
return
NULL
;
/*[clinic input]
_operator.truth -> bool
a: object
/
Return True if a is true, False otherwise.
[clinic start generated code]*/
static
int
_operator_truth_impl
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=eaf87767234fa5d7 input=bc74a4cd90235875]*/
{
return
PyObject_IsTrue
(
a
);
}
/*[clinic input]
_operator.add
a: object
b: object
/
Same as a + b.
[clinic start generated code]*/
static
PyObject
*
_operator_add_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=8292984204f45164 input=5efe3bff856ac215]*/
{
return
PyNumber_Add
(
a
,
b
);
}
/*[clinic input]
_operator.sub = _operator.add
Same as a - b.
[clinic start generated code]*/
static
PyObject
*
_operator_sub_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=4adfc3b888c1ee2e input=6494c6b100b8e795]*/
{
return
PyNumber_Subtract
(
a
,
b
);
}
/*[clinic input]
_operator.mul = _operator.add
Same as a * b.
[clinic start generated code]*/
static
PyObject
*
_operator_mul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=d24d66f55a01944c input=2368615b4358b70d]*/
{
return
PyNumber_Multiply
(
a
,
b
);
}
/*[clinic input]
_operator.matmul = _operator.add
Same as a @ b.
[clinic start generated code]*/
static
PyObject
*
_operator_matmul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=a20d917eb35d0101 input=9ab304e37fb42dd4]*/
{
return
PyNumber_MatrixMultiply
(
a
,
b
);
}
/*[clinic input]
_operator.floordiv = _operator.add
Same as a // b.
[clinic start generated code]*/
static
PyObject
*
_operator_floordiv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=df26b71a60589f99 input=bb2e88ba446c612c]*/
{
return
PyNumber_FloorDivide
(
a
,
b
);
}
/*[clinic input]
_operator.truediv = _operator.add
Same as a / b.
[clinic start generated code]*/
static
PyObject
*
_operator_truediv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=0e6a959944d77719 input=ecbb947673f4eb1f]*/
{
return
PyNumber_TrueDivide
(
a
,
b
);
}
/*[clinic input]
_operator.mod = _operator.add
Same as a % b.
[clinic start generated code]*/
static
PyObject
*
_operator_mod_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=9519822f0bbec166 input=102e19b422342ac1]*/
{
return
PyNumber_Remainder
(
a
,
b
);
}
/*[clinic input]
_operator.neg
a: object
/
Same as -a.
[clinic start generated code]*/
static
PyObject
*
_operator_neg
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=36e08ecfc6a1c08c input=84f09bdcf27c96ec]*/
{
return
PyNumber_Negative
(
a
);
}
/*[clinic input]
_operator.pos = _operator.neg
Same as +a.
[clinic start generated code]*/
static
PyObject
*
_operator_pos
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=dad7a126221dd091 input=b6445b63fddb8772]*/
{
return
PyNumber_Positive
(
a
);
}
/*[clinic input]
_operator.abs = _operator.neg
Same as abs(a).
[clinic start generated code]*/
static
PyObject
*
_operator_abs
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=1389a93ba053ea3e input=341d07ba86f58039]*/
{
return
PyNumber_Absolute
(
a
);
}
/*[clinic input]
_operator.inv = _operator.neg
Same as ~a.
[clinic start generated code]*/
static
PyObject
*
_operator_inv
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=a56875ba075ee06d input=b01a4677739f6eb2]*/
{
return
PyNumber_Invert
(
a
);
}
/*[clinic input]
_operator.invert = _operator.neg
Same as ~a.
[clinic start generated code]*/
static
PyObject
*
_operator_invert
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=406b5aa030545fcc input=7f2d607176672e55]*/
{
return
PyNumber_Invert
(
a
);
}
/*[clinic input]
_operator.lshift = _operator.add
Same as a << b.
[clinic start generated code]*/
static
PyObject
*
_operator_lshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=37f7e52c41435bd8 input=746e8a160cbbc9eb]*/
{
return
PyNumber_Lshift
(
a
,
b
);
}
/*[clinic input]
_operator.rshift = _operator.add
Same as a >> b.
[clinic start generated code]*/
static
PyObject
*
_operator_rshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=4593c7ef30ec2ee3 input=d2c85bb5a64504c2]*/
{
return
PyNumber_Rshift
(
a
,
b
);
}
/*[clinic input]
_operator.not_ = _operator.truth
Same as not a.
[clinic start generated code]*/
static
int
_operator_not__impl
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=743f9c24a09759ef input=854156d50804d9b8]*/
{
return
PyObject_Not
(
a
);
}
/*[clinic input]
_operator.and_ = _operator.add
Same as a & b.
[clinic start generated code]*/
static
PyObject
*
_operator_and__impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=93c4fe88f7b76d9e input=4f3057c90ec4c99f]*/
{
return
PyNumber_And
(
a
,
b
);
}
/*[clinic input]
_operator.xor = _operator.add
Same as a ^ b.
[clinic start generated code]*/
static
PyObject
*
_operator_xor_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=b24cd8b79fde0004 input=3c5cfa7253d808dd]*/
{
return
PyNumber_Xor
(
a
,
b
);
}
/*[clinic input]
_operator.or_ = _operator.add
Same as a | b.
[clinic start generated code]*/
static
PyObject
*
_operator_or__impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=58024867b8d90461 input=b40c6c44f7c79c09]*/
{
return
PyNumber_Or
(
a
,
b
);
}
/*[clinic input]
_operator.iadd = _operator.add
Same as a += b.
[clinic start generated code]*/
static
PyObject
*
_operator_iadd_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=07dc627832526eb5 input=d22a91c07ac69227]*/
{
return
PyNumber_InPlaceAdd
(
a
,
b
);
}
/*[clinic input]
_operator.isub = _operator.add
Same as a -= b.
[clinic start generated code]*/
static
PyObject
*
_operator_isub_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=4513467d23b5e0b1 input=4591b00d0a0ccafd]*/
{
return
PyNumber_InPlaceSubtract
(
a
,
b
);
}
/*[clinic input]
_operator.imul = _operator.add
Same as a *= b.
[clinic start generated code]*/
static
PyObject
*
_operator_imul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=5e87dacd19a71eab input=0e01fb8631e1b76f]*/
{
return
PyNumber_InPlaceMultiply
(
a
,
b
);
}
/*[clinic input]
_operator.imatmul = _operator.add
Same as a @= b.
[clinic start generated code]*/
static
PyObject
*
_operator_imatmul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=d603cbdf716ce519 input=bb614026372cd542]*/
{
return
PyNumber_InPlaceMatrixMultiply
(
a
,
b
);
}
/*[clinic input]
_operator.ifloordiv = _operator.add
Same as a //= b.
[clinic start generated code]*/
static
PyObject
*
_operator_ifloordiv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=535336048c681794 input=9df3b5021cff4ca1]*/
{
return
PyNumber_InPlaceFloorDivide
(
a
,
b
);
}
/*[clinic input]
_operator.itruediv = _operator.add
Same as a /= b.
[clinic start generated code]*/
static
PyObject
*
_operator_itruediv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=28017fbd3563952f input=9a1ee01608f5f590]*/
{
return
PyNumber_InPlaceTrueDivide
(
a
,
b
);
}
/*[clinic input]
_operator.imod = _operator.add
Same as a %= b.
[clinic start generated code]*/
static
PyObject
*
op_index
(
PyObject
*
s
,
PyObject
*
a
)
_operator_imod_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=f7c540ae0fc70904 input=d0c384a3ce38e1dd]*/
{
return
PyNumber_InPlaceRemainder
(
a
,
b
);
}
/*[clinic input]
_operator.ilshift = _operator.add
Same as a <<= b.
[clinic start generated code]*/
static
PyObject
*
_operator_ilshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=e73a8fee1ac18749 input=e21b6b310f54572e]*/
{
return
PyNumber_InPlaceLshift
(
a
,
b
);
}
/*[clinic input]
_operator.irshift = _operator.add
Same as a >>= b.
[clinic start generated code]*/
static
PyObject
*
_operator_irshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=97f2af6b5ff2ed81 input=6778dbd0f6e1ec16]*/
{
return
PyNumber_InPlaceRshift
(
a
,
b
);
}
/*[clinic input]
_operator.iand = _operator.add
Same as a &= b.
[clinic start generated code]*/
static
PyObject
*
_operator_iand_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=4599e9d40cbf7d00 input=71dfd8e70c156a7b]*/
{
return
PyNumber_InPlaceAnd
(
a
,
b
);
}
/*[clinic input]
_operator.ixor = _operator.add
Same as a ^= b.
[clinic start generated code]*/
static
PyObject
*
_operator_ixor_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=5ff881766872be03 input=695c32bec0604d86]*/
{
return
PyNumber_InPlaceXor
(
a
,
b
);
}
/*[clinic input]
_operator.ior = _operator.add
Same as a |= b.
[clinic start generated code]*/
static
PyObject
*
_operator_ior_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=48aac319445bf759 input=8f01d03eda9920cf]*/
{
return
PyNumber_InPlaceOr
(
a
,
b
);
}
/*[clinic input]
_operator.concat = _operator.add
Same as a + b, for a and b sequences.
[clinic start generated code]*/
static
PyObject
*
_operator_concat_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=80028390942c5f11 input=8544ccd5341a3658]*/
{
return
PySequence_Concat
(
a
,
b
);
}
/*[clinic input]
_operator.iconcat = _operator.add
Same as a += b, for a and b sequences.
[clinic start generated code]*/
static
PyObject
*
_operator_iconcat_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=3ea0a162ebb2e26d input=8f5fe5722fcd837e]*/
{
return
PySequence_InPlaceConcat
(
a
,
b
);
}
/*[clinic input]
_operator.contains -> bool
a: object
b: object
/
Same as b in a (note reversed operands).
[clinic start generated code]*/
static
int
_operator_contains_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=413b4dbe82b6ffc1 input=9122a69b505fde13]*/
{
return
PySequence_Contains
(
a
,
b
);
}
/*[clinic input]
_operator.indexOf -> Py_ssize_t
a: object
b: object
/
Return the first index of b in a.
[clinic start generated code]*/
static
Py_ssize_t
_operator_indexOf_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=c6226d8e0fb60fa6 input=8be2e43b6a6fffe3]*/
{
return
PySequence_Index
(
a
,
b
);
}
/*[clinic input]
_operator.countOf = _operator.indexOf
Return the number of times b occurs in a.
[clinic start generated code]*/
static
Py_ssize_t
_operator_countOf_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=9e1623197daf3382 input=0c3a2656add252db]*/
{
return
PySequence_Count
(
a
,
b
);
}
/*[clinic input]
_operator.getitem
a: object
b: object
/
Same as a[b].
[clinic start generated code]*/
static
PyObject
*
_operator_getitem_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=6c8d8101a676e594 input=6682797320e48845]*/
{
return
PyObject_GetItem
(
a
,
b
);
}
/*[clinic input]
_operator.setitem
a: object
b: object
c: object
/
Same as a[b] = c.
[clinic start generated code]*/
static
PyObject
*
_operator_setitem_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
,
PyObject
*
c
)
/*[clinic end generated code: output=1324f9061ae99e25 input=ceaf453c4d3a58df]*/
{
if
(
-
1
==
PyObject_SetItem
(
a
,
b
,
c
))
return
NULL
;
Py_RETURN_NONE
;
}
/*[clinic input]
_operator.delitem = _operator.getitem
Same as del a[b].
[clinic start generated code]*/
static
PyObject
*
_operator_delitem_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=db18f61506295799 input=991bec56a0d3ec7f]*/
{
if
(
-
1
==
PyObject_DelItem
(
a
,
b
))
return
NULL
;
Py_RETURN_NONE
;
}
/*[clinic input]
_operator.eq
a: object
b: object
/
Same as a == b.
[clinic start generated code]*/
static
PyObject
*
_operator_eq_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=8d7d46ed4135677c input=586fca687a95a83f]*/
{
return
PyObject_RichCompare
(
a
,
b
,
Py_EQ
);
}
/*[clinic input]
_operator.ne = _operator.eq
Same as a != b.
[clinic start generated code]*/
static
PyObject
*
_operator_ne_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=c99bd0c3a4c01297 input=5d88f23d35e9abac]*/
{
return
PyObject_RichCompare
(
a
,
b
,
Py_NE
);
}
/*[clinic input]
_operator.lt = _operator.eq
Same as a < b.
[clinic start generated code]*/
static
PyObject
*
_operator_lt_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=082d7c45c440e535 input=34a59ad6d39d3a2b]*/
{
return
PyObject_RichCompare
(
a
,
b
,
Py_LT
);
}
/*[clinic input]
_operator.le = _operator.eq
Same as a <= b.
[clinic start generated code]*/
static
PyObject
*
_operator_le_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=00970a2923d0ae17 input=b812a7860a0bef44]*/
{
return
PyObject_RichCompare
(
a
,
b
,
Py_LE
);
}
/*[clinic input]
_operator.gt = _operator.eq
Same as a > b.
[clinic start generated code]*/
static
PyObject
*
_operator_gt_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=8d373349ecf25641 input=9bdb45b995ada35b]*/
{
return
PyObject_RichCompare
(
a
,
b
,
Py_GT
);
}
/*[clinic input]
_operator.ge = _operator.eq
Same as a >= b.
[clinic start generated code]*/
static
PyObject
*
_operator_ge_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=7ce3882256d4b137 input=cf1dc4a5ca9c35f5]*/
{
return
PyObject_RichCompare
(
a
,
b
,
Py_GE
);
}
/*[clinic input]
_operator.pow = _operator.add
Same as a ** b.
[clinic start generated code]*/
static
PyObject
*
_operator_pow_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=09e668ad50036120 input=690b40f097ab1637]*/
{
return
PyNumber_Power
(
a
,
b
,
Py_None
);
}
/*[clinic input]
_operator.ipow = _operator.add
Same as a **= b.
[clinic start generated code]*/
static
PyObject
*
_operator_ipow_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=7189ff4d4367c808 input=f00623899d07499a]*/
{
return
PyNumber_InPlacePower
(
a
,
b
,
Py_None
);
}
/*[clinic input]
_operator.index
a: object
/
Same as a.__index__()
[clinic start generated code]*/
static
PyObject
*
_operator_index
(
PyObject
*
module
,
PyObject
*
a
)
/*[clinic end generated code: output=d972b0764ac305fc input=6f54d50ea64a579c]*/
{
return
PyNumber_Index
(
a
);
}
static
PyObject
*
is_
(
PyObject
*
s
,
PyObject
*
a
)
/*[clinic input]
_operator.is_ = _operator.add
Same as a is b.
[clinic start generated code]*/
static
PyObject
*
_operator_is__impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=bcd47a402e482e1d input=5fa9b97df03c427f]*/
{
PyObject
*
a1
,
*
a2
,
*
result
=
NULL
;
if
(
PyArg_UnpackTuple
(
a
,
"is_"
,
2
,
2
,
&
a1
,
&
a2
))
{
result
=
(
a1
==
a2
)
?
Py_True
:
Py_False
;
Py_INCREF
(
result
);
}
PyObject
*
result
;
result
=
(
a
==
b
)
?
Py_True
:
Py_False
;
Py_INCREF
(
result
);
return
result
;
}
static
PyObject
*
is_not
(
PyObject
*
s
,
PyObject
*
a
)
/*[clinic input]
_operator.is_not = _operator.add
Same as a is not b.
[clinic start generated code]*/
static
PyObject
*
_operator_is_not_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=491a1f2f81f6c7f9 input=5a93f7e1a93535f1]*/
{
PyObject
*
a1
,
*
a2
,
*
result
=
NULL
;
if
(
PyArg_UnpackTuple
(
a
,
"is_not"
,
2
,
2
,
&
a1
,
&
a2
))
{
result
=
(
a1
!=
a2
)
?
Py_True
:
Py_False
;
Py_INCREF
(
result
);
}
PyObject
*
result
;
result
=
(
a
!=
b
)
?
Py_True
:
Py_False
;
Py_INCREF
(
result
);
return
result
;
}
#undef spam1
#undef spam2
#undef spam1o
#undef spam1o
/* compare_digest **********************************************************/
/*
...
...
@@ -210,53 +761,52 @@ _tscmp(const unsigned char *a, const unsigned char *b,
return
(
result
==
0
);
}
PyDoc_STRVAR
(
length_hint__doc__
,
"length_hint(obj, default=0) -> int
\n
"
"Return an estimate of the number of items in obj.
\n
"
"This is useful for presizing containers when building from an
\n
"
"iterable.
\n
"
"
\n
"
"If the object supports len(), the result will be
\n
"
"exact. Otherwise, it may over- or under-estimate by an
\n
"
"arbitrary amount. The result will be an integer >= 0."
);
/*[clinic input]
_operator.length_hint -> Py_ssize_t
obj: object
default: Py_ssize_t = 0
/
Return an estimate of the number of items in obj.
static
PyObject
*
length_hint
(
PyObject
*
self
,
PyObject
*
args
)
This is useful for presizing containers when building from an iterable.
If the object supports len(), the result will be exact.
Otherwise, it may over- or under-estimate by an arbitrary amount.
The result will be an integer >= 0.
[clinic start generated code]*/
static
Py_ssize_t
_operator_length_hint_impl
(
PyObject
*
module
,
PyObject
*
obj
,
Py_ssize_t
default_value
)
/*[clinic end generated code: output=01d469edc1d612ad input=65ed29f04401e96a]*/
{
PyObject
*
obj
;
Py_ssize_t
defaultvalue
=
0
,
res
;
if
(
!
PyArg_ParseTuple
(
args
,
"O|n:length_hint"
,
&
obj
,
&
defaultvalue
))
{
return
NULL
;
}
res
=
PyObject_LengthHint
(
obj
,
defaultvalue
);
if
(
res
==
-
1
&&
PyErr_Occurred
())
{
return
NULL
;
}
return
PyLong_FromSsize_t
(
res
);
return
PyObject_LengthHint
(
obj
,
default_value
);
}
/*[clinic input]
_operator._compare_digest = _operator.eq
Return 'a == b'.
This function uses an approach designed to prevent
timing analysis, making it appropriate for cryptography.
PyDoc_STRVAR
(
compare_digest__doc__
,
"compare_digest(a, b) -> bool
\n
"
"
\n
"
"Return 'a == b'. This function uses an approach designed to prevent
\n
"
"timing analysis, making it appropriate for cryptography.
\n
"
"a and b must both be of the same type: either str (ASCII only),
\n
"
"or any bytes-like object.
\n
"
"
\n
"
"Note: If a and b are of different lengths, or if an error occurs,
\n
"
"a timing attack could theoretically reveal information about the
\n
"
"types and lengths of a and b--but not their values.
\n
"
);
a and b must both be of the same type: either str (ASCII only),
or any bytes-like object.
static
PyObject
*
compare_digest
(
PyObject
*
self
,
PyObject
*
args
)
Note: If a and b are of different lengths, or if an error occurs,
a timing attack could theoretically reveal information about the
types and lengths of a and b--but not their values.
[clinic start generated code]*/
static
PyObject
*
_operator__compare_digest_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
)
/*[clinic end generated code: output=11d452bdd3a23cbc input=9ac7e2c4e30bc356]*/
{
PyObject
*
a
,
*
b
;
int
rc
;
if
(
!
PyArg_ParseTuple
(
args
,
"OO:compare_digest"
,
&
a
,
&
b
))
{
return
NULL
;
}
/* ASCII unicode string */
if
(
PyUnicode_Check
(
a
)
&&
PyUnicode_Check
(
b
))
{
if
(
PyUnicode_READY
(
a
)
==
-
1
||
PyUnicode_READY
(
b
)
==
-
1
)
{
...
...
@@ -323,78 +873,60 @@ compare_digest(PyObject *self, PyObject *args)
/* operator methods **********************************************************/
#define spam1(OP,DOC) {#OP, OP, METH_VARARGS, PyDoc_STR(DOC)},
#define spam2(OP,DOC) {#OP, op_##OP, METH_VARARGS, PyDoc_STR(DOC)},
#define spam1o(OP,DOC) {#OP, OP, METH_O, PyDoc_STR(DOC)},
#define spam2o(OP,DOC) {#OP, op_##OP, METH_O, PyDoc_STR(DOC)},
static
struct
PyMethodDef
operator_methods
[]
=
{
spam1o
(
truth
,
"truth(a) -- Return True if a is true, False otherwise."
)
spam2
(
contains
,
"contains(a, b) -- Same as b in a (note reversed operands)."
)
spam1
(
indexOf
,
"indexOf(a, b) -- Return the first index of b in a."
)
spam1
(
countOf
,
"countOf(a, b) -- Return the number of times b occurs in a."
)
spam1
(
is_
,
"is_(a, b) -- Same as a is b."
)
spam1
(
is_not
,
"is_not(a, b) -- Same as a is not b."
)
spam2o
(
index
,
"index(a) -- Same as a.__index__()"
)
spam2
(
add
,
"add(a, b) -- Same as a + b."
)
spam2
(
sub
,
"sub(a, b) -- Same as a - b."
)
spam2
(
mul
,
"mul(a, b) -- Same as a * b."
)
spam2
(
matmul
,
"matmul(a, b) -- Same as a @ b."
)
spam2
(
floordiv
,
"floordiv(a, b) -- Same as a // b."
)
spam2
(
truediv
,
"truediv(a, b) -- Same as a / b."
)
spam2
(
mod
,
"mod(a, b) -- Same as a % b."
)
spam2o
(
neg
,
"neg(a) -- Same as -a."
)
spam2o
(
pos
,
"pos(a) -- Same as +a."
)
spam2o
(
abs
,
"abs(a) -- Same as abs(a)."
)
spam2o
(
inv
,
"inv(a) -- Same as ~a."
)
spam2o
(
invert
,
"invert(a) -- Same as ~a."
)
spam2
(
lshift
,
"lshift(a, b) -- Same as a << b."
)
spam2
(
rshift
,
"rshift(a, b) -- Same as a >> b."
)
spam2o
(
not_
,
"not_(a) -- Same as not a."
)
spam2
(
and_
,
"and_(a, b) -- Same as a & b."
)
spam2
(
xor
,
"xor(a, b) -- Same as a ^ b."
)
spam2
(
or_
,
"or_(a, b) -- Same as a | b."
)
spam2
(
iadd
,
"a = iadd(a, b) -- Same as a += b."
)
spam2
(
isub
,
"a = isub(a, b) -- Same as a -= b."
)
spam2
(
imul
,
"a = imul(a, b) -- Same as a *= b."
)
spam2
(
imatmul
,
"a = imatmul(a, b) -- Same as a @= b."
)
spam2
(
ifloordiv
,
"a = ifloordiv(a, b) -- Same as a //= b."
)
spam2
(
itruediv
,
"a = itruediv(a, b) -- Same as a /= b"
)
spam2
(
imod
,
"a = imod(a, b) -- Same as a %= b."
)
spam2
(
ilshift
,
"a = ilshift(a, b) -- Same as a <<= b."
)
spam2
(
irshift
,
"a = irshift(a, b) -- Same as a >>= b."
)
spam2
(
iand
,
"a = iand(a, b) -- Same as a &= b."
)
spam2
(
ixor
,
"a = ixor(a, b) -- Same as a ^= b."
)
spam2
(
ior
,
"a = ior(a, b) -- Same as a |= b."
)
spam2
(
concat
,
"concat(a, b) -- Same as a + b, for a and b sequences."
)
spam2
(
iconcat
,
"a = iconcat(a, b) -- Same as a += b, for a and b sequences."
)
spam2
(
getitem
,
"getitem(a, b) -- Same as a[b]."
)
spam2
(
setitem
,
"setitem(a, b, c) -- Same as a[b] = c."
)
spam2
(
delitem
,
"delitem(a, b) -- Same as del a[b]."
)
spam2
(
pow
,
"pow(a, b) -- Same as a ** b."
)
spam2
(
ipow
,
"a = ipow(a, b) -- Same as a **= b."
)
spam2
(
lt
,
"lt(a, b) -- Same as a<b."
)
spam2
(
le
,
"le(a, b) -- Same as a<=b."
)
spam2
(
eq
,
"eq(a, b) -- Same as a==b."
)
spam2
(
ne
,
"ne(a, b) -- Same as a!=b."
)
spam2
(
gt
,
"gt(a, b) -- Same as a>b."
)
spam2
(
ge
,
"ge(a, b) -- Same as a>=b."
)
{
"_compare_digest"
,
(
PyCFunction
)
compare_digest
,
METH_VARARGS
,
compare_digest__doc__
},
{
"length_hint"
,
(
PyCFunction
)
length_hint
,
METH_VARARGS
,
length_hint__doc__
},
_OPERATOR_TRUTH_METHODDEF
_OPERATOR_CONTAINS_METHODDEF
_OPERATOR_INDEXOF_METHODDEF
_OPERATOR_COUNTOF_METHODDEF
_OPERATOR_IS__METHODDEF
_OPERATOR_IS_NOT_METHODDEF
_OPERATOR_INDEX_METHODDEF
_OPERATOR_ADD_METHODDEF
_OPERATOR_SUB_METHODDEF
_OPERATOR_MUL_METHODDEF
_OPERATOR_MATMUL_METHODDEF
_OPERATOR_FLOORDIV_METHODDEF
_OPERATOR_TRUEDIV_METHODDEF
_OPERATOR_MOD_METHODDEF
_OPERATOR_NEG_METHODDEF
_OPERATOR_POS_METHODDEF
_OPERATOR_ABS_METHODDEF
_OPERATOR_INV_METHODDEF
_OPERATOR_INVERT_METHODDEF
_OPERATOR_LSHIFT_METHODDEF
_OPERATOR_RSHIFT_METHODDEF
_OPERATOR_NOT__METHODDEF
_OPERATOR_AND__METHODDEF
_OPERATOR_XOR_METHODDEF
_OPERATOR_OR__METHODDEF
_OPERATOR_IADD_METHODDEF
_OPERATOR_ISUB_METHODDEF
_OPERATOR_IMUL_METHODDEF
_OPERATOR_IMATMUL_METHODDEF
_OPERATOR_IFLOORDIV_METHODDEF
_OPERATOR_ITRUEDIV_METHODDEF
_OPERATOR_IMOD_METHODDEF
_OPERATOR_ILSHIFT_METHODDEF
_OPERATOR_IRSHIFT_METHODDEF
_OPERATOR_IAND_METHODDEF
_OPERATOR_IXOR_METHODDEF
_OPERATOR_IOR_METHODDEF
_OPERATOR_CONCAT_METHODDEF
_OPERATOR_ICONCAT_METHODDEF
_OPERATOR_GETITEM_METHODDEF
_OPERATOR_SETITEM_METHODDEF
_OPERATOR_DELITEM_METHODDEF
_OPERATOR_POW_METHODDEF
_OPERATOR_IPOW_METHODDEF
_OPERATOR_EQ_METHODDEF
_OPERATOR_NE_METHODDEF
_OPERATOR_LT_METHODDEF
_OPERATOR_LE_METHODDEF
_OPERATOR_GT_METHODDEF
_OPERATOR_GE_METHODDEF
_OPERATOR__COMPARE_DIGEST_METHODDEF
_OPERATOR_LENGTH_HINT_METHODDEF
{
NULL
,
NULL
}
/* sentinel */
};
...
...
@@ -409,6 +941,7 @@ typedef struct {
static
PyTypeObject
itemgetter_type
;
/* AC 3.5: treats first argument as an iterable, otherwise uses *args */
static
PyObject
*
itemgetter_new
(
PyTypeObject
*
type
,
PyObject
*
args
,
PyObject
*
kwds
)
{
...
...
@@ -583,6 +1116,7 @@ typedef struct {
static
PyTypeObject
attrgetter_type
;
/* AC 3.5: treats first argument as an iterable, otherwise uses *args */
static
PyObject
*
attrgetter_new
(
PyTypeObject
*
type
,
PyObject
*
args
,
PyObject
*
kwds
)
{
...
...
@@ -927,6 +1461,7 @@ typedef struct {
static
PyTypeObject
methodcaller_type
;
/* AC 3.5: variable number of arguments, not currently support by AC */
static
PyObject
*
methodcaller_new
(
PyTypeObject
*
type
,
PyObject
*
args
,
PyObject
*
kwds
)
{
...
...
Modules/clinic/_operator.c.h
0 → 100644
Dosyayı görüntüle @
b813a0e9
/*[clinic input]
preserve
[clinic start generated code]*/
PyDoc_STRVAR
(
_operator_truth__doc__
,
"truth($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Return True if a is true, False otherwise."
);
#define _OPERATOR_TRUTH_METHODDEF \
{"truth", (PyCFunction)_operator_truth, METH_O, _operator_truth__doc__},
static
int
_operator_truth_impl
(
PyObject
*
module
,
PyObject
*
a
);
static
PyObject
*
_operator_truth
(
PyObject
*
module
,
PyObject
*
a
)
{
PyObject
*
return_value
=
NULL
;
int
_return_value
;
_return_value
=
_operator_truth_impl
(
module
,
a
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
{
goto
exit
;
}
return_value
=
PyBool_FromLong
((
long
)
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_add__doc__
,
"add($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a + b."
);
#define _OPERATOR_ADD_METHODDEF \
{"add", (PyCFunction)_operator_add, METH_FASTCALL, _operator_add__doc__},
static
PyObject
*
_operator_add_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_add
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"add"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"add"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_add_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_sub__doc__
,
"sub($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a - b."
);
#define _OPERATOR_SUB_METHODDEF \
{"sub", (PyCFunction)_operator_sub, METH_FASTCALL, _operator_sub__doc__},
static
PyObject
*
_operator_sub_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_sub
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"sub"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"sub"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_sub_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_mul__doc__
,
"mul($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a * b."
);
#define _OPERATOR_MUL_METHODDEF \
{"mul", (PyCFunction)_operator_mul, METH_FASTCALL, _operator_mul__doc__},
static
PyObject
*
_operator_mul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_mul
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"mul"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"mul"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_mul_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_matmul__doc__
,
"matmul($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a @ b."
);
#define _OPERATOR_MATMUL_METHODDEF \
{"matmul", (PyCFunction)_operator_matmul, METH_FASTCALL, _operator_matmul__doc__},
static
PyObject
*
_operator_matmul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_matmul
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"matmul"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"matmul"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_matmul_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_floordiv__doc__
,
"floordiv($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a // b."
);
#define _OPERATOR_FLOORDIV_METHODDEF \
{"floordiv", (PyCFunction)_operator_floordiv, METH_FASTCALL, _operator_floordiv__doc__},
static
PyObject
*
_operator_floordiv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_floordiv
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"floordiv"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"floordiv"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_floordiv_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_truediv__doc__
,
"truediv($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a / b."
);
#define _OPERATOR_TRUEDIV_METHODDEF \
{"truediv", (PyCFunction)_operator_truediv, METH_FASTCALL, _operator_truediv__doc__},
static
PyObject
*
_operator_truediv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_truediv
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"truediv"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"truediv"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_truediv_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_mod__doc__
,
"mod($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a % b."
);
#define _OPERATOR_MOD_METHODDEF \
{"mod", (PyCFunction)_operator_mod, METH_FASTCALL, _operator_mod__doc__},
static
PyObject
*
_operator_mod_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_mod
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"mod"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"mod"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_mod_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_neg__doc__
,
"neg($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Same as -a."
);
#define _OPERATOR_NEG_METHODDEF \
{"neg", (PyCFunction)_operator_neg, METH_O, _operator_neg__doc__},
PyDoc_STRVAR
(
_operator_pos__doc__
,
"pos($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Same as +a."
);
#define _OPERATOR_POS_METHODDEF \
{"pos", (PyCFunction)_operator_pos, METH_O, _operator_pos__doc__},
PyDoc_STRVAR
(
_operator_abs__doc__
,
"abs($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Same as abs(a)."
);
#define _OPERATOR_ABS_METHODDEF \
{"abs", (PyCFunction)_operator_abs, METH_O, _operator_abs__doc__},
PyDoc_STRVAR
(
_operator_inv__doc__
,
"inv($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Same as ~a."
);
#define _OPERATOR_INV_METHODDEF \
{"inv", (PyCFunction)_operator_inv, METH_O, _operator_inv__doc__},
PyDoc_STRVAR
(
_operator_invert__doc__
,
"invert($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Same as ~a."
);
#define _OPERATOR_INVERT_METHODDEF \
{"invert", (PyCFunction)_operator_invert, METH_O, _operator_invert__doc__},
PyDoc_STRVAR
(
_operator_lshift__doc__
,
"lshift($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a << b."
);
#define _OPERATOR_LSHIFT_METHODDEF \
{"lshift", (PyCFunction)_operator_lshift, METH_FASTCALL, _operator_lshift__doc__},
static
PyObject
*
_operator_lshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_lshift
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"lshift"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"lshift"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_lshift_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_rshift__doc__
,
"rshift($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a >> b."
);
#define _OPERATOR_RSHIFT_METHODDEF \
{"rshift", (PyCFunction)_operator_rshift, METH_FASTCALL, _operator_rshift__doc__},
static
PyObject
*
_operator_rshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_rshift
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"rshift"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"rshift"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_rshift_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_not___doc__
,
"not_($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Same as not a."
);
#define _OPERATOR_NOT__METHODDEF \
{"not_", (PyCFunction)_operator_not_, METH_O, _operator_not___doc__},
static
int
_operator_not__impl
(
PyObject
*
module
,
PyObject
*
a
);
static
PyObject
*
_operator_not_
(
PyObject
*
module
,
PyObject
*
a
)
{
PyObject
*
return_value
=
NULL
;
int
_return_value
;
_return_value
=
_operator_not__impl
(
module
,
a
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
{
goto
exit
;
}
return_value
=
PyBool_FromLong
((
long
)
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_and___doc__
,
"and_($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a & b."
);
#define _OPERATOR_AND__METHODDEF \
{"and_", (PyCFunction)_operator_and_, METH_FASTCALL, _operator_and___doc__},
static
PyObject
*
_operator_and__impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_and_
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"and_"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"and_"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_and__impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_xor__doc__
,
"xor($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a ^ b."
);
#define _OPERATOR_XOR_METHODDEF \
{"xor", (PyCFunction)_operator_xor, METH_FASTCALL, _operator_xor__doc__},
static
PyObject
*
_operator_xor_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_xor
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"xor"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"xor"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_xor_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_or___doc__
,
"or_($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a | b."
);
#define _OPERATOR_OR__METHODDEF \
{"or_", (PyCFunction)_operator_or_, METH_FASTCALL, _operator_or___doc__},
static
PyObject
*
_operator_or__impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_or_
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"or_"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"or_"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_or__impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_iadd__doc__
,
"iadd($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a += b."
);
#define _OPERATOR_IADD_METHODDEF \
{"iadd", (PyCFunction)_operator_iadd, METH_FASTCALL, _operator_iadd__doc__},
static
PyObject
*
_operator_iadd_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_iadd
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"iadd"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"iadd"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_iadd_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_isub__doc__
,
"isub($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a -= b."
);
#define _OPERATOR_ISUB_METHODDEF \
{"isub", (PyCFunction)_operator_isub, METH_FASTCALL, _operator_isub__doc__},
static
PyObject
*
_operator_isub_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_isub
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"isub"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"isub"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_isub_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_imul__doc__
,
"imul($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a *= b."
);
#define _OPERATOR_IMUL_METHODDEF \
{"imul", (PyCFunction)_operator_imul, METH_FASTCALL, _operator_imul__doc__},
static
PyObject
*
_operator_imul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_imul
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"imul"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"imul"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_imul_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_imatmul__doc__
,
"imatmul($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a @= b."
);
#define _OPERATOR_IMATMUL_METHODDEF \
{"imatmul", (PyCFunction)_operator_imatmul, METH_FASTCALL, _operator_imatmul__doc__},
static
PyObject
*
_operator_imatmul_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_imatmul
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"imatmul"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"imatmul"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_imatmul_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_ifloordiv__doc__
,
"ifloordiv($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a //= b."
);
#define _OPERATOR_IFLOORDIV_METHODDEF \
{"ifloordiv", (PyCFunction)_operator_ifloordiv, METH_FASTCALL, _operator_ifloordiv__doc__},
static
PyObject
*
_operator_ifloordiv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_ifloordiv
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"ifloordiv"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"ifloordiv"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_ifloordiv_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_itruediv__doc__
,
"itruediv($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a /= b."
);
#define _OPERATOR_ITRUEDIV_METHODDEF \
{"itruediv", (PyCFunction)_operator_itruediv, METH_FASTCALL, _operator_itruediv__doc__},
static
PyObject
*
_operator_itruediv_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_itruediv
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"itruediv"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"itruediv"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_itruediv_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_imod__doc__
,
"imod($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a %= b."
);
#define _OPERATOR_IMOD_METHODDEF \
{"imod", (PyCFunction)_operator_imod, METH_FASTCALL, _operator_imod__doc__},
static
PyObject
*
_operator_imod_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_imod
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"imod"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"imod"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_imod_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_ilshift__doc__
,
"ilshift($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a <<= b."
);
#define _OPERATOR_ILSHIFT_METHODDEF \
{"ilshift", (PyCFunction)_operator_ilshift, METH_FASTCALL, _operator_ilshift__doc__},
static
PyObject
*
_operator_ilshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_ilshift
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"ilshift"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"ilshift"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_ilshift_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_irshift__doc__
,
"irshift($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a >>= b."
);
#define _OPERATOR_IRSHIFT_METHODDEF \
{"irshift", (PyCFunction)_operator_irshift, METH_FASTCALL, _operator_irshift__doc__},
static
PyObject
*
_operator_irshift_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_irshift
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"irshift"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"irshift"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_irshift_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_iand__doc__
,
"iand($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a &= b."
);
#define _OPERATOR_IAND_METHODDEF \
{"iand", (PyCFunction)_operator_iand, METH_FASTCALL, _operator_iand__doc__},
static
PyObject
*
_operator_iand_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_iand
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"iand"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"iand"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_iand_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_ixor__doc__
,
"ixor($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a ^= b."
);
#define _OPERATOR_IXOR_METHODDEF \
{"ixor", (PyCFunction)_operator_ixor, METH_FASTCALL, _operator_ixor__doc__},
static
PyObject
*
_operator_ixor_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_ixor
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"ixor"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"ixor"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_ixor_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_ior__doc__
,
"ior($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a |= b."
);
#define _OPERATOR_IOR_METHODDEF \
{"ior", (PyCFunction)_operator_ior, METH_FASTCALL, _operator_ior__doc__},
static
PyObject
*
_operator_ior_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_ior
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"ior"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"ior"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_ior_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_concat__doc__
,
"concat($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a + b, for a and b sequences."
);
#define _OPERATOR_CONCAT_METHODDEF \
{"concat", (PyCFunction)_operator_concat, METH_FASTCALL, _operator_concat__doc__},
static
PyObject
*
_operator_concat_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_concat
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"concat"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"concat"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_concat_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_iconcat__doc__
,
"iconcat($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a += b, for a and b sequences."
);
#define _OPERATOR_ICONCAT_METHODDEF \
{"iconcat", (PyCFunction)_operator_iconcat, METH_FASTCALL, _operator_iconcat__doc__},
static
PyObject
*
_operator_iconcat_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_iconcat
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"iconcat"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"iconcat"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_iconcat_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_contains__doc__
,
"contains($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as b in a (note reversed operands)."
);
#define _OPERATOR_CONTAINS_METHODDEF \
{"contains", (PyCFunction)_operator_contains, METH_FASTCALL, _operator_contains__doc__},
static
int
_operator_contains_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_contains
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
int
_return_value
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"contains"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"contains"
,
kwnames
))
{
goto
exit
;
}
_return_value
=
_operator_contains_impl
(
module
,
a
,
b
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
{
goto
exit
;
}
return_value
=
PyBool_FromLong
((
long
)
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_indexOf__doc__
,
"indexOf($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Return the first index of b in a."
);
#define _OPERATOR_INDEXOF_METHODDEF \
{"indexOf", (PyCFunction)_operator_indexOf, METH_FASTCALL, _operator_indexOf__doc__},
static
Py_ssize_t
_operator_indexOf_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_indexOf
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
Py_ssize_t
_return_value
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"indexOf"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"indexOf"
,
kwnames
))
{
goto
exit
;
}
_return_value
=
_operator_indexOf_impl
(
module
,
a
,
b
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
{
goto
exit
;
}
return_value
=
PyLong_FromSsize_t
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_countOf__doc__
,
"countOf($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Return the number of times b occurs in a."
);
#define _OPERATOR_COUNTOF_METHODDEF \
{"countOf", (PyCFunction)_operator_countOf, METH_FASTCALL, _operator_countOf__doc__},
static
Py_ssize_t
_operator_countOf_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_countOf
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
Py_ssize_t
_return_value
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"countOf"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"countOf"
,
kwnames
))
{
goto
exit
;
}
_return_value
=
_operator_countOf_impl
(
module
,
a
,
b
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
{
goto
exit
;
}
return_value
=
PyLong_FromSsize_t
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_getitem__doc__
,
"getitem($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a[b]."
);
#define _OPERATOR_GETITEM_METHODDEF \
{"getitem", (PyCFunction)_operator_getitem, METH_FASTCALL, _operator_getitem__doc__},
static
PyObject
*
_operator_getitem_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_getitem
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"getitem"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"getitem"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_getitem_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_setitem__doc__
,
"setitem($module, a, b, c, /)
\n
"
"--
\n
"
"
\n
"
"Same as a[b] = c."
);
#define _OPERATOR_SETITEM_METHODDEF \
{"setitem", (PyCFunction)_operator_setitem, METH_FASTCALL, _operator_setitem__doc__},
static
PyObject
*
_operator_setitem_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
,
PyObject
*
c
);
static
PyObject
*
_operator_setitem
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
PyObject
*
c
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"setitem"
,
3
,
3
,
&
a
,
&
b
,
&
c
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"setitem"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_setitem_impl
(
module
,
a
,
b
,
c
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_delitem__doc__
,
"delitem($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as del a[b]."
);
#define _OPERATOR_DELITEM_METHODDEF \
{"delitem", (PyCFunction)_operator_delitem, METH_FASTCALL, _operator_delitem__doc__},
static
PyObject
*
_operator_delitem_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_delitem
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"delitem"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"delitem"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_delitem_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_eq__doc__
,
"eq($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a == b."
);
#define _OPERATOR_EQ_METHODDEF \
{"eq", (PyCFunction)_operator_eq, METH_FASTCALL, _operator_eq__doc__},
static
PyObject
*
_operator_eq_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_eq
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"eq"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"eq"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_eq_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_ne__doc__
,
"ne($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a != b."
);
#define _OPERATOR_NE_METHODDEF \
{"ne", (PyCFunction)_operator_ne, METH_FASTCALL, _operator_ne__doc__},
static
PyObject
*
_operator_ne_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_ne
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"ne"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"ne"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_ne_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_lt__doc__
,
"lt($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a < b."
);
#define _OPERATOR_LT_METHODDEF \
{"lt", (PyCFunction)_operator_lt, METH_FASTCALL, _operator_lt__doc__},
static
PyObject
*
_operator_lt_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_lt
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"lt"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"lt"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_lt_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_le__doc__
,
"le($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a <= b."
);
#define _OPERATOR_LE_METHODDEF \
{"le", (PyCFunction)_operator_le, METH_FASTCALL, _operator_le__doc__},
static
PyObject
*
_operator_le_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_le
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"le"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"le"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_le_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_gt__doc__
,
"gt($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a > b."
);
#define _OPERATOR_GT_METHODDEF \
{"gt", (PyCFunction)_operator_gt, METH_FASTCALL, _operator_gt__doc__},
static
PyObject
*
_operator_gt_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_gt
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"gt"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"gt"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_gt_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_ge__doc__
,
"ge($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a >= b."
);
#define _OPERATOR_GE_METHODDEF \
{"ge", (PyCFunction)_operator_ge, METH_FASTCALL, _operator_ge__doc__},
static
PyObject
*
_operator_ge_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_ge
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"ge"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"ge"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_ge_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_pow__doc__
,
"pow($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a ** b."
);
#define _OPERATOR_POW_METHODDEF \
{"pow", (PyCFunction)_operator_pow, METH_FASTCALL, _operator_pow__doc__},
static
PyObject
*
_operator_pow_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_pow
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"pow"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"pow"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_pow_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_ipow__doc__
,
"ipow($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a **= b."
);
#define _OPERATOR_IPOW_METHODDEF \
{"ipow", (PyCFunction)_operator_ipow, METH_FASTCALL, _operator_ipow__doc__},
static
PyObject
*
_operator_ipow_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_ipow
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"ipow"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"ipow"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_ipow_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_index__doc__
,
"index($module, a, /)
\n
"
"--
\n
"
"
\n
"
"Same as a.__index__()"
);
#define _OPERATOR_INDEX_METHODDEF \
{"index", (PyCFunction)_operator_index, METH_O, _operator_index__doc__},
PyDoc_STRVAR
(
_operator_is___doc__
,
"is_($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a is b."
);
#define _OPERATOR_IS__METHODDEF \
{"is_", (PyCFunction)_operator_is_, METH_FASTCALL, _operator_is___doc__},
static
PyObject
*
_operator_is__impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_is_
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"is_"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"is_"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_is__impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_is_not__doc__
,
"is_not($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Same as a is not b."
);
#define _OPERATOR_IS_NOT_METHODDEF \
{"is_not", (PyCFunction)_operator_is_not, METH_FASTCALL, _operator_is_not__doc__},
static
PyObject
*
_operator_is_not_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator_is_not
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"is_not"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"is_not"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator_is_not_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator_length_hint__doc__
,
"length_hint($module, obj, default=0, /)
\n
"
"--
\n
"
"
\n
"
"Return an estimate of the number of items in obj.
\n
"
"
\n
"
"This is useful for presizing containers when building from an iterable.
\n
"
"
\n
"
"If the object supports len(), the result will be exact.
\n
"
"Otherwise, it may over- or under-estimate by an arbitrary amount.
\n
"
"The result will be an integer >= 0."
);
#define _OPERATOR_LENGTH_HINT_METHODDEF \
{"length_hint", (PyCFunction)_operator_length_hint, METH_FASTCALL, _operator_length_hint__doc__},
static
Py_ssize_t
_operator_length_hint_impl
(
PyObject
*
module
,
PyObject
*
obj
,
Py_ssize_t
default_value
);
static
PyObject
*
_operator_length_hint
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
obj
;
Py_ssize_t
default_value
=
0
;
Py_ssize_t
_return_value
;
if
(
!
_PyArg_ParseStack
(
args
,
nargs
,
"O|n:length_hint"
,
&
obj
,
&
default_value
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"length_hint"
,
kwnames
))
{
goto
exit
;
}
_return_value
=
_operator_length_hint_impl
(
module
,
obj
,
default_value
);
if
((
_return_value
==
-
1
)
&&
PyErr_Occurred
())
{
goto
exit
;
}
return_value
=
PyLong_FromSsize_t
(
_return_value
);
exit:
return
return_value
;
}
PyDoc_STRVAR
(
_operator__compare_digest__doc__
,
"_compare_digest($module, a, b, /)
\n
"
"--
\n
"
"
\n
"
"Return
\'
a == b
\'
.
\n
"
"
\n
"
"This function uses an approach designed to prevent
\n
"
"timing analysis, making it appropriate for cryptography.
\n
"
"
\n
"
"a and b must both be of the same type: either str (ASCII only),
\n
"
"or any bytes-like object.
\n
"
"
\n
"
"Note: If a and b are of different lengths, or if an error occurs,
\n
"
"a timing attack could theoretically reveal information about the
\n
"
"types and lengths of a and b--but not their values."
);
#define _OPERATOR__COMPARE_DIGEST_METHODDEF \
{"_compare_digest", (PyCFunction)_operator__compare_digest, METH_FASTCALL, _operator__compare_digest__doc__},
static
PyObject
*
_operator__compare_digest_impl
(
PyObject
*
module
,
PyObject
*
a
,
PyObject
*
b
);
static
PyObject
*
_operator__compare_digest
(
PyObject
*
module
,
PyObject
**
args
,
Py_ssize_t
nargs
,
PyObject
*
kwnames
)
{
PyObject
*
return_value
=
NULL
;
PyObject
*
a
;
PyObject
*
b
;
if
(
!
_PyArg_UnpackStack
(
args
,
nargs
,
"_compare_digest"
,
2
,
2
,
&
a
,
&
b
))
{
goto
exit
;
}
if
(
!
_PyArg_NoStackKeywords
(
"_compare_digest"
,
kwnames
))
{
goto
exit
;
}
return_value
=
_operator__compare_digest_impl
(
module
,
a
,
b
);
exit:
return
return_value
;
}
/*[clinic end generated code: output=c030b6747fddd9c6 input=a9049054013a1b77]*/
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment