`apispec` ignores `oneOf` from `marshmallow-oneofschema`

Abierto
#1,012 6 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

  • #1027 de @infraAnchor — cerrado sin fusionar
  • #1082 de @ansh-rohilla — cerrado sin fusionar

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
openapi, python
Área
api

Línea de trabajo

No se indica ningún archivo fuente ni ruta de prueba; empieza por localizar el manejo de marshmallow-oneofschema en apispec y leer las pruebas relevantes de generación de esquemas. Reproduce el ejemplo de AerthlingsShopOffer y, después, añade cobertura de regresión que confirme que se generan oneOf y ambos esquemas concretos de oferta.

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

Descripción

I need oneOf in my schema:

class AerthlingsShopOffer(OneOfSchema):
    """Polymorphic offer type discriminated by the 'type' field."""
    type_field = "type"
    type_schemas = {
        "character": AerthlingsCharacterOffer,
        "mutation_point": AerthlingsMpOffer,
    }

Marshmallow doesn't seem to support this. Fortunately, there is an extension, marshmallow-oneofschema. Unfortunately, when presented with the class above, apispec silently ignores it, producing

            "AerthlingsShopOffer": {
                "type": "object",
                "properties": {}
            },

and omitting AerthlingsCharacterOffer and AerthlingsMpOffer entirely.

I have a fix for this, but I think it requires discussion, and I have not yet written a unit test for it. If you think this is worth doing, I can complete the work and submit a PR. If not, that is no problem for me; I can continue to use my forked apispec in my own project.

Lenguaje dominante
Python
Estrellas
1.2k
Forks
210
Merge medio
2 d 1 h
PR fusionados (30 d)
4

Preparar el entorno

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 marshmallow-code/apispec

Todos los issues de marshmallow-code/apispec

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.