From 5605bceb22268ae0748a320d2b1d56c2fbddd74d Mon Sep 17 00:00:00 2001 From: Lev Vereshchagin Date: Fri, 11 Oct 2024 13:35:25 +0300 Subject: [PATCH 1/5] Allow to override set params in LitestarSwaggerInstrument --- microbootstrap/bootstrappers/litestar.py | 26 ++++++++++++------------ 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/microbootstrap/bootstrappers/litestar.py b/microbootstrap/bootstrappers/litestar.py index 7c3d5e5..dc7e844 100644 --- a/microbootstrap/bootstrappers/litestar.py +++ b/microbootstrap/bootstrappers/litestar.py @@ -66,24 +66,24 @@ def bootstrap_before(self) -> dict[str, typing.Any]: else () ) - openapi_config: typing.Final = openapi.OpenAPIConfig( - path=self.instrument_config.swagger_path, - title=self.instrument_config.service_name, - version=self.instrument_config.service_version, - description=self.instrument_config.service_description, - render_plugins=render_plugins, - **self.instrument_config.swagger_extra_params, - ) + all_swagger_params: typing.Final = { + "path": self.instrument_config.swagger_path, + "title": self.instrument_config.service_name, + "version": self.instrument_config.service_version, + "description": self.instrument_config.service_description, + "render_plugins": render_plugins, + } | self.instrument_config.swagger_extra_params + + bootstrap_result: typing.Final[dict[str, typing.Any]] = { + "openapi_config": openapi.OpenAPIConfig(**all_swagger_params) + } - bootstrap_result: typing.Final = {} if self.instrument_config.swagger_offline_docs: bootstrap_result["static_files_config"] = [ generate_static_files_config(static_files_handler_path=self.instrument_config.service_static_path), ] - return { - **bootstrap_result, - "openapi_config": openapi_config, - } + + return bootstrap_result @LitestarBootstrapper.use_instrument() From 827bc9484ba8b47cddf1172de4abbb020a4d9e0f Mon Sep 17 00:00:00 2001 From: Lev Vereshchagin Date: Fri, 11 Oct 2024 13:35:42 +0300 Subject: [PATCH 2/5] Remove unnecessary whitespaces --- microbootstrap/bootstrappers/litestar.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/microbootstrap/bootstrappers/litestar.py b/microbootstrap/bootstrappers/litestar.py index dc7e844..559bb8f 100644 --- a/microbootstrap/bootstrappers/litestar.py +++ b/microbootstrap/bootstrappers/litestar.py @@ -77,12 +77,10 @@ def bootstrap_before(self) -> dict[str, typing.Any]: bootstrap_result: typing.Final[dict[str, typing.Any]] = { "openapi_config": openapi.OpenAPIConfig(**all_swagger_params) } - if self.instrument_config.swagger_offline_docs: bootstrap_result["static_files_config"] = [ generate_static_files_config(static_files_handler_path=self.instrument_config.service_static_path), ] - return bootstrap_result From dc80c2e71595e43f0f0b10002a9f1aaf499543f5 Mon Sep 17 00:00:00 2001 From: Lev Vereshchagin Date: Fri, 11 Oct 2024 13:36:19 +0300 Subject: [PATCH 3/5] Use Swagger UI by default --- microbootstrap/bootstrappers/litestar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microbootstrap/bootstrappers/litestar.py b/microbootstrap/bootstrappers/litestar.py index 559bb8f..a1310b5 100644 --- a/microbootstrap/bootstrappers/litestar.py +++ b/microbootstrap/bootstrappers/litestar.py @@ -63,7 +63,7 @@ def bootstrap_before(self) -> dict[str, typing.Any]: ), ) if self.instrument_config.swagger_offline_docs - else () + else SwaggerRenderPlugin() ) all_swagger_params: typing.Final = { From 57379182f9e321be26e05e08cc142d0936610508 Mon Sep 17 00:00:00 2001 From: Lev Vereshchagin Date: Fri, 11 Oct 2024 13:40:00 +0300 Subject: [PATCH 4/5] Add test --- tests/instruments/test_swagger.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/instruments/test_swagger.py b/tests/instruments/test_swagger.py index 691c1ed..3f9dd6e 100644 --- a/tests/instruments/test_swagger.py +++ b/tests/instruments/test_swagger.py @@ -4,6 +4,7 @@ import litestar from httpx import AsyncClient from litestar import openapi, status_codes +from litestar.openapi.plugins import ScalarRenderPlugin from litestar.static_files import StaticFilesConfig from litestar.testing import AsyncTestClient @@ -51,6 +52,18 @@ def test_litestar_swagger_bootstrap_online_docs(minimal_swagger_config: SwaggerC assert "static_files_config" not in bootstrap_result +def test_litestar_swagger_bootstrap_with_overriden_render_plugins(minimal_swagger_config: SwaggerConfig) -> None: + new_render_plugins: typing.Final = [ScalarRenderPlugin()] + minimal_swagger_config.swagger_extra_params["render_plugins"] = new_render_plugins + + swagger_instrument: typing.Final = LitestarSwaggerInstrument(minimal_swagger_config) + bootstrap_result: typing.Final = swagger_instrument.bootstrap_before() + + assert "openapi_config" in bootstrap_result + assert isinstance(bootstrap_result["openapi_config"], openapi.OpenAPIConfig) + assert bootstrap_result["openapi_config"].render_plugins is new_render_plugins + + def test_litestar_swagger_bootstrap_offline_docs(minimal_swagger_config: SwaggerConfig) -> None: minimal_swagger_config.swagger_offline_docs = True swagger_instrument: typing.Final = LitestarSwaggerInstrument(minimal_swagger_config) From 542c2137ccbb847fb0a5be04e987dafb9676ab71 Mon Sep 17 00:00:00 2001 From: Lev Vereshchagin Date: Fri, 11 Oct 2024 13:42:03 +0300 Subject: [PATCH 5/5] Fix --- microbootstrap/bootstrappers/litestar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microbootstrap/bootstrappers/litestar.py b/microbootstrap/bootstrappers/litestar.py index a1310b5..86272bc 100644 --- a/microbootstrap/bootstrappers/litestar.py +++ b/microbootstrap/bootstrappers/litestar.py @@ -63,7 +63,7 @@ def bootstrap_before(self) -> dict[str, typing.Any]: ), ) if self.instrument_config.swagger_offline_docs - else SwaggerRenderPlugin() + else (SwaggerRenderPlugin(),) ) all_swagger_params: typing.Final = {