◐ Shell
clean mode source ↗

gh-128863: deprecate _PyLong_FromDigits() function by skirpichev · Pull Request #127939 · python/cpython

@skirpichev

@skirpichev skirpichev changed the title gh-127937: deprecate _PyLong_FromDigits() function gh-128863: deprecate _PyLong_FromDigits() function

Jan 23, 2025

@vstinner

Ok, this depend on #127925

You can use the macros in _decimal:

    _Py_COMP_DIAG_PUSH
    _Py_COMP_DIAG_IGNORE_DEPR_DECLS
...
    _Py_COMP_DIAG_POP

See examples in Modules/_testcapimodule.c.

@vstinner

_PyLong_Copy() emits a deprecation warning. You can rename _PyLong_FromDigits() to long_fromdigits() and use this one in _PyLong_Copy().

@skirpichev

_PyLong_Copy() emits a deprecation warning.

This is a draft due to #127925.

You can rename _PyLong_FromDigits() to long_fromdigits() and use this one in _PyLong_Copy().

That does make sense if no stdlib module will depend on _PyLong_FromDigits(). Unfortunately, there is no short cut for copy.copy() in C-API.

@vstinner

This is a draft due to #127925.

I'm not sure that PR gh-127925 is ever going to be merged :-(

That does make sense if no stdlib module will depend on _PyLong_FromDigits(). Unfortunately, there is no short cut for copy.copy() in C-API.

I didn't understand your comment. I'm only proposing a local "fix" for _PyLong_Copy() to avoid the deprecation warning.

@skirpichev

I didn't understand your comment.

Nevermind, I was thinking about _PyLong_Copy(), which is also public now.

I'm only proposing a local "fix" for _PyLong_Copy() to avoid the deprecation warning.

That seems fine. But maybe we should just inline code, it's not used anywhere else in the longobject.c.

@skirpichev

Ok, I did this ready for review. Once #127925 will be merged - this should pass tests.

After some thinking, the _PyLong_FromDigits() code was inlined in the _PyLong_Copy(). I doubt we need for _PyLong_FromDigits() in future.

@vstinner

You should use _Py_COMP_DIAG_IGNORE_DEPR_DECLS in _decimal.c, as I wrote in my previous comment.

@skirpichev

You should use _Py_COMP_DIAG_IGNORE_DEPR_DECLS in _decimal.c, as I wrote in my previous comment.

No, this rather fits for testing code.

vstinner

@vstinner

@skirpichev skirpichev deleted the deprecate-_PyLong_FromDigits/127937 branch

January 24, 2025 12:27