From d52fe53195ac39adba6e0295de2da1a292cf10a0 Mon Sep 17 00:00:00 2001 From: Yurii Karabas <1998uriyyo@gmail.com> Date: Thu, 4 Apr 2024 01:23:04 +0300 Subject: [PATCH] Fix issue when params field name is keyword (#1112) --- fastapi_pagination/api.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/fastapi_pagination/api.py b/fastapi_pagination/api.py index 0f8d317f..dd98697f 100644 --- a/fastapi_pagination/api.py +++ b/fastapi_pagination/api.py @@ -284,12 +284,17 @@ async def _pagination_params(*args: Any, **kwargs: Any) -> AsyncIterator[TAbstra if IS_PYDANTIC_V2: with suppress(ValueError, TypeError): if issubclass(params, BaseModel): - sign_params = {**sign.parameters} - for name, field in params.model_fields.items(): - name = field.alias or name - sign_params[name] = sign_params[name].replace(default=field) - - sign = sign.replace(parameters=[*sign_params.values()]) + sign_params = [ + inspect.Parameter( + name=name, + kind=inspect.Parameter.KEYWORD_ONLY, + annotation=field.annotation, + default=field, + ) + for name, field in params.model_fields.items() + ] + + sign = sign.replace(parameters=sign_params) _pagination_params.__signature__ = sign # type: ignore[attr-defined]