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]: ...
|