Skip to content

Commit 385c1fb

Browse files
committed
[python-dateutil] Complete stubs
* Add missing return types * Use TypeVar when possible
1 parent 944838f commit 385c1fb

File tree

7 files changed

+14
-11
lines changed

7 files changed

+14
-11
lines changed

pyrightconfig.stricter.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@
7878
"stubs/pycurl",
7979
"stubs/Pygments",
8080
"stubs/PyMySQL",
81-
"stubs/python-dateutil",
8281
"stubs/python-jose",
8382
"stubs/pywin32",
8483
"stubs/PyYAML",

stubs/python-dateutil/dateutil/parser/_parser.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ class _tzparser:
125125
day: int | None
126126
time: int | None
127127

128-
def __init__(self): ...
128+
def __init__(self) -> None: ...
129129

130130
def parse(self, tzstr: str | re.Pattern[str]) -> _result | None: ...
131131

stubs/python-dateutil/dateutil/parser/isoparser.pyi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ _TakesAscii: TypeAlias = str | bytes | _Readable
88
__all__ = ["isoparse", "isoparser"]
99

1010
class isoparser:
11-
def __init__(self, sep: str | bytes | None = None): ...
11+
def __init__(self, sep: str | bytes | None = None) -> None: ...
1212
def isoparse(self, dt_str: _TakesAscii) -> datetime: ...
1313
def parse_isodate(self, datestr: _TakesAscii) -> date: ...
1414
def parse_isotime(self, timestr: _TakesAscii) -> time: ...

stubs/python-dateutil/dateutil/rrule.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ class rrulebase:
6262
def __getitem__(self, item: int | slice) -> datetime.datetime: ...
6363
def __contains__(self, item: datetime.datetime) -> bool: ...
6464
def count(self) -> int | None: ...
65-
def before(self, dt: datetime.datetime, inc: bool = False): ...
66-
def after(self, dt: datetime.datetime, inc: bool = False): ...
65+
def before(self, dt: datetime.datetime, inc: bool = False) -> datetime.datetime: ...
66+
def after(self, dt: datetime.datetime, inc: bool = False) -> datetime.datetime: ...
6767
def xafter(self, dt: datetime.datetime, count: int | None = None, inc: bool = False) -> Generator[datetime.datetime]: ...
6868
def between(
6969
self, after: datetime.datetime, before: datetime.datetime, inc: bool = False, count: int = 1

stubs/python-dateutil/dateutil/tz/_common.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ __all__ = ["tzname_in_python2", "enfold"]
1010

1111
_P = ParamSpec("_P")
1212
_R = TypeVar("_R")
13+
_DateTimeT = TypeVar("_DateTimeT", bound=datetime)
1314

1415
def tzname_in_python2(namefunc: Callable[_P, _R]) -> Callable[_P, _R]: ...
15-
def enfold(dt: datetime, fold: int = 1): ...
16+
def enfold(dt: _DateTimeT, fold: int = 1) -> _DateTimeT: ...
1617

1718
# Doesn't actually have ABCMeta as the metaclass at runtime,
1819
# but mypy complains if we don't have it in the stub.

stubs/python-dateutil/dateutil/tz/tz.pyi

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ else:
1313
tzwin: None
1414
tzwinlocal: None
1515

16-
_DT = TypeVar("_DT", bound=datetime)
16+
_DateTimeT = TypeVar("_DateTimeT", bound=datetime)
1717

1818
ZERO: timedelta
1919
EPOCH: datetime
@@ -24,7 +24,7 @@ class tzutc(tzinfo):
2424
def dst(self, dt: datetime | None) -> timedelta | None: ...
2525
def tzname(self, dt: datetime | None) -> str: ...
2626
def is_ambiguous(self, dt: datetime | None) -> bool: ...
27-
def fromutc(self, dt: _DT) -> _DT: ...
27+
def fromutc(self, dt: _DateTimeT) -> _DateTimeT: ...
2828
def __eq__(self, other: object) -> bool: ...
2929
__hash__: ClassVar[None] # type: ignore[assignment]
3030
def __ne__(self, other: object) -> bool: ...
@@ -38,7 +38,7 @@ class tzoffset(tzinfo):
3838
def dst(self, dt: datetime | None) -> timedelta | None: ...
3939
def is_ambiguous(self, dt: datetime | None) -> bool: ...
4040
def tzname(self, dt: datetime | None) -> str: ...
41-
def fromutc(self, dt: _DT) -> _DT: ...
41+
def fromutc(self, dt: _DateTimeT) -> _DateTimeT: ...
4242
def __eq__(self, other: object) -> bool: ...
4343
__hash__: ClassVar[None] # type: ignore[assignment]
4444
def __ne__(self, other: object) -> bool: ...
@@ -126,7 +126,7 @@ TZPATHS: list[str]
126126

127127
def datetime_exists(dt: datetime, tz: tzinfo | None = None) -> bool: ...
128128
def datetime_ambiguous(dt: datetime, tz: tzinfo | None = None) -> bool: ...
129-
def resolve_imaginary(dt: datetime) -> datetime: ...
129+
def resolve_imaginary(dt: _DateTimeT) -> _DateTimeT: ...
130130

131131
# Singleton type defined locally in a function. Calls itself "GettzFunc".
132132
@type_check_only
Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
from datetime import _TzInfo, datetime, timedelta
2+
from typing import TypeVar
3+
4+
_DateTimeT = TypeVar("_DateTimeT", bound=datetime)
25

36
def today(tzinfo: _TzInfo | None = None) -> datetime: ...
4-
def default_tzinfo(dt: datetime, tzinfo: _TzInfo) -> datetime: ...
7+
def default_tzinfo(dt: _DateTimeT, tzinfo: _TzInfo) -> _DateTimeT: ...
58
def within_delta(dt1: datetime, dt2: datetime, delta: timedelta) -> bool: ...

0 commit comments

Comments
 (0)