Skip to content

Commit 3e451e8

Browse files
committed
Refactor application setup to remove APP_SETTINGS_KEY and use app_settings_key parameter
1 parent 4003957 commit 3e451e8

File tree

3 files changed

+52
-10
lines changed

3 files changed

+52
-10
lines changed

packages/service-library/src/servicelib/aiohttp/application_setup.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
TypedDict,
1717
)
1818

19-
from .application_keys import APP_CONFIG_KEY, APP_SETTINGS_KEY
19+
from .application_keys import APP_CONFIG_KEY
2020

2121
_logger = logging.getLogger(__name__)
2222

@@ -115,13 +115,14 @@ def _get_app_settings_and_field_name(
115115
arg_settings_name: str | None,
116116
setup_func_name: str,
117117
logger: logging.Logger,
118+
app_settings_key: web.AppKey,
118119
) -> tuple[_ApplicationSettings | None, str | None]:
119-
app_settings: _ApplicationSettings | None = app.get(APP_SETTINGS_KEY)
120+
app_settings: _ApplicationSettings | None = app.get(app_settings_key)
120121
settings_field_name = arg_settings_name
121122

122123
if app_settings:
123124
if not settings_field_name:
124-
# FIXME: hard-coded WEBSERVER_ temporary
125+
# NOTE: hard-coded WEBSERVER_ temporary
125126
settings_field_name = f"WEBSERVER_{arg_module_name.split('.')[-1].upper()}"
126127

127128
logger.debug("Checking addon's %s ", f"{settings_field_name=}")
@@ -246,6 +247,7 @@ def app_module_setup(
246247
module_name: str,
247248
category: ModuleCategory,
248249
*,
250+
app_settings_key: web.AppKey,
249251
settings_name: str | None = None,
250252
depends: list[str] | None = None,
251253
logger: logging.Logger = _logger,
@@ -336,6 +338,7 @@ def _wrapper(app: web.Application, *args, **kargs) -> bool:
336338
settings_name,
337339
setup_func.__name__,
338340
logger,
341+
app_settings_key,
339342
)
340343

341344
if (

packages/service-library/tests/aiohttp/test_application_setup.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,26 @@ def app_config() -> dict:
3636
}
3737

3838

39+
@pytest.fixture
40+
def app_settings_key() -> web.AppKey:
41+
return web.AppKey("test_app_settings", object)
42+
43+
3944
@pytest.fixture
4045
def app(app_config: dict) -> web.Application:
4146
_app = web.Application()
4247
_app[APP_CONFIG_KEY] = app_config
4348
return _app
4449

4550

46-
def test_setup_config_enabled(app_config: dict, app: web.Application):
51+
def test_setup_config_enabled(
52+
app_config: dict, app: web.Application, app_settings_key: web.AppKey
53+
):
4754

4855
@app_module_setup(
4956
"package.zee",
5057
ModuleCategory.ADDON,
58+
app_settings_key=app_settings_key,
5159
# legacy support for config_enabled
5260
config_enabled="main.zee_enabled",
5361
)
@@ -63,15 +71,18 @@ def setup_zee(app: web.Application, arg) -> bool:
6371
assert not setup_zee(app, 2)
6472

6573

66-
def test_setup_dependencies(app: web.Application):
74+
def test_setup_dependencies(app: web.Application, app_settings_key: web.AppKey):
6775

68-
@app_module_setup("package.foo", ModuleCategory.ADDON)
76+
@app_module_setup(
77+
"package.foo", ModuleCategory.ADDON, app_settings_key=app_settings_key
78+
)
6979
def setup_foo(app: web.Application) -> bool:
7080
return True
7181

7282
@app_module_setup(
7383
"package.needs_foo",
7484
ModuleCategory.SYSTEM,
85+
app_settings_key=app_settings_key,
7586
depends=[
7687
# This module needs foo to be setup first
7788
"package.foo",
@@ -94,8 +105,12 @@ def setup_needs_foo(app: web.Application) -> bool:
94105
]
95106

96107

97-
def test_marked_setup(app_config: dict, app: web.Application):
98-
@app_module_setup("package.foo", ModuleCategory.ADDON)
108+
def test_marked_setup(
109+
app_config: dict, app: web.Application, app_settings_key: web.AppKey
110+
):
111+
@app_module_setup(
112+
"package.foo", ModuleCategory.ADDON, app_settings_key=app_settings_key
113+
)
99114
def setup_foo(app: web.Application) -> bool:
100115
return True
101116

@@ -107,8 +122,15 @@ def setup_foo(app: web.Application) -> bool:
107122
assert not setup_foo(app)
108123

109124

110-
def test_skip_setup(app: web.Application, mock_logger: MockType):
111-
@app_module_setup("package.foo", ModuleCategory.ADDON, logger=mock_logger)
125+
def test_skip_setup(
126+
app: web.Application, mock_logger: MockType, app_settings_key: web.AppKey
127+
):
128+
@app_module_setup(
129+
"package.foo",
130+
ModuleCategory.ADDON,
131+
app_settings_key=app_settings_key,
132+
logger=mock_logger,
133+
)
112134
def setup_foo(app: web.Application, *, raise_skip: bool = False) -> bool:
113135
if raise_skip:
114136
raise SkipModuleSetupError(reason="explicit skip")
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import functools
2+
3+
import servicelib.aiohttp.application_setup
4+
5+
from .constants import APP_SETTINGS_KEY
6+
7+
ensure_single_setup = servicelib.aiohttp.application_setup.ensure_single_setup
8+
app_setup_func = functools.partial(
9+
servicelib.aiohttp.application_setup.app_module_setup,
10+
app_settings_key=APP_SETTINGS_KEY,
11+
)
12+
13+
14+
__all__: tuple[str, ...] = (
15+
"app_setup_func",
16+
"ensure_single_setup",
17+
)

0 commit comments

Comments
 (0)