Test with Python 3.13
Related:
- Might be blocked by https://github.com/MagicStack/uvloop/pull/587
I cherry-picked the patch from https://github.com/MagicStack/uvloop/pull/604
Ok, so the build for 3.13 fails.
Detailed error
Building editable for uvloop (pyproject.toml): started
Building editable for uvloop (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error
× Building editable for uvloop (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [447 lines of output]
running editable_wheel
creating /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info
writing /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/PKG-INFO
writing dependency_links to /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/dependency_links.txt
writing requirements to /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/requires.txt
writing top-level names to /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/top_level.txt
writing manifest file '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/SOURCES.txt'
reading manifest file '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '*' found under directory 'vendor/libuv/.git'
adding license file 'LICENSE-APACHE'
adding license file 'LICENSE-MIT'
writing manifest file '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop.egg-info/SOURCES.txt'
creating '/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop-0.20.0.dist-info'
creating /private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-wheel-nq8oabt8/.tmp-tl5qt4xu/uvloop-0.20.0.dist-info/WHEEL
running build_py
running build_ext
+ glibtoolize --copy --force
glibtoolize: putting auxiliary files in '.'.
glibtoolize: copying file './ltmain.sh'
glibtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
glibtoolize: copying file 'm4/libtool.m4'
glibtoolize: copying file 'm4/ltoptions.m4'
glibtoolize: copying file 'm4/ltsugar.m4'
glibtoolize: copying file 'm4/ltversion.m4'
glibtoolize: copying file 'm4/lt~obsolete.m4'
+ aclocal -I m4
+ autoconf
configure.ac:45: warning: The macro 'AC_PROG_LIBTOOL' is obsolete.
configure.ac:45: You should run autoupdate.
m4/libtool.m4:100: AC_PROG_LIBTOOL is expanded from...
configure.ac:45: the top level
configure.ac:48: warning: $as_echo is obsolete; use AS_ECHO(["message"]) instead
lib/m4sugar/m4sh.m4:690: _AS_IF_ELSE is expanded from...
lib/m4sugar/m4sh.m4:697: AS_IF is expanded from...
./lib/autoconf/general.m4:2249: AC_CACHE_VAL is expanded from...
./lib/autoconf/general.m4:2270: AC_CACHE_CHECK is expanded from...
m4/ax_pthread.m4:88: AX_PTHREAD is expanded from...
configure.ac:48: the top level
+ automake --add-missing --copy
configure.ac:43: installing './ar-lib'
configure.ac:26: installing './compile'
configure.ac:23: installing './config.guess'
configure.ac:23: installing './config.sub'
configure.ac:21: installing './install-sh'
configure.ac:21: installing './missing'
Makefile.am: installing './depcomp'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether sleep supports fractional seconds... yes
checking filesystem timestamp resolution... 2
checking whether build environment is sane... yes
checking for a race-free mkdir -p... mkdir -p
checking for gawk... no
_build_ext.build_extension(self, ext)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
File "/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/command/build_ext.py", line 557, in build_extension
objects = self.compiler.compile(
sources,
...<5 lines>...
depends=ext.depends,
)
File "/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/ccompiler.py", line 605, in compile
self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/unixccompiler.py", line 202, in _compile
raise CompileError(msg)
distutils.errors.CompileError: command '/usr/bin/clang' failed with exit code 1
/private/var/folders/hw/1f0gcr8d6kn9ms0_wn0_57qc0000gn/T/pip-build-env-h3ro7__u/overlay/lib/python3.13/site-packages/setuptools/_distutils/dist.py:983: _DebuggingTips: Problem in editable installation.
!!
********************************************************************************
An error happened while installing `uvloop` in editable mode.
The following steps are recommended to help debug this problem:
- Try to install the project normally, without using the editable mode.
Does the error still persist?
(If it does, try fixing the problem before attempting the editable mode).
- If you are using binary extensions, make sure you have all OS-level
dependencies installed (e.g. compilers, toolchains, binary libraries, ...).
- Try the latest version of setuptools (maybe the error was already fixed).
- If you (or your project dependencies) are using any setuptools extension
or customization, make sure they support the editable mode.
After following the steps above, if the problem still persists and
you think this is related to how setuptools handles editable installations,
please submit a reproducible example
(see https://stackoverflow.com/help/minimal-reproducible-example) to:
https://github.com/pypa/setuptools/issues
See https://setuptools.pypa.io/en/latest/userguide/development_mode.html for details.
********************************************************************************
!!
cmd_obj.run()
error: command '/usr/bin/clang' 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 editable for uvloop
The 3.13 build for aiohttp is also failing.
Detailed error
Building wheel for aiohttp (pyproject.toml): started
Building wheel for aiohttp (pyproject.toml): finished with status 'error'
error: subprocess-exited-with-error
× Building wheel for aiohttp (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [329 lines of output]
*********************
* Accelerated build *
*********************
running bdist_wheel
running build
running build_py
creating build
creating build/lib.macosx-10.13-universal2-cpython-313
creating build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_ws.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/worker.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/multipart.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_response.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/client_ws.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/test_utils.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/tracing.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_exceptions.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_middlewares.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/http_exceptions.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_app.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/streams.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_protocol.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/log.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/compression_utils.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/client.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_urldispatcher.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_request.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/http_websocket.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/client_proto.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/locks.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/__init__.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_runner.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_server.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/base_protocol.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/payload.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/client_reqrep.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/http.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_log.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/resolver.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/formdata.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/payload_streamer.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/web_routedef.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/connector.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
copying aiohttp/client_exceptions.py -> build/lib.macosx-10.13-universal2-cpython-313/aiohttp
creating build/temp.macosx-10.13-universal2-cpython-313/aiohttp
clang -fno-strict-overflow -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -O3 -Wall -arch arm64 -arch x86_64 -I/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13 -c aiohttp/_websocket.c -o build/temp.macosx-10.13-universal2-cpython-313/aiohttp/_websocket.o
aiohttp/_websocket.c:1284:59: warning: 'Py_UNICODE' is deprecated [-Wdeprecated-declarations]
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
^
/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/unicodeobject.h:10:1: note: 'Py_UNICODE' has been explicitly marked deprecated here
Py_DEPRECATED(3.13) typedef wchar_t Py_UNICODE;
^
/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/pyport.h:251:54: note: expanded from macro 'Py_DEPRECATED'
#define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
^
aiohttp/_websocket.c:1286:11: warning: 'Py_UNICODE' is deprecated [-Wdeprecated-declarations]
const Py_UNICODE *u_end = u;
^
/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/unicodeobject.h:10:1: note: 'Py_UNICODE' has been explicitly marked deprecated here
Py_DEPRECATED(3.13) typedef wchar_t Py_UNICODE;
^
/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/pyport.h:251:54: note: expanded from macro 'Py_DEPRECATED'
#define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
^
aiohttp/_websocket.c:6818:67: error: too few arguments to function call, expected 6, have 5
is_little, !is_unsigned);
^
/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/longobject.h:111:17: note: '_PyLong_AsByteArray' declared here
PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
^
aiohttp/_websocket.c:7091:67: error: too few arguments to function call, expected 6, have 5
is_little, !is_unsigned);
^
/Library/Frameworks/Python.framework/Versions/3.13/include/python3.13/cpython/longobject.h:111:17: note: '_PyLong_AsByteArray' declared here
PyAPI_FUNC(int) _PyLong_AsByteArray(PyLongObject* v,
^
2 warnings and 2 errors generated.
error: command '/usr/bin/clang' 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 aiohttp
What's fun is the aiohttp CI uses uvloop (I don't know what for exactly), so I'm not sure who can first release 3.13 wheels 🙃.
What's fun is the aiohttp CI uses uvloop (I don't know what for exactly)
Many of our tests run on uvloop, to ensure compatibility. Seems like we have a bit of a circular dependency here...
Seems like we have a bit of a circular dependency here...
Actually, we should automatically start building wheels with the next release even without tests passing. So, both our CIs should resolve over the next few weeks.
That's a good idea, Sam! I can push an alpha wheel of uvloop like 0.21a1 for Python 3.13 later this week
That's a good idea, Sam! I can push an alpha wheel of uvloop like 0.21a1 for Python 3.13 later this week
Marking this as ready for review then :)
I think we have 3.13 wheels now with 3.10.5.
With #587 and #623, this should be green.
uvloop 0.21.0b1 is up with 3.13 wheels.