RFC: Use annotations for parsing arguments

Abierto
#353 6 comentarios 6 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
28/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
python
Área
api, backend

Línea de trabajo

Empieza revisando la prueba de concepto en webargs-starlette; después, inspecciona AsyncParser y core.Parser, y cómo marshmallow Schema.TYPE_MAPPING construye los campos. Se considera terminado cuando se haya adaptado el enfoque basado en anotaciones use_annotations para los parsers relevantes, de modo que los argumentos de la solicitud se analicen a partir de las anotaciones de las funciones de vista.

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

Descripción

feedback welcome

Add a decorator that will parse request arguments from the view function's type annotations.

I've built a working proof of concept of this idea in webargs-starlette.

@app.route("/")
@use_annotations(locations=("query",))
async def index(request, name: str = "World"):
    return JSONResponse({"Hello": name})

A marshmallow Schema is generated from the annotations using Schema.TYPE_MAPPING to construct fields.

The code for use_annotations mostly isn't tied to Starlette and could be adapted for AsyncParser (and core.Parser when we drop Python 2 support).

Lenguaje dominante
Python
Estrellas
1.4k
Forks
171
Merge medio
8 h 47 min
PR fusionados (30 d)
12

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/webargs

Todos los issues de marshmallow-code/webargs

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.