def test_with_tz_ambiguous_times(self): tz = pytz.timezone('US/Eastern') rng = bdate_range(datetime(2009, 1, 1), datetime(2010, 1, 1)) # March 13, 2011, spring forward, skip from 2 AM to 3 AM dr = date_range(datetime(2011, 3, 13, 1, 30), periods=3, freq=datetools.Hour()) self.assertRaises(pytz.NonExistentTimeError, dr.tz_localize, tz) # after dst transition, it works dr = date_range(datetime(2011, 3, 13, 3, 30), periods=3, freq=datetools.Hour(), tz=tz) # November 6, 2011, fall back, repeat 2 AM hour dr = date_range(datetime(2011, 11, 6, 1, 30), periods=3, freq=datetools.Hour()) self.assertRaises(pytz.AmbiguousTimeError, dr.tz_localize, tz) # UTC is OK dr = date_range(datetime(2011, 3, 13), periods=48, freq=datetools.Minute(30), tz=pytz.utc)
def test_with_tzinfo_ambiguous_times(self): _skip_if_no_pytz() tz = pytz.timezone('US/Eastern') # regular no problem self.assert_(self.rng.tz_validate()) # March 13, 2011, spring forward, skip from 2 AM to 3 AM dr = DateRange(datetime(2011, 3, 13, 1, 30), periods=3, offset=datetools.Hour(), tzinfo=tz) self.assert_(not dr.tz_validate()) # after dst transition dr = DateRange(datetime(2011, 3, 13, 3, 30), periods=3, offset=datetools.Hour(), tzinfo=tz) self.assert_(dr.tz_validate()) # November 6, 2011, fall back, repeat 2 AM hour dr = DateRange(datetime(2011, 11, 6, 1, 30), periods=3, offset=datetools.Hour(), tzinfo=tz) self.assert_(not dr.tz_validate()) # UTC is OK dr = DateRange(datetime(2011, 3, 13), periods=48, offset=datetools.Minute(30), tzinfo=pytz.utc) self.assert_(dr.tz_validate())
def test_union_not_cacheable(self): rng = date_range('1/1/2000', periods=50, freq=datetools.Minute()) rng1 = rng[10:] rng2 = rng[:25] the_union = rng1.union(rng2) self.assertTrue(the_union.equals(rng)) rng1 = rng[10:] rng2 = rng[15:35] the_union = rng1.union(rng2) expected = rng[10:] self.assertTrue(the_union.equals(expected))
def test_intersection(self): rng = date_range('1/1/2000', periods=50, freq=datetools.Minute()) rng1 = rng[10:] rng2 = rng[:25] the_int = rng1.intersection(rng2) expected = rng[10:25] self.assertTrue(the_int.equals(expected)) self.assertTrue(isinstance(the_int, DatetimeIndex)) self.assertTrue(the_int.offset == rng.offset) the_int = rng1.intersection(rng2.view(DatetimeIndex)) self.assertTrue(the_int.equals(expected)) # non-overlapping the_int = rng[:10].intersection(rng[10:]) expected = DatetimeIndex([]) self.assertTrue(the_int.equals(expected))