diff --git a/stdlib/datetime.pyi b/stdlib/datetime.pyi index 0a21f72b09de..a899a335759b 100644 --- a/stdlib/datetime.pyi +++ b/stdlib/datetime.pyi @@ -267,9 +267,10 @@ class timedelta: def __hash__(self) -> int: ... @disjoint_base -class datetime(date): +class datetime: min: ClassVar[datetime] max: ClassVar[datetime] + resolution: ClassVar[timedelta] def __new__( cls, year: SupportsIndex, @@ -283,6 +284,18 @@ class datetime(date): *, fold: int = 0, ) -> Self: ... + @classmethod + def today(cls) -> Self: ... + @classmethod + def fromordinal(cls, n: int, /) -> Self: ... + @classmethod + def fromisocalendar(cls, year: int, week: int, day: int) -> Self: ... + @property + def year(self) -> int: ... + @property + def month(self) -> int: ... + @property + def day(self) -> int: ... @property def hour(self) -> int: ... @property @@ -295,15 +308,18 @@ class datetime(date): def tzinfo(self) -> _TzInfo | None: ... @property def fold(self) -> int: ... + def ctime(self) -> str: ... # On <3.12, the name of the first parameter in the pure-Python implementation # didn't match the name in the C implementation, # meaning it is only *safe* to pass it as a keyword argument on 3.12+ if sys.version_info >= (3, 12): @classmethod def fromtimestamp(cls, timestamp: float, tz: _TzInfo | None = None) -> Self: ... + def strftime(self, format: str) -> str: ... else: @classmethod def fromtimestamp(cls, timestamp: float, /, tz: _TzInfo | None = None) -> Self: ... + def strftime(self, format: str, /) -> str: ... @classmethod @deprecated("Use timezone-aware objects to represent datetimes in UTC; e.g. by calling .fromtimestamp(datetime.timezone.utc)") @@ -315,9 +331,13 @@ class datetime(date): def utcnow(cls) -> Self: ... @classmethod def combine(cls, date: _Date, time: _Time, tzinfo: _TzInfo | None = ...) -> Self: ... + if sys.version_info >= (3, 15): @classmethod def fromisoformat(cls, string: str, /) -> Self: ... + else: + @classmethod + def fromisoformat(cls, date_string: str, /) -> Self: ... def timestamp(self) -> float: ... def utctimetuple(self) -> struct_time: ... @@ -366,16 +386,24 @@ class datetime(date): def utcoffset(self) -> timedelta | None: ... def tzname(self) -> str | None: ... def dst(self) -> timedelta | None: ... - def __le__(self, value: datetime, /) -> bool: ... # type: ignore[override] - def __lt__(self, value: datetime, /) -> bool: ... # type: ignore[override] - def __ge__(self, value: datetime, /) -> bool: ... # type: ignore[override] - def __gt__(self, value: datetime, /) -> bool: ... # type: ignore[override] + def timetuple(self) -> struct_time: ... + def toordinal(self) -> int: ... + def __le__(self, value: datetime, /) -> bool: ... + def __lt__(self, value: datetime, /) -> bool: ... + def __ge__(self, value: datetime, /) -> bool: ... + def __gt__(self, value: datetime, /) -> bool: ... def __eq__(self, value: object, /) -> bool: ... def __hash__(self) -> int: ... + def __add__(self, value: timedelta, /) -> Self: ... + def __radd__(self, value: timedelta, /) -> Self: ... - @overload # type: ignore[override] + @overload def __sub__(self, value: Self, /) -> timedelta: ... @overload def __sub__(self, value: timedelta, /) -> Self: ... + def weekday(self) -> int: ... + def isoweekday(self) -> int: ... + def isocalendar(self) -> _IsoCalendarDate: ... + datetime_CAPI: CapsuleType diff --git a/stubs/pony/pony/orm/sqltranslation.pyi b/stubs/pony/pony/orm/sqltranslation.pyi index 51d8030f0034..b396f2c0eb7f 100644 --- a/stubs/pony/pony/orm/sqltranslation.pyi +++ b/stubs/pony/pony/orm/sqltranslation.pyi @@ -620,7 +620,7 @@ class FuncTimedeltaMonad(FuncMonad): func: type[timedelta] def call(self, days=None, seconds=None, microseconds=None, milliseconds=None, minutes=None, hours=None, weeks=None): ... -class FuncDatetimeMonad(FuncDateMonad): +class FuncDatetimeMonad(FuncMonad): func: type[datetime] def call(self, year, month, day, hour=None, minute=None, second=None, microsecond=None): ... def call_now(self): ...