|
43 | 43 | from .models import FOLDER_REGEX, NAME_REGEX, MetricKeyString
|
44 | 44 | from .system import get_system
|
45 | 45 | from .metadata import git_info, environment
|
46 |
| -from .eco import SimvueEmissionsTracker |
| 46 | +from .eco import SimvueEmissionsTracker, OfflineSimvueEmissionsTracker |
47 | 47 | from .utilities import (
|
48 | 48 | skip_if_failed,
|
49 | 49 | validate_timestamp,
|
@@ -208,11 +208,28 @@ def __init__(
|
208 | 208 | )
|
209 | 209 | else self._user_config.metrics.emission_metrics_interval
|
210 | 210 | )
|
211 |
| - self._emissions_tracker: SimvueEmissionsTracker | None = ( |
212 |
| - SimvueEmissionsTracker("simvue", self, self._emission_metrics_interval) |
213 |
| - if self._user_config.metrics.enable_emission_metrics |
214 |
| - else None |
215 |
| - ) |
| 211 | + if mode == "offline": |
| 212 | + if ( |
| 213 | + self._user_config.metrics.enable_emission_metrics |
| 214 | + and not self._user_config.offline.country_iso_code |
| 215 | + ): |
| 216 | + raise ValueError( |
| 217 | + "Country ISO code must be provided if tracking emissions metrics in offline mode." |
| 218 | + ) |
| 219 | + |
| 220 | + self._emissions_tracker: OfflineSimvueEmissionsTracker | None = ( |
| 221 | + OfflineSimvueEmissionsTracker( |
| 222 | + "simvue", self, self._emission_metrics_interval |
| 223 | + ) |
| 224 | + if self._user_config.metrics.enable_emission_metrics |
| 225 | + else None |
| 226 | + ) |
| 227 | + else: |
| 228 | + self._emissions_tracker: SimvueEmissionsTracker | None = ( |
| 229 | + SimvueEmissionsTracker("simvue", self, self._emission_metrics_interval) |
| 230 | + if self._user_config.metrics.enable_emission_metrics |
| 231 | + else None |
| 232 | + ) |
216 | 233 |
|
217 | 234 | def __enter__(self) -> Self:
|
218 | 235 | return self
|
@@ -1028,9 +1045,22 @@ def config(
|
1028 | 1045 | self._emission_metrics_interval = emission_metrics_interval
|
1029 | 1046 |
|
1030 | 1047 | if enable_emission_metrics:
|
1031 |
| - self._emissions_tracker = SimvueEmissionsTracker( |
1032 |
| - "simvue", self, self._emission_metrics_interval |
1033 |
| - ) |
| 1048 | + if self._user_config.run.mode == "offline": |
| 1049 | + if not self._user_config.offline.country_iso_code: |
| 1050 | + self._error( |
| 1051 | + "Country ISO code must be provided if tracking emissions metrics in offline mode." |
| 1052 | + ) |
| 1053 | + self._emissions_tracker: OfflineSimvueEmissionsTracker = ( |
| 1054 | + OfflineSimvueEmissionsTracker( |
| 1055 | + "simvue", self, self._emission_metrics_interval |
| 1056 | + ) |
| 1057 | + ) |
| 1058 | + else: |
| 1059 | + self._emissions_tracker: SimvueEmissionsTracker = ( |
| 1060 | + SimvueEmissionsTracker( |
| 1061 | + "simvue", self, self._emission_metrics_interval |
| 1062 | + ) |
| 1063 | + ) |
1034 | 1064 |
|
1035 | 1065 | # If the main Run API object is initialised the run is active
|
1036 | 1066 | # hence the tracker should start too
|
|
0 commit comments