Skip to content

Commit 5ddbd3a

Browse files
committed
extract model names
1 parent 1ea5cd3 commit 5ddbd3a

File tree

1 file changed

+23
-10
lines changed
  • src/nwp_consumer/internal/repositories/raw_repositories

1 file changed

+23
-10
lines changed

src/nwp_consumer/internal/repositories/raw_repositories/mo_datahub.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,14 @@
123123

124124
log = logging.getLogger("nwp-consumer")
125125

126+
# List of available model names
127+
available_models_names = [
128+
"default",
129+
"um-global-10km-india",
130+
"um-global-10km-uk",
131+
"um-ukv-2km",
132+
]
133+
126134

127135
class MetOfficeDatahubRawRepository(ports.RawRepository):
128136
"""Repository implementation for data from MetOffice's DataHub service."""
@@ -153,11 +161,11 @@ def __init__(self, order_id: str, api_key: str) -> None:
153161
@override
154162
def repository() -> entities.RawRepositoryMetadata:
155163

156-
requested_model: str = os.getenv("MODEL", default="default")
157164
delay_minutes_all = {"default": 300,
158165
"um-global-10km-india": 300,
159166
"um-global-10km-uk":300,
160167
"um-ukv-2km": 120}
168+
requested_model: str = get_requested_model_name()
161169

162170
return entities.RawRepositoryMetadata(
163171
name="MetOffice-Weather-Datahub",
@@ -179,15 +187,7 @@ def repository() -> entities.RawRepositoryMetadata:
179187
@staticmethod
180188
@override
181189
def model() -> entities.ModelMetadata:
182-
requested_model: str = os.getenv("MODEL", default="default")
183-
if requested_model not in MetOfficeDatahubRawRepository.repository().available_models:
184-
log.warn(
185-
f"Unknown model '{requested_model}' requested, falling back to default. "
186-
"MetOffice Datahub repository only supports "
187-
f"'{list(MetOfficeDatahubRawRepository.repository().available_models.keys())}'. "
188-
"Ensure MODEL environment variable is set to a valid model name.",
189-
)
190-
requested_model = "default"
190+
requested_model: str = get_requested_model_name()
191191
return MetOfficeDatahubRawRepository.repository().available_models[requested_model]
192192

193193
@classmethod
@@ -524,3 +524,16 @@ def _convert_ukv(path: pathlib.Path) -> ResultE[list[xr.DataArray]]:
524524
)
525525

526526
return Success([da])
527+
528+
529+
def get_requested_model_name() -> str:
530+
"""Get the requested model name from the environment variable."""
531+
requested_model: str = os.getenv("MODEL", default="default")
532+
if requested_model not in available_models_names:
533+
log.warn(
534+
f"Unknown model '{requested_model}' requested, falling back to default. "
535+
f"MetOffice Datahub repository only supports '{available_models_names}'. "
536+
"Ensure MODEL environment variable is set to a valid model name.",
537+
)
538+
requested_model = "default"
539+
return requested_model

0 commit comments

Comments
 (0)