def end_time(self): std_units = Settings.get_solo().standard_time_units end_times = self.obs_files.values_list('end_time', 'time_units', 'calendar') if not end_times: return None std_times = [ (standardise_time_unit(time, unit, std_units, cal), cal) for time, unit, cal in end_times ] none_values_removed = [(std_time, cal) for std_time, cal in std_times if std_time is not None] if not none_values_removed: return None latest_time, calendar = max(none_values_removed, key=lambda x: x[0]) latest_obj = cf_units.num2date(latest_time, std_units, calendar) return latest_obj
def test_same_units(self): time_unit = 'days since 2000-01-01' time_num = 3.14159 actual = standardise_time_unit(time_num, time_unit, time_unit, '360_day') assert_almost_equal(actual, time_num)
def start_time(self): std_units = Settings.get_solo().standard_time_units start_times = self.datafile_set.values_list('start_time', 'time_units', 'calendar') if not start_times: return None std_times = [ (standardise_time_unit(time, unit, std_units, cal), cal) for time, unit, cal in start_times ] none_values_removed = [(std_time, cal) for std_time, cal in std_times if std_time is not None] if not none_values_removed: return None earliest_time, calendar = min(none_values_removed, key=lambda x: x[0]) earliest_obj = cf_units.num2date(earliest_time, std_units, calendar) return earliest_obj.strftime('%Y-%m-%d')
def test_different_units(self): old_unit = 'days since 2000-01-01' new_unit = 'days since 2000-02-01' time_num = 33.14159 actual = standardise_time_unit(time_num, old_unit, new_unit, '360_day') expected = 3.14159 assert_almost_equal(actual, expected, decimal=5)
def test_none(self): time_unit = 'days since 2000-01-01' self.assertIsNone( standardise_time_unit(None, time_unit, time_unit, '360_day'))