|
123 | 123 |
|
124 | 124 | log = logging.getLogger("nwp-consumer") |
125 | 125 |
|
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 | | -] |
| 126 | +class AvailableModel: |
| 127 | + """Class to hold information about an available model.""" |
| 128 | + name: str |
| 129 | + delay_minute: int |
| 130 | + model: entities.ModelMetadata |
| 131 | + |
| 132 | + def __init__(self, name: str, delay_minute: int, model: entities.ModelMetadata) -> None: |
| 133 | + """Create a new instance.""" |
| 134 | + self.name = name |
| 135 | + self.delay_minute = delay_minute |
| 136 | + self.model = model |
| 137 | + |
| 138 | +# set up the available models |
| 139 | +available_models = [] |
| 140 | +available_models.append(AvailableModel(name="default", |
| 141 | + delay_minute=300, |
| 142 | + model=entities.Models.MO_UM_GLOBAL_10KM.with_region("india"))) |
| 143 | +available_models.append(AvailableModel(name="um-global-10km-india", |
| 144 | + delay_minute=300, |
| 145 | + model=entities.Models.MO_UM_GLOBAL_10KM.with_region("india"))) |
| 146 | +available_models.append(AvailableModel(name="um-global-10km-uk", |
| 147 | + delay_minute=300, |
| 148 | + model=entities.Models.MO_UM_GLOBAL_10KM.with_region("uk"))) |
| 149 | +available_models.append(AvailableModel(name="um-ukv-2km", |
| 150 | + delay_minute=120, |
| 151 | + model=entities.Models.MO_UM_UKV_2KM_LAEA)) |
| 152 | + |
| 153 | +# get all model names |
| 154 | +available_models_names = [m.name for m in available_models] |
| 155 | +# get dict of delay minutes by model name |
| 156 | +delay_minutes_dict = {m.name: m.delay_minute for m in available_models} |
| 157 | +# get dict of model metadata by model name |
| 158 | +models_dict = {m.name: m.model for m in available_models} |
| 159 | + |
133 | 160 |
|
134 | 161 |
|
135 | 162 | class MetOfficeDatahubRawRepository(ports.RawRepository): |
@@ -161,27 +188,18 @@ def __init__(self, order_id: str, api_key: str) -> None: |
161 | 188 | @override |
162 | 189 | def repository() -> entities.RawRepositoryMetadata: |
163 | 190 |
|
164 | | - delay_minutes_all = {"default": 300, |
165 | | - "um-global-10km-india": 300, |
166 | | - "um-global-10km-uk":300, |
167 | | - "um-ukv-2km": 120} |
168 | 191 | requested_model: str = get_requested_model_name() |
169 | 192 |
|
170 | 193 | return entities.RawRepositoryMetadata( |
171 | 194 | name="MetOffice-Weather-Datahub", |
172 | 195 | is_archive=False, |
173 | 196 | is_order_based=True, |
174 | | - delay_minutes=delay_minutes_all[requested_model], |
| 197 | + delay_minutes=delay_minutes_dict[requested_model], |
175 | 198 | max_connections=10, |
176 | 199 | required_env=["METOFFICE_API_KEY", "METOFFICE_ORDER_ID"], |
177 | 200 | optional_env={"METOFFICE_DATASPEC": "1.1.0"}, |
178 | 201 | postprocess_options=entities.PostProcessOptions(), |
179 | | - available_models={ |
180 | | - "default": entities.Models.MO_UM_GLOBAL_10KM.with_region("india"), |
181 | | - "um-global-10km-india": entities.Models.MO_UM_GLOBAL_10KM.with_region("india"), |
182 | | - "um-global-10km-uk": entities.Models.MO_UM_GLOBAL_10KM.with_region("uk"), |
183 | | - "um-ukv-2km": entities.Models.MO_UM_UKV_2KM_LAEA, |
184 | | - }, |
| 202 | + available_models=models_dict, |
185 | 203 | ) |
186 | 204 |
|
187 | 205 | @staticmethod |
|
0 commit comments