Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

InputObjectType.__init_sublcass_with_meta__ skips Meta.fields attribute

Abierto
#1,429 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
55/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
graphql, python
Área
api, backend

Línea de trabajo

Comienza en InputObjectType.init_subclass_with_meta y compara su gestión con la opción Meta.fields documentada. Revisa graphene/tests/issues/test_720.py para comprobar el comportamiento mencionado. La tarea estará terminada cuando Meta.fields se conserve y esté cubierta por una prueba que demuestre que crear una subclase de InputObjectType no descarta esos campos.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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)
Lenguaje dominante
Python
Estrellas
8.2k
Forks
818
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de graphql-python/graphene

Todos los issues de graphql-python/graphene

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.