Skip to content

Add suport for Python 3.13 #37

@pavelekshin

Description

@pavelekshin

Running pip install asynctnt for python 3.13 results in the following error:

Building wheels for collected packages: asynctnt
Building wheel for asynctnt (pyproject.toml): started
Building wheel for asynctnt (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error

× Building wheel for asynctnt (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [161 lines of output]
running bdist_wheel
running build
running build_py
creating build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/exceptions.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/connection.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/stream.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/instance.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/log.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/types.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/prepared.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/init.py -> build/lib.linux-x86_64-cpython-313/asynctnt
copying asynctnt/api.py -> build/lib.linux-x86_64-cpython-313/asynctnt
creating build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/init.py -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
running egg_info
writing asynctnt.egg-info/PKG-INFO
writing dependency_links to asynctnt.egg-info/dependency_links.txt
writing requirements to asynctnt.egg-info/requires.txt
writing top-level names to asynctnt.egg-info/top_level.txt
reading manifest file 'asynctnt.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
adding license file 'LICENSE.txt'
writing manifest file 'asynctnt.egg-info/SOURCES.txt'
copying asynctnt/iproto/bit.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/buffer.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/buffer.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/cmsgpuck.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/const.pxi -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/coreproto.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/coreproto.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/db.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/db.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/protocol.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/protocol.pyi -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/protocol.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/push.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/push.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/python.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/rbuffer.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/rbuffer.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/response.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/response.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/schema.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/schema.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/tarantool.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/ttuple.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/unicodeutil.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/unicodeutil.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
copying asynctnt/iproto/xd.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto
creating build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/auth.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/auth.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/base.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/base.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/call.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/call.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/delete.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/delete.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/eval.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/eval.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/execute.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/execute.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/id.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/id.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/insert.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/insert.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/ping.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/ping.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/prepare.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/prepare.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/select.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/select.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/streams.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/streams.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/update.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/update.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/upsert.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
copying asynctnt/iproto/requests/upsert.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/requests
creating build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/datetime.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/datetime.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/decimal.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/decimal.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/error.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/error.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/interval.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/interval.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/uuid.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
copying asynctnt/iproto/ext/uuid.pyx -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/ext
creating build/lib.linux-x86_64-cpython-313/asynctnt/iproto/tupleobj
copying asynctnt/iproto/tupleobj/init.pxd -> build/lib.linux-x86_64-cpython-313/asynctnt/iproto/tupleobj
running build_ext
building 'asynctnt.iproto.protocol' extension
creating build/temp.linux-x86_64-cpython-313/asynctnt/iproto
creating build/temp.linux-x86_64-cpython-313/asynctnt/iproto/tupleobj
creating build/temp.linux-x86_64-cpython-313/third_party/msgpuck
gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -Iasynctnt/iproto -Ithird_party -I/usr/local/include/python3.13 -c asynctnt/iproto/protocol.c -o build/temp.linux-x86_64-cpython-313/asynctnt/iproto/protocol.o
asynctnt/iproto/protocol.c:1427:1: warning: ‘Py_UNICODE’ is deprecated [-Wdeprecated-declarations]
1427 | static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
| ^~~~~~
asynctnt/iproto/protocol.c: In function ‘__Pyx_Py_UNICODE_strlen’:
asynctnt/iproto/protocol.c:1429:5: warning: ‘Py_UNICODE’ is deprecated [-Wdeprecated-declarations]
1429 | const Py_UNICODE *u_end = u;
| ^~~~~
asynctnt/iproto/protocol.c: In function ‘__pyx_f_8asynctnt_6iproto_8protocol_interval_decode’:
asynctnt/iproto/protocol.c:26453:15: warning: assignment discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
26453 | __pyx_v_end = ((__pyx_v_p[0]) + __pyx_v_length);
| ^
asynctnt/iproto/protocol.c: In function ‘__pyx_f_8asynctnt_6iproto_8protocol_encode_update_ops’:
asynctnt/iproto/protocol.c:38685:39: warning: comparison of integer expressions of different signedness: ‘uint64_t’ {aka ‘long unsigned int’} and ‘long long int’ [-Wsign-compare]
38685 | __pyx_t_1 = (__pyx_v_field_no == -1LL);
| ^~
In file included from asynctnt/iproto/protocol.c:1235:
asynctnt/iproto/../../third_party/xd.h: At top level:
asynctnt/iproto/../../third_party/xd.h:110:15: warning: ‘xd’ defined but not used [-Wunused-function]
110 | static char * xd(char *data, size_t size)
| ^~
In file included from asynctnt/iproto/protocol.c:1234:
In function ‘mp_sizeof_uint’,
inlined from ‘mp_sizeof_uint’ at asynctnt/iproto/../../third_party/msgpuck/msgpuck.h:1739:1,
inlined from ‘__pyx_f_8asynctnt_6iproto_8protocol_encode_update_ops’ at asynctnt/iproto/protocol.c:39215:39:
asynctnt/iproto/../../third_party/msgpuck/msgpuck.h:1747:19: warning: ‘__pyx_v_field_no’ may be used uninitialized [-Wmaybe-uninitialized]
1747 | } else if (num <= UINT32_MAX) {
| ^
asynctnt/iproto/protocol.c: In function ‘__pyx_f_8asynctnt_6iproto_8protocol_encode_update_ops’:
asynctnt/iproto/protocol.c:38229:12: note: ‘__pyx_v_field_no’ was declared here
38229 | uint64_t __pyx_v_field_no;
| ^~~~~~~~~~~~~~~~
gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O3 -Wall -fPIC -Iasynctnt/iproto -Ithird_party -I/usr/local/include/python3.13 -c asynctnt/iproto/tupleobj/tupleobj.c -o build/temp.linux-x86_64-cpython-313/asynctnt/iproto/tupleobj/tupleobj.o
asynctnt/iproto/tupleobj/tupleobj.c: In function ‘ttuple_dealloc’:
asynctnt/iproto/tupleobj/tupleobj.c:75:5: warning: implicit declaration of function ‘Py_TRASHCAN_SAFE_BEGIN’; did you mean ‘Py_TRASHCAN_BEGIN’? [-Wimplicit-function-declaration]
75 | Py_TRASHCAN_SAFE_BEGIN(o)
| ^~~~~~~~~~~~~~~~~~~~~~
| Py_TRASHCAN_BEGIN
asynctnt/iproto/tupleobj/tupleobj.c:75:30: error: expected ‘;’ before ‘if’
75 | Py_TRASHCAN_SAFE_BEGIN(o)
| ^
| ;
76 | if (len > 0) {
| ~~
asynctnt/iproto/tupleobj/tupleobj.c:94:5: warning: implicit declaration of function ‘Py_TRASHCAN_SAFE_END’; did you mean ‘Py_TRASHCAN_END’? [-Wimplicit-function-declaration]
94 | Py_TRASHCAN_SAFE_END(o)
| ^~~~~~~~~~~~~~~~~~~~
| Py_TRASHCAN_END
asynctnt/iproto/tupleobj/tupleobj.c:94:28: error: expected ‘;’ before ‘}’ token
94 | Py_TRASHCAN_SAFE_END(o)
| ^
| ;
95 | }
| ~
asynctnt/iproto/tupleobj/tupleobj.c:93:1: warning: label ‘done’ defined but not used [-Wunused-label]
93 | done:
| ^~~~
asynctnt/iproto/tupleobj/tupleobj.c:67:16: warning: unused variable ‘len’ [-Wunused-variable]
67 | Py_ssize_t len = Py_SIZE(o);
| ^~~
asynctnt/iproto/tupleobj/tupleobj.c:66:16: warning: unused variable ‘i’ [-Wunused-variable]
66 | Py_ssize_t i;
| ^
error: command '/usr/bin/gcc' failed with exit code 1
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for asynctnt
Failed to build asynctnt
ERROR: ERROR: Failed to build installable wheels for some pyproject.toml based projects (asynctnt)`

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