Fix for Python 3.13: PyInt to PyLong #56
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR note: Python 3.13 import fix for
srwlpyWhat changed
cpp/src/clients/python/srwlpy.cppParseDeviceParam_PyLong_AsInt/PyLong_AsIntblock with a public API call:cpp long devIdx = PyLong_AsLong(oDev); if((devIdx == -1) && PyErr_Occurred()) { delete[] parGPUParam; parGPUParam = 0; return; } parGPUParam[1] = (double)devIdx;Why
_PyLong_AsInt, causingsrwlpy.soto fail at import withundefined symbol: _PyLong_AsInt.PyLong_AsIntis not reliably exported in 3.13 builds either; the stable, public API isPyLong_AsLong(orPyLong_AsLongAndOverflow).PyLong_AsLongrestores compatibility with Python 3.13 and keeps behavior identical for device index parsing.Impact
parGPUParam[1].Notes
PyLong_AsLongAndOverflowcould be used instead; current behavior matches prior code semantics.PyLong_*for all integer conversions in Python 3 (see https://docs.python.org/3/c-api/long.html).