Document "content" parameters
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- openapi, python
- Área
- api, documentation
Línea de trabajo
Comienza con _field2parameter y la personalización parameter_attribute_functions introducida en #778. Determina cómo deben representar los campos de parámetros el content de OpenAPI, conservando el comportamiento existente de los esquemas y la compatibilidad con la personalización. Se considera terminado cuando los parámetros de objetos JSON puedan emitir una entrada de content adecuada y el comportamiento afectado esté cubierto por las pruebas del proyecto.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
https://swagger.io/docs/specification/describing-parameters/
To describe the parameter contents, you can use either the schema or content keyword.
[...]
content is used in complex serialization scenarios that are not covered by style and explode.
apispec assumes schema:
def _field2parameter(
self, field: marshmallow.fields.Field, *, name: str, location: str
) -> dict:
"""Return an OpenAPI parameter as a `dict`, given a marshmallow
:class:`Field <marshmallow.Field>`.
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#parameterObject
"""
ret: dict = {"in": location, "name": name}
prop = self.field2property(field)
if self.openapi_version.major < 3:
ret.update(prop)
else:
if "description" in prop:
ret["description"] = prop.pop("description")
if "deprecated" in prop:
ret["deprecated"] = prop.pop("deprecated")
ret["schema"] = prop # <------------------------ here
for param_attr_func in self.parameter_attribute_functions:
ret.update(param_attr_func(field, ret=ret))
return ret
In my code, I had to override that method to document a field that expects a JSON object and deserializes it into a dict:
[...]
ret["schema"] = prop
if isinstance(field, DictStr):
ret["content"] = {"application/json": {"schema": ret.pop("schema")}}
for param_attr_func in self.parameter_attribute_functions:
ret.update(param_attr_func(field, ret=ret))
return ret
We already added parameter_attribute_functions in #778 for specific cases that couldn't be addressed in field2property. Unfortunately, those functions only add stuff to the doc (their return value is fed to ret.update), so they can't do what is required above.
We could change that to let parameter attribute functions mutate ret for more customization (breaking change). It makes me cringe a bit because if several functions apply to the same field, they may interfere with each other and cause a crash. But after all, we're all grown-ups and I expect those kinds of exceptions to be scarce, so it shouldn't be an issue.
I'll try to carve some time to investigate this. Meanwhile, better ideas welcome.
- Lenguaje dominante
- Python
- Estrellas
- 1.2k
- Forks
- 210
- Merge medio
- 2 d 1 h
- PR fusionados (30 d)
- 4
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de marshmallow-code/apispec
-
DateTime(format="timestamp") generates invalid OpenAPI schema using min instead of minimumPosiblemente ocupada @Sanjays2402 la tomó hace 102 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
marshmallow-code/apispec#1064 ·
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
marshmallow-code/apispec#750 · 1 comentario · 5 reacciones ·
Los mantenedores suelen responder en 1 día
-
Dependency DashboardAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 30/100
marshmallow-code/apispec#1033 ·
Los mantenedores suelen responder en 1 día
-
`apispec` ignores `oneOf` from `marshmallow-oneofschema`Quizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
marshmallow-code/apispec#1012 · 6 comentarios ·
Los mantenedores suelen responder en 1 día
-
Support Overlays standardAbiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
marshmallow-code/apispec#981 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de marshmallow-code/apispec
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
btclib-org/btclib#3062 ·
Los mantenedores suelen responder en 1 día
-
Run evals automatically in CIAbiertoarea:evals area:infra enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
jse-avl/support-bot#4 · 1 comentario ·
-
bug good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
qte77/agentic-job-offer-to-application-kit#487 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
On a free-threaded build, `_decrypted` can report a ledger locked mid-sign as a damaged fileAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
btclib-org/btclib-wallet#801 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
documentation good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 94/100