Skip to content

Commit ad9e64e

Browse files
authored
Merge pull request #30 from community-of-python/fix-swagger-litestar
Use Swagger UI by default for Litestar & allow to override set params in LitestarSwaggerInstrument
2 parents e5d20cc + 542c213 commit ad9e64e

File tree

2 files changed

+25
-14
lines changed

2 files changed

+25
-14
lines changed

microbootstrap/bootstrappers/litestar.py

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,27 +63,25 @@ def bootstrap_before(self) -> dict[str, typing.Any]:
6363
),
6464
)
6565
if self.instrument_config.swagger_offline_docs
66-
else ()
66+
else (SwaggerRenderPlugin(),)
6767
)
6868

69-
openapi_config: typing.Final = openapi.OpenAPIConfig(
70-
path=self.instrument_config.swagger_path,
71-
title=self.instrument_config.service_name,
72-
version=self.instrument_config.service_version,
73-
description=self.instrument_config.service_description,
74-
render_plugins=render_plugins,
75-
**self.instrument_config.swagger_extra_params,
76-
)
69+
all_swagger_params: typing.Final = {
70+
"path": self.instrument_config.swagger_path,
71+
"title": self.instrument_config.service_name,
72+
"version": self.instrument_config.service_version,
73+
"description": self.instrument_config.service_description,
74+
"render_plugins": render_plugins,
75+
} | self.instrument_config.swagger_extra_params
7776

78-
bootstrap_result: typing.Final = {}
77+
bootstrap_result: typing.Final[dict[str, typing.Any]] = {
78+
"openapi_config": openapi.OpenAPIConfig(**all_swagger_params)
79+
}
7980
if self.instrument_config.swagger_offline_docs:
8081
bootstrap_result["static_files_config"] = [
8182
generate_static_files_config(static_files_handler_path=self.instrument_config.service_static_path),
8283
]
83-
return {
84-
**bootstrap_result,
85-
"openapi_config": openapi_config,
86-
}
84+
return bootstrap_result
8785

8886

8987
@LitestarBootstrapper.use_instrument()

tests/instruments/test_swagger.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import litestar
55
from httpx import AsyncClient
66
from litestar import openapi, status_codes
7+
from litestar.openapi.plugins import ScalarRenderPlugin
78
from litestar.static_files import StaticFilesConfig
89
from litestar.testing import AsyncTestClient
910

@@ -51,6 +52,18 @@ def test_litestar_swagger_bootstrap_online_docs(minimal_swagger_config: SwaggerC
5152
assert "static_files_config" not in bootstrap_result
5253

5354

55+
def test_litestar_swagger_bootstrap_with_overriden_render_plugins(minimal_swagger_config: SwaggerConfig) -> None:
56+
new_render_plugins: typing.Final = [ScalarRenderPlugin()]
57+
minimal_swagger_config.swagger_extra_params["render_plugins"] = new_render_plugins
58+
59+
swagger_instrument: typing.Final = LitestarSwaggerInstrument(minimal_swagger_config)
60+
bootstrap_result: typing.Final = swagger_instrument.bootstrap_before()
61+
62+
assert "openapi_config" in bootstrap_result
63+
assert isinstance(bootstrap_result["openapi_config"], openapi.OpenAPIConfig)
64+
assert bootstrap_result["openapi_config"].render_plugins is new_render_plugins
65+
66+
5467
def test_litestar_swagger_bootstrap_offline_docs(minimal_swagger_config: SwaggerConfig) -> None:
5568
minimal_swagger_config.swagger_offline_docs = True
5669
swagger_instrument: typing.Final = LitestarSwaggerInstrument(minimal_swagger_config)

0 commit comments

Comments
 (0)