about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/dateutil-stubs
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/dateutil-stubs
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
Diffstat (limited to '.venv/lib/python3.12/site-packages/dateutil-stubs')
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/METADATA.toml6
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/__init__.pyi0
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/_common.pyi9
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/easter.pyi8
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/parser/__init__.pyi68
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/parser/isoparser.pyi15
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/py.typed1
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/relativedelta.pyi89
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/rrule.pyi111
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/tz/__init__.pyi15
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/tz/_common.pyi28
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/tz/tz.pyi115
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/utils.pyi5
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/__init__.pyi17
-rw-r--r--.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/rebuild.pyi11
15 files changed, 498 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/METADATA.toml b/.venv/lib/python3.12/site-packages/dateutil-stubs/METADATA.toml
new file mode 100644
index 00000000..5f2be1e4
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/METADATA.toml
@@ -0,0 +1,6 @@
+version = "2.9.*"
+upstream_repository = "https://github.com/dateutil/dateutil"
+partial_stub = true
+
+[tool.stubtest]
+ignore_missing_stub = true
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/__init__.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/__init__.pyi
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/__init__.pyi
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/_common.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/_common.pyi
new file mode 100644
index 00000000..75bf74c5
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/_common.pyi
@@ -0,0 +1,9 @@
+from typing_extensions import Self
+
+class weekday:
+    def __init__(self, weekday: int, n: int | None = None) -> None: ...
+    def __call__(self, n: int) -> Self: ...
+    def __eq__(self, other: object) -> bool: ...
+    def __hash__(self) -> int: ...
+    weekday: int
+    n: int
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/easter.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/easter.pyi
new file mode 100644
index 00000000..952d1191
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/easter.pyi
@@ -0,0 +1,8 @@
+from datetime import date
+from typing import Literal
+
+EASTER_JULIAN: Literal[1]
+EASTER_ORTHODOX: Literal[2]
+EASTER_WESTERN: Literal[3]
+
+def easter(year: int, method: Literal[1, 2, 3] = 3) -> date: ...
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/parser/__init__.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/parser/__init__.pyi
new file mode 100644
index 00000000..68f96ff2
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/parser/__init__.pyi
@@ -0,0 +1,68 @@
+from collections.abc import Callable, Mapping
+from datetime import datetime, tzinfo
+from typing import IO, Any
+from typing_extensions import TypeAlias
+
+from .isoparser import isoparse as isoparse, isoparser as isoparser
+
+_FileOrStr: TypeAlias = bytes | str | IO[str] | IO[Any]
+_TzData: TypeAlias = tzinfo | int | str | None
+_TzInfo: TypeAlias = Mapping[str, _TzData] | Callable[[str, int], _TzData]
+
+class parserinfo:
+    JUMP: list[str]
+    WEEKDAYS: list[tuple[str, ...]]
+    MONTHS: list[tuple[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) -> int: ...
+    def validate(self, res: datetime) -> bool: ...
+
+class parser:
+    def __init__(self, info: parserinfo | None = None) -> None: ...
+    def parse(
+        self,
+        timestr: _FileOrStr,
+        default: datetime | None = None,
+        ignoretz: bool = False,
+        tzinfos: _TzInfo | 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: _TzInfo | None = ...,
+) -> datetime: ...
+
+class _tzparser: ...
+
+DEFAULTTZPARSER: _tzparser
+
+class ParserError(ValueError): ...
+class UnknownTimezoneWarning(RuntimeWarning): ...
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/parser/isoparser.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/parser/isoparser.pyi
new file mode 100644
index 00000000..fc5e46d9
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/parser/isoparser.pyi
@@ -0,0 +1,15 @@
+from _typeshed import SupportsRead
+from datetime import date, datetime, time, tzinfo
+from typing_extensions import TypeAlias
+
+_Readable: TypeAlias = SupportsRead[str | bytes]
+_TakesAscii: TypeAlias = str | bytes | _Readable
+
+class isoparser:
+    def __init__(self, sep: str | bytes | None = None): ...
+    def isoparse(self, dt_str: _TakesAscii) -> datetime: ...
+    def parse_isodate(self, datestr: _TakesAscii) -> date: ...
+    def parse_isotime(self, timestr: _TakesAscii) -> time: ...
+    def parse_tzstr(self, tzstr: _TakesAscii, zero_as_utc: bool = True) -> tzinfo: ...
+
+def isoparse(dt_str: _TakesAscii) -> datetime: ...
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/py.typed b/.venv/lib/python3.12/site-packages/dateutil-stubs/py.typed
new file mode 100644
index 00000000..b648ac92
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/py.typed
@@ -0,0 +1 @@
+partial
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/relativedelta.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/relativedelta.pyi
new file mode 100644
index 00000000..9de92815
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/relativedelta.pyi
@@ -0,0 +1,89 @@
+from datetime import date, timedelta
+from typing import SupportsFloat, TypeVar, overload
+from typing_extensions import Self, TypeAlias
+
+# See #9817 for why we reexport this here
+from ._common import weekday as weekday
+
+_DateT = TypeVar("_DateT", bound=date)
+# Work around attribute and type having the same name.
+_Weekday: TypeAlias = weekday
+
+MO: weekday
+TU: weekday
+WE: weekday
+TH: weekday
+FR: weekday
+SA: weekday
+SU: weekday
+
+class relativedelta:
+    years: int
+    months: int
+    days: int
+    leapdays: int
+    hours: int
+    minutes: int
+    seconds: int
+    microseconds: int
+    year: int | None
+    month: int | None
+    weekday: _Weekday | None
+    day: int | None
+    hour: int | None
+    minute: int | None
+    second: int | None
+    microsecond: int | None
+    def __init__(
+        self,
+        dt1: date | None = None,
+        dt2: date | None = None,
+        years: int = 0,
+        months: int = 0,
+        days: int = 0,
+        leapdays: int = 0,
+        weeks: int = 0,
+        hours: int = 0,
+        minutes: int = 0,
+        seconds: int = 0,
+        microseconds: int = 0,
+        year: int | None = None,
+        month: int | None = None,
+        day: int | None = None,
+        weekday: int | _Weekday | None = None,
+        yearday: int | None = None,
+        nlyearday: int | None = None,
+        hour: int | None = None,
+        minute: int | None = None,
+        second: int | None = None,
+        microsecond: int | None = None,
+    ) -> None: ...
+    @property
+    def weeks(self) -> int: ...
+    @weeks.setter
+    def weeks(self, value: int) -> None: ...
+    def normalized(self) -> Self: ...
+    @overload
+    def __add__(self, other: timedelta | relativedelta) -> Self: ...
+    @overload
+    def __add__(self, other: _DateT) -> _DateT: ...
+    @overload
+    def __radd__(self, other: timedelta | relativedelta) -> Self: ...
+    @overload
+    def __radd__(self, other: _DateT) -> _DateT: ...
+    @overload
+    def __rsub__(self, other: timedelta | relativedelta) -> Self: ...
+    @overload
+    def __rsub__(self, other: _DateT) -> _DateT: ...
+    def __sub__(self, other: relativedelta) -> Self: ...
+    def __neg__(self) -> Self: ...
+    def __bool__(self) -> bool: ...
+    def __nonzero__(self) -> bool: ...
+    def __mul__(self, other: SupportsFloat) -> Self: ...
+    def __rmul__(self, other: SupportsFloat) -> Self: ...
+    def __eq__(self, other: object) -> bool: ...
+    def __ne__(self, other: object) -> bool: ...
+    def __div__(self, other: SupportsFloat) -> Self: ...
+    def __truediv__(self, other: SupportsFloat) -> Self: ...
+    def __abs__(self) -> Self: ...
+    def __hash__(self) -> int: ...
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/rrule.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/rrule.pyi
new file mode 100644
index 00000000..f091cfbd
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/rrule.pyi
@@ -0,0 +1,111 @@
+import datetime
+from _typeshed import Incomplete
+from collections.abc import Iterable, Iterator, Sequence
+from typing_extensions import TypeAlias
+
+from ._common import weekday as weekdaybase
+
+YEARLY: int
+MONTHLY: int
+WEEKLY: int
+DAILY: int
+HOURLY: int
+MINUTELY: int
+SECONDLY: int
+
+class weekday(weekdaybase): ...
+
+weekdays: tuple[weekday, weekday, weekday, weekday, weekday, weekday, weekday]
+MO: weekday
+TU: weekday
+WE: weekday
+TH: weekday
+FR: weekday
+SA: weekday
+SU: weekday
+
+class rrulebase:
+    def __init__(self, cache: bool = False) -> None: ...
+    def __iter__(self) -> Iterator[datetime.datetime]: ...
+    def __getitem__(self, item): ...
+    def __contains__(self, item): ...
+    def count(self): ...
+    def before(self, dt, inc: bool = False): ...
+    def after(self, dt, inc: bool = False): ...
+    def xafter(self, dt, count: Incomplete | None = None, inc: bool = False): ...
+    def between(self, after, before, inc: bool = False, count: int = 1): ...
+
+class rrule(rrulebase):
+    def __init__(
+        self,
+        freq,
+        dtstart: datetime.date | None = None,
+        interval: int = 1,
+        wkst: weekday | int | None = None,
+        count: int | None = None,
+        until: datetime.date | int | None = None,
+        bysetpos: int | Iterable[int] | None = None,
+        bymonth: int | Iterable[int] | None = None,
+        bymonthday: int | Iterable[int] | None = None,
+        byyearday: int | Iterable[int] | None = None,
+        byeaster: int | Iterable[int] | None = None,
+        byweekno: int | Iterable[int] | None = None,
+        byweekday: int | weekday | Iterable[int] | Iterable[weekday] | None = None,
+        byhour: int | Iterable[int] | None = None,
+        byminute: int | Iterable[int] | None = None,
+        bysecond: int | Iterable[int] | None = None,
+        cache: bool = False,
+    ) -> None: ...
+    def replace(self, **kwargs): ...
+
+_RRule: TypeAlias = rrule
+
+class _iterinfo:
+    rrule: _RRule
+    def __init__(self, rrule: _RRule) -> None: ...
+    yearlen: int | None
+    nextyearlen: int | None
+    yearordinal: int | None
+    yearweekday: int | None
+    mmask: Sequence[int] | None
+    mdaymask: Sequence[int] | None
+    nmdaymask: Sequence[int] | None
+    wdaymask: Sequence[int] | None
+    mrange: Sequence[int] | None
+    wnomask: Sequence[int] | None
+    nwdaymask: Sequence[int] | None
+    eastermask: Sequence[int] | None
+    lastyear: int | None
+    lastmonth: int | None
+    def rebuild(self, year, month): ...
+    def ydayset(self, year, month, day): ...
+    def mdayset(self, year, month, day): ...
+    def wdayset(self, year, month, day): ...
+    def ddayset(self, year, month, day): ...
+    def htimeset(self, hour, minute, second): ...
+    def mtimeset(self, hour, minute, second): ...
+    def stimeset(self, hour, minute, second): ...
+
+class rruleset(rrulebase):
+    class _genitem:
+        dt: Incomplete
+        genlist: list[Incomplete]
+        gen: Incomplete
+        def __init__(self, genlist, gen) -> None: ...
+        def __next__(self) -> None: ...
+        next = __next__
+        def __lt__(self, other) -> bool: ...
+        def __gt__(self, other) -> bool: ...
+        def __eq__(self, other) -> bool: ...
+        def __ne__(self, other) -> bool: ...
+
+    def __init__(self, cache: bool = False) -> None: ...
+    def rrule(self, rrule: _RRule): ...
+    def rdate(self, rdate): ...
+    def exrule(self, exrule): ...
+    def exdate(self, exdate): ...
+
+class _rrulestr:
+    def __call__(self, s, **kwargs) -> rrule | rruleset: ...
+
+rrulestr: _rrulestr
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/__init__.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/__init__.pyi
new file mode 100644
index 00000000..334ca482
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/__init__.pyi
@@ -0,0 +1,15 @@
+from .tz import (
+    datetime_ambiguous as datetime_ambiguous,
+    datetime_exists as datetime_exists,
+    gettz as gettz,
+    resolve_imaginary as resolve_imaginary,
+    tzfile as tzfile,
+    tzical as tzical,
+    tzlocal as tzlocal,
+    tzoffset as tzoffset,
+    tzrange as tzrange,
+    tzstr as tzstr,
+    tzutc as tzutc,
+)
+
+UTC: tzutc
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/_common.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/_common.pyi
new file mode 100644
index 00000000..4e64822f
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/_common.pyi
@@ -0,0 +1,28 @@
+import abc
+from datetime import datetime, timedelta, tzinfo
+from typing import ClassVar
+
+def tzname_in_python2(namefunc): ...
+def enfold(dt: datetime, fold: int = 1): ...
+
+class _DatetimeWithFold(datetime):
+    @property
+    def fold(self): ...
+
+# Doesn't actually have ABCMeta as the metaclass at runtime,
+# but mypy complains if we don't have it in the stub.
+# See discussion in #8908
+class _tzinfo(tzinfo, metaclass=abc.ABCMeta):
+    def is_ambiguous(self, dt: datetime) -> bool: ...
+    def fromutc(self, dt: datetime) -> datetime: ...
+
+class tzrangebase(_tzinfo):
+    def __init__(self) -> None: ...
+    def utcoffset(self, dt: datetime | None) -> timedelta | None: ...
+    def dst(self, dt: datetime | None) -> timedelta | None: ...
+    def tzname(self, dt: datetime | None) -> str: ...
+    def fromutc(self, dt: datetime) -> datetime: ...
+    def is_ambiguous(self, dt: datetime) -> bool: ...
+    __hash__: ClassVar[None]  # type: ignore[assignment]
+    def __ne__(self, other): ...
+    __reduce__ = object.__reduce__
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/tz.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/tz.pyi
new file mode 100644
index 00000000..6addba65
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/tz/tz.pyi
@@ -0,0 +1,115 @@
+import datetime
+from _typeshed import Incomplete
+from typing import ClassVar, Literal, Protocol, TypeVar
+
+from ..relativedelta import relativedelta
+from ._common import _tzinfo as _tzinfo, enfold as enfold, tzname_in_python2 as tzname_in_python2, tzrangebase as tzrangebase
+
+_DT = TypeVar("_DT", bound=datetime.datetime)
+
+ZERO: datetime.timedelta
+EPOCH: datetime.datetime
+EPOCHORDINAL: int
+
+class tzutc(datetime.tzinfo):
+    def utcoffset(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def dst(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def tzname(self, dt: datetime.datetime | None) -> str: ...
+    def is_ambiguous(self, dt: datetime.datetime | None) -> bool: ...
+    def fromutc(self, dt: _DT) -> _DT: ...
+    def __eq__(self, other): ...
+    __hash__: ClassVar[None]  # type: ignore[assignment]
+    def __ne__(self, other): ...
+    __reduce__ = object.__reduce__
+
+class tzoffset(datetime.tzinfo):
+    def __init__(self, name, offset) -> None: ...
+    def utcoffset(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def dst(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def is_ambiguous(self, dt: datetime.datetime | None) -> bool: ...
+    def tzname(self, dt: datetime.datetime | None) -> str: ...
+    def fromutc(self, dt: _DT) -> _DT: ...
+    def __eq__(self, other): ...
+    __hash__: ClassVar[None]  # type: ignore[assignment]
+    def __ne__(self, other): ...
+    __reduce__ = object.__reduce__
+    @classmethod
+    def instance(cls, name, offset) -> tzoffset: ...
+
+class tzlocal(_tzinfo):
+    def __init__(self) -> None: ...
+    def utcoffset(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def dst(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def tzname(self, dt: datetime.datetime | None) -> str: ...
+    def is_ambiguous(self, dt: datetime.datetime | None) -> bool: ...
+    def __eq__(self, other): ...
+    __hash__: ClassVar[None]  # type: ignore[assignment]
+    def __ne__(self, other): ...
+    __reduce__ = object.__reduce__
+
+class _ttinfo:
+    def __init__(self) -> None: ...
+    def __eq__(self, other): ...
+    __hash__: ClassVar[None]  # type: ignore[assignment]
+    def __ne__(self, other): ...
+
+class _TZFileReader(Protocol):
+    # optional attribute:
+    # name: str
+    def read(self, size: int, /) -> bytes: ...
+    def seek(self, target: int, whence: Literal[1], /) -> object: ...
+
+class tzfile(_tzinfo):
+    def __init__(self, fileobj: str | _TZFileReader, filename: str | None = None) -> None: ...
+    def is_ambiguous(self, dt: datetime.datetime | None, idx: int | None = None) -> bool: ...
+    def utcoffset(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def dst(self, dt: datetime.datetime | None) -> datetime.timedelta | None: ...
+    def tzname(self, dt: datetime.datetime | None) -> str: ...
+    def __eq__(self, other): ...
+    __hash__: ClassVar[None]  # type: ignore[assignment]
+    def __ne__(self, other): ...
+    def __reduce__(self): ...
+    def __reduce_ex__(self, protocol): ...
+
+class tzrange(tzrangebase):
+    hasdst: bool
+    def __init__(
+        self,
+        stdabbr: str,
+        stdoffset: int | datetime.timedelta | None = None,
+        dstabbr: str | None = None,
+        dstoffset: int | datetime.timedelta | None = None,
+        start: relativedelta | None = None,
+        end: relativedelta | None = None,
+    ) -> None: ...
+    def transitions(self, year: int) -> tuple[datetime.datetime, datetime.datetime]: ...
+    def __eq__(self, other): ...
+
+class tzstr(tzrange):
+    hasdst: bool
+    def __init__(self, s: str, posix_offset: bool = False) -> None: ...
+    @classmethod
+    def instance(cls, name, offset) -> tzoffset: ...
+
+class _ICalReader(Protocol):
+    # optional attribute:
+    # name: str
+    def read(self) -> str: ...
+
+class tzical:
+    def __init__(self, fileobj: str | _ICalReader) -> None: ...
+    def keys(self): ...
+    def get(self, tzid: Incomplete | None = None): ...
+
+TZFILES: list[str]
+TZPATHS: list[str]
+
+def datetime_exists(dt: datetime.datetime, tz: datetime.tzinfo | None = None) -> bool: ...
+def datetime_ambiguous(dt: datetime.datetime, tz: datetime.tzinfo | None = None) -> bool: ...
+def resolve_imaginary(dt: datetime.datetime) -> datetime.datetime: ...
+
+class _GetTZ:
+    def __call__(self, name: str | None = ...) -> datetime.tzinfo | None: ...
+    def nocache(self, name: str | None) -> datetime.tzinfo | None: ...
+
+gettz: _GetTZ
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/utils.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/utils.pyi
new file mode 100644
index 00000000..8c9f5e44
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/utils.pyi
@@ -0,0 +1,5 @@
+from datetime import datetime, timedelta, tzinfo
+
+def default_tzinfo(dt: datetime, tzinfo: tzinfo) -> datetime: ...
+def today(tzinfo: tzinfo | None = None) -> datetime: ...
+def within_delta(dt1: datetime, dt2: datetime, delta: timedelta) -> bool: ...
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/__init__.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/__init__.pyi
new file mode 100644
index 00000000..7bd2845a
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/__init__.pyi
@@ -0,0 +1,17 @@
+from _typeshed import Incomplete
+from typing import IO
+from typing_extensions import TypeAlias
+
+__all__ = ["get_zonefile_instance", "gettz", "gettz_db_metadata"]
+
+_MetadataType: TypeAlias = dict[str, Incomplete]
+
+class ZoneInfoFile:
+    zones: dict[Incomplete, Incomplete]
+    metadata: _MetadataType | None
+    def __init__(self, zonefile_stream: IO[bytes] | None = None) -> None: ...
+    def get(self, name, default: Incomplete | None = None): ...
+
+def get_zonefile_instance(new_instance: bool = False) -> ZoneInfoFile: ...
+def gettz(name): ...
+def gettz_db_metadata() -> _MetadataType: ...
diff --git a/.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/rebuild.pyi b/.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/rebuild.pyi
new file mode 100644
index 00000000..e3845926
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/dateutil-stubs/zoneinfo/rebuild.pyi
@@ -0,0 +1,11 @@
+from _typeshed import Incomplete, StrOrBytesPath
+from collections.abc import Sequence
+from tarfile import TarInfo
+
+def rebuild(
+    filename: StrOrBytesPath,
+    tag: Incomplete | None = None,
+    format: str = "gz",
+    zonegroups: Sequence[str | TarInfo] = [],
+    metadata: Incomplete | None = None,
+) -> None: ...