Exemple #1
0
 def test_pydatetime_wrong_calendar(self):
     unit = cf_units.Unit("days since 1970-01-01", calendar="360_day")
     with self.assertRaisesRegex(
         ValueError, "illegal calendar or reference date"
     ):
         _num2date_to_nearest_second(
             1,
             unit,
             only_use_cftime_datetimes=False,
             only_use_python_datetimes=True,
         )
Exemple #2
0
 def test_scalar(self):
     unit = cf_units.Unit("seconds since 1970-01-01", "gregorian")
     num = 5.0
     exp = datetime.datetime(1970, 1, 1, 0, 0, 5)
     res = _num2date_to_nearest_second(num, unit)
     self.assertEqual(exp, res)
     self.assertIsInstance(res, cftime.datetime)
Exemple #3
0
 def check_timedelta(self, nums, units, expected):
     for num, unit, exp in zip(nums, units, expected):
         epoch = cftime.num2date(0, unit.cftime_unit, unit.calendar)
         res = _num2date_to_nearest_second(num, unit)
         delta = res - epoch
         seconds = np.round(delta.seconds + (delta.microseconds / 1000000))
         self.assertEqual((delta.days, seconds), exp)
Exemple #4
0
 def check_timedelta(self, nums, utimes, expected):
     for num, utime, exp in zip(nums, utimes, expected):
         epoch = utime.num2date(0)
         res = _num2date_to_nearest_second(num, utime)
         delta = res - epoch
         seconds = np.round(delta.seconds + (delta.microseconds / 1000000))
         self.assertEqual((delta.days, seconds), exp)
Exemple #5
0
 def check_dates(self, nums, units, expected, only_cftime=True):
     for num, unit, exp in zip(nums, units, expected):
         res = _num2date_to_nearest_second(
             num, unit, only_use_cftime_datetimes=only_cftime
         )
         self.assertEqual(exp, res)
         self.assertIsInstance(res, type(exp))
 def test_multidim_sequence(self):
     utime = cftime.utime('seconds since 1970-01-01',  'gregorian')
     nums = [[20., 40., 60.],
             [80, 100., 120.]]
     exp_shape = (2, 3)
     res = _num2date_to_nearest_second(nums, utime)
     self.assertEqual(exp_shape, res.shape)
 def test_masked_ndarray(self):
     utime = cftime.utime('seconds since 1970-01-01',  'gregorian')
     nums = np.ma.masked_array([20., 40., 60.], [False, True, False])
     exp = [datetime.datetime(1970, 1, 1, 0, 0, 20),
            None,
            datetime.datetime(1970, 1, 1, 0, 1)]
     res = _num2date_to_nearest_second(nums, utime)
     np.testing.assert_array_equal(exp, res)
Exemple #8
0
 def test_masked_ndarray(self):
     unit = cf_units.Unit("seconds since 1970-01-01", "gregorian")
     nums = np.ma.masked_array([20.0, 40.0, 60.0], [False, True, False])
     exp = [
         datetime.datetime(1970, 1, 1, 0, 0, 20),
         None,
         datetime.datetime(1970, 1, 1, 0, 1),
     ]
     res = _num2date_to_nearest_second(nums, unit)
     np.testing.assert_array_equal(exp, res)
 def test_sequence(self):
     utime = cftime.utime('seconds since 1970-01-01',  'gregorian')
     nums = [20., 40., 60., 80, 100.]
     exp = [datetime.datetime(1970, 1, 1, 0, 0, 20),
            datetime.datetime(1970, 1, 1, 0, 0, 40),
            datetime.datetime(1970, 1, 1, 0, 1),
            datetime.datetime(1970, 1, 1, 0, 1, 20),
            datetime.datetime(1970, 1, 1, 0, 1, 40)]
     res = _num2date_to_nearest_second(nums, utime)
     np.testing.assert_array_equal(exp, res)
Exemple #10
0
 def test_sequence(self):
     unit = cf_units.Unit("seconds since 1970-01-01", "gregorian")
     nums = [20.0, 40.0, 60.0, 80, 100.0]
     exp = [
         datetime.datetime(1970, 1, 1, 0, 0, 20),
         datetime.datetime(1970, 1, 1, 0, 0, 40),
         datetime.datetime(1970, 1, 1, 0, 1),
         datetime.datetime(1970, 1, 1, 0, 1, 20),
         datetime.datetime(1970, 1, 1, 0, 1, 40),
     ]
     res = _num2date_to_nearest_second(nums, unit)
     np.testing.assert_array_equal(exp, res)
Exemple #11
0
 def test_multidim_sequence(self):
     unit = cf_units.Unit("seconds since 1970-01-01", "gregorian")
     nums = [[20.0, 40.0, 60.0], [80, 100.0, 120.0]]
     exp_shape = (2, 3)
     res = _num2date_to_nearest_second(nums, unit)
     self.assertEqual(exp_shape, res.shape)
Exemple #12
0
 def test_scalar(self):
     utime = cftime.utime('seconds since 1970-01-01', 'gregorian')
     num = 5.
     exp = datetime.datetime(1970, 1, 1, 0, 0, 5)
     res = _num2date_to_nearest_second(num, utime)
     self.assertEqual(exp, res)
Exemple #13
0
 def check_dates(self, nums, utimes, expected):
     for num, utime, exp in zip(nums, utimes, expected):
         res = _num2date_to_nearest_second(num, utime)
         self.assertEqual(exp, res)