nrbnlulu / strawberry-django-auth

Authentication system for django using strawberry
https://nrbnlulu.github.io/strawberry-django-auth/
MIT License
62 stars 28 forks source link

Broken imports with Strawberry 0.236.0 #564

Closed TheEpic-dev closed 2 months ago

TheEpic-dev commented 2 months ago

Prerequisites

Feel free to just say what you want and remove this template.

Description

Hello! As per https://strawberry.rocks/docs/breaking-changes/0.236.0, the latest version of strawberry has moved some files around leading to incompatibility with strawberry-django-auth. As an example, the file strawberry/field.py has been renamed to strawberry/types/field.py. This leads to errors such as:

 File "/venv/lib/python3.11/site-packages/gqlauth/settings_type.py", line 21, in <module>
    from strawberry.field import StrawberryField
ModuleNotFoundError: No module named 'strawberry.field'

Steps to Reproduce

If we need to reproduce and you don't provide steps for it, it will be closed. Alternatively, you can link a repo with the code to run your issue.

Upgrade strawberry to 0.236.0, and it should break instantly.

My apologies if I can't provide more information, but this was reported to us on the Django discord, and I do not currently have an active strawberry project running.

Best regards, Pat

marcindulak commented 2 months ago

To reproduce use this Dockerfile

FROM python:3.12-slim-bookworm

RUN python -m pip install strawberry-django-auth==0.376.11
RUN python -c "import gqlauth.settings_type"

and run

docker build --progress=plain -t gqlauth .

Output

#5 19.59 Successfully installed Django-5.0.7 PyJWT-2.8.0 asgiref-3.8.1 django-stubs-4.2.7 django-stubs-ext-5.0.2 graphql-core-3.2.3 mypy-1.7.1 mypy-extensions-1.0.0 python-dateutil-2.9.0.post0 six-1.16.0 sqlparse-0.5.1 strawberry-django-auth-0.376.11 strawberry-graphql-0.236.0 strawberry-graphql-django-0.47.0 types-PyYAML-6.0.12.20240311 types-pytz-2024.1.0.20240417 typing-extensions-4.12.2
...
 > [3/3] RUN python -c "import gqlauth.settings_type":
0.666 Traceback (most recent call last):
0.666   File "<string>", line 1, in <module>
0.666   File "/usr/local/lib/python3.12/site-packages/gqlauth/settings_type.py", line 21, in <module>
0.666     from strawberry.field import StrawberryField
0.666 ModuleNotFoundError: No module named 'strawberry.field'
marcindulak commented 2 months ago

Or reproduce by running the strawberry-django-auth tests, using this Dockerfile

FROM python:3.12-slim-bookworm

RUN apt-get update && apt-get install -y git make
RUN python -m pip install poetry
RUN git clone https://github.com/nrbnlulu/strawberry-django-auth
RUN cd strawberry-django-auth && poetry update strawberry-graphql
RUN cd strawberry-django-auth && poetry install
RUN cd strawberry-django-auth && poetry show
RUN poetry run --directory strawberry-django-auth python -c "import gqlauth; print(gqlauth.__file__, gqlauth.__version__)"
RUN cd strawberry-django-auth && make test

by running

docker build --progress=plain -t gqlauth .

Output

...
#11 [ 8/10] RUN cd strawberry-django-auth && poetry show
#11 0.825 anyio                           4.3.0             High level compatibility ...
#11 0.825 asgiref                         3.8.1             ASGI specs, helper code, ...
#11 0.825 attrs                           23.2.0            Classes Without Boilerplate
#11 0.825 autobahn                        23.1.2            WebSocket client & server...
#11 0.825 automat                         22.10.0           Self-service finite-state...
#11 0.825 babel                           2.14.0            Internationalization util...
#11 0.825 black                           23.12.1           The uncompromising code f...
#11 0.825 certifi                         2024.2.2          Python package for provid...
#11 0.825 cffi                            1.16.0            Foreign Function Interfac...
#11 0.825 cfgv                            3.4.0             Validate configuration an...
#11 0.825 channels                        4.0.0             Brings async, event-drive...
#11 0.826 charset-normalizer              3.3.2             The Real First Universal ...
#11 0.826 click                           8.1.7             Composable command line i...
#11 0.826 colorama                        0.4.6             Cross-platform colored te...
#11 0.826 constantly                      23.10.4           Symbolic constants in Python
#11 0.826 coverage                        7.4.4             Code coverage measurement...
#11 0.826 cryptography                    42.0.5            cryptography is a package...
#11 0.826 csscompressor                   0.9.5             A python port of YUI CSS ...
#11 0.826 daphne                          4.1.0             Django ASGI (HTTP/WebSock...
#11 0.826 databind                        4.5.1             Databind is a library ins...
#11 0.826 databind-core                   4.5.1             Databind is a library ins...
#11 0.826 databind-json                   4.5.1             De-/serialize Python data...
#11 0.826 deprecated                      1.2.14            Python @deprecated decora...
#11 0.826 distlib                         0.3.8             Distribution utilities
#11 0.826 django                          4.2.11            A high-level Python web f...
#11 0.826 django-mock-queries             2.2.0             A django library for mock...
#11 0.826 django-stubs                    4.2.7             Mypy stubs for Django
#11 0.826 django-stubs-ext                4.2.7             Monkey-patching and exten...
#11 0.826 djangorestframework             3.15.1            Web APIs for Django, made...
#11 0.826 docspec                         2.2.1             Docspec is a JSON object ...
#11 0.826 docspec-python                  2.2.1             A parser based on lib2to3...
#11 0.826 docstring-parser                0.11              "Parse Python docstrings ...
#11 0.826 faker                           24.4.0            Faker is a Python package...
#11 0.826 filelock                        3.13.3            A platform independent fi...
#11 0.826 ghp-import                      2.1.0             Copy your docs directly t...
#11 0.826 graphql-core                    3.2.3             GraphQL implementation fo...
#11 0.826 h11                             0.14.0            A pure-Python, bring-your...
#11 0.826 htmlmin2                        0.1.13            An HTML Minifier
#11 0.826 httpcore                        1.0.5             A minimal low-level HTTP ...
#11 0.826 httpx                           0.27.0            The next generation HTTP ...
#11 0.826 hyperlink                       21.0.0            A featureful, immutable, ...
#11 0.826 identify                        2.5.35            File identification libra...
#11 0.826 idna                            3.6               Internationalized Domain ...
#11 0.826 importlib-metadata              7.1.0             Read metadata from Python...
#11 0.826 incremental                     22.10.0           "A small library that ver...
#11 0.826 iniconfig                       2.0.0             brain-dead simple config-...
#11 0.826 jinja2                          3.1.3             A very fast and expressiv...
#11 0.826 jsmin                           3.0.1             JavaScript minifier.
#11 0.826 markdown                        3.6               Python implementation of ...
#11 0.826 markdown-it-py                  3.0.0             Python port of markdown-i...
#11 0.826 markupsafe                      2.1.5             Safely add untrusted stri...
#11 0.826 mdurl                           0.1.2             Markdown URL utilities
#11 0.827 mergedeep                       1.3.4             A deep merge function for 🐍.
#11 0.827 mkdocs                          1.6.0             Project documentation wit...
#11 0.827 mkdocs-get-deps                 0.2.0             MkDocs extension that lis...
#11 0.827 mkdocs-markdownextradata-plugin 0.2.5             A MkDocs plugin that inje...
#11 0.827 mkdocs-material                 9.5.26            Documentation that simply...
#11 0.827 mkdocs-material-extensions      1.3.1             Extension pack for Python...
#11 0.827 mkdocs-minify-plugin            0.8.0             An MkDocs plugin to minif...
#11 0.827 model-bakery                    1.17.0            Smart object creation fac...
#11 0.827 mypy                            1.7.1             Optional static typing fo...
#11 0.827 mypy-extensions                 1.0.0             Type system extensions fo...
#11 0.827 nodeenv                         1.8.0             Node.js virtual environme...
#11 0.827 nr-date                         2.1.0             
#11 0.827 nr-stream                       1.1.5             
#11 0.827 nr-util                         0.8.12            General purpose Python ut...
#11 0.827 packaging                       24.0              Core utilities for Python...
#11 0.827 paginate                        0.5.6             Divides large result sets...
#11 0.827 pathspec                        0.12.1            Utility library for gitig...
#11 0.827 pillow                          10.3.0            Python Imaging Library (F...
#11 0.827 platformdirs                    4.2.0             A small Python package fo...
#11 0.827 pluggy                          1.4.0             plugin and hook calling m...
#11 0.827 pre-commit                      3.5.0             A framework for managing ...
#11 0.827 pyasn1                          0.6.0             Pure-Python implementatio...
#11 0.827 pyasn1-modules                  0.4.0             A collection of ASN.1-bas...
#11 0.827 pycparser                       2.22              C parser in Python
#11 0.827 pydoc-markdown                  4.8.2             Create Python API documen...
#11 0.827 pygithub                        2.3.0             Use the full Github API v3
#11 0.827 pygments                        2.17.2            Pygments is a syntax high...
#11 0.827 pyjwt                           2.8.0             JSON Web Token implementa...
#11 0.827 pymdown-extensions              10.7.1            Extension pack for Python...
#11 0.827 pynacl                          1.5.0             Python binding to the Net...
#11 0.827 pyopenssl                       24.1.0            Python wrapper module aro...
#11 0.827 pytest                          7.4.4             pytest: simple powerful t...
#11 0.827 pytest-asyncio                  0.23.6            Pytest support for asyncio
#11 0.827 pytest-cov                      5.0.0             Pytest plugin for measuri...
#11 0.827 pytest-django                   4.8.0             A Django plugin for pytest.
#11 0.827 python-dateutil                 2.9.0.post0       Extensions to the standar...
#11 0.828 pyyaml                          6.0.1             YAML parser and emitter f...
#11 0.828 pyyaml-env-tag                  0.1               A custom YAML tag for ref...
#11 0.828 regex                           2023.12.25        Alternative regular expre...
#11 0.828 requests                        2.31.0            Python HTTP for Humans.
#11 0.828 rich                            13.7.1            Render rich text, tables,...
#11 0.828 service-identity                24.1.0            Service identity verifica...
#11 0.828 setuptools                      69.2.0            Easily download, build, i...
#11 0.828 shellingham                     1.5.4             Tool to Detect Surroundin...
#11 0.828 six                             1.16.0            Python 2 and 3 compatibil...
#11 0.828 sniffio                         1.3.1             Sniff out which async lib...
#11 0.828 sqlparse                        0.4.4             A non-validating SQL parser.
#11 0.828 strawberry-graphql              0.236.0           A library for creating Gr...
#11 0.828 strawberry-graphql-django       0.37.0            Strawberry GraphQL Django...
#11 0.828 tomli                           2.0.1             A lil' TOML parser
#11 0.828 tomli-w                         1.0.0             A lil' TOML writer
#11 0.828 twisted                         24.3.0            An asynchronous networkin...
#11 0.828 txaio                           23.1.1            Compatibility API between...
#11 0.828 typeapi                         2.2.1             
#11 0.828 typer                           0.12.1            Typer, build great CLIs. ...
#11 0.828 types-cryptography              3.3.23.2          Typing stubs for cryptogr...
#11 0.828 types-jwt                       0.1.3             Typing stubs for jwt
#11 0.828 types-mock                      5.1.0.20240311    Typing stubs for mock
#11 0.828 types-pkg-resources             0.1.3             Typing stubs for pkg_reso...
#11 0.828 types-pytz                      2024.1.0.20240203 Typing stubs for pytz
#11 0.829 types-pyyaml                    6.0.12.20240311   Typing stubs for PyYAML
#11 0.829 typing-extensions               4.10.0            Backported and Experiment...
#11 0.829 urllib3                         2.2.1             HTTP library with thread-...
#11 0.829 virtualenv                      20.25.1           Virtual Python Environmen...
#11 0.829 watchdog                        4.0.0             Filesystem events monitoring
#11 0.829 wrapt                           1.16.0            Module for decorators, wr...
#11 0.829 yapf                            0.40.2            A formatter for Python code
#11 0.829 zipp                            3.18.1            Backport of pathlib-compa...
#11 0.829 zope-interface                  6.2               Interfaces for Python
...
#11 [8/9] RUN poetry run --directory strawberry-django-auth python -c "import gqlauth; print(gqlauth.__file__, gqlauth.__version__)"
#11 0.516 /strawberry-django-auth/gqlauth/__init__.py 0.3.2.1
...
#9 [6/6] RUN cd strawberry-django-auth && make test
#9 0.377 poetry run python -m migrate
#9 1.122 Traceback (most recent call last):
#9 1.122   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/checks/security/csrf.py", line 51, in check_csrf_failure_view
#9 1.122     view = _get_failure_view()
#9 1.122            ^^^^^^^^^^^^^^^^^^^
#9 1.122   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/middleware/csrf.py", line 51, in _get_failure_view
#9 1.122     return get_callable(settings.CSRF_FAILURE_VIEW)
#9 1.122                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.122   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 102, in __getattr__
#9 1.123     self._setup(name)
#9 1.123   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 89, in _setup
#9 1.123     self._wrapped = Settings(settings_module)
#9 1.123                     ^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.123   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 217, in __init__
#9 1.123     mod = importlib.import_module(self.SETTINGS_MODULE)
#9 1.123           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.123   File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
#9 1.123     return _bootstrap._gcd_import(name[level:], package, level)
#9 1.123            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.123   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
#9 1.123   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
#9 1.123   File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
#9 1.123   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
#9 1.123   File "<frozen importlib._bootstrap_external>", line 995, in exec_module
#9 1.123   File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
#9 1.123   File "/strawberry-django-auth/testproject/settings.py", line 15, in <module>
#9 1.123     from gqlauth.settings_type import GqlAuthSettings
#9 1.123   File "/strawberry-django-auth/gqlauth/settings_type.py", line 21, in <module>
#9 1.123     from strawberry.field import StrawberryField
#9 1.124 ModuleNotFoundError: No module named 'strawberry.field'
#9 1.124 
#9 1.124 During handling of the above exception, another exception occurred:
#9 1.124 
#9 1.124 Traceback (most recent call last):
#9 1.124   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/management/base.py", line 412, in run_from_argv
#9 1.124     self.execute(*args, **cmd_options)
#9 1.124   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/management/base.py", line 453, in execute
#9 1.124     self.check()
#9 1.124   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/management/base.py", line 485, in check
#9 1.124     all_issues = checks.run_checks(
#9 1.124                  ^^^^^^^^^^^^^^^^^^
#9 1.125   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/checks/registry.py", line 88, in run_checks
#9 1.125     new_errors = check(app_configs=app_configs, databases=databases)
#9 1.125                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.125   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/checks/security/csrf.py", line 55, in check_csrf_failure_view
#9 1.125     % settings.CSRF_FAILURE_VIEW
#9 1.125       ^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.125   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 102, in __getattr__
#9 1.125     self._setup(name)
#9 1.125   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 89, in _setup
#9 1.125     self._wrapped = Settings(settings_module)
#9 1.125                     ^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.125   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 217, in __init__
#9 1.125     mod = importlib.import_module(self.SETTINGS_MODULE)
#9 1.125           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.125   File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
#9 1.125     return _bootstrap._gcd_import(name[level:], package, level)
#9 1.125            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.126   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
#9 1.126   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
#9 1.126   File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
#9 1.126   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
#9 1.126   File "<frozen importlib._bootstrap_external>", line 995, in exec_module
#9 1.126   File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
#9 1.126   File "/strawberry-django-auth/testproject/settings.py", line 15, in <module>
#9 1.126     from gqlauth.settings_type import GqlAuthSettings
#9 1.126   File "/strawberry-django-auth/gqlauth/settings_type.py", line 21, in <module>
#9 1.126     from strawberry.field import StrawberryField
#9 1.126 ModuleNotFoundError: No module named 'strawberry.field'
#9 1.126 
#9 1.126 During handling of the above exception, another exception occurred:
#9 1.126 
#9 1.126 Traceback (most recent call last):
#9 1.126   File "<frozen runpy>", line 198, in _run_module_as_main
#9 1.126   File "<frozen runpy>", line 88, in _run_code
#9 1.126   File "/strawberry-django-auth/migrate.py", line 12, in <module>
#9 1.126     execute_from_command_line(args)
#9 1.126   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
#9 1.126     utility.execute()
#9 1.126   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
#9 1.126     self.fetch_command(subcommand).run_from_argv(self.argv)
#9 1.126   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/core/management/base.py", line 425, in run_from_argv
#9 1.127     connections.close_all()
#9 1.127   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/utils/connection.py", line 84, in close_all
#9 1.127     for conn in self.all(initialized_only=True):
#9 1.127                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.127   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/utils/connection.py", line 76, in all
#9 1.127     return [
#9 1.127            ^
#9 1.127   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/utils/connection.py", line 73, in __iter__
#9 1.127     return iter(self.settings)
#9 1.127                 ^^^^^^^^^^^^^
#9 1.127   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/utils/functional.py", line 57, in __get__
#9 1.127     res = instance.__dict__[self.name] = self.func(instance)
#9 1.127                                          ^^^^^^^^^^^^^^^^^^^
#9 1.127   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/utils/connection.py", line 45, in settings
#9 1.127     self._settings = self.configure_settings(self._settings)
#9 1.127                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.127   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/db/utils.py", line 148, in configure_settings
#9 1.127     databases = super().configure_settings(databases)
#9 1.127                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.128   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/utils/connection.py", line 50, in configure_settings
#9 1.128     settings = getattr(django_settings, self.settings_name)
#9 1.128                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.128   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 102, in __getattr__
#9 1.128     self._setup(name)
#9 1.128   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 89, in _setup
#9 1.128     self._wrapped = Settings(settings_module)
#9 1.128                     ^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.128   File "/root/.cache/pypoetry/virtualenvs/strawberry-django-auth-etZI0Tm--py3.12/lib/python3.12/site-packages/django/conf/__init__.py", line 217, in __init__
#9 1.128     mod = importlib.import_module(self.SETTINGS_MODULE)
#9 1.129           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.129   File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
#9 1.129     return _bootstrap._gcd_import(name[level:], package, level)
#9 1.129            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
#9 1.129   File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
#9 1.129   File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
#9 1.129   File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
#9 1.129   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
#9 1.129   File "<frozen importlib._bootstrap_external>", line 995, in exec_module
#9 1.129   File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
#9 1.129   File "/strawberry-django-auth/testproject/settings.py", line 15, in <module>
#9 1.129     from gqlauth.settings_type import GqlAuthSettings
#9 1.129   File "/strawberry-django-auth/gqlauth/settings_type.py", line 21, in <module>
#9 1.129     from strawberry.field import StrawberryField
#9 1.129 ModuleNotFoundError: No module named 'strawberry.field'
#9 1.156 make: *** [Makefile:11: test] Error 1
#9 ERROR: process "/bin/sh -c cd strawberry-django-auth && make test" did not complete successfully: exit code: 2
------
 > [6/6] RUN cd strawberry-django-auth && make test:
1.129   File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
1.129   File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
1.129   File "<frozen importlib._bootstrap_external>", line 995, in exec_module
1.129   File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
1.129   File "/strawberry-django-auth/testproject/settings.py", line 15, in <module>
1.129     from gqlauth.settings_type import GqlAuthSettings
1.129   File "/strawberry-django-auth/gqlauth/settings_type.py", line 21, in <module>
1.129     from strawberry.field import StrawberryField
1.129 ModuleNotFoundError: No module named 'strawberry.field'
1.156 make: *** [Makefile:11: test] Error 1
------