diff --git a/stdlib/2.7/calendar.pyi b/stdlib/2.7/calendar.pyi new file mode 100644 index 000000000..bfe0e0cbe --- /dev/null +++ b/stdlib/2.7/calendar.pyi @@ -0,0 +1,87 @@ +from typing import Any, Iterable, Optional, Tuple +import datetime + +YearType = int +MonthType = int +DayType = int +WeekdayType = int + +LocaleType = Tuple[Optional[str], Optional[str]] + +_colwidth = ... # type: int +_spacing = ... # type: int + +# TODO mypy complains about missing True/False +True = ... # type: bool +False = ... # type: bool + +class IllegalMonthError(ValueError): + def __init__(self, month: MonthType) -> None: ... + def __str__(self) -> str: ... + +class IllegalWeekdayError(ValueError): + def __init__(self, weekday: WeekdayType) -> None: ... + def __str__(self) -> str: ... + +def isleap(year: YearType) -> bool: ... +def leapdays(y1: YearType, y2: YearType) -> int: ... +def weekday(year: YearType, month: MonthType, day: DayType) -> WeekdayType: ... +def monthrange(year: YearType, month: MonthType) -> Tuple[WeekdayType, int]: ... + +class Calendar(object): + def __init__(self, firstweekday: WeekdayType=0) -> None: ... + def getfirstweekday(self) -> WeekdayType: ... + def setfirstweekday(self, firstweekday: WeekdayType) -> None: ... + def iterweekdays(self) -> Iterable[WeekdayType]: ... + def itermonthdates(self, year: YearType, month: MonthType) -> Iterable[datetime.date]: ... + def itermonthdays2(self, year: YearType, month: MonthType) -> Iterable[Tuple[DayType, WeekdayType]]: ... + def itermonthdays(self, year: YearType, month: MonthType) -> Iterable[DayType]: ... + def monthdatescalendar(self, year: YearType, month: MonthType) -> List[List[datetime.date]]: ... + def monthdays2calendar(self, year: YearType, month: MonthType) -> List[List[Tuple[DayType, WeekdayType]]]: ... + def monthdayscalendar(self, year: YearType, month: MonthType) -> List[List[DayType]]: ... + def yeardatescalendar(self, year: YearType, width: int=3) -> List[List[DayType]]: ... + def yeardays2calendar(self, year: YearType, width: int=3) -> List[List[Tuple[DayType, WeekdayType]]]: ... + def yeardayscalendar(self, year: YearType, width: int=3) -> List[List[DayType]]: ... + +class TextCalendar(Calendar): + def prweek(self, theweek: int, width: int) -> None: ... + def formatday(self, day: DayType, weekday: WeekdayType, width: int) -> str: ... + def formatweek(self, theweek: int, width: int) -> str: ... + def formatweekday(self, day: DayType, width: int) -> str: ... + def formatweekheader(self, width: int) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, width: int, withyear: bool=True) -> str: ... + def prmonth(self, theyear: YearType, themonth: MonthType, w: Any=0, l: Any=0) -> None: ... + def formatmonth(self, theyear: YearType, themonth: MonthType, w: int=0, l: int=0) -> str: ... + def formatyear(self, theyear: YearType, w: int=2, l: int=1, c: int=6, m: int=3) -> str: ... + def pryear(self, theyear: YearType, w: Any=0, l: Any=0, c: Any=6, m: Any=3) -> None: ... + +class HTMLCalendar(Calendar): + def formatday(self, day: DayType, weekday: WeekdayType) -> str: ... + def formatweek(self, theweek: int) -> str: ... + def formatweekday(self, day: DayType) -> str: ... + def formatweekheader(self) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, withyear: bool=True) -> str: ... + def formatmonth(self, theyear: YearType, themonth: MonthType, withyear: bool=True) -> str: ... + def formatyear(self, theyear: YearType, width: int=3) -> str: ... + def formatyearpage(self, theyear: YearType, width: int=3, css: Optional[str]='calendar.css', encoding: Optional[str]=None) -> str: ... + +class TimeEncoding: + def __init__(self, locale: LocaleType) -> None: ... + def __enter__(self) -> LocaleType: ... + def __exit__(self, *args) -> None: ... + +class LocaleTextCalendar(TextCalendar): + def __init__(self, firstweekday: WeekdayType=0, locale: LocaleType=None) -> None: ... + def formatweekday(self, day: DayType, width: int) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, width: int, withyear: bool=True) -> str: ... + +class LocaleHTMLCalendar(HTMLCalendar): + def __init__(self, firstweekday: WeekdayType=0, locale: LocaleType=None) -> None: ... + def formatweekday(self, day: DayType) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, withyear: bool=True) -> str: ... + +c = ... # type: TextCalendar +def setfirstweekday(firstweekday: WeekdayType) -> None: ... +def format(cols: int, colwidth: int=_colwidth, spacing: int=_spacing) -> str: ... +def formatstring(cols: int, colwidth: int=_colwidth, spacing: int=_spacing) -> str: ... +def timegm(tuple: Tuple[int]) -> int: ... diff --git a/stdlib/3/calendar.pyi b/stdlib/3/calendar.pyi index c0bfc733f..06df4b760 100644 --- a/stdlib/3/calendar.pyi +++ b/stdlib/3/calendar.pyi @@ -1,15 +1,87 @@ -# Stubs for calendar +from typing import Any, Iterable, Optional, Tuple +import datetime -# NOTE: These are incomplete! +YearType = int +MonthType = int +DayType = int +WeekdayType = int -from typing import overload, Tuple +LocaleType = Tuple[Optional[str], Optional[str]] -# TODO actually, any number of items larger than 5 is fine -@overload -def timegm(t: Tuple[int, int, int, int, int, int]) -> int: ... -@overload -def timegm(t: Tuple[int, int, int, int, int, int, int]) -> int: ... -@overload -def timegm(t: Tuple[int, int, int, int, int, int, int, int]) -> int: ... -@overload -def timegm(t: Tuple[int, int, int, int, int, int, int, int, int]) -> int: ... +_colwidth = ... # type: int +_spacing = ... # type: int + +# TODO mypy complains about missing True/False +True = ... # type: bool +False = ... # type: bool + +class IllegalMonthError(ValueError): + def __init__(self, month: MonthType) -> None: ... + def __str__(self) -> str: ... + +class IllegalWeekdayError(ValueError): + def __init__(self, weekday: WeekdayType) -> None: ... + def __str__(self) -> str: ... + +def isleap(year: YearType) -> bool: ... +def leapdays(y1: YearType, y2: YearType) -> int: ... +def weekday(year: YearType, month: MonthType, day: DayType) -> WeekdayType: ... +def monthrange(year: YearType, month: MonthType) -> Tuple[WeekdayType, int]: ... + +class Calendar(object): + def __init__(self, firstweekday: WeekdayType=0) -> None: ... + def getfirstweekday(self) -> WeekdayType: ... + def setfirstweekday(self, firstweekday: WeekdayType) -> None: ... + def iterweekdays(self) -> Iterable[WeekdayType]: ... + def itermonthdates(self, year: YearType, month: MonthType) -> Iterable[datetime.date]: ... + def itermonthdays2(self, year: YearType, month: MonthType) -> Iterable[Tuple[DayType, WeekdayType]]: ... + def itermonthdays(self, year: YearType, month: MonthType) -> Iterable[DayType]: ... + def monthdatescalendar(self, year: YearType, month: MonthType) -> List[List[datetime.date]]: ... + def monthdays2calendar(self, year: YearType, month: MonthType) -> List[List[Tuple[DayType, WeekdayType]]]: ... + def monthdayscalendar(self, year: YearType, month: MonthType) -> List[List[DayType]]: ... + def yeardatescalendar(self, year: YearType, width: int=3) -> List[List[DayType]]: ... + def yeardays2calendar(self, year: YearType, width: int=3) -> List[List[Tuple[DayType, WeekdayType]]]: ... + def yeardayscalendar(self, year: YearType, width: int=3) -> List[List[DayType]]: ... + +class TextCalendar(Calendar): + def prweek(self, theweek: int, width: int) -> None: ... + def formatday(self, day: DayType, weekday: WeekdayType, width: int) -> str: ... + def formatweek(self, theweek: int, width: int) -> str: ... + def formatweekday(self, day: DayType, width: int) -> str: ... + def formatweekheader(self, width: int) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, width: int, withyear: bool=True) -> str: ... + def prmonth(self, theyear: YearType, themonth: MonthType, w: Any=0, l: Any=0) -> None: ... + def formatmonth(self, theyear: YearType, themonth: MonthType, w: int=0, l: int=0) -> str: ... + def formatyear(self, theyear: YearType, w: int=2, l: int=1, c: int=6, m: int=3) -> str: ... + def pryear(self, theyear: YearType, w: Any=0, l: Any=0, c: Any=6, m: Any=3) -> None: ... + +class HTMLCalendar(Calendar): + def formatday(self, day: DayType, weekday: WeekdayType) -> str: ... + def formatweek(self, theweek: int) -> str: ... + def formatweekday(self, day: DayType) -> str: ... + def formatweekheader(self) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, withyear: bool=True) -> str: ... + def formatmonth(self, theyear: YearType, themonth: MonthType, withyear: bool=True) -> str: ... + def formatyear(self, theyear: YearType, width: int=3) -> str: ... + def formatyearpage(self, theyear: YearType, width: int=3, css: Optional[str]='calendar.css', encoding: Optional[str]=None) -> str: ... + +class different_locale: + def __init__(self, locale: LocaleType) -> None: ... + def __enter__(self) -> LocaleType: ... + def __exit__(self, *args) -> None: ... + +class LocaleTextCalendar(TextCalendar): + def __init__(self, firstweekday: WeekdayType=0, locale: LocaleType=None) -> None: ... + def formatweekday(self, day: DayType, width: int) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, width: int, withyear: bool=True) -> str: ... + +class LocaleHTMLCalendar(HTMLCalendar): + def __init__(self, firstweekday: WeekdayType=0, locale: LocaleType=None) -> None: ... + def formatweekday(self, day: DayType) -> str: ... + def formatmonthname(self, theyear: YearType, themonth: MonthType, withyear: bool=True) -> str: ... + +c = ... # type: TextCalendar +def setfirstweekday(firstweekday: WeekdayType) -> None: ... +def format(cols: int, colwidth: int=_colwidth, spacing: int=_spacing) -> str: ... +def formatstring(cols: int, colwidth: int=_colwidth, spacing: int=_spacing) -> str: ... +def timegm(tuple: Tuple[int]) -> int: ...