You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
4.2 KiB
Python

import re
from _typeshed import Incomplete, SupportsRead
from collections.abc import Callable, Mapping
from datetime import _TzInfo, datetime
from io import StringIO
from typing import IO, Any
from typing_extensions import Self, TypeAlias
_FileOrStr: TypeAlias = bytes | str | IO[str] | IO[Any]
_TzData: TypeAlias = _TzInfo | int | str | None
_TzInfos: TypeAlias = Mapping[str, _TzData] | Callable[[str, int], _TzData]
__all__ = ["parse", "parserinfo", "ParserError"]
class _timelex:
_split_decimal: re.Pattern[str]
instream: StringIO | SupportsRead[str]
charstack: list[str]
tokenstack: list[str]
eof: bool
def __init__(self, instream: str | bytes | bytearray | SupportsRead[str]) -> None: ...
def get_token(self) -> str | None: ...
def __iter__(self) -> Self: ...
def __next__(self) -> str: ...
def next(self) -> str: ...
@classmethod
def split(cls, s: str) -> list[str]: ...
@classmethod
def isword(cls, nextchar: str) -> bool: ...
@classmethod
def isnum(cls, nextchar: str) -> bool: ...
@classmethod
def isspace(cls, nextchar: str) -> bool: ...
class _resultbase:
def __init__(self) -> None: ...
def _repr(self, classname: str) -> str: ...
def __len__(self) -> int: ...
class parserinfo:
JUMP: list[str]
WEEKDAYS: list[tuple[str, str]]
MONTHS: list[tuple[str, str] | tuple[str, str, str]]
HMS: list[tuple[str, str, str]]
AMPM: list[tuple[str, str]]
UTCZONE: list[str]
PERTAIN: list[str]
TZOFFSET: dict[str, int]
def __init__(self, dayfirst: bool = False, yearfirst: bool = False) -> None: ...
def jump(self, name: str) -> bool: ...
def weekday(self, name: str) -> int | None: ...
def month(self, name: str) -> int | None: ...
def hms(self, name: str) -> int | None: ...
def ampm(self, name: str) -> int | None: ...
def pertain(self, name: str) -> bool: ...
def utczone(self, name: str) -> bool: ...
def tzoffset(self, name: str) -> int | None: ...
def convertyear(self, year: int, century_specified: bool = False) -> int: ...
def validate(self, res: datetime) -> bool: ...
class _ymd(list[Incomplete]):
century_specified: bool
dstridx: int | None
mstridx: int | None
ystridx: int | None
def __init__(self, *args, **kwargs) -> None: ...
@property
def has_year(self) -> bool: ...
@property
def has_month(self) -> bool: ...
@property
def has_day(self) -> bool: ...
def could_be_day(self, value): ...
def append(self, val, label=None): ...
def _resolve_from_stridxs(self, strids): ...
def resolve_ymd(self, yearfirst: bool | None, dayfirst: bool | None): ...
class parser:
info: parserinfo
def __init__(self, info: parserinfo | None = None) -> None: ...
def parse(
self,
timestr: _FileOrStr,
default: datetime | None = None,
ignoretz: bool = False,
tzinfos: _TzInfos | None = None,
*,
dayfirst: bool | None = ...,
yearfirst: bool | None = ...,
fuzzy: bool = ...,
fuzzy_with_tokens: bool = ...,
) -> datetime: ...
DEFAULTPARSER: parser
def parse(
timestr: _FileOrStr,
parserinfo: parserinfo | None = None,
*,
dayfirst: bool | None = ...,
yearfirst: bool | None = ...,
ignoretz: bool = ...,
fuzzy: bool = ...,
fuzzy_with_tokens: bool = ...,
default: datetime | None = ...,
tzinfos: _TzInfos | None = ...,
) -> datetime: ...
class _tzparser:
class _result(_resultbase):
__slots__ = ["stdabbr", "stdoffset", "dstabbr", "dstoffset", "start", "end"]
stdabbr: str | None
stdoffset: int | None
dstabbr: str | None
dstoffset: int | None
start: _attr
end: _attr
class _attr(_resultbase):
__slots__ = ["month", "week", "weekday", "yday", "jyday", "day", "time"]
month: int | None
week: int | None
weekday: int | None
yday: int | None
jyday: int | None
day: int | None
time: int | None
def __init__(self): ...
def parse(self, tzstr: str | re.Pattern[str]) -> _result | None: ...
DEFAULTTZPARSER: _tzparser
class ParserError(ValueError): ...
class UnknownTimezoneWarning(RuntimeWarning): ...