Repository navigation
'_PyLong_NumBits': identifier not found in 3.13 #119336
Description
Activity
- addedtype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
on May 21, 2024 In 5846924 Victor restored
_PyLong_Copy()_PyLong_FromDigits()_PyLong_New()_PyLong_Sign()
It seems reasonable to include
_PyLong_NumBitsas well, since like the others there isn't a great replacement.Will it be restored in the next beta 3.13 release, or will I have to wait until the first 3.14 alpha release?
- added a commit that references this issue
on May 22, 2024 I cannot make that call, but I made #119418 against 3.14 for now (it can be backported for 3.13 if that's what people decide). Eventually it seems like a good idea to make this public.
You can modify pywin32 to call the
bit_length()method which returns a Python int object. Then if you need asize_t, you can callPyLong_AsSize_t.If this function is called by one project, we should consider making it public, rather than restoring the old private function.
You can modify pywin32 to call the
bit_length()method which returns a Python int object. Then if you need asize_t, you can callPyLong_AsSize_t.If this function is called by one project, we should consider making it public, rather than restoring the old private function.
How would I access the built-in
bit_length()method within the C API?How would I access the built-in
bit_length()method within the C API?PyObject_CallMethod(obj, "bit_length", NULL)(Not taking a view on whether that justifies not restoring the function though)
A code search in PyPI top 7,500 projects found other projects:
- mariadb (1.1.10)
- pickle5 (0.0.12)
- zodbpickle (3.2)
pickle5 and zodbpickle contain copies of the Python source code, but MariaDB is a good usage example. So maybe it's worth it to add a function.
I created issue gh-119714: [C API] Add PyLong_GetNumBits() function.
A code search in PyPI top 7,500 projects found other projects:
@encukou also identified that panda3d uses it: https://github.com/panda3d/panda3d/blob/adb92428856853019583f398d27c5d34e44a9343/panda/src/putil/bitArray_ext.cxx#L28
Function restored by commit e50fac9
Bug report
Bug description:
While fixing pywin32 to let CI builds work in Python 3.13, the build process complained of not being able to find
_PyLong_NumBits. All other Python versions in the CI built successfully.The function still exists in
main, apparently inaccessible via the public C API since 3.13. What's the recommended replacement?CPython versions tested on:
3.8, 3.9, 3.10, 3.11, 3.12, 3.13
Operating systems tested on:
Windows
Linked PRs