126 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from collections.abc import Callable
 | |
| from datetime import (
 | |
|     date as _date,
 | |
|     datetime,
 | |
| )
 | |
| from typing import (
 | |
|     Literal,
 | |
|     overload,
 | |
| )
 | |
| 
 | |
| import numpy as np
 | |
| from pandas import (
 | |
|     DatetimeIndex,
 | |
|     Series,
 | |
| )
 | |
| 
 | |
| from pandas._libs.tslibs.offsets import BaseOffset
 | |
| from pandas._libs.tslibs.timestamps import Timestamp
 | |
| 
 | |
| def next_monday(dt: datetime) -> datetime: ...
 | |
| def next_monday_or_tuesday(dt: datetime) -> datetime: ...
 | |
| def previous_friday(dt: datetime) -> datetime: ...
 | |
| def sunday_to_monday(dt: datetime) -> datetime: ...
 | |
| def weekend_to_monday(dt: datetime) -> datetime: ...
 | |
| def nearest_workday(dt: datetime) -> datetime: ...
 | |
| def next_workday(dt: datetime) -> datetime: ...
 | |
| def previous_workday(dt: datetime) -> datetime: ...
 | |
| def before_nearest_workday(dt: datetime) -> datetime: ...
 | |
| def after_nearest_workday(dt: datetime) -> datetime: ...
 | |
| 
 | |
| class Holiday:
 | |
|     def __init__(
 | |
|         self,
 | |
|         name: str,
 | |
|         year: int | None = ...,
 | |
|         month: int | None = ...,
 | |
|         day: int | None = ...,
 | |
|         offset: BaseOffset | list[BaseOffset] | None = ...,
 | |
|         observance: Callable[[datetime], datetime] | None = ...,
 | |
|         # Values accepted by Timestamp(), or None:
 | |
|         start_date: (
 | |
|             np.integer | float | str | _date | datetime | np.datetime64 | None
 | |
|         ) = ...,
 | |
|         end_date: (
 | |
|             np.integer | float | str | _date | datetime | np.datetime64 | None
 | |
|         ) = ...,
 | |
|         days_of_week: tuple[int, ...] | None = ...,
 | |
|     ) -> None: ...
 | |
|     @overload
 | |
|     def dates(
 | |
|         self,
 | |
|         start_date: np.integer | float | str | _date | datetime | np.datetime64 | None,
 | |
|         end_date: np.integer | float | str | _date | datetime | np.datetime64 | None,
 | |
|         return_name: Literal[False],
 | |
|     ) -> DatetimeIndex: ...
 | |
|     @overload
 | |
|     def dates(
 | |
|         self,
 | |
|         start_date: np.integer | float | str | _date | datetime | np.datetime64 | None,
 | |
|         end_date: np.integer | float | str | _date | datetime | np.datetime64 | None,
 | |
|         return_name: Literal[True] = ...,
 | |
|     ) -> Series: ...
 | |
| 
 | |
| holiday_calendars: dict[str, type[AbstractHolidayCalendar]]
 | |
| 
 | |
| def register(cls: type[AbstractHolidayCalendar]) -> None: ...
 | |
| def get_calendar(name: str) -> AbstractHolidayCalendar: ...
 | |
| 
 | |
| class AbstractHolidayCalendar:
 | |
|     rules: list[Holiday]
 | |
|     start_date: Timestamp
 | |
|     end_date: Timestamp
 | |
| 
 | |
|     def __init__(self, name: str = "", rules: list[Holiday] | None = None) -> None: ...
 | |
|     def rule_from_name(self, name: str) -> Holiday | None: ...
 | |
|     @overload
 | |
|     def holidays(
 | |
|         self,
 | |
|         start: datetime | None = ...,
 | |
|         end: datetime | None = ...,
 | |
|         *,
 | |
|         return_name: Literal[True],
 | |
|     ) -> Series: ...
 | |
|     @overload
 | |
|     def holidays(
 | |
|         self,
 | |
|         start: datetime | None = ...,
 | |
|         end: datetime | None = ...,
 | |
|         return_name: Literal[False] = ...,
 | |
|     ) -> DatetimeIndex: ...
 | |
|     @staticmethod
 | |
|     def merge_class(
 | |
|         base: AbstractHolidayCalendar | type[AbstractHolidayCalendar] | list[Holiday],
 | |
|         other: AbstractHolidayCalendar | type[AbstractHolidayCalendar] | list[Holiday],
 | |
|     ) -> list[Holiday]: ...
 | |
|     @overload
 | |
|     def merge(
 | |
|         self,
 | |
|         other: AbstractHolidayCalendar | type[AbstractHolidayCalendar],
 | |
|         inplace: Literal[True],
 | |
|     ) -> None: ...
 | |
|     @overload
 | |
|     def merge(
 | |
|         self,
 | |
|         other: AbstractHolidayCalendar | type[AbstractHolidayCalendar],
 | |
|         inplace: Literal[False] = ...,
 | |
|     ) -> list[Holiday]: ...
 | |
| 
 | |
| USMemorialDay: Holiday
 | |
| USLaborDay: Holiday
 | |
| USColumbusDay: Holiday
 | |
| USThanksgivingDay: Holiday
 | |
| USMartinLutherKingJr: Holiday
 | |
| USPresidentsDay: Holiday
 | |
| GoodFriday: Holiday
 | |
| EasterMonday: Holiday
 | |
| 
 | |
| class USFederalHolidayCalendar(AbstractHolidayCalendar): ...
 | |
| 
 | |
| def HolidayCalendarFactory(
 | |
|     name: str,
 | |
|     base: type[AbstractHolidayCalendar],
 | |
|     other: type[AbstractHolidayCalendar],
 | |
|     base_class: type[AbstractHolidayCalendar] = ...,
 | |
| ) -> type[AbstractHolidayCalendar]: ...
 |