Skip to content

Commit ffb90fd

Browse files
Cleanups
1 parent 2d3fe10 commit ffb90fd

4 files changed

Lines changed: 13 additions & 29 deletions

File tree

‎src/sap_cloud_sdk/core/bootstrap.py‎

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
from typing import Any, List, Optional
44

55
from sap_cloud_sdk.core.runtime_context._protocol import ContextProvider
6+
from sap_cloud_sdk.core.runtime_context._registry import get_registry
7+
from sap_cloud_sdk.core.runtime_context import IASContextProvider
68

79

810
def bootstrap(app: Any, providers: Optional[List[ContextProvider]] = None) -> None:
@@ -40,15 +42,8 @@ def bootstrap(app: Any, providers: Optional[List[ContextProvider]] = None) -> No
4042
bootstrap(app, providers=[IASContextProvider(), MyCustomProvider()])
4143
"""
4244
if not providers:
43-
from sap_cloud_sdk.core.runtime_context import IASContextProvider
44-
4545
providers = [IASContextProvider()]
4646

47-
# Ensure all built-in adapters are registered before iterating.
48-
_load_builtin_adapters()
49-
50-
from sap_cloud_sdk.core.runtime_context._registry import get_registry
51-
5247
for adapter in get_registry():
5348
if adapter.matches(app):
5449
adapter.attach(app, providers)
@@ -59,11 +54,3 @@ def bootstrap(app: Any, providers: Optional[List[ContextProvider]] = None) -> No
5954
"Supported frameworks are determined by registered FrameworkAdapters. "
6055
"For other frameworks, register a FrameworkAdapter or attach the middleware manually."
6156
)
62-
63-
64-
def _load_builtin_adapters() -> None:
65-
"""Import built-in framework adapter modules to trigger their register() calls."""
66-
try:
67-
import sap_cloud_sdk.core.runtime_context.starlette # noqa: F401
68-
except ImportError:
69-
pass

‎src/sap_cloud_sdk/core/runtime_context/__init__.py‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@
3939
from sap_cloud_sdk.core.runtime_context._providers import IASContextProvider
4040
from sap_cloud_sdk.core.runtime_context._registry import FrameworkAdapter, register
4141

42+
# Register built-in framework adapters (guarded so missing extras don't break the import).
43+
try:
44+
import sap_cloud_sdk.core.runtime_context.starlette # noqa: F401
45+
except ImportError:
46+
pass
47+
4248
__all__ = [
4349
"ContextProvider",
4450
"FrameworkAdapter",

‎src/sap_cloud_sdk/core/runtime_context/_registry.py‎

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
"""Framework adapter base class and registry for bootstrap()."""
22

3-
import importlib.util
43
import logging
54
from abc import ABC, abstractmethod
65
from typing import List
@@ -32,9 +31,7 @@ class FrameworkAdapter(ABC):
3231
Example::
3332
3433
class FlaskContextAdapter(FrameworkAdapter):
35-
framework_name = "flask"
36-
37-
def matches(self, app) -> bool:
34+
def _matches(self, app) -> bool:
3835
from flask import Flask
3936
return isinstance(app, Flask)
4037
@@ -44,19 +41,15 @@ def attach(self, app, providers) -> None:
4441
register(FlaskContextAdapter())
4542
"""
4643

47-
#: Import name of the framework (e.g. "starlette", "flask").
48-
framework_name: str
49-
5044
def matches(self, app) -> bool:
51-
if not self._is_framework_installed():
45+
"""Return True if this adapter handles *app*'s framework type."""
46+
try:
47+
return self._matches(app)
48+
except ImportError:
5249
return False
53-
return self._matches(app)
5450

5551
@abstractmethod
5652
def _matches(self, app) -> bool: ...
5753

5854
@abstractmethod
5955
def attach(self, app, providers: List[ContextProvider]) -> None: ...
60-
61-
def _is_framework_installed(self) -> bool:
62-
return importlib.util.find_spec(self.framework_name) is not None

‎src/sap_cloud_sdk/core/runtime_context/starlette.py‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ async def dispatch(self, request: Request, call_next: Any) -> Response:
6060

6161

6262
class _StarletteContextAdapter(FrameworkAdapter):
63-
framework_name = "starlette"
64-
6563
def _matches(self, app) -> bool:
6664
from starlette.applications import Starlette
6765

0 commit comments

Comments
 (0)