From c6ea241bdd8228967ffb7bfcfe839ff2874403b6 Mon Sep 17 00:00:00 2001 From: Dmitry Pershin Date: Thu, 7 Dec 2023 14:07:03 +0500 Subject: [PATCH 1/2] openapi schema generation bug fixed. --- pjrpc/server/specs/extractors/pydantic.py | 2 +- tests/server/resources/openapi-1.json | 15 ++++++++++++++- tests/server/test_openapi.py | 5 ++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/pjrpc/server/specs/extractors/pydantic.py b/pjrpc/server/specs/extractors/pydantic.py index 4290ed3..cf35981 100644 --- a/pjrpc/server/specs/extractors/pydantic.py +++ b/pjrpc/server/specs/extractors/pydantic.py @@ -74,7 +74,7 @@ def extract_result_schema(self, method: MethodType) -> Schema: description=result_schema.get('description', UNSET), deprecated=result_schema.get('deprecated', UNSET), required=required, - definitions=model_schema.get('definitions', UNSET), + definitions=model_schema.get('$defs', UNSET), ) return result_schema diff --git a/tests/server/resources/openapi-1.json b/tests/server/resources/openapi-1.json index 22986c9..0d4deb5 100644 --- a/tests/server/resources/openapi-1.json +++ b/tests/server/resources/openapi-1.json @@ -282,7 +282,7 @@ ] }, "result": { - "$ref": "#/components/schemas/Model" + "$ref": "#/components/schemas/ResultModel" } }, "required": [ @@ -1221,6 +1221,19 @@ "field1", "field3" ] + }, + "ResultModel": { + "properties": { + "field1": { + "title": "Field1", + "type": "string" + } + }, + "required": [ + "field1" + ], + "title": "ResultModel", + "type": "object" } } }, diff --git a/tests/server/test_openapi.py b/tests/server/test_openapi.py index 65d8eff..d46487a 100644 --- a/tests/server/test_openapi.py +++ b/tests/server/test_openapi.py @@ -53,6 +53,9 @@ class Model(pydantic.BaseModel): field2: Optional[int] = 1 field3: SubModel + class ResultModel(pydantic.BaseModel): + field1: str + class TestError(pjrpc.common.exceptions.JsonRpcError): code = 2001 message = 'test error 1' @@ -91,7 +94,7 @@ class TestError(pjrpc.common.exceptions.JsonRpcError): def method1(ctx, param1: int, param2: Model, param3) -> int: pass - def method2(param1: int, param2) -> Model: + def method2(param1: int, param2) -> ResultModel: pass def method3(param1: Optional[float] = None, param2: int = 1) -> Optional[str]: From 15f7813e89d0274d83d781f7a93ce48cea737560 Mon Sep 17 00:00:00 2001 From: Dmitry Pershin Date: Thu, 7 Dec 2023 14:11:15 +0500 Subject: [PATCH 2/2] bump version 1.8.2. --- CHANGELOG.rst | 6 ++++++ pjrpc/__about__.py | 2 +- pyproject.toml | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 9f8ec4b..d599653 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,6 +1,12 @@ Changelog ========= +1.8.2 (2023-12-07) +------------------ + +- openapi schema generation bug fixed. + + 1.8.1 (2023-11-28) ------------------ diff --git a/pjrpc/__about__.py b/pjrpc/__about__.py index c3b8d6c..9000699 100644 --- a/pjrpc/__about__.py +++ b/pjrpc/__about__.py @@ -2,7 +2,7 @@ __description__ = 'Extensible JSON-RPC library' __url__ = 'https://github.com/dapper91/pjrpc' -__version__ = '1.8.1' +__version__ = '1.8.2' __author__ = 'Dmitry Pershin' __email__ = 'dapper1291@gmail.com' diff --git a/pyproject.toml b/pyproject.toml index d3fe0bd..1bf3679 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "pjrpc" -version = "1.8.1" +version = "1.8.2" description = "Extensible JSON-RPC library" authors = ["Dmitry Pershin "] license = "Unlicense"