Skip to content

Add Support For Python 3.13 #19

Closed
Closed
@markgras

Description

@markgras

Thanks for the great project! CPython 3.13.0 is scheduled for release in 3 days (2024-10-01). Testing cbitstruct with the latest 3.13 release candidate (3.13.0rc2), the project fails to compile. Here's the build output produced by running the latest version of cibuildwheel (2.21.1):

  × Building wheel for cbitstruct (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [24 lines of output]
      running bdist_wheel
      running build
      running build_py
      creating build/lib.linux-x86_64-cpython-313/cbitstruct
      copying cbitstruct/__init__.py -> build/lib.linux-x86_64-cpython-313/cbitstruct
      creating build/lib.linux-x86_64-cpython-313/cbitstruct/tests
      copying cbitstruct/tests/test_api.py -> build/lib.linux-x86_64-cpython-313/cbitstruct/tests
      copying cbitstruct/tests/test_bitstruct.py -> build/lib.linux-x86_64-cpython-313/cbitstruct/tests
      copying cbitstruct/tests/test_perf.py -> build/lib.linux-x86_64-cpython-313/cbitstruct/tests
      copying cbitstruct/tests/__init__.py -> build/lib.linux-x86_64-cpython-313/cbitstruct/tests
      copying cbitstruct/tests/test_cornercase.py -> build/lib.linux-x86_64-cpython-313/cbitstruct/tests
      copying cbitstruct/tests/test_against_bitstruct.py -> build/lib.linux-x86_64-cpython-313/cbitstruct/tests
      running build_ext
      building 'cbitstruct._cbitstruct' extension
      creating build/temp.linux-x86_64-cpython-313/cbitstruct
      gcc -pthread -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -Icbitstruct/ -I/opt/_internal/cpython-3.13.0rc2/include/python3.13 -c cbitstruct/_cbitstruct.c -o build/temp.linux-x86_64-cpython-313/cbitstruct/_cbitstruct.o -std=c11 -Wall -Werror -O3
      In file included from cbitstruct/_cbitstruct.c:833:
      cbitstruct/clinic/_cbitstruct.c.37.h: In function ‘CompiledFormat_unpack’:
      cbitstruct/clinic/_cbitstruct.c.37.h:83:10: error: implicit declaration of function ‘_PyArg_ParseStackAndKeywords’; did you mean ‘PyArg_ParseTupleAndKeywords’? [-Werror=implicit-function-declaration]
         83 |     if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
            |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
            |          PyArg_ParseTupleAndKeywords
      cc1: all warnings being treated as errors
      error: command '/opt/rh/devtoolset-10/root/usr/bin/gcc' failed with exit code 1
      [end of output]

The issue is that cbitstruct uses _PyArg_ParseStackAndKeywords(), which is a private Python C API that has been removed in Python 3.13. A now-closed CPython issue discussing this removal can be found here: python/cpython#112136. The gist of the discussion is that the removal won't be reverted and users of the API must find an alternative.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions