diff --git a/earthdiagnostics/data_convention.py b/earthdiagnostics/data_convention.py index d21a29567a7d11a3380fe1daf66ef185fe238c7e..0ac704f0afaca48b479290c1707628e2f4090751 100644 --- a/earthdiagnostics/data_convention.py +++ b/earthdiagnostics/data_convention.py @@ -853,6 +853,7 @@ class Cmor3Convention(DataConvention): def get_cmor_folder_path( self, startdate, member, domain, var, frequency, grid, cmor_var ): + if not self.config.cmor.version: raise ValueError( "CMOR version is mandatory for PRIMAVERA and CMIP6" @@ -882,6 +883,12 @@ class Cmor3Convention(DataConvention): grid, self.config.cmor.version, ) + if self.config.cmor.version == "latest": + versions = os.listdir(os.path.dirname(folder_path)) + versions.sort(reverse=True) + self.config.cmor.version = versions[0] + fodler_path = folder_path.replace('/latest/', f'/{versions[0]}/') + return folder_path def _link_startdate(self, path, member_str): diff --git a/test/unit/data_convention/test_preface.py b/test/unit/data_convention/test_preface.py index 509222ccb62a331dfb491d55096dcca6074934e9..1f549da9bbbdf7b864abe2f549c4ac2f994369b6 100644 --- a/test/unit/data_convention/test_preface.py +++ b/test/unit/data_convention/test_preface.py @@ -368,7 +368,7 @@ class TestPrefaceConvention(TestCase): @mock.patch("os.path.isfile") def test_is_cmorized_not_enough_vars(self, mock_is_file): - mock_is_file.return_value = True + mock_is_file.return_value = False cmor_var = Mock() omon = Mock() omon.name = "Omon" diff --git a/test/unit/data_convention/test_specs.py b/test/unit/data_convention/test_specs.py index cebbc6bbb9c91c95fd58186a359d104a09f8ad01..a0da62247c8d60793f79156783321856512e7e2c 100644 --- a/test/unit/data_convention/test_specs.py +++ b/test/unit/data_convention/test_specs.py @@ -487,7 +487,7 @@ class TestSpecsConvention(TestCase): @mock.patch("os.path.isfile") def test_is_cmorized_not_enough_vars(self, mock_is_file): - mock_is_file.return_value = True + mock_is_file.return_value = False cmor_var = Mock() omon = Mock() omon.name = "Omon"