test_federal.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from datetime import datetime
  2. from pandas import DatetimeIndex
  3. import pandas._testing as tm
  4. from pandas.tseries.holiday import (
  5. AbstractHolidayCalendar,
  6. USFederalHolidayCalendar,
  7. USMartinLutherKingJr,
  8. USMemorialDay,
  9. )
  10. def test_no_mlk_before_1986():
  11. # see gh-10278
  12. class MLKCalendar(AbstractHolidayCalendar):
  13. rules = [USMartinLutherKingJr]
  14. holidays = MLKCalendar().holidays(start="1984", end="1988").to_pydatetime().tolist()
  15. # Testing to make sure holiday is not incorrectly observed before 1986.
  16. assert holidays == [datetime(1986, 1, 20, 0, 0), datetime(1987, 1, 19, 0, 0)]
  17. def test_memorial_day():
  18. class MemorialDay(AbstractHolidayCalendar):
  19. rules = [USMemorialDay]
  20. holidays = MemorialDay().holidays(start="1971", end="1980").to_pydatetime().tolist()
  21. # Fixes 5/31 error and checked manually against Wikipedia.
  22. assert holidays == [
  23. datetime(1971, 5, 31, 0, 0),
  24. datetime(1972, 5, 29, 0, 0),
  25. datetime(1973, 5, 28, 0, 0),
  26. datetime(1974, 5, 27, 0, 0),
  27. datetime(1975, 5, 26, 0, 0),
  28. datetime(1976, 5, 31, 0, 0),
  29. datetime(1977, 5, 30, 0, 0),
  30. datetime(1978, 5, 29, 0, 0),
  31. datetime(1979, 5, 28, 0, 0),
  32. ]
  33. def test_federal_holiday_inconsistent_returntype():
  34. # GH 49075 test case
  35. # Instantiate two calendars to rule out _cache
  36. cal1 = USFederalHolidayCalendar()
  37. cal2 = USFederalHolidayCalendar()
  38. results_2018 = cal1.holidays(start=datetime(2018, 8, 1), end=datetime(2018, 8, 31))
  39. results_2019 = cal2.holidays(start=datetime(2019, 8, 1), end=datetime(2019, 8, 31))
  40. expected_results = DatetimeIndex([], dtype="datetime64[ns]", freq=None)
  41. # Check against expected results to ensure both date
  42. # ranges generate expected results as per GH49075 submission
  43. tm.assert_index_equal(results_2018, expected_results)
  44. tm.assert_index_equal(results_2019, expected_results)