Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python 3.12: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’ #7229

Closed
1 task done
Tracked by #351
hugovk opened this issue Mar 1, 2023 · 24 comments
Closed
1 task done
Tracked by #351
Labels

Comments

@hugovk
Copy link
Contributor

hugovk commented Mar 1, 2023

Describe the bug

We're using aiohttp in https://github.com/python/blurb_it and are testing against 3.12-dev on GitHub Actions to help find problems early so they can be fixed before the full release.

With Python 3.12.0a4, yarl-1.8.2.tar.gz installed fine.

With the newest Python 3.12.0a5, yarl-1.8.2.tar.gz fails to install. Reproducible on Ubuntu and macOS. For example:

      aiohttp/_websocket.c:3744:47: error: no member named 'ob_digit' in 'struct _longobject'
          const digit* digits = ((PyLongObject*)b)->ob_digit;
                                ~~~~~~~~~~~~~~~~~~  ^

Looks like this is the cause: python/cpython#101292 / python/cpython#101291

The log also shows similar errors in aiohttp's dependencies yarl (reported at aio-libs/yarl#829) and frozenlist (aio-libs/frozenlist#433).

Here's a similar report for Cython: cython/cython#5238

To Reproduce

  1. With Ubuntu 22.04 or macOS Ventura 13.2.1 and Python 3.12.0a5
  2. python3.12 -m pip install aiohttp

Expected behavior

aiohttp installs.

Logs/tracebacks

$ python3.12 -m pip install aiohttp
Collecting aiohttp
  Downloading aiohttp-3.8.4.tar.gz (7.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.3/7.3 MB 4.6 MB/s eta 0:00:00
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Installing backend dependencies ... done
  Preparing metadata (pyproject.toml) ... done
Requirement already satisfied: attrs>=17.3.0 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from aiohttp) (22.1.0)
Requirement already satisfied: charset-normalizer<4.0,>=2.0 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from aiohttp) (2.1.1)
Collecting multidict<7.0,>=4.5
  Using cached multidict-6.0.4-cp312-cp312-macosx_10_9_universal2.whl
Collecting async-timeout<5.0,>=4.0.0a3
  Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting yarl<2.0,>=1.0
  Using cached yarl-1.8.2.tar.gz (172 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting frozenlist>=1.1.1
  Using cached frozenlist-1.3.3.tar.gz (66 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting aiosignal>=1.1.2
  Downloading aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Requirement already satisfied: idna>=2.0 in /Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages (from yarl<2.0,>=1.0->aiohttp) (3.4)
Building wheels for collected packages: aiohttp, frozenlist, yarl
  Building wheel for aiohttp (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for aiohttp (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [188 lines of output]
      *********************
      * Accelerated build *
      *********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.9-universal2-cpython-312
      creating build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_ws.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/worker.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/multipart.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_response.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/client_ws.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/test_utils.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/tracing.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_exceptions.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_middlewares.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/http_exceptions.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_app.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/streams.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_protocol.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/log.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/client.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_urldispatcher.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_request.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/http_websocket.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/client_proto.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/locks.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/__init__.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_runner.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_server.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/base_protocol.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/payload.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/client_reqrep.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/http.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_log.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/resolver.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/formdata.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/payload_streamer.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_routedef.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/connector.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/client_exceptions.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/typedefs.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/hdrs.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/web_fileresponse.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/http_writer.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/tcp_helpers.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/helpers.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/http_parser.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/cookiejar.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/pytest_plugin.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/abc.py -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      running egg_info
      writing aiohttp.egg-info/PKG-INFO
      writing dependency_links to aiohttp.egg-info/dependency_links.txt
      writing requirements to aiohttp.egg-info/requires.txt
      writing top-level names to aiohttp.egg-info/top_level.txt
      reading manifest file 'aiohttp.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no files found matching 'aiohttp' anywhere in distribution
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.pyd' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      warning: no previously-included files matching '*.lib' found anywhere in distribution
      warning: no previously-included files matching '*.dll' found anywhere in distribution
      warning: no previously-included files matching '*.a' found anywhere in distribution
      warning: no previously-included files matching '*.obj' found anywhere in distribution
      warning: no previously-included files found matching 'aiohttp/*.html'
      no previously-included directories found matching 'docs/_build'
      adding license file 'LICENSE.txt'
      writing manifest file 'aiohttp.egg-info/SOURCES.txt'
      copying aiohttp/_cparser.pxd -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/_find_header.pxd -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/_headers.pxi -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/_helpers.pyi -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/_helpers.pyx -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/_http_parser.pyx -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/_http_writer.pyx -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/_websocket.pyx -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      copying aiohttp/py.typed -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp
      creating build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_cparser.pxd.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_find_header.pxd.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_helpers.pyi.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_helpers.pyx.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_http_parser.pyx.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_http_writer.pyx.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_websocket.pyx.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/hdrs.py.hash -> build/lib.macosx-10.9-universal2-cpython-312/aiohttp/.hash
      running build_ext
      building 'aiohttp._websocket' extension
      creating build/temp.macosx-10.9-universal2-cpython-312
      creating build/temp.macosx-10.9-universal2-cpython-312/aiohttp
      clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.12/include/python3.12 -c aiohttp/_websocket.c -o build/temp.macosx-10.9-universal2-cpython-312/aiohttp/_websocket.o
      aiohttp/_websocket.c:1475:17: warning: 'Py_OptimizeFlag' is deprecated [-Wdeprecated-declarations]
        if (unlikely(!Py_OptimizeFlag)) {
                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/pydebug.h:13:1: note: 'Py_OptimizeFlag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:2680:27: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
                                ^
      aiohttp/_websocket.c:1118:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:2692:36: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
                                         ^
      aiohttp/_websocket.c:1118:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:2696:56: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
                                                             ^
      aiohttp/_websocket.c:1118:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:2741:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
              __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
              ^
      aiohttp/_websocket.c:1125:16: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
          if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
                     ^
      aiohttp/_websocket.c:1118:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:2741:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
              __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
              ^
      aiohttp/_websocket.c:1129:30: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
              __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
                                   ^
      aiohttp/_websocket.c:1118:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      aiohttp/_websocket.c:3042:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      aiohttp/_websocket.c:3097:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      aiohttp/_websocket.c:3238:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      aiohttp/_websocket.c:3293:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      aiohttp/_websocket.c:3744:47: error: no member named 'ob_digit' in 'struct _longobject'
          const digit* digits = ((PyLongObject*)b)->ob_digit;
                                ~~~~~~~~~~~~~~~~~~  ^
      6 warnings and 5 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
  Building wheel for frozenlist (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for frozenlist (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [211 lines of output]
      *********************
      * Accelerated build *
      *********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.9-universal2-cpython-312
      creating build/lib.macosx-10.9-universal2-cpython-312/frozenlist
      copying frozenlist/__init__.py -> build/lib.macosx-10.9-universal2-cpython-312/frozenlist
      running egg_info
      writing frozenlist.egg-info/PKG-INFO
      writing dependency_links to frozenlist.egg-info/dependency_links.txt
      writing top-level names to frozenlist.egg-info/top_level.txt
      reading manifest file 'frozenlist.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.pyd' found anywhere in distribution
      warning: no previously-included files matching '*.so' found anywhere in distribution
      warning: no previously-included files matching '*.lib' found anywhere in distribution
      warning: no previously-included files matching '*.dll' found anywhere in distribution
      warning: no previously-included files matching '*.a' found anywhere in distribution
      warning: no previously-included files matching '*.obj' found anywhere in distribution
      warning: no previously-included files found matching 'frozenlist/*.html'
      no previously-included directories found matching 'docs/_build'
      adding license file 'LICENSE'
      writing manifest file 'frozenlist.egg-info/SOURCES.txt'
      copying frozenlist/__init__.pyi -> build/lib.macosx-10.9-universal2-cpython-312/frozenlist
      copying frozenlist/_frozenlist.pyx -> build/lib.macosx-10.9-universal2-cpython-312/frozenlist
      copying frozenlist/py.typed -> build/lib.macosx-10.9-universal2-cpython-312/frozenlist
      running build_ext
      building 'frozenlist._frozenlist' extension
      creating build/temp.macosx-10.9-universal2-cpython-312
      creating build/temp.macosx-10.9-universal2-cpython-312/frozenlist
      clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.12/include/python3.12 -c frozenlist/_frozenlist.c -o build/temp.macosx-10.9-universal2-cpython-312/frozenlist/_frozenlist.o
      frozenlist/_frozenlist.c:4136:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle_FrozenList); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
          ^
      frozenlist/_frozenlist.c:1300:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:4182:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_pyx_unpickle_FrozenList); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 15, __pyx_L1_error)
          ^
      frozenlist/_frozenlist.c:1300:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:5463:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_sys); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8, __pyx_L1_error)
        ^
      frozenlist/_frozenlist.c:1300:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:5481:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_types); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9, __pyx_L1_error)
          ^
      frozenlist/_frozenlist.c:1300:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:5535:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_MutableSequence); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error)
        ^
      frozenlist/_frozenlist.c:1300:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:6338:53: error: no member named 'ob_digit' in 'struct _longobject'
              const digit* digits = ((PyLongObject*)op1)->ob_digit;
                                    ~~~~~~~~~~~~~~~~~~~~  ^
      frozenlist/_frozenlist.c:6623:27: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
                                ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:6635:36: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
                                         ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:6639:56: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
                                                             ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:6656:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
          ^
      frozenlist/_frozenlist.c:1274:21: note: expanded from macro '__PYX_UPDATE_DICT_CACHE'
          (version_var) = __PYX_GET_DICT_VERSION(dict);\
                          ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:7047:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
              __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
              ^
      frozenlist/_frozenlist.c:1279:16: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
          if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
                     ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:7047:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
              __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
              ^
      frozenlist/_frozenlist.c:1283:30: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
              __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
                                   ^
      frozenlist/_frozenlist.c:1272:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      frozenlist/_frozenlist.c:7348:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      frozenlist/_frozenlist.c:7403:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      frozenlist/_frozenlist.c:7582:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      frozenlist/_frozenlist.c:7637:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      frozenlist/_frozenlist.c:8088:47: error: no member named 'ob_digit' in 'struct _longobject'
          const digit* digits = ((PyLongObject*)b)->ob_digit;
                                ~~~~~~~~~~~~~~~~~~  ^
      11 warnings and 6 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 frozenlist
  Building wheel for yarl (pyproject.toml) ... error
  error: subprocess-exited-with-error

  × Building wheel for yarl (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [366 lines of output]
      /private/var/folders/bk/lp0tks593s15x1v1l9pw07lh0000gn/T/pip-build-env-2j01kift/overlay/lib/python3.12/site-packages/setuptools/config/setupcfg.py:520: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
        warnings.warn(msg, warning_class)
      **********************
      * Accelerated build *
      **********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.macosx-10.9-universal2-cpython-312
      creating build/lib.macosx-10.9-universal2-cpython-312/yarl
      copying yarl/_url.py -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      copying yarl/_quoting_py.py -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      copying yarl/__init__.py -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      copying yarl/_quoting.py -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      running egg_info
      writing yarl.egg-info/PKG-INFO
      writing dependency_links to yarl.egg-info/dependency_links.txt
      writing requirements to yarl.egg-info/requires.txt
      writing top-level names to yarl.egg-info/top_level.txt
      reading manifest file 'yarl.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      warning: no previously-included files matching '*.pyc' found anywhere in distribution
      warning: no previously-included files matching '*.cache' found anywhere in distribution
      warning: no previously-included files found matching 'yarl/*.html'
      warning: no previously-included files found matching 'yarl/*.so'
      warning: no previously-included files found matching 'yarl/*.pyd'
      no previously-included directories found matching 'docs/_build'
      adding license file 'LICENSE'
      writing manifest file 'yarl.egg-info/SOURCES.txt'
      copying yarl/__init__.pyi -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      copying yarl/_quoting_c.pyi -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      copying yarl/_quoting_c.pyx -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      copying yarl/py.typed -> build/lib.macosx-10.9-universal2-cpython-312/yarl
      running build_ext
      building 'yarl._quoting_c' extension
      creating build/temp.macosx-10.9-universal2-cpython-312
      creating build/temp.macosx-10.9-universal2-cpython-312/yarl
      clang -Wsign-compare -Wunreachable-code -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -arch arm64 -arch x86_64 -g -I/Library/Frameworks/Python.framework/Versions/3.12/include/python3.12 -c yarl/_quoting_c.c -o build/temp.macosx-10.9-universal2-cpython-312/yarl/_quoting_c.o
      yarl/_quoting_c.c:4425:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_pyx_unpickle__Quoter); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 13, __pyx_L1_error)
          ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:4471:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_pyx_unpickle__Quoter); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 15, __pyx_L1_error)
          ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:5166:23: warning: 'Py_OptimizeFlag' is deprecated [-Wdeprecated-declarations]
              if (unlikely(!Py_OptimizeFlag)) {
                            ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/pydebug.h:13:1: note: 'Py_OptimizeFlag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:5471:25: warning: 'Py_OptimizeFlag' is deprecated [-Wdeprecated-declarations]
                if (unlikely(!Py_OptimizeFlag)) {
                              ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/pydebug.h:13:1: note: 'Py_OptimizeFlag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:5505:23: warning: 'Py_OptimizeFlag' is deprecated [-Wdeprecated-declarations]
              if (unlikely(!Py_OptimizeFlag)) {
                            ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/pydebug.h:13:1: note: 'Py_OptimizeFlag' has been explicitly marked deprecated here
      Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:6220:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_pyx_unpickle__Unquoter); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 13, __pyx_L1_error)
          ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:6266:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_pyx_unpickle__Unquoter); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 15, __pyx_L1_error)
          ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8425:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
        __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ascii_letters); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 16, __pyx_L1_error)
        ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8427:3: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
        __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_digits); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 16, __pyx_L1_error)
        ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8506:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error)
          ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8527:7: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 72, __pyx_L1_error)
            ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8540:7: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
            __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 73, __pyx_L1_error)
            ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8562:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_i); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 74, __pyx_L1_error)
          ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8583:7: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
            __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_i); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error)
            ^
      yarl/_quoting_c.c:1325:43: note: expanded from macro '__Pyx_GetModuleGlobalName'
          (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_d))) ?\
                                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:8944:18: error: implicit declaration of function '_PyUnicode_Ready' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
          if (unlikely(__Pyx_PyUnicode_READY(ustring) < 0)) return -1;
                       ^
      yarl/_quoting_c.c:557:51: note: expanded from macro '__Pyx_PyUnicode_READY'
                                                    0 : _PyUnicode_Ready((PyObject *)(op)))
                                                        ^
      yarl/_quoting_c.c:8944:18: note: did you mean '_PyUnicode_Copy'?
      yarl/_quoting_c.c:557:51: note: expanded from macro '__Pyx_PyUnicode_READY'
                                                    0 : _PyUnicode_Ready((PyObject *)(op)))
                                                        ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/unicodeobject.h:391:23: note: '_PyUnicode_Copy' declared here
      PyAPI_FUNC(PyObject*) _PyUnicode_Copy(
                            ^
      yarl/_quoting_c.c:9506:18: error: implicit declaration of function '_PyUnicode_Ready' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
          if (unlikely(__Pyx_PyUnicode_READY(ustring) < 0)) return (Py_UCS4)-1;
                       ^
      yarl/_quoting_c.c:557:51: note: expanded from macro '__Pyx_PyUnicode_READY'
                                                    0 : _PyUnicode_Ready((PyObject *)(op)))
                                                        ^
      yarl/_quoting_c.c:9614:27: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
                                ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:9626:36: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
                                         ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:9630:56: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
                                                             ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:9647:5: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
          __PYX_UPDATE_DICT_CACHE(__pyx_d, result, *dict_cached_value, *dict_version)
          ^
      yarl/_quoting_c.c:1299:21: note: expanded from macro '__PYX_UPDATE_DICT_CACHE'
          (version_var) = __PYX_GET_DICT_VERSION(dict);\
                          ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:9697:18: error: implicit declaration of function '_PyUnicode_Ready' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
          if (unlikely(__Pyx_PyUnicode_READY(text) == -1)) return NULL;
                       ^
      yarl/_quoting_c.c:557:51: note: expanded from macro '__Pyx_PyUnicode_READY'
                                                    0 : _PyUnicode_Ready((PyObject *)(op)))
                                                        ^
      yarl/_quoting_c.c:10311:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
              __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
              ^
      yarl/_quoting_c.c:1304:16: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
          if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
                     ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:10311:9: warning: 'ma_version_tag' is deprecated [-Wdeprecated-declarations]
              __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
              ^
      yarl/_quoting_c.c:1308:30: note: expanded from macro '__PYX_PY_DICT_LOOKUP_IF_MODIFIED'
              __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
                                   ^
      yarl/_quoting_c.c:1297:65: note: expanded from macro '__PYX_GET_DICT_VERSION'
      #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
                                                                      ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/cpython/dictobject.h:22:5: note: 'ma_version_tag' has been explicitly marked deprecated here
          Py_DEPRECATED(3.12) uint64_t ma_version_tag;
          ^
      /Library/Frameworks/Python.framework/Versions/3.12/include/python3.12/pyport.h:314:54: note: expanded from macro 'Py_DEPRECATED'
      #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__))
                                                           ^
      yarl/_quoting_c.c:10674:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:10729:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:10870:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:10925:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:11066:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:11121:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:11359:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:11414:55: error: no member named 'ob_digit' in 'struct _longobject'
                  const digit* digits = ((PyLongObject*)x)->ob_digit;
                                        ~~~~~~~~~~~~~~~~~~  ^
      yarl/_quoting_c.c:11865:47: error: no member named 'ob_digit' in 'struct _longobject'
          const digit* digits = ((PyLongObject*)b)->ob_digit;
                                ~~~~~~~~~~~~~~~~~~  ^
      20 warnings and 12 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 yarl
Failed to build aiohttp frozenlist yarl
ERROR: Could not build wheels for aiohttp, frozenlist, yarl, which is required to install pyproject.toml-based projects

Python Version

$ python3.12 --version
Python 3.12.0a5

aiohttp Version

$ python -m pip show aiohttp

Not installed.

multidict Version

$ python -m pip show multidict

Not installed.

yarl Version

$ python -m pip show yarl

Not installed.

OS

Ubuntu 22.04
macOS Ventura 13.2.1

Related component

Server, Client

Additional context

https://github.com/hugovk/blurb_it/actions/runs/4301170729 shows alpha 4 passing and alpha 5 failing.

Code of Conduct

  • I agree to follow the aio-libs Code of Conduct
@webknjaz
Copy link
Member

webknjaz commented Mar 1, 2023

With the ABI changes we always have to wait for Cython to pick up those. This is why we don't even test against CPython alphas. There's usually nothing we can do but wait. So I'd expect this to be ignored until at least betas.

@hugovk
Copy link
Contributor Author

hugovk commented Mar 1, 2023

Some good news, there's a beta of Cython 3 which has fixed it. For example:

So hopefully not too long to wait 🤞

@ghost
Copy link

ghost commented Mar 20, 2023

#7209 (comment)

@webknjaz
Copy link
Member

Looks like we need to do this here too: aio-libs/frozenlist#436

@Dreamsorcerer
Copy link
Member

Dreamsorcerer commented Jul 25, 2023

I've updated the tests for 3.12. There are still a few issues to get it working though. If anybody would like to help getting the tests passing for 3.12, then we'll be able to include support in the next release.

@cdce8p
Copy link
Contributor

cdce8p commented Jul 26, 2023

@Dreamsorcerer Would it be possible to backport #7400 to 3.8.x as well, not just 3.9? That would enable an easy upgrade path for anyone using 3.8 currently. Although nice, I believe there don't need to be any wheels for 3.12. Just the tar file with binaries compiled with cython==3.0.

@webknjaz
Copy link
Member

The only reason 3.8 got a new patch release was a security vulnerability. If you manage to demonstrate us another one, then we'll, talk. Unless 3.9 is out by that time.

@webknjaz
Copy link
Member

I mean, backports to that branch could be done but there's next to zero chance that another 3.8 stream release will ever be cut. I'd rather focus on getting 3.9.0 published instead..

@Dreamsorcerer
Copy link
Member

Dreamsorcerer commented Jul 26, 2023

Yep, I'd like to push a beta 3.9 release next week. So, if we can get Python 3.12 working in the next few days, then we can have it working with that release. Python 3.12 is still a couple of months from full release, so I don't see any reason to focus on adding support to the 3.8 release (the mentioned PR also has no user-facing impact anyway).

I'm currently trying to push through the backlog of Dependabot PRs, in case any outdated dependencies are causing issues with 3.12.

@mgorny
Copy link
Contributor

mgorny commented Aug 3, 2023

For the record, to the best of my knowledge the only thing that's really "blocking" py3.12 in 3.8.5 is regenerating the C sources with a newer version of Cython. For the time being, I'm going to just pass AIOHTTP_NO_EXTENSIONS=1 to get it installed without building the extension.

psss added a commit to teemtee/tmt that referenced this issue Aug 8, 2023
Because of aio-libs/aiohttp/issues/7229 the full pip install test
is expected to fail on `rawhide` until the issue is fixed. Move
test code from the plan to a real test to enable the adjust rule.
@hugovk
Copy link
Contributor Author

hugovk commented Sep 5, 2023

The second and final 3.12 release candidate is due out today, and the full 3.12.0 release is due out in less than one month: 2023-10-02.

It would be great to get this released so everyone who depends on aiohttp has some time to test their code before 3.12.0 is out. We might find some bugs in our code, and we might even find bugs in CPython, and it'd be much better for those to be fixed before 3.12.0 final.

Thank you!

@ghost
Copy link

ghost commented Sep 6, 2023

Why is this closed? I am getting similar error from latestly build python3.12 and running python3.12 -m pip install aiohttp

@edgarrmondragon
Copy link

@neomachiney have you tried #7229 (comment)?

@SnoopJ
Copy link

SnoopJ commented Sep 6, 2023

Why is this closed? I am getting similar error from latestly build python3.12 and running python3.12 -m pip install aiohttp

This issue is closed because support for Python 3.12 has been added on master. You are seeing an error when running that command because the fix has not yet been included in a release. In order to get the fix, you'll have to build aiohttp from source, or wait for the next release which will include those changes.

The suggestion above will let you install the currently release of aiohttp without the C extensions, but note that doing this will give you a "significantly slower" build of the library.

Edit: since I'm causing a notification on this thread already, I might as well add my +1 to the suggestion for a release that includes 3.12 support ahead of the official Python release.

@bartfeenstra
Copy link

Thanks for the good work! Happy to test this in my existing projects and feed back the results. Where do I find the instructions to build from source? It looks like there are a few build dependencies I haven't yet been able to find the documentation for.

@cdce8p
Copy link
Contributor

cdce8p commented Sep 7, 2023

Where do I find the instructions to build from source?

You can take a look at the contributing docs although those could probably be a bit better.
This is my Github actions step to build aiohttp

      - name: Build aiohttp wheel
        env:
          AIOHTTP_COMMIT: <commit>
        run: |
          python -m venv venv-aiohttp
          . venv-aiohttp/bin/activate
          git clone --recurse-submodules https://github.com/aio-libs/aiohttp.git && cd aiohttp
          git checkout ${{ env.AIOHTTP_COMMIT }}

          cd vendor/llhttp/ && npm install && make && cd ../..
          make cythonize
          pip install build
          python -m build
          cd ..
          ls -l aiohttp/dist
          cp -r aiohttp/dist .
          rm -rf aiohttp

Replace <commit> with the current one from the 3.9 branch. https://github.com/aio-libs/aiohttp/tree/3.9
To install it, use pip install dist/aiohttp-*.whl.

When doing the build in a docker container, you might need to run apt update && apt install -y npm clang beforehand.

@ghost
Copy link

ghost commented Sep 7, 2023

@SnoopJ it fails even on using something like python3.12 -m pip install -U git+https://github.com/aio-libs/aiohttp@master which i think installs latest version directly from github even if it hasn't been on releases i think. i am trying to compile with source code via git clone and see if output is different or error still exists
image
Python3.12 support isn't that fully yet so i guess this or new issue should be created. I think unless the master branch can run python3.12 with cython support, this shouldn't be closed. Anyways, make cythonize is giving me some weird file error probably becaused i didnt execute git checkout branchname. Going to use python3.11 until official aiohttp for pypi is released.

@SnoopJ
Copy link

SnoopJ commented Sep 7, 2023

@SnoopJ it fails even on using something like python3.12 -m pip install -U git+https://github.com/aio-libs/aiohttp@master which i think installs latest version directly from github

This invocation does work for projects whose entire build process can be invoked by pip, but aiohttp is not one of those libraries because the make cythonize step is not represented in the setuptools configuration. See instructions above.

@whitequark
Copy link

whitequark commented Oct 6, 2023

Folks, what's the deal with not making a release including these changes? Those of us using aiohttp and attempting to support 3.12 ahead of its release are kind of in a pickle as a result of not having one.

EDIT: I found #7639, nevermind.

ecdsa added a commit to spesmilo/electrum that referenced this issue Oct 8, 2023
Python 3.12 does not work with current aiohttp, see
aio-libs/aiohttp#7229

It is currently possible to build a wheel using aiohttp==3.9.0b0.
However, unit tests fail in that case, because TestLNTransport::test_loop stalls.
@AetherBreaker
Copy link

Where do I find the instructions to build from source?

You can take a look at the contributing docs although those could probably be a bit better. This is my Github actions step to build aiohttp

      - name: Build aiohttp wheel
        env:
          AIOHTTP_COMMIT: <commit>
        run: |
          python -m venv venv-aiohttp
          . venv-aiohttp/bin/activate
          git clone --recurse-submodules https://github.com/aio-libs/aiohttp.git && cd aiohttp
          git checkout ${{ env.AIOHTTP_COMMIT }}

          cd vendor/llhttp/ && npm install && make && cd ../..
          make cythonize
          pip install build
          python -m build
          cd ..
          ls -l aiohttp/dist
          cp -r aiohttp/dist .
          rm -rf aiohttp

Replace <commit> with the current one from the 3.9 branch. https://github.com/aio-libs/aiohttp/tree/3.9 To install it, use pip install dist/aiohttp-*.whl.

When doing the build in a docker container, you might need to run apt update && apt install -y npm clang beforehand.

How would you do this on windows?

@Dreamsorcerer
Copy link
Member

Just install 3.9.0b0? It's already built from that branch.

rytilahti added a commit to rytilahti/python-songpal that referenced this issue Nov 4, 2023
@RubTalha
Copy link

RubTalha commented Nov 6, 2023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.