You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What is the motivation/use case for changing the behavior?
My Django models can have fields named type and I can use serializers to describe how mutations work on them (I know this is graphene-django related, but still).
See the full list of dependencies in the example repo I linked.
Other information
The example repo has a minimal example and explanation of what causes the bug and a possible solution. The traceback is available in the repo as well as below.
Traceback
[30/Aug/2023 09:13:35] "GET / HTTP/1.1" 404 2061
Internal Server Error: /graphql/
Traceback (most recent call last):
File "...\mysite\venv\Lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\django\views\generic\base.py", line 97, in view
self = cls(**initkwargs)
^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\views.py", line 105, in __init__
schema = graphene_settings.SCHEMA
^^^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\settings.py", line 123, in __getattr__
val = perform_import(val, attr)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\settings.py", line 62, in perform_import
return import_from_string(val, setting_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\settings.py", line 76, in import_from_string
module = importlib.import_module(module_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\Python311\Lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1147, in _find_and_load_unlocked
File "", line 690, in _load_unlocked
File "", line 940, in exec_module
File "", line 241, in _call_with_frames_removed
File "...\mysite\foo\schema.py", line 16, in
class FooMutation(SerializerMutation):
File "...\mysite\venv\Lib\site-packages\graphene\types\objecttype.py", line 30, in __new__
base_cls = super().__new__(
^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene\utils\subclass_with_meta.py", line 46, in __init_subclass__
super_class.__init_subclass_with_meta__(**options)
File "...\mysite\venv\Lib\site-packages\graphene_django\rest_framework\mutation.py", line 102, in __init_subclass_with_meta__
output_fields = fields_for_serializer(
^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\rest_framework\mutation.py", line 52, in fields_for_serializer
fields[name] = convert_serializer_field(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\rest_framework\serializer_converter.py", line 31, in convert_serializer_field
graphql_type = get_graphene_type_from_serializer_field(field)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\Lib\functools.py", line 909, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\rest_framework\serializer_converter.py", line 163, in convert_serializer_field_to_enum
return convert_choices_to_named_enum_with_descriptions(name, field.choices)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene_django\converter.py", line 101, in convert_choices_to_named_enum_with_descriptions
return_type = Enum(
^^^^^
File "...\mysite\venv\Lib\site-packages\graphene\types\enum.py", line 53, in __call__
return cls.from_enum(
^^^^^^^^^^^^^^
File "...\mysite\venv\Lib\site-packages\graphene\types\enum.py", line 74, in from_enum
meta_class = type("Meta", (object,), meta_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: EnumType.__call__() takes from 2 to 3 positional arguments but 4 were given
[30/Aug/2023 09:13:39] "GET /graphql/ HTTP/1.1" 500 186631
The text was updated successfully, but these errors were encountered:
What is the current behavior?
See title. I've reproduced the bug together with
graphene-django
, but the actual bug is in graphene itself, so I'm raising the issue here. Example repo is here: https://github.com/matti-lamppu/graphene-bug.What is the expected behavior?
I can create an enum field with the name type.
What is the motivation/use case for changing the behavior?
My Django models can have fields named
type
and I can use serializers to describe how mutations work on them (I know this isgraphene-django
related, but still).Please tell us about your environment:
See the full list of dependencies in the example repo I linked.
Other information
The example repo has a minimal example and explanation of what causes the bug and a possible solution. The traceback is available in the repo as well as below.
Traceback
The text was updated successfully, but these errors were encountered: