1from datetime import datetime, tzinfo
2from typing import IO, Any, Dict, List, Mapping, Optional, Text, Tuple, Union
3
4_FileOrStr = Union[bytes, Text, IO[str], IO[Any]]
5
6class parserinfo(object):
7    JUMP: List[str]
8    WEEKDAYS: List[Tuple[str, str]]
9    MONTHS: List[Tuple[str, str]]
10    HMS: List[Tuple[str, str, str]]
11    AMPM: List[Tuple[str, str]]
12    UTCZONE: List[str]
13    PERTAIN: List[str]
14    TZOFFSET: Dict[str, int]
15    def __init__(self, dayfirst: bool = ..., yearfirst: bool = ...) -> None: ...
16    def jump(self, name: Text) -> bool: ...
17    def weekday(self, name: Text) -> Optional[int]: ...
18    def month(self, name: Text) -> Optional[int]: ...
19    def hms(self, name: Text) -> Optional[int]: ...
20    def ampm(self, name: Text) -> Optional[int]: ...
21    def pertain(self, name: Text) -> bool: ...
22    def utczone(self, name: Text) -> bool: ...
23    def tzoffset(self, name: Text) -> Optional[int]: ...
24    def convertyear(self, year: int) -> int: ...
25    def validate(self, res: datetime) -> bool: ...
26
27class parser(object):
28    def __init__(self, info: Optional[parserinfo] = ...) -> None: ...
29    def parse(
30        self,
31        timestr: _FileOrStr,
32        default: Optional[datetime] = ...,
33        ignoretz: bool = ...,
34        tzinfos: Optional[Mapping[Text, tzinfo]] = ...,
35        **kwargs: Any,
36    ) -> datetime: ...
37
38def isoparse(dt_str: Union[str, bytes, IO[str], IO[bytes]]) -> datetime: ...
39
40DEFAULTPARSER: parser
41
42def parse(timestr: _FileOrStr, parserinfo: Optional[parserinfo] = ..., **kwargs: Any) -> datetime: ...
43
44class _tzparser: ...
45
46DEFAULTTZPARSER: _tzparser
47
48class InvalidDatetimeError(ValueError): ...
49class InvalidDateError(InvalidDatetimeError): ...
50class InvalidTimeError(InvalidDatetimeError): ...
51class ParserError(ValueError): ...
52