Skip to content

Commit 47088eb

Browse files
committed
update modern-di
1 parent afb8432 commit 47088eb

File tree

3 files changed

+245
-238
lines changed

3 files changed

+245
-238
lines changed

app/application.py

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
import contextlib
2-
import typing
3-
41
import litestar
52
import modern_di_litestar
63
from advanced_alchemy.exceptions import DuplicateKeyError
@@ -12,34 +9,25 @@
129
from app.settings import settings
1310

1411

15-
class AppBuilder:
16-
def __init__(self) -> None:
17-
self.app: litestar.Litestar = litestar.Litestar(
18-
debug=settings.debug,
19-
lifespan=[self.lifespan_manager],
20-
exception_handlers={
21-
DuplicateKeyError: exceptions.duplicate_key_error_handler,
22-
},
23-
route_handlers=[ROUTER],
24-
dependencies={
25-
**modern_di_litestar.prepare_di_dependencies(),
26-
"decks_service": modern_di_litestar.FromDI(ioc.Dependencies.decks_service),
27-
"cards_service": modern_di_litestar.FromDI(ioc.Dependencies.cards_service),
28-
},
29-
openapi_config=OpenAPIConfig(
30-
title="Litestar Example",
31-
description="Example of Litestar with Scalar OpenAPI docs",
32-
version="0.0.1",
33-
render_plugins=[SwaggerRenderPlugin()],
34-
),
35-
)
36-
self.di_container = modern_di_litestar.setup_di(self.app)
37-
38-
@contextlib.asynccontextmanager
39-
async def lifespan_manager(self, _: litestar.Litestar | None) -> typing.AsyncIterator[None]:
40-
async with self.di_container:
41-
await ioc.Dependencies.async_resolve_creators(self.di_container)
42-
yield
12+
def build_app() -> litestar.Litestar:
13+
return litestar.Litestar(
14+
debug=settings.debug,
15+
exception_handlers={
16+
DuplicateKeyError: exceptions.duplicate_key_error_handler,
17+
},
18+
route_handlers=[ROUTER],
19+
plugins=[modern_di_litestar.ModernDIPlugin()],
20+
dependencies={
21+
"decks_service": modern_di_litestar.FromDI(ioc.Dependencies.decks_service),
22+
"cards_service": modern_di_litestar.FromDI(ioc.Dependencies.cards_service),
23+
},
24+
openapi_config=OpenAPIConfig(
25+
title="Litestar Example",
26+
description="Example of Litestar with Scalar OpenAPI docs",
27+
version="0.0.1",
28+
render_plugins=[SwaggerRenderPlugin()],
29+
),
30+
)
4331

4432

45-
application = AppBuilder().app
33+
application = build_app()

tests/test_main.py

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
11
import runpy
22
from unittest import mock
33

4-
import litestar
54
import modern_di
65
import pytest
76

87
from app import ioc
9-
from app.application import AppBuilder
108

119

1210
def test_main(monkeypatch: pytest.MonkeyPatch) -> None:
1311
monkeypatch.setattr("granian.Granian", mock.Mock())
1412
runpy.run_module("app.__main__", run_name="__main__")
1513

1614

17-
async def test_app_lifespan() -> None:
18-
async with AppBuilder().lifespan_manager(litestar.Litestar()):
19-
pass
20-
21-
2215
async def test_session() -> None:
2316
async with (
2417
modern_di.Container(scope=modern_di.Scope.APP) as container,

0 commit comments

Comments
 (0)