-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Closed
Labels
type: housekeepingChanges to the application which do not directly impact the end userChanges to the application which do not directly impact the end user
Description
Proposed Changes
When upgrading to strawberry-graphql-django v0.61.0 or later, an ImportError exception is raised on initialization, potentially indicating a circular import (though I'm not sure how).
Traceback (most recent call last):
File "/usr/lib/python3.10/threading.py", line 1016, in _bootstrap_inner
self.run()
File "/usr/lib/python3.10/threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/utils/autoreload.py", line 64, in wrapper
fn(*args, **kwargs)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/core/management/commands/runserver.py", line 134, in inner_run
self.check(**check_kwargs)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/core/management/base.py", line 492, in check
all_issues = checks.run_checks(
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/core/checks/registry.py", line 89, in run_checks
new_errors = check(app_configs=app_configs, databases=databases)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/core/checks/urls.py", line 16, in check_url_config
return check_resolver(resolver)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/core/checks/urls.py", line 26, in check_resolver
return check_method()
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 531, in check
for pattern in self.url_patterns:
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/utils/functional.py", line 47, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 718, in url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/utils/functional.py", line 47, in __get__
res = instance.__dict__[self.name] = self.func(instance)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 711, in urlconf_module
return import_module(self.urlconf_name)
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/jstretch/projects/netbox/netbox/netbox/urls.py", line 9, in <module>
from netbox.graphql.schema import schema
File "/home/jstretch/projects/netbox/netbox/netbox/graphql/schema.py", line 7, in <module>
from circuits.graphql.schema import CircuitsQuery
File "/home/jstretch/projects/netbox/netbox/circuits/graphql/schema.py", line 6, in <module>
from .types import *
File "/home/jstretch/projects/netbox/netbox/circuits/graphql/types.py", line 8, in <module>
from extras.graphql.mixins import ContactsMixin, CustomFieldsMixin, TagsMixin
File "/home/jstretch/projects/netbox/netbox/extras/graphql/mixins.py", line 37, in <module>
class ImageAttachmentsMixin:
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/strawberry/types/object_type.py", line 323, in type
return wrap(cls)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/strawberry/types/object_type.py", line 307, in wrap
wrapped = _wrap_dataclass(cls)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/strawberry/types/object_type.py", line 117, in _wrap_dataclass
dclass = dataclasses.dataclass(cls, **dclass_kwargs)
File "/usr/lib/python3.10/dataclasses.py", line 1184, in dataclass
return wrap(cls)
File "/usr/lib/python3.10/dataclasses.py", line 1175, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash,
File "/usr/lib/python3.10/dataclasses.py", line 955, in _process_class
cls_fields.append(_get_field(cls, name, type, kw_only))
File "/usr/lib/python3.10/dataclasses.py", line 765, in _get_field
or (isinstance(f.type, str)
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/strawberry/types/field.py", line 304, in type
return self.resolve_type()
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/strawberry_django/fields/base.py", line 194, in resolve_type
resolved_django_type = get_django_definition(unwrap_type(resolved))
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/strawberry_django/utils/typing.py", line 133, in unwrap_type
type_ = type_.resolve_type()
File "/home/jstretch/projects/netbox/venv/lib/python3.10/site-packages/strawberry/types/lazy_type.py", line 63, in resolve_type
module = importlib.import_module(self.module, self.package)
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/home/jstretch/projects/netbox/netbox/extras/graphql/types.py", line 7, in <module>
from extras.graphql.mixins import CustomFieldsMixin, TagsMixin
ImportError: cannot import name 'TagsMixin' from partially initialized module 'extras.graphql.mixins' (most likely due to a circular import) (/home/jstretch/projects/netbox/netbox/extras/graphql/mixins.py)
The breaking change was introduced somewhere in here.
Justification
We need to investigate and resolve this issue to unblock newer releases of the library.
Metadata
Metadata
Assignees
Labels
type: housekeepingChanges to the application which do not directly impact the end userChanges to the application which do not directly impact the end user