Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def setUp(self):
self.date1_365_day = DatetimeNoLeap(-5000, 1, 2, 12)
self.date2_365_day = DatetimeNoLeap(-5000, 1, 3, 12)
self.date3_gregorian = DatetimeGregorian(1969, 7, 20, 12)
# last day of the Julian calendar in the mixed Julian/Gregorian calendar
self.date4_gregorian = DatetimeGregorian(1582, 10, 4)
# first day of the Gregorian calendar in the mixed Julian/Gregorian calendar
self.date5_gregorian = DatetimeGregorian(1582, 10, 15)
self.date6_proleptic_gregorian = DatetimeProlepticGregorian(1582, 10, 15)
self.date7_360_day = Datetime360Day(2000, 1, 1)
self.date8_julian = DatetimeJulian(1582, 10, 4)
# a datetime.datetime instance (proleptic Gregorian calendar)
self.datetime_date1 = datetime(1969, 7, 21, 12)
self.delta = timedelta(hours=25)
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,29,23,59,59)
d2 = real_datetime(2020,2,29,23,59,59)
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,28,23,59,59)
d2 = real_datetime(2020,2,28,23,59,59)
assert (d1.dayofwk == d2.dayofwk == 4)
assert (d1.dayofyr == d2.dayofyr == 59)
d1 = DatetimeGregorian(1700,1,1)
d2 = real_datetime(1700,1,1)
assert (d1.dayofwk == d2.dayofwk == 4)
assert (d1.dayofyr == d2.dayofyr == 1)
# last day of Julian Calendar (Thursday)
d1 = DatetimeJulian(1582, 10, 4, 12)
d2 = DatetimeGregorian(1582, 10, 4, 12)
assert (d1.dayofwk == d2.dayofwk == 3)
assert (d1.dayofyr == d2.dayofyr == 277)
# Monday in proleptic gregorian calendar
d1 = DatetimeProlepticGregorian(1582, 10, 4, 12)
d2 = real_datetime(1582,10,4,12)
assert (d1.dayofwk == d2.dayofwk == 0)
assert (d1.dayofyr == d2.dayofyr == 277)
# issue 71: negative reference years
# https://coastwatch.pfeg.noaa.gov/erddap/convert/time.html
# gives 2446433 (365 days more - is it counting year 0?)
# however http://aa.usno.navy.mil/data/docs/JulianDate.php gives
# 2446068, which agrees with us
units = "days since -4713-01-01T00:00:00Z"
t = date2num(datetime(1985,1,2), units, calendar="standard")
assert_almost_equal(t, 2446068)
pass
def test_parse_incorrect_unitstring(self):
for datestr in ("days since2017-05-01 ", "dayssince 2017-05-01 00:00", "days snce 2017-05-01 00:00", "days_since_2017-05-01 00:00",
"days_since_2017-05-01_00:00"):
self.assertRaises(
ValueError, cftime._cftime._dateparse, datestr, 'standard')
self.assertRaises(
ValueError, cftime._cftime.num2date, 1, datestr, 'standard')
self.assertRaises(
ValueError, cftime._cftime.date2num, datetime(1900, 1, 1, 0), datestr, 'standard')
_DATE_TYPES = [DatetimeNoLeap, DatetimeAllLeap, DatetimeJulian, Datetime360Day,
DatetimeGregorian, DatetimeProlepticGregorian]
@pytest.fixture(params=_DATE_TYPES)
def date_type(request):
return request.param
@pytest.fixture(params=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
def month(request):
return request.param
@pytest.fixture
def days_per_month_non_leap_year(date_type, month):
if date_type is Datetime360Day:
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,29,23,59,59)
d2 = real_datetime(2020,2,29,23,59,59)
assert (d1.dayofwk == d2.dayofwk == 5)
assert (d1.dayofyr == d2.dayofyr == 60)
d1 = DatetimeGregorian(2020,2,28,23,59,59)
d2 = real_datetime(2020,2,28,23,59,59)
assert (d1.dayofwk == d2.dayofwk == 4)
assert (d1.dayofyr == d2.dayofyr == 59)
d1 = DatetimeGregorian(1700,1,1)
d2 = real_datetime(1700,1,1)
assert (d1.dayofwk == d2.dayofwk == 4)
assert (d1.dayofyr == d2.dayofyr == 1)
# last day of Julian Calendar (Thursday)
d1 = DatetimeJulian(1582, 10, 4, 12)
d2 = DatetimeGregorian(1582, 10, 4, 12)
assert (d1.dayofwk == d2.dayofwk == 3)
assert (d1.dayofyr == d2.dayofyr == 277)
# Monday in proleptic gregorian calendar
d1 = DatetimeProlepticGregorian(1582, 10, 4, 12)
d2 = real_datetime(1582,10,4,12)
assert (d1.dayofwk == d2.dayofwk == 0)
assert (d1.dayofyr == d2.dayofyr == 277)
# issue 173: Return the default values of dayofwk and dayofyr
# when calendar is ''
d1 = datetimex(1582, 10, 4, 12, calendar='')
assert (d1.dayofwk == d1.dayofyr == -1)
d1 = datetimex(2020, 5, 20, calendar='')
assert (d1.dayofwk == d1.dayofyr == -1)
d1 = datetimex(2020, 5, 20, dayofwk=-2, dayofyr=-3, calendar='')
dt = self.date1_365_day
# datetime + timedelta
self.assertEqual(dt + self.delta, # add 25 hours
dt.replace(day=dt.day + 1, hour=dt.hour + 1))
# timedelta + datetime
self.assertEqual(self.delta + dt, # add 25 hours
dt.replace(day=dt.day + 1, hour=dt.hour + 1))
# test the Julian/Gregorian transition
self.assertEqual(self.date4_gregorian + self.delta,
DatetimeGregorian(1582, 10, 15, 1))
# The Julian calendar has no invalid dates
self.assertEqual(self.date8_julian + self.delta,
DatetimeJulian(1582, 10, 5, 1))
# Test going over the year boundary.
self.assertEqual(DatetimeGregorian(2000, 11, 1) + timedelta(days=30 + 31),
DatetimeGregorian(2001, 1, 1))
# Year 2000 is a leap year.
self.assertEqual(DatetimeGregorian(2000, 1, 1) + timedelta(days=31 + 29),
DatetimeGregorian(2000, 3, 1))
# Test the 366_day calendar.
self.assertEqual(DatetimeAllLeap(1, 1, 1) + timedelta(days=366 * 10 + 31),
DatetimeAllLeap(11, 2, 1))
# The Gregorian calendar has no year zero.
self.assertEqual(DatetimeGregorian(-1, 12, 31) + self.delta,
DatetimeGregorian(1, 1, 1, 1))
dt = self.date1_365_day
# datetime + timedelta
self.assertEqual(dt + self.delta, # add 25 hours
dt.replace(day=dt.day + 1, hour=dt.hour + 1))
# timedelta + datetime
self.assertEqual(self.delta + dt, # add 25 hours
dt.replace(day=dt.day + 1, hour=dt.hour + 1))
# test the Julian/Gregorian transition
self.assertEqual(self.date4_gregorian + self.delta,
DatetimeGregorian(1582, 10, 15, 1))
# The Julian calendar has no invalid dates
self.assertEqual(self.date8_julian + self.delta,
DatetimeJulian(1582, 10, 5, 1))
# Test going over the year boundary.
self.assertEqual(DatetimeGregorian(2000, 11, 1) + timedelta(days=30 + 31),
DatetimeGregorian(2001, 1, 1))
# Year 2000 is a leap year.
self.assertEqual(DatetimeGregorian(2000, 1, 1) + timedelta(days=31 + 29),
DatetimeGregorian(2000, 3, 1))
# Test the 366_day calendar.
self.assertEqual(DatetimeAllLeap(1, 1, 1) + timedelta(days=366 * 10 + 31),
DatetimeAllLeap(11, 2, 1))
# The Gregorian calendar has no year zero.
self.assertEqual(DatetimeGregorian(-1, 12, 31) + self.delta,
DatetimeGregorian(1, 1, 1, 1))
def setUp(self):
self.date1_365_day = DatetimeNoLeap(-5000, 1, 2, 12)
self.date2_365_day = DatetimeNoLeap(-5000, 1, 3, 12)
self.date3_gregorian = DatetimeGregorian(1969, 7, 20, 12)
# last day of the Julian calendar in the mixed Julian/Gregorian calendar
self.date4_gregorian = DatetimeGregorian(1582, 10, 4)
# first day of the Gregorian calendar in the mixed Julian/Gregorian calendar
self.date5_gregorian = DatetimeGregorian(1582, 10, 15)
self.date6_proleptic_gregorian = DatetimeProlepticGregorian(1582, 10, 15)
self.date7_360_day = Datetime360Day(2000, 1, 1)
self.date8_julian = DatetimeJulian(1582, 10, 4)
# a datetime.datetime instance (proleptic Gregorian calendar)
self.datetime_date1 = datetime(1969, 7, 21, 12)
self.delta = timedelta(hours=25)
result = ut.date2num(value)
if shape is not None:
result = result.reshape(shape)
return result
# Automatically register NetCDFTimeConverter with matplotlib.unit's converter
# dictionary.
if CalendarDateTime not in munits.registry:
munits.registry[CalendarDateTime] = NetCDFTimeConverter()
CFTIME_TYPES = [cftime.DatetimeNoLeap, cftime.DatetimeAllLeap,
cftime.DatetimeProlepticGregorian, cftime.DatetimeGregorian,
cftime.Datetime360Day, cftime.DatetimeJulian]
for date_type in CFTIME_TYPES:
if date_type not in munits.registry:
munits.registry[date_type] = NetCDFTimeConverter()
def get_date_type(calendar):
"""Return the cftime date type for a given calendar name."""
try:
import cftime
except ImportError:
raise ImportError("cftime is required for dates with non-standard calendars")
else:
calendars = {
"noleap": cftime.DatetimeNoLeap,
"360_day": cftime.Datetime360Day,
"365_day": cftime.DatetimeNoLeap,
"366_day": cftime.DatetimeAllLeap,
"gregorian": cftime.DatetimeGregorian,
"proleptic_gregorian": cftime.DatetimeProlepticGregorian,
"julian": cftime.DatetimeJulian,
"all_leap": cftime.DatetimeAllLeap,
"standard": cftime.DatetimeGregorian,
}
return calendars[calendar]