Skip to content

Commit 2d36097

Browse files
committed
Get service provider from FastAPI
1 parent 81ba249 commit 2d36097

File tree

4 files changed

+106
-100
lines changed

4 files changed

+106
-100
lines changed

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ dependencies = [
1010
"greenlet>=3.3.1",
1111
"pydantic>=2.12.5",
1212
"pydantic-settings[azure-key-vault]>=2.12.0",
13-
"sqlmodel>=0.0.31",
14-
"wirio>=0.8.0",
13+
"sqlmodel>=0.0.32",
14+
"wirio>=0.9.0",
1515
]
1616

1717
[dependency-groups]
@@ -21,7 +21,7 @@ dev = [
2121
"pytest-asyncio>=1.3.0",
2222
"pytest-cov>=7.0.0",
2323
"pytest-mock>=3.15.1",
24-
"ruff>=0.14.14",
24+
"ruff>=0.15.0",
2525
"ty>=0.0.14",
2626
]
2727

src/python_template/api/service_collection_extensions.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
def add_observability(
1919
services: ServiceCollection, application_settings: ApplicationSettings
2020
) -> None:
21+
logging.basicConfig(level=application_settings.logging_level)
22+
2123
def inject_logging() -> Logger:
2224
return logging.getLogger(__name__)
2325

24-
logging.basicConfig(level=application_settings.logging_level)
2526
services.add_singleton(inject_logging)
2627

2728
if ApplicationEnvironment.get_current() != ApplicationEnvironment.LOCAL:
@@ -36,18 +37,20 @@ def add_sqlmodel(services: ServiceCollection) -> None:
3637
def inject_async_engine(application_settings: ApplicationSettings) -> AsyncEngine:
3738
return create_async_engine(application_settings.postgresql_connection_string)
3839

40+
services.add_singleton(inject_async_engine)
41+
3942
def inject_async_sessionmaker(
4043
async_engine: AsyncEngine,
4144
) -> async_sessionmaker[AsyncSession]:
4245
return async_sessionmaker(
4346
async_engine, class_=AsyncSession, expire_on_commit=False
4447
)
4548

49+
services.add_singleton(inject_async_sessionmaker)
50+
4651
def inject_async_session(
4752
async_sessionmaker: async_sessionmaker[AsyncSession],
4853
) -> AsyncSession:
4954
return async_sessionmaker()
5055

51-
services.add_singleton(inject_async_engine)
52-
services.add_singleton(inject_async_sessionmaker)
5356
services.add_transient(inject_async_session)

tests/integration/api/conftest.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
1-
from collections.abc import AsyncGenerator
1+
from collections.abc import Generator
22

33
import pytest
4+
from fastapi.testclient import TestClient
5+
from wirio.integrations.fastapi import get_service_provider
46
from wirio.service_provider import ServiceProvider
57

6-
from python_template.api.main import services
8+
from python_template.api.main import app
9+
10+
11+
@pytest.fixture(autouse=True)
12+
def test_client() -> Generator[None]:
13+
with TestClient(app):
14+
yield
715

816

917
@pytest.fixture
10-
async def service_provider() -> AsyncGenerator[ServiceProvider]:
11-
async with services.build_service_provider() as service_provider:
12-
yield service_provider
18+
def service_provider() -> ServiceProvider:
19+
return get_service_provider(app)

0 commit comments

Comments
 (0)