Tert0 / fastapi-discord

Discord OAuth FastAPI extension for APIs
MIT License
69 stars 16 forks source link

Python3.12 not supported #146

Closed def750 closed 2 months ago

def750 commented 2 months ago

System: Ubuntu24.04 on WSL Python 3.12 venv Clean folder with no other packages

When installing the package in above enviroment, well it doesnt install. Error log below.


(.venv) def750@MeowBox:/opt$ pip install pip install fastapi-discord
Requirement already satisfied: pip in ./.venv/lib/python3.12/site-packages (24.0)
Collecting install
  Using cached install-1.3.5-py3-none-any.whl.metadata (925 bytes)
Collecting fastapi-discord
  Using cached fastapi_discord-0.2.5-py3-none-any.whl.metadata (3.1 kB)
Collecting aiocache==0.12.2 (from fastapi-discord)
  Using cached aiocache-0.12.2-py2.py3-none-any.whl.metadata (8.3 kB)
Collecting aiohttp==3.8.5 (from fastapi-discord)
  Using cached aiohttp-3.8.5.tar.gz (7.4 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting fastapi==0.103.2 (from fastapi-discord)
  Using cached fastapi-0.103.2-py3-none-any.whl.metadata (24 kB)
Collecting attrs>=17.3.0 (from aiohttp==3.8.5->fastapi-discord)
  Using cached attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB)
^CERROR: Operation cancelled by user
(.venv) def750@MeowBox:/opt$ pip install fastapi-discord
Collecting fastapi-discord
  Using cached fastapi_discord-0.2.5-py3-none-any.whl.metadata (3.1 kB)
Collecting aiocache==0.12.2 (from fastapi-discord)
  Using cached aiocache-0.12.2-py2.py3-none-any.whl.metadata (8.3 kB)
Collecting aiohttp==3.8.5 (from fastapi-discord)
  Using cached aiohttp-3.8.5.tar.gz (7.4 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting fastapi==0.103.2 (from fastapi-discord)
  Using cached fastapi-0.103.2-py3-none-any.whl.metadata (24 kB)
Collecting attrs>=17.3.0 (from aiohttp==3.8.5->fastapi-discord)
  Using cached attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB)
Collecting charset-normalizer<4.0,>=2.0 (from aiohttp==3.8.5->fastapi-discord)
  Using cached charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (33 kB)
Collecting multidict<7.0,>=4.5 (from aiohttp==3.8.5->fastapi-discord)
  Using cached multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.2 kB)
Collecting async-timeout<5.0,>=4.0.0a3 (from aiohttp==3.8.5->fastapi-discord)
  Using cached async_timeout-4.0.3-py3-none-any.whl.metadata (4.2 kB)
Collecting yarl<2.0,>=1.0 (from aiohttp==3.8.5->fastapi-discord)
  Using cached yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (31 kB)
Collecting frozenlist>=1.1.1 (from aiohttp==3.8.5->fastapi-discord)
  Using cached frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (12 kB)
Collecting aiosignal>=1.1.2 (from aiohttp==3.8.5->fastapi-discord)
  Using cached aiosignal-1.3.1-py3-none-any.whl.metadata (4.0 kB)
Collecting anyio<4.0.0,>=3.7.1 (from fastapi==0.103.2->fastapi-discord)
  Using cached anyio-3.7.1-py3-none-any.whl.metadata (4.7 kB)
Collecting pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4 (from fastapi==0.103.2->fastapi-discord)
  Using cached pydantic-2.7.4-py3-none-any.whl.metadata (109 kB)
Collecting starlette<0.28.0,>=0.27.0 (from fastapi==0.103.2->fastapi-discord)
  Using cached starlette-0.27.0-py3-none-any.whl.metadata (5.8 kB)
Collecting typing-extensions>=4.5.0 (from fastapi==0.103.2->fastapi-discord)
  Using cached typing_extensions-4.12.2-py3-none-any.whl.metadata (3.0 kB)
Collecting idna>=2.8 (from anyio<4.0.0,>=3.7.1->fastapi==0.103.2->fastapi-discord)
  Using cached idna-3.7-py3-none-any.whl.metadata (9.9 kB)
Collecting sniffio>=1.1 (from anyio<4.0.0,>=3.7.1->fastapi==0.103.2->fastapi-discord)
  Using cached sniffio-1.3.1-py3-none-any.whl.metadata (3.9 kB)
Collecting annotated-types>=0.4.0 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi==0.103.2->fastapi-discord)
  Using cached annotated_types-0.7.0-py3-none-any.whl.metadata (15 kB)
Collecting pydantic-core==2.18.4 (from pydantic!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0,>=1.7.4->fastapi==0.103.2->fastapi-discord)
  Using cached pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.5 kB)
Using cached fastapi_discord-0.2.5-py3-none-any.whl (7.6 kB)
Using cached aiocache-0.12.2-py2.py3-none-any.whl (28 kB)
Using cached fastapi-0.103.2-py3-none-any.whl (66 kB)
Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Using cached anyio-3.7.1-py3-none-any.whl (80 kB)
Using cached async_timeout-4.0.3-py3-none-any.whl (5.7 kB)
Using cached attrs-23.2.0-py3-none-any.whl (60 kB)
Using cached charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141 kB)
Using cached frozenlist-1.4.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (281 kB)
Using cached multidict-6.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (130 kB)
Using cached pydantic-2.7.4-py3-none-any.whl (409 kB)
Using cached pydantic_core-2.18.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.1 MB)
Using cached starlette-0.27.0-py3-none-any.whl (66 kB)
Using cached typing_extensions-4.12.2-py3-none-any.whl (37 kB)
Using cached yarl-1.9.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (322 kB)
Using cached annotated_types-0.7.0-py3-none-any.whl (13 kB)
Using cached idna-3.7-py3-none-any.whl (66 kB)
Using cached sniffio-1.3.1-py3-none-any.whl (10 kB)
Building wheels for collected packages: aiohttp
  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
  ╰─> [160 lines of output]
      *********************
      * Accelerated build *
      *********************
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-312
      creating build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/client_proto.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/test_utils.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_middlewares.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_exceptions.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/worker.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/http_writer.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_runner.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/locks.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_protocol.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/tracing.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/cookiejar.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_fileresponse.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_server.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/log.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_request.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/typedefs.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/http_websocket.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_log.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/multipart.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/payload.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/http_exceptions.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/client_exceptions.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/payload_streamer.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_ws.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/http.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_urldispatcher.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/base_protocol.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/client.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/client_ws.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/hdrs.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/__init__.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/http_parser.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/client_reqrep.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_app.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/abc.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/tcp_helpers.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_routedef.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/resolver.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/helpers.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/pytest_plugin.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/connector.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/streams.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/web_response.py -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/formdata.py -> build/lib.linux-x86_64-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.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/_find_header.pxd -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/_headers.pxi -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/_helpers.pyi -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/_helpers.pyx -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/_http_parser.pyx -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/_http_writer.pyx -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/_websocket.pyx -> build/lib.linux-x86_64-cpython-312/aiohttp
      copying aiohttp/py.typed -> build/lib.linux-x86_64-cpython-312/aiohttp
      creating build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_cparser.pxd.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_find_header.pxd.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_helpers.pyi.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_helpers.pyx.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_http_parser.pyx.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_http_writer.pyx.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/_websocket.pyx.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      copying aiohttp/.hash/hdrs.py.hash -> build/lib.linux-x86_64-cpython-312/aiohttp/.hash
      running build_ext
      building 'aiohttp._websocket' extension
      creating build/temp.linux-x86_64-cpython-312
      creating build/temp.linux-x86_64-cpython-312/aiohttp
      x86_64-linux-gnu-gcc -fno-strict-overflow -Wsign-compare -DNDEBUG -g -O2 -Wall -fPIC -I/opt/.venv/include -I/usr/include/python3.12 -c aiohttp/_websocket.c -o build/temp.linux-x86_64-cpython-312/aiohttp/_websocket.o
      aiohttp/_websocket.c: In function ‘__pyx_pf_7aiohttp_10_websocket__websocket_mask_cython’:
      aiohttp/_websocket.c:1475:3: warning: ‘Py_OptimizeFlag’ is deprecated [-Wdeprecated-declarations]
       1475 |   if (unlikely(!Py_OptimizeFlag)) {
            |   ^~
      In file included from /usr/include/python3.12/Python.h:48,
                       from aiohttp/_websocket.c:6:
      /usr/include/python3.12/cpython/pydebug.h:13:37: note: declared here
         13 | Py_DEPRECATED(3.12) PyAPI_DATA(int) Py_OptimizeFlag;
            |                                     ^~~~~~~~~~~~~~~
      aiohttp/_websocket.c: In function ‘__Pyx_get_tp_dict_version’:
      aiohttp/_websocket.c:2680:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       2680 |     return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
            |     ^~~~~~
      In file included from /usr/include/python3.12/dictobject.h:90,
                       from /usr/include/python3.12/Python.h:64:
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      aiohttp/_websocket.c: In function ‘__Pyx_get_object_dict_version’:
      aiohttp/_websocket.c:2692:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       2692 |     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
            |     ^~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      aiohttp/_websocket.c: In function ‘__Pyx_object_dict_version_matches’:
      aiohttp/_websocket.c:2696:5: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       2696 |     if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
            |     ^~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      aiohttp/_websocket.c: In function ‘__Pyx_CLineForTraceback’:
      aiohttp/_websocket.c:2741:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       2741 |         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      aiohttp/_websocket.c:2741:9: warning: ‘ma_version_tag’ is deprecated [-Wdeprecated-declarations]
       2741 |         __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      /usr/include/python3.12/cpython/dictobject.h:22:34: note: declared here
         22 |     Py_DEPRECATED(3.12) uint64_t ma_version_tag;
            |                                  ^~~~~~~~~~~~~~
      aiohttp/_websocket.c: In function ‘__Pyx_PyInt_As_long’:
      aiohttp/_websocket.c:3042:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
       3042 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      aiohttp/_websocket.c:3097:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
       3097 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      aiohttp/_websocket.c: In function ‘__Pyx_PyInt_As_int’:
      aiohttp/_websocket.c:3238:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
       3238 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      aiohttp/_websocket.c:3293:53: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
       3293 |             const digit* digits = ((PyLongObject*)x)->ob_digit;
            |                                                     ^~
      aiohttp/_websocket.c: In function ‘__Pyx_PyIndex_AsSsize_t’:
      aiohttp/_websocket.c:3744:45: error: ‘PyLongObject’ {aka ‘struct _longobject’} has no member named ‘ob_digit’
       3744 |     const digit* digits = ((PyLongObject*)b)->ob_digit;
            |                                             ^~
      error: command '/usr/bin/x86_64-linux-gnu-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 aiohttp
Failed to build aiohttp
ERROR: Could not build wheels for aiohttp, which is required to install pyproject.toml-based project```
Tert0 commented 2 months ago

Could you try the new release v0.2.6?

def750 commented 2 months ago

Yeah, I installed repo using pip install git+https://github.com/Tert0/fastapi-discord.git#egg=fastapi_discord and it worked. Though i decided to write the API wrapper myself in the end. Anyways issue can be closed, if someone runs in the same issue, install it like above.

def750 commented 2 months ago

Most likely was a problem with PYPI