mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
gh-128863: Deprecate _PyLong_FromDigits() function (#127939)
This commit is contained in:
parent
3d8fc8b9ae
commit
233fd00f0a
5 changed files with 22 additions and 6 deletions
|
@ -7,7 +7,8 @@ Pending removal in Python 3.18
|
||||||
* :c:func:`!_PyDict_GetItemStringWithError`: use :c:func:`PyDict_GetItemStringRef`.
|
* :c:func:`!_PyDict_GetItemStringWithError`: use :c:func:`PyDict_GetItemStringRef`.
|
||||||
* :c:func:`!_PyDict_Pop()`: :c:func:`PyDict_Pop`.
|
* :c:func:`!_PyDict_Pop()`: :c:func:`PyDict_Pop`.
|
||||||
* :c:func:`!_PyLong_Sign()`: use :c:func:`PyLong_GetSign`.
|
* :c:func:`!_PyLong_Sign()`: use :c:func:`PyLong_GetSign`.
|
||||||
* :c:func:`!_PyLong_New`: use :c:func:`PyLongWriter_Create`.
|
* :c:func:`!_PyLong_FromDigits` and :c:func:`!_PyLong_New`:
|
||||||
|
use :c:func:`PyLongWriter_Create`.
|
||||||
* :c:func:`!_PyThreadState_UncheckedGet`: use :c:func:`PyThreadState_GetUnchecked`.
|
* :c:func:`!_PyThreadState_UncheckedGet`: use :c:func:`PyThreadState_GetUnchecked`.
|
||||||
* :c:func:`!_PyUnicode_AsString`: use :c:func:`PyUnicode_AsUTF8`.
|
* :c:func:`!_PyUnicode_AsString`: use :c:func:`PyUnicode_AsUTF8`.
|
||||||
* :c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`.
|
* :c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`.
|
||||||
|
|
|
@ -1396,7 +1396,8 @@ Deprecated
|
||||||
* :c:func:`!_PyDict_GetItemStringWithError`: use :c:func:`PyDict_GetItemStringRef`.
|
* :c:func:`!_PyDict_GetItemStringWithError`: use :c:func:`PyDict_GetItemStringRef`.
|
||||||
* :c:func:`!_PyDict_Pop()`: use :c:func:`PyDict_Pop`.
|
* :c:func:`!_PyDict_Pop()`: use :c:func:`PyDict_Pop`.
|
||||||
* :c:func:`!_PyLong_Sign()`: use :c:func:`PyLong_GetSign`.
|
* :c:func:`!_PyLong_Sign()`: use :c:func:`PyLong_GetSign`.
|
||||||
* :c:func:`!_PyLong_New`: use :c:func:`PyLongWriter_Create`.
|
* :c:func:`!_PyLong_FromDigits` and :c:func:`!_PyLong_New`:
|
||||||
|
use :c:func:`PyLongWriter_Create`.
|
||||||
* :c:func:`!_PyThreadState_UncheckedGet`: use :c:func:`PyThreadState_GetUnchecked`.
|
* :c:func:`!_PyThreadState_UncheckedGet`: use :c:func:`PyThreadState_GetUnchecked`.
|
||||||
* :c:func:`!_PyUnicode_AsString`: use :c:func:`PyUnicode_AsUTF8`.
|
* :c:func:`!_PyUnicode_AsString`: use :c:func:`PyUnicode_AsUTF8`.
|
||||||
* :c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`.
|
* :c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`.
|
||||||
|
|
|
@ -105,7 +105,7 @@ Py_DEPRECATED(3.14) PyAPI_FUNC(PyLongObject*) _PyLong_New(Py_ssize_t);
|
||||||
// Return a copy of src.
|
// Return a copy of src.
|
||||||
PyAPI_FUNC(PyObject*) _PyLong_Copy(PyLongObject *src);
|
PyAPI_FUNC(PyObject*) _PyLong_Copy(PyLongObject *src);
|
||||||
|
|
||||||
PyAPI_FUNC(PyLongObject*) _PyLong_FromDigits(
|
Py_DEPRECATED(3.14) PyAPI_FUNC(PyLongObject*) _PyLong_FromDigits(
|
||||||
int negative,
|
int negative,
|
||||||
Py_ssize_t digit_count,
|
Py_ssize_t digit_count,
|
||||||
digit *digits);
|
digit *digits);
|
||||||
|
|
|
@ -5,7 +5,8 @@ Python 3.18:
|
||||||
* :c:func:`!_PyDict_GetItemStringWithError`: use :c:func:`PyDict_GetItemStringRef`.
|
* :c:func:`!_PyDict_GetItemStringWithError`: use :c:func:`PyDict_GetItemStringRef`.
|
||||||
* :c:func:`!_PyDict_Pop()`: use :c:func:`PyDict_Pop`.
|
* :c:func:`!_PyDict_Pop()`: use :c:func:`PyDict_Pop`.
|
||||||
* :c:func:`!_PyLong_Sign()`: use :c:func:`PyLong_GetSign`.
|
* :c:func:`!_PyLong_Sign()`: use :c:func:`PyLong_GetSign`.
|
||||||
* :c:func:`!_PyLong_New`: use :c:func:`PyLongWriter_Create`.
|
* :c:func:`!_PyLong_FromDigits` and :c:func:`!_PyLong_New`:
|
||||||
|
use :c:func:`PyLongWriter_Create`.
|
||||||
* :c:func:`!_PyThreadState_UncheckedGet`: use :c:func:`PyThreadState_GetUnchecked`.
|
* :c:func:`!_PyThreadState_UncheckedGet`: use :c:func:`PyThreadState_GetUnchecked`.
|
||||||
* :c:func:`!_PyUnicode_AsString`: use :c:func:`PyUnicode_AsUTF8`.
|
* :c:func:`!_PyUnicode_AsString`: use :c:func:`PyUnicode_AsUTF8`.
|
||||||
* :c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`.
|
* :c:func:`!_Py_HashPointer`: use :c:func:`Py_HashPointer`.
|
||||||
|
|
|
@ -205,7 +205,6 @@ _PyLong_FromDigits(int negative, Py_ssize_t digit_count, digit *digits)
|
||||||
}
|
}
|
||||||
PyLongObject *result = long_alloc(digit_count);
|
PyLongObject *result = long_alloc(digit_count);
|
||||||
if (result == NULL) {
|
if (result == NULL) {
|
||||||
PyErr_NoMemory();
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
_PyLong_SetSignAndDigitCount(result, negative?-1:1, digit_count);
|
_PyLong_SetSignAndDigitCount(result, negative?-1:1, digit_count);
|
||||||
|
@ -217,15 +216,29 @@ PyObject *
|
||||||
_PyLong_Copy(PyLongObject *src)
|
_PyLong_Copy(PyLongObject *src)
|
||||||
{
|
{
|
||||||
assert(src != NULL);
|
assert(src != NULL);
|
||||||
|
int sign;
|
||||||
|
|
||||||
if (_PyLong_IsCompact(src)) {
|
if (_PyLong_IsCompact(src)) {
|
||||||
stwodigits ival = medium_value(src);
|
stwodigits ival = medium_value(src);
|
||||||
if (IS_SMALL_INT(ival)) {
|
if (IS_SMALL_INT(ival)) {
|
||||||
return get_small_int((sdigit)ival);
|
return get_small_int((sdigit)ival);
|
||||||
}
|
}
|
||||||
|
sign = _PyLong_CompactSign(src);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
sign = _PyLong_NonCompactSign(src);
|
||||||
|
}
|
||||||
|
|
||||||
Py_ssize_t size = _PyLong_DigitCount(src);
|
Py_ssize_t size = _PyLong_DigitCount(src);
|
||||||
return (PyObject *)_PyLong_FromDigits(_PyLong_IsNegative(src), size, src->long_value.ob_digit);
|
PyLongObject *result = long_alloc(size);
|
||||||
|
|
||||||
|
if (result == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
_PyLong_SetSignAndDigitCount(result, sign, size);
|
||||||
|
memcpy(result->long_value.ob_digit, src->long_value.ob_digit,
|
||||||
|
size * sizeof(digit));
|
||||||
|
return (PyObject *)result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue