bpo-40792: Make the result of PyNumber_Index() always having exact type int. (GH-20443)

Previously, the result could have been an instance of a subclass of int.

Also revert bpo-26202 and make attributes start, stop and step of the range
object having exact type int.

Add private function _PyNumber_Index() which preserves the old behavior
of PyNumber_Index() for performance to use it in the conversion functions
like PyLong_AsLong().
This commit is contained in:
Serhiy Storchaka 2020-05-28 10:33:45 +03:00 committed by GitHub
parent eaca2aa117
commit 5f4b229df7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
51 changed files with 187 additions and 187 deletions

View File

@ -256,6 +256,10 @@ Number Protocol
Returns the *o* converted to a Python int on success or ``NULL`` with a
:exc:`TypeError` exception raised on failure.
.. versionchanged:: 3.10
The result always has exact type :class:`int`. Previously, the result
could have been an instance of a subclass of ``int``.
.. c:function:: PyObject* PyNumber_ToBase(PyObject *n, int base)

View File

@ -112,6 +112,10 @@ The mathematical and bitwise operations are the most numerous:
Return *a* converted to an integer. Equivalent to ``a.__index__()``.
.. versionchanged:: 3.10
The result always has exact type :class:`int`. Previously, the result
could have been an instance of a subclass of ``int``.
.. function:: inv(obj)
invert(obj)

View File

@ -129,6 +129,10 @@ C API Changes
New Features
------------
The result of :c:func:`PyNumber_Index` now always has exact type :class:`int`.
Previously, the result could have been an instance of a subclass of ``int``.
(Contributed by Serhiy Storchaka in :issue:`40792`.)
Porting to Python 3.10
----------------------

View File

@ -379,6 +379,9 @@ PyAPI_FUNC(void) _Py_add_one_to_index_C(int nd, Py_ssize_t *index,
/* Convert Python int to Py_ssize_t. Do nothing if the argument is None. */
PyAPI_FUNC(int) _Py_convert_optional_to_ssize_t(PyObject *, void *);
/* Same as PyNumber_Index but can return an instance of a subclass of int. */
PyAPI_FUNC(PyObject *) _PyNumber_Index(PyObject *o);
#ifdef __cplusplus
}
#endif

View File

@ -192,6 +192,7 @@ d[bytes] = _deepcopy_atomic
d[str] = _deepcopy_atomic
d[types.CodeType] = _deepcopy_atomic
d[type] = _deepcopy_atomic
d[range] = _deepcopy_atomic
d[types.BuiltinFunctionType] = _deepcopy_atomic
d[types.FunctionType] = _deepcopy_atomic
d[weakref.ref] = _deepcopy_atomic

View File

@ -1332,7 +1332,7 @@ test_Py_ssize_t_converter(PyObject *module, PyObject *const *args, Py_ssize_t na
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1347,7 +1347,7 @@ test_Py_ssize_t_converter(PyObject *module, PyObject *const *args, Py_ssize_t na
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1373,7 +1373,7 @@ exit:
static PyObject *
test_Py_ssize_t_converter_impl(PyObject *module, Py_ssize_t a, Py_ssize_t b,
Py_ssize_t c)
/*[clinic end generated code: output=ea781bb7169b3436 input=3855f184bb3f299d]*/
/*[clinic end generated code: output=3bf73f9fdfeab468 input=3855f184bb3f299d]*/
/*[clinic input]

View File

@ -357,7 +357,7 @@ class TestCopy(unittest.TestCase):
pass
tests = [None, 42, 2**100, 3.14, True, False, 1j,
"hello", "hello\u1234", f.__code__,
NewStyle, Classic, max, property()]
NewStyle, range(10), Classic, max, property()]
for x in tests:
self.assertIs(copy.deepcopy(x), x)
@ -579,17 +579,6 @@ class TestCopy(unittest.TestCase):
self.assertIsNot(y, x)
self.assertIs(y.foo, y)
def test_deepcopy_range(self):
class I(int):
pass
x = range(I(10))
y = copy.deepcopy(x)
self.assertIsNot(y, x)
self.assertEqual(y, x)
self.assertIsNot(y.stop, x.stop)
self.assertEqual(y.stop, x.stop)
self.assertIsInstance(y.stop, I)
# _reconstruct()
def test_reconstruct_string(self):

View File

@ -648,11 +648,17 @@ class RangeTest(unittest.TestCase):
self.assert_attrs(range(0, 10, 3), 0, 10, 3)
self.assert_attrs(range(10, 0, -1), 10, 0, -1)
self.assert_attrs(range(10, 0, -3), 10, 0, -3)
self.assert_attrs(range(True), 0, 1, 1)
self.assert_attrs(range(False, True), 0, 1, 1)
self.assert_attrs(range(False, True, True), 0, 1, 1)
def assert_attrs(self, rangeobj, start, stop, step):
self.assertEqual(rangeobj.start, start)
self.assertEqual(rangeobj.stop, stop)
self.assertEqual(rangeobj.step, step)
self.assertIs(type(rangeobj.start), int)
self.assertIs(type(rangeobj.stop), int)
self.assertIs(type(rangeobj.step), int)
with self.assertRaises(AttributeError):
rangeobj.start = 0

View File

@ -0,0 +1,2 @@
The result of :c:func:`PyNumber_Index` now always has exact type :class:`int`.
Previously, the result could have been an instance of a subclass of ``int``.

View File

@ -0,0 +1,3 @@
Attributes ``start``, ``stop`` and ``step`` of the :class:`range` object now
always has exact type :class:`int`. Previously, they could have been an
instance of a subclass of ``int``.

View File

@ -0,0 +1,2 @@
The result of :func:`operator.index` now always has exact type :class:`int`.
Previously, the result could have been an instance of a subclass of ``int``.

View File

@ -532,7 +532,7 @@ PyNumber_AsOff_t(PyObject *item, PyObject *err)
{
Py_off_t result;
PyObject *runerr;
PyObject *value = PyNumber_Index(item);
PyObject *value = _PyNumber_Index(item);
if (value == NULL)
return -1;

View File

@ -122,7 +122,7 @@ _io__Buffered_peek(buffered *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -197,7 +197,7 @@ _io__Buffered_read1(buffered *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -421,7 +421,7 @@ _io_BufferedReader___init__(PyObject *self, PyObject *args, PyObject *kwargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(fastargs[1]);
PyObject *iobj = _PyNumber_Index(fastargs[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -475,7 +475,7 @@ _io_BufferedWriter___init__(PyObject *self, PyObject *args, PyObject *kwargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(fastargs[1]);
PyObject *iobj = _PyNumber_Index(fastargs[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -567,7 +567,7 @@ _io_BufferedRWPair___init__(PyObject *self, PyObject *args, PyObject *kwargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(PyTuple_GET_ITEM(args, 2));
PyObject *iobj = _PyNumber_Index(PyTuple_GET_ITEM(args, 2));
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -621,7 +621,7 @@ _io_BufferedRandom___init__(PyObject *self, PyObject *args, PyObject *kwargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(fastargs[1]);
PyObject *iobj = _PyNumber_Index(fastargs[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -637,4 +637,4 @@ skip_optional_pos:
exit:
return return_value;
}
/*[clinic end generated code: output=1882bb497ddc9375 input=a9049054013a1b77]*/
/*[clinic end generated code: output=98ccf7610c0e82ba input=a9049054013a1b77]*/

View File

@ -404,7 +404,7 @@ _io_BytesIO_seek(bytesio *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -505,4 +505,4 @@ skip_optional_pos:
exit:
return return_value;
}
/*[clinic end generated code: output=ba0f302f16397741 input=a9049054013a1b77]*/
/*[clinic end generated code: output=49a32140eb8c5555 input=a9049054013a1b77]*/

View File

@ -276,7 +276,7 @@ _io__RawIOBase_read(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -310,4 +310,4 @@ _io__RawIOBase_readall(PyObject *self, PyObject *Py_UNUSED(ignored))
{
return _io__RawIOBase_readall_impl(self);
}
/*[clinic end generated code: output=1f9ce590549593be input=a9049054013a1b77]*/
/*[clinic end generated code: output=83c1361a7a51ca84 input=a9049054013a1b77]*/

View File

@ -179,7 +179,7 @@ _io_StringIO_seek(stringio *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -338,4 +338,4 @@ _io_StringIO_seekable(stringio *self, PyObject *Py_UNUSED(ignored))
{
return _io_StringIO_seekable_impl(self);
}
/*[clinic end generated code: output=9c428b2942d54991 input=a9049054013a1b77]*/
/*[clinic end generated code: output=eea93dcab10d0a97 input=a9049054013a1b77]*/

View File

@ -452,7 +452,7 @@ _io_TextIOWrapper_readline(textio *self, PyObject *const *args, Py_ssize_t nargs
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -671,4 +671,4 @@ _io_TextIOWrapper_close(textio *self, PyObject *Py_UNUSED(ignored))
{
return _io_TextIOWrapper_close_impl(self);
}
/*[clinic end generated code: output=ea96ee1eb3a71f77 input=a9049054013a1b77]*/
/*[clinic end generated code: output=2604c8f3a45b9a03 input=a9049054013a1b77]*/

View File

@ -121,7 +121,7 @@ get_pylong(PyObject *v)
if (!PyLong_Check(v)) {
/* Not an integer; try to use __index__ to convert. */
if (PyIndex_Check(v)) {
v = PyNumber_Index(v);
v = _PyNumber_Index(v);
if (v == NULL)
return NULL;
}

View File

@ -344,7 +344,7 @@ II_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
int do_decref = 0; /* if nb_int was called */
if (!PyLong_Check(v)) {
v = PyNumber_Index(v);
v = _PyNumber_Index(v);
if (NULL == v) {
return -1;
}
@ -404,7 +404,7 @@ LL_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
int do_decref = 0; /* if nb_int was called */
if (!PyLong_Check(v)) {
v = PyNumber_Index(v);
v = _PyNumber_Index(v);
if (NULL == v) {
return -1;
}
@ -457,7 +457,7 @@ QQ_setitem(arrayobject *ap, Py_ssize_t i, PyObject *v)
int do_decref = 0; /* if nb_int was called */
if (!PyLong_Check(v)) {
v = PyNumber_Index(v);
v = _PyNumber_Index(v);
if (NULL == v) {
return -1;
}

View File

@ -48,7 +48,7 @@ _bisect_bisect_right(PyObject *module, PyObject *const *args, Py_ssize_t nargs,
if (args[2]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -119,7 +119,7 @@ _bisect_insort_right(PyObject *module, PyObject *const *args, Py_ssize_t nargs,
if (args[2]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -189,7 +189,7 @@ _bisect_bisect_left(PyObject *module, PyObject *const *args, Py_ssize_t nargs, P
if (args[2]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -260,7 +260,7 @@ _bisect_insort_left(PyObject *module, PyObject *const *args, Py_ssize_t nargs, P
if (args[2]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -283,4 +283,4 @@ skip_optional_pos:
exit:
return return_value;
}
/*[clinic end generated code: output=e9097a9acd10b13f input=a9049054013a1b77]*/
/*[clinic end generated code: output=6cf46f205659f01a input=a9049054013a1b77]*/

View File

@ -159,7 +159,7 @@ _bz2_BZ2Decompressor_decompress(BZ2Decompressor *self, PyObject *const *args, Py
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -210,4 +210,4 @@ _bz2_BZ2Decompressor___init__(PyObject *self, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=c69a7de8e26c2ad1 input=a9049054013a1b77]*/
/*[clinic end generated code: output=b49102ee26928a28 input=a9049054013a1b77]*/

View File

@ -52,7 +52,7 @@ tuplegetter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(PyTuple_GET_ITEM(args, 0));
PyObject *iobj = _PyNumber_Index(PyTuple_GET_ITEM(args, 0));
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -68,4 +68,4 @@ tuplegetter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=439d77631a056b4d input=a9049054013a1b77]*/
/*[clinic end generated code: output=947186d369f50f1e input=a9049054013a1b77]*/

View File

@ -432,7 +432,7 @@ _elementtree_Element_insert(ElementObject *self, PyObject *const *args, Py_ssize
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -915,4 +915,4 @@ skip_optional:
exit:
return return_value;
}
/*[clinic end generated code: output=c98b210c525a9338 input=a9049054013a1b77]*/
/*[clinic end generated code: output=1385b5e5688f3614 input=a9049054013a1b77]*/

View File

@ -94,7 +94,7 @@ EVPXOF_digest(EVPobject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -141,7 +141,7 @@ EVPXOF_hexdigest(EVPobject *self, PyObject *const *args, Py_ssize_t nargs, PyObj
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1417,4 +1417,4 @@ exit:
#ifndef _HASHLIB_GET_FIPS_MODE_METHODDEF
#define _HASHLIB_GET_FIPS_MODE_METHODDEF
#endif /* !defined(_HASHLIB_GET_FIPS_MODE_METHODDEF) */
/*[clinic end generated code: output=95447a60132f039e input=a9049054013a1b77]*/
/*[clinic end generated code: output=2bbd6159493f44ea input=a9049054013a1b77]*/

View File

@ -118,7 +118,7 @@ _lzma_LZMADecompressor_decompress(Decompressor *self, PyObject *const *args, Py_
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -319,4 +319,4 @@ exit:
return return_value;
}
/*[clinic end generated code: output=a87074ca902bd432 input=a9049054013a1b77]*/
/*[clinic end generated code: output=d6e997ebc269f78f input=a9049054013a1b77]*/

View File

@ -1426,7 +1426,7 @@ _operator_length_hint(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1486,4 +1486,4 @@ _operator__compare_digest(PyObject *module, PyObject *const *args, Py_ssize_t na
exit:
return return_value;
}
/*[clinic end generated code: output=1fe4adf4f5761420 input=a9049054013a1b77]*/
/*[clinic end generated code: output=eae5d08f971a65fd input=a9049054013a1b77]*/

View File

@ -193,7 +193,7 @@ _sre_SRE_Pattern_match(PatternObject *self, PyObject *const *args, Py_ssize_t na
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -209,7 +209,7 @@ _sre_SRE_Pattern_match(PatternObject *self, PyObject *const *args, Py_ssize_t na
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -262,7 +262,7 @@ _sre_SRE_Pattern_fullmatch(PatternObject *self, PyObject *const *args, Py_ssize_
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -278,7 +278,7 @@ _sre_SRE_Pattern_fullmatch(PatternObject *self, PyObject *const *args, Py_ssize_
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -333,7 +333,7 @@ _sre_SRE_Pattern_search(PatternObject *self, PyObject *const *args, Py_ssize_t n
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -349,7 +349,7 @@ _sre_SRE_Pattern_search(PatternObject *self, PyObject *const *args, Py_ssize_t n
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -402,7 +402,7 @@ _sre_SRE_Pattern_findall(PatternObject *self, PyObject *const *args, Py_ssize_t
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -418,7 +418,7 @@ _sre_SRE_Pattern_findall(PatternObject *self, PyObject *const *args, Py_ssize_t
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -473,7 +473,7 @@ _sre_SRE_Pattern_finditer(PatternObject *self, PyObject *const *args, Py_ssize_t
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -489,7 +489,7 @@ _sre_SRE_Pattern_finditer(PatternObject *self, PyObject *const *args, Py_ssize_t
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -541,7 +541,7 @@ _sre_SRE_Pattern_scanner(PatternObject *self, PyObject *const *args, Py_ssize_t
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -557,7 +557,7 @@ _sre_SRE_Pattern_scanner(PatternObject *self, PyObject *const *args, Py_ssize_t
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -608,7 +608,7 @@ _sre_SRE_Pattern_split(PatternObject *self, PyObject *const *args, Py_ssize_t na
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -661,7 +661,7 @@ _sre_SRE_Pattern_sub(PatternObject *self, PyObject *const *args, Py_ssize_t narg
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -714,7 +714,7 @@ _sre_SRE_Pattern_subn(PatternObject *self, PyObject *const *args, Py_ssize_t nar
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -800,7 +800,7 @@ _sre_compile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject
code = args[2];
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[3]);
PyObject *iobj = _PyNumber_Index(args[3]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1102,4 +1102,4 @@ _sre_SRE_Scanner_search(ScannerObject *self, PyObject *Py_UNUSED(ignored))
{
return _sre_SRE_Scanner_search_impl(self);
}
/*[clinic end generated code: output=7a3360917b40a808 input=a9049054013a1b77]*/
/*[clinic end generated code: output=0e27915b1eb7c0e4 input=a9049054013a1b77]*/

View File

@ -126,7 +126,7 @@ Struct_unpack_from(PyStructObject *self, PyObject *const *args, Py_ssize_t nargs
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -312,7 +312,7 @@ unpack_from(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -376,4 +376,4 @@ exit:
return return_value;
}
/*[clinic end generated code: output=1205daf7f616f0cf input=a9049054013a1b77]*/
/*[clinic end generated code: output=8089792d8ed0c1be input=a9049054013a1b77]*/

View File

@ -84,7 +84,7 @@ array_array_pop(arrayobject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -134,7 +134,7 @@ array_array_insert(arrayobject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -245,7 +245,7 @@ array_array_fromfile(arrayobject *self, PyObject *const *args, Py_ssize_t nargs)
f = args[0];
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -514,4 +514,4 @@ PyDoc_STRVAR(array_arrayiterator___setstate____doc__,
#define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF \
{"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__},
/*[clinic end generated code: output=c953eb8486c7c8da input=a9049054013a1b77]*/
/*[clinic end generated code: output=91c1cded65a1285f input=a9049054013a1b77]*/

View File

@ -39,7 +39,7 @@ audioop_getsample(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -372,7 +372,7 @@ audioop_findmax(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1309,4 +1309,4 @@ exit:
return return_value;
}
/*[clinic end generated code: output=343e5ae478fc0359 input=a9049054013a1b77]*/
/*[clinic end generated code: output=840f8c315ebd4946 input=a9049054013a1b77]*/

View File

@ -172,7 +172,7 @@ itertools_tee(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -353,7 +353,7 @@ itertools_combinations(PyTypeObject *type, PyObject *args, PyObject *kwargs)
iterable = fastargs[0];
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(fastargs[1]);
PyObject *iobj = _PyNumber_Index(fastargs[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -401,7 +401,7 @@ itertools_combinations_with_replacement(PyTypeObject *type, PyObject *args, PyOb
iterable = fastargs[0];
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(fastargs[1]);
PyObject *iobj = _PyNumber_Index(fastargs[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -627,4 +627,4 @@ skip_optional_pos:
exit:
return return_value;
}
/*[clinic end generated code: output=07211f86c4153050 input=a9049054013a1b77]*/
/*[clinic end generated code: output=d7f58dc477814b45 input=a9049054013a1b77]*/

View File

@ -4743,7 +4743,7 @@ os_read(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -4843,7 +4843,7 @@ os_pread(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -5112,7 +5112,7 @@ os_sendfile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[3]);
PyObject *iobj = _PyNumber_Index(args[3]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -5192,7 +5192,7 @@ os_sendfile(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject
offobj = args[2];
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[3]);
PyObject *iobj = _PyNumber_Index(args[3]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -5627,7 +5627,7 @@ os_copy_file_range(PyObject *module, PyObject *const *args, Py_ssize_t nargs, Py
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -7512,7 +7512,7 @@ os_urandom(PyObject *module, PyObject *arg)
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(arg);
PyObject *iobj = _PyNumber_Index(arg);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -8160,7 +8160,7 @@ os_getrandom(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -8877,4 +8877,4 @@ exit:
#ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#define OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */
/*[clinic end generated code: output=9623b9e6f3809842 input=a9049054013a1b77]*/
/*[clinic end generated code: output=767780ea3beacf34 input=a9049054013a1b77]*/

View File

@ -117,7 +117,7 @@ zlib_decompress(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObj
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -409,7 +409,7 @@ zlib_Decompress_decompress(compobject *self, PyObject *const *args, Py_ssize_t n
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -611,7 +611,7 @@ zlib_Decompress_flush(compobject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -757,4 +757,4 @@ exit:
#ifndef ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
#define ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
#endif /* !defined(ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF) */
/*[clinic end generated code: output=06b6438506aab0cb input=a9049054013a1b77]*/
/*[clinic end generated code: output=be34f273564e39a8 input=a9049054013a1b77]*/

View File

@ -844,7 +844,7 @@ math_gcd(PyObject *module, PyObject * const *args, Py_ssize_t nargs)
return res;
}
for (i = 1; i < nargs; i++) {
x = PyNumber_Index(args[i]);
x = _PyNumber_Index(args[i]);
if (x == NULL) {
Py_DECREF(res);
return NULL;
@ -1723,7 +1723,7 @@ math_isqrt(PyObject *module, PyObject *n)
uint64_t m, u;
PyObject *a = NULL, *b;
n = PyNumber_Index(n);
n = _PyNumber_Index(n);
if (n == NULL) {
return NULL;
}
@ -3103,24 +3103,11 @@ math_perm_impl(PyObject *module, PyObject *n, PyObject *k)
if (n == NULL) {
return NULL;
}
if (!PyLong_CheckExact(n)) {
Py_SETREF(n, _PyLong_Copy((PyLongObject *)n));
if (n == NULL) {
return NULL;
}
}
k = PyNumber_Index(k);
if (k == NULL) {
Py_DECREF(n);
return NULL;
}
if (!PyLong_CheckExact(k)) {
Py_SETREF(k, _PyLong_Copy((PyLongObject *)k));
if (k == NULL) {
Py_DECREF(n);
return NULL;
}
}
if (Py_SIZE(n) < 0) {
PyErr_SetString(PyExc_ValueError,
@ -3226,24 +3213,11 @@ math_comb_impl(PyObject *module, PyObject *n, PyObject *k)
if (n == NULL) {
return NULL;
}
if (!PyLong_CheckExact(n)) {
Py_SETREF(n, _PyLong_Copy((PyLongObject *)n));
if (n == NULL) {
return NULL;
}
}
k = PyNumber_Index(k);
if (k == NULL) {
Py_DECREF(n);
return NULL;
}
if (!PyLong_CheckExact(k)) {
Py_SETREF(k, _PyLong_Copy((PyLongObject *)k));
if (k == NULL) {
Py_DECREF(n);
return NULL;
}
}
if (Py_SIZE(n) < 0) {
PyErr_SetString(PyExc_ValueError,

View File

@ -531,7 +531,7 @@ _Py_Uid_Converter(PyObject *obj, void *p)
long result;
unsigned long uresult;
index = PyNumber_Index(obj);
index = _PyNumber_Index(obj);
if (index == NULL) {
PyErr_Format(PyExc_TypeError,
"uid should be integer, not %.200s",
@ -637,7 +637,7 @@ _Py_Gid_Converter(PyObject *obj, void *p)
long result;
unsigned long uresult;
index = PyNumber_Index(obj);
index = _PyNumber_Index(obj);
if (index == NULL) {
PyErr_Format(PyExc_TypeError,
"gid should be integer, not %.200s",
@ -771,7 +771,7 @@ _fd_converter(PyObject *o, int *p)
int overflow;
long long_value;
PyObject *index = PyNumber_Index(o);
PyObject *index = _PyNumber_Index(o);
if (index == NULL) {
return 0;
}

View File

@ -1317,11 +1317,12 @@ PyIndex_Check(PyObject *obj)
/* Return a Python int from the object item.
Can return an instance of int subclass.
Raise TypeError if the result is not an int
or if the object cannot be interpreted as an index.
*/
PyObject *
PyNumber_Index(PyObject *item)
_PyNumber_Index(PyObject *item)
{
PyObject *result = NULL;
if (item == NULL) {
@ -1360,6 +1361,20 @@ PyNumber_Index(PyObject *item)
return result;
}
/* Return an exact Python int from the object item.
Raise TypeError if the result is not an int
or if the object cannot be interpreted as an index.
*/
PyObject *
PyNumber_Index(PyObject *item)
{
PyObject *result = _PyNumber_Index(item);
if (result != NULL && !PyLong_CheckExact(result)) {
Py_SETREF(result, _PyLong_Copy((PyLongObject *)result));
}
return result;
}
/* Return an error on Overflow only if err is not NULL*/
Py_ssize_t
@ -1367,7 +1382,7 @@ PyNumber_AsSsize_t(PyObject *item, PyObject *err)
{
Py_ssize_t result;
PyObject *runerr;
PyObject *value = PyNumber_Index(item);
PyObject *value = _PyNumber_Index(item);
if (value == NULL)
return -1;
@ -1451,11 +1466,7 @@ PyNumber_Long(PyObject *o)
return result;
}
if (m && m->nb_index) {
result = PyNumber_Index(o);
if (result != NULL && !PyLong_CheckExact(result)) {
Py_SETREF(result, _PyLong_Copy((PyLongObject *)result));
}
return result;
return PyNumber_Index(o);
}
trunc_func = _PyObject_LookupSpecial(o, &PyId___trunc__);
if (trunc_func) {
@ -1479,9 +1490,6 @@ PyNumber_Long(PyObject *o)
return NULL;
}
Py_SETREF(result, PyNumber_Index(result));
if (result != NULL && !PyLong_CheckExact(result)) {
Py_SETREF(result, _PyLong_Copy((PyLongObject *)result));
}
return result;
}
if (PyErr_Occurred())
@ -1564,7 +1572,7 @@ PyNumber_Float(PyObject *o)
return PyFloat_FromDouble(val);
}
if (m && m->nb_index) {
PyObject *res = PyNumber_Index(o);
PyObject *res = _PyNumber_Index(o);
if (!res) {
return NULL;
}
@ -1590,7 +1598,7 @@ PyNumber_ToBase(PyObject *n, int base)
"PyNumber_ToBase: base must be 2, 8, 10 or 16");
return NULL;
}
PyObject *index = PyNumber_Index(n);
PyObject *index = _PyNumber_Index(n);
if (!index)
return NULL;
PyObject *res = _PyLong_Format(index, base);

View File

@ -455,7 +455,7 @@ formatlong(PyObject *v, int flags, int prec, int type)
if (PyNumber_Check(v)) {
/* make sure number is a type of integer for o, x, and X */
if (type == 'o' || type == 'x' || type == 'X')
iobj = PyNumber_Index(v);
iobj = _PyNumber_Index(v);
else
iobj = PyNumber_Long(v);
if (iobj == NULL) {

View File

@ -270,7 +270,7 @@ bytearray_replace(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nar
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -343,7 +343,7 @@ bytearray_split(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -442,7 +442,7 @@ bytearray_rsplit(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t narg
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -506,7 +506,7 @@ bytearray_insert(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t narg
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -599,7 +599,7 @@ bytearray_pop(PyByteArrayObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1051,4 +1051,4 @@ bytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
{
return bytearray_sizeof_impl(self);
}
/*[clinic end generated code: output=920748990279fb9d input=a9049054013a1b77]*/
/*[clinic end generated code: output=0cd59180c7d5dce5 input=a9049054013a1b77]*/

View File

@ -48,7 +48,7 @@ bytes_split(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObje
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -199,7 +199,7 @@ bytes_rsplit(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs, PyObj
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -485,7 +485,7 @@ bytes_replace(PyBytesObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -809,4 +809,4 @@ skip_optional_pos:
exit:
return return_value;
}
/*[clinic end generated code: output=a0c31faea2671a8c input=a9049054013a1b77]*/
/*[clinic end generated code: output=dc1bc13e6990e452 input=a9049054013a1b77]*/

View File

@ -26,7 +26,7 @@ list_insert(PyListObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -125,7 +125,7 @@ list_pop(PyListObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -352,4 +352,4 @@ list___reversed__(PyListObject *self, PyObject *Py_UNUSED(ignored))
{
return list___reversed___impl(self);
}
/*[clinic end generated code: output=137db7b11196b581 input=a9049054013a1b77]*/
/*[clinic end generated code: output=0063aad535edf62d input=a9049054013a1b77]*/

View File

@ -211,7 +211,7 @@ int_to_bytes(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -308,4 +308,4 @@ skip_optional_kwonly:
exit:
return return_value;
}
/*[clinic end generated code: output=46d40c8aa6d420b7 input=a9049054013a1b77]*/
/*[clinic end generated code: output=63b8274fc784d617 input=a9049054013a1b77]*/

View File

@ -88,7 +88,7 @@ unicode_center(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -522,7 +522,7 @@ unicode_ljust(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -717,7 +717,7 @@ unicode_replace(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -831,7 +831,7 @@ unicode_rjust(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -900,7 +900,7 @@ unicode_split(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -997,7 +997,7 @@ unicode_rsplit(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[1]);
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1193,7 +1193,7 @@ unicode_zfill(PyObject *self, PyObject *arg)
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(arg);
PyObject *iobj = _PyNumber_Index(arg);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -1258,4 +1258,4 @@ unicode_sizeof(PyObject *self, PyObject *Py_UNUSED(ignored))
{
return unicode_sizeof_impl(self);
}
/*[clinic end generated code: output=ea1aff10c743be14 input=a9049054013a1b77]*/
/*[clinic end generated code: output=c5eb21e314da78b8 input=a9049054013a1b77]*/

View File

@ -250,7 +250,7 @@ PyFloat_AsDouble(PyObject *op)
nb = Py_TYPE(op)->tp_as_number;
if (nb == NULL || nb->nb_float == NULL) {
if (nb && nb->nb_index) {
PyObject *res = PyNumber_Index(op);
PyObject *res = _PyNumber_Index(op);
if (!res) {
return -1;
}

View File

@ -394,7 +394,7 @@ PyLong_AsLongAndOverflow(PyObject *vv, int *overflow)
v = (PyLongObject *)vv;
}
else {
v = (PyLongObject *)PyNumber_Index(vv);
v = (PyLongObject *)_PyNumber_Index(vv);
if (v == NULL)
return -1;
do_decref = 1;
@ -674,7 +674,7 @@ PyLong_AsUnsignedLongMask(PyObject *op)
return _PyLong_AsUnsignedLongMask(op);
}
lo = (PyLongObject *)PyNumber_Index(op);
lo = (PyLongObject *)_PyNumber_Index(op);
if (lo == NULL)
return (unsigned long)-1;
@ -1132,7 +1132,7 @@ PyLong_AsLongLong(PyObject *vv)
v = (PyLongObject *)vv;
}
else {
v = (PyLongObject *)PyNumber_Index(vv);
v = (PyLongObject *)_PyNumber_Index(vv);
if (v == NULL)
return -1;
do_decref = 1;
@ -1247,7 +1247,7 @@ PyLong_AsUnsignedLongLongMask(PyObject *op)
return _PyLong_AsUnsignedLongLongMask(op);
}
lo = (PyLongObject *)PyNumber_Index(op);
lo = (PyLongObject *)_PyNumber_Index(op);
if (lo == NULL)
return (unsigned long long)-1;
@ -1287,7 +1287,7 @@ PyLong_AsLongLongAndOverflow(PyObject *vv, int *overflow)
v = (PyLongObject *)vv;
}
else {
v = (PyLongObject *)PyNumber_Index(vv);
v = (PyLongObject *)_PyNumber_Index(vv);
if (v == NULL)
return -1;
do_decref = 1;
@ -5180,7 +5180,7 @@ long_round(PyObject *self, PyObject *args)
if (o_ndigits == NULL)
return long_long(self);
ndigits = PyNumber_Index(o_ndigits);
ndigits = _PyNumber_Index(o_ndigits);
if (ndigits == NULL)
return NULL;

View File

@ -1578,7 +1578,7 @@ pylong_as_ld(PyObject *item)
PyObject *tmp;
long ld;
tmp = PyNumber_Index(item);
tmp = _PyNumber_Index(item);
if (tmp == NULL)
return -1;
@ -1593,7 +1593,7 @@ pylong_as_lu(PyObject *item)
PyObject *tmp;
unsigned long lu;
tmp = PyNumber_Index(item);
tmp = _PyNumber_Index(item);
if (tmp == NULL)
return (unsigned long)-1;
@ -1608,7 +1608,7 @@ pylong_as_lld(PyObject *item)
PyObject *tmp;
long long lld;
tmp = PyNumber_Index(item);
tmp = _PyNumber_Index(item);
if (tmp == NULL)
return -1;
@ -1623,7 +1623,7 @@ pylong_as_llu(PyObject *item)
PyObject *tmp;
unsigned long long llu;
tmp = PyNumber_Index(item);
tmp = _PyNumber_Index(item);
if (tmp == NULL)
return (unsigned long long)-1;
@ -1638,7 +1638,7 @@ pylong_as_zd(PyObject *item)
PyObject *tmp;
Py_ssize_t zd;
tmp = PyNumber_Index(item);
tmp = _PyNumber_Index(item);
if (tmp == NULL)
return -1;
@ -1653,7 +1653,7 @@ pylong_as_zu(PyObject *item)
PyObject *tmp;
size_t zu;
tmp = PyNumber_Index(item);
tmp = _PyNumber_Index(item);
if (tmp == NULL)
return (size_t)-1;

View File

@ -70,7 +70,7 @@ stringlib_ljust(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -126,7 +126,7 @@ stringlib_rjust(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -182,7 +182,7 @@ stringlib_center(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
}
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[0]);
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -234,7 +234,7 @@ stringlib_zfill(PyObject *self, PyObject *arg)
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(arg);
PyObject *iobj = _PyNumber_Index(arg);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -249,4 +249,4 @@ stringlib_zfill(PyObject *self, PyObject *arg)
exit:
return return_value;
}
/*[clinic end generated code: output=cd5ecdbf1d9e849a input=a9049054013a1b77]*/
/*[clinic end generated code: output=2d9abc7b1cffeca6 input=a9049054013a1b77]*/

View File

@ -6334,7 +6334,7 @@ slot_sq_length(PyObject *self)
if (res == NULL)
return -1;
Py_SETREF(res, PyNumber_Index(res));
Py_SETREF(res, _PyNumber_Index(res));
if (res == NULL)
return -1;

View File

@ -14617,7 +14617,7 @@ mainformatlong(PyObject *v,
/* make sure number is a type of integer for o, x, and X */
if (!PyLong_Check(v)) {
if (type == 'o' || type == 'x' || type == 'X') {
iobj = PyNumber_Index(v);
iobj = _PyNumber_Index(v);
if (iobj == NULL) {
if (PyErr_ExceptionMatches(PyExc_TypeError))
goto wrongtype;

View File

@ -45,7 +45,7 @@ warnings_warn(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObjec
if (args[2]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index(args[2]);
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
@ -66,4 +66,4 @@ skip_optional_pos:
exit:
return return_value;
}
/*[clinic end generated code: output=484e5ffe94edf0f0 input=a9049054013a1b77]*/
/*[clinic end generated code: output=eb9997fa998fdbad input=a9049054013a1b77]*/

View File

@ -784,7 +784,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
PyObject *iobj;
Py_ssize_t *p = va_arg(*p_va, Py_ssize_t *);
Py_ssize_t ival = -1;
iobj = PyNumber_Index(arg);
iobj = _PyNumber_Index(arg);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);

View File

@ -3062,7 +3062,7 @@ class Py_ssize_t_converter(CConverter):
return """
{{{{
Py_ssize_t ival = -1;
PyObject *iobj = PyNumber_Index({argname});
PyObject *iobj = _PyNumber_Index({argname});
if (iobj != NULL) {{{{
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);