Skip to content

InputObjectType.__init_sublcass_with_meta__ skips Meta.fields attribute #1429

Open
@lrzp

Description

@lrzp

In InputObjectType.__init_subclass_with_meta__, the fields of the Meta class (passed as an options arg) are never referenced. This in effect just skips them completely wich stands in contradiction to the docstring.

Meta class options (optional):
    ...
    fields (Dict[str, graphene.InputField]): Dictionary of field name to InputField. Not
    recommended to use (prefer class attributes).

InputObjectType has to be subclassed and __init_subclass_with_meta__ has to be extended for this feature to work, like in graphene.tests.issues.test_720.

If this is accepted I can do a PR for this along the lines:

@classmethod
+   def __init_subclass_with_meta__(cls, container=None, _meta=None, fields=None **options):
-   def __init_subclass_with_meta__(cls, container=None, _meta=None, **options):
        if not _meta:
            _meta = InputObjectTypeOptions(cls)
        
+       if not fields:
+           fields = {}
-       fields = {}
        for base in reversed(cls.__mro__):
            fields.update(yank_fields_from_attrs(base.__dict__, _as=InputField))

        if _meta.fields:
            _meta.fields.update(fields)
        else:
            _meta.fields = fields
        if container is None:
            container = type(cls.__name__, (InputObjectTypeContainer, cls), {})
        _meta.container = container
        super(InputObjectType, cls).__init_subclass_with_meta__(_meta=_meta, **options)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions