From 9a23243cc64d09dc750bc2fe341d0dab5e6da5a5 Mon Sep 17 00:00:00 2001 From: gyudoza Date: Mon, 14 Feb 2022 23:46:01 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Keep=20description=20when=20endp?= =?UTF-8?q?oint=20depends=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastapi/dependencies/utils.py | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index d4028d067..d3fb6aea7 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -245,15 +245,31 @@ def is_scalar_sequence_field(field: ModelField) -> bool: def get_typed_signature(call: Callable[..., Any]) -> inspect.Signature: signature = inspect.signature(call) globalns = getattr(call, "__globals__", {}) - typed_params = [ - inspect.Parameter( - name=param.name, - kind=param.kind, - default=param.default, - annotation=get_typed_annotation(param, globalns), - ) - for param in signature.parameters.values() - ] + if inspect.isclass(call): + from fastapi import Query + parameters = {} + fields = getattr(call, '__fields__', {}) + for param in fields: + parameters[param] = dict((fields[param].field_info.__repr_args__())) + typed_params = [ + inspect.Parameter( + name=param.name, + kind=param.kind, + default=Query(parameters[param.name].get("default"), description=parameters[param.name].get("description")), + annotation=get_typed_annotation(param, globalns), + ) + for param in signature.parameters.values() + ] + else: + typed_params = [ + inspect.Parameter( + name=param.name, + kind=param.kind, + default=param.default, + annotation=get_typed_annotation(param, globalns), + ) + for param in signature.parameters.values() + ] typed_signature = inspect.Signature(typed_params) return typed_signature