diff --git a/codecarbon/core/emissions.py b/codecarbon/core/emissions.py index e71aa60b3..64ca83250 100644 --- a/codecarbon/core/emissions.py +++ b/codecarbon/core/emissions.py @@ -146,7 +146,7 @@ def get_cloud_geo_region(self, cloud: CloudMetadata) -> str: ) state = selected["state"].item() - if state is not None: + if isinstance(state, str): return state city = selected["city"].item() return city diff --git a/tests/test_emissions.py b/tests/test_emissions.py index 8dd5c3856..d44a26c7f 100644 --- a/tests/test_emissions.py +++ b/tests/test_emissions.py @@ -47,6 +47,24 @@ def test_emissions_CLOUD_GCP(self): assert isinstance(emissions, float) self.assertAlmostEqual(emissions, 0.0010, places=2) + def test_get_cloud_geo_region_returns_state(self): + # WHEN + region = self._emissions.get_cloud_geo_region( + CloudMetadata(provider="gcp", region="us-central1") + ) + + # THEN + self.assertEqual(region, "Iowa") + + def test_get_cloud_geo_region_falls_back_to_city_without_state(self): + # WHEN + region = self._emissions.get_cloud_geo_region( + CloudMetadata(provider="gcp", region="asia-east1") + ) + + # THEN + self.assertEqual(region, "Changhua County") + def test_get_carbon_intensity_per_source_data(self): # pytest tests/test_emissions.py::TestEmissions::test_get_carbon_intensity_per_source_data carbon_intensity = DataSource().get_carbon_intensity_per_source_data()