Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pandas-stubs/core/base.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ from pandas import (
from pandas.core.arraylike import OpsMixin
from pandas.core.arrays import ExtensionArray
from pandas.core.arrays.categorical import Categorical
from pandas.core.indexes.accessors import ArrayDescriptor
from typing_extensions import Self

from pandas._typing import (
Expand Down Expand Up @@ -69,8 +70,7 @@ class IndexOpsMixin(OpsMixin, Generic[S1, GenericT_co]):
def nbytes(self) -> int: ...
@property
def size(self) -> int: ...
@property
def array(self) -> ExtensionArray: ...
array = ArrayDescriptor()
@overload
def to_numpy(
self,
Expand Down
128 changes: 65 additions & 63 deletions pandas-stubs/core/indexes/accessors.pyi
Original file line number Diff line number Diff line change
@@ -1,42 +1,44 @@
import datetime as dt
from datetime import (
date,
time,
timedelta,
tzinfo as _tzinfo,
)
from typing import (
Any,
Generic,
Literal,
TypeVar,
overload,
type_check_only,
)

import numpy as np
from pandas import (
DatetimeIndex,
Index,
PeriodIndex,
Timedelta,
TimedeltaIndex,
Timestamp,
)
from pandas.core.accessor import PandasDelegate
from pandas.core.arrays import (
DatetimeArray,
PeriodArray,
from pandas.core.arrays.base import ExtensionArray
from pandas.core.arrays.categorical import Categorical
from pandas.core.arrays.datetimes import DatetimeArray
from pandas.core.arrays.interval import IntervalArray
from pandas.core.arrays.period import PeriodArray
from pandas.core.arrays.timedeltas import TimedeltaArray
from pandas.core.base import (
IndexOpsMixin,
NoNewAttributesMixin,
)
from pandas.core.base import NoNewAttributesMixin
from pandas.core.frame import DataFrame
from pandas.core.series import (
Series,
)
from pandas.core.indexes.base import Index
from pandas.core.indexes.datetimes import DatetimeIndex
from pandas.core.indexes.period import PeriodIndex
from pandas.core.indexes.timedeltas import TimedeltaIndex
from pandas.core.series import Series
from typing_extensions import Never

from pandas._libs.interval import Interval
from pandas._libs.tslibs import BaseOffset
from pandas._libs.tslibs.offsets import DateOffset
from pandas._libs.tslibs.period import Period
from pandas._libs.tslibs.timedeltas import Timedelta
from pandas._libs.tslibs.timestamps import Timestamp
from pandas._typing import (
S1,
TimeAmbiguous,
TimeNonexistent,
TimestampConvention,
Expand All @@ -46,6 +48,8 @@ from pandas._typing import (
np_ndarray_bool,
)

from pandas.core.dtypes.dtypes import CategoricalDtype

class Properties(PandasDelegate, NoNewAttributesMixin): ...

_DTFieldOpsReturnType = TypeVar("_DTFieldOpsReturnType", bound=Series[int] | Index[int])
Expand Down Expand Up @@ -129,10 +133,10 @@ class _DatetimeObjectOps(
): ...

_DTOtherOpsDateReturnType = TypeVar(
"_DTOtherOpsDateReturnType", bound=Series[dt.date] | np_1darray[np.object_]
"_DTOtherOpsDateReturnType", bound=Series[date] | np_1darray[np.object_]
)
_DTOtherOpsTimeReturnType = TypeVar(
"_DTOtherOpsTimeReturnType", bound=Series[dt.time] | np_1darray[np.object_]
"_DTOtherOpsTimeReturnType", bound=Series[time] | np_1darray[np.object_]
)

class _DatetimeOtherOps(Generic[_DTOtherOpsDateReturnType, _DTOtherOpsTimeReturnType]):
Expand Down Expand Up @@ -380,8 +384,8 @@ class CombinedDatetimelikeProperties(
Series[int],
Series[bool],
Series,
Series[dt.date],
Series[dt.time],
Series[date],
Series[time],
str,
Series[Timestamp],
Series[str],
Expand All @@ -390,13 +394,15 @@ class CombinedDatetimelikeProperties(
_TimedeltaPropertiesNoRounding[Series[int], Series[float]],
_PeriodProperties,
): ...

@type_check_only
class TimestampProperties(
DatetimeProperties[
Series[int],
Series[bool],
Series[Timestamp],
Series[dt.date],
Series[dt.time],
Series[date],
Series[time],
str,
Series[Timestamp],
Series[str],
Expand Down Expand Up @@ -434,51 +440,47 @@ class TimedeltaIndexProperties(
_DatetimeRoundingMethods[TimedeltaIndex],
): ...

class _dtDescriptor(CombinedDatetimelikeProperties, Generic[S1]):
@overload
def __get__(self, instance: Series[Never], owner: Any) -> Never: ...
@type_check_only
class DtDescriptor:
@overload
def __get__(self, instance: Series[Period], owner: Any) -> PeriodProperties: ...
def __get__(self, instance: Series[Never], owner: type[Series]) -> Properties: ...
@overload
def __get__(
self, instance: Series[Timestamp], owner: Any
self, instance: Series[Timestamp], owner: type[Series]
) -> TimestampProperties: ...
@overload
def __get__(
self, instance: Series[Timedelta], owner: Any
self, instance: Series[Timedelta], owner: type[Series]
) -> TimedeltaProperties: ...
@overload
def __get__(
self, instance: Series[S1], owner: Any
) -> CombinedDatetimelikeProperties: ...
def round(
self,
freq: str | BaseOffset | None,
ambiguous: Literal["raise", "infer", "NaT"] | bool | np_ndarray_bool = ...,
nonexistent: (
Literal["shift_forward", "shift_backward", "NaT", "raise"]
| timedelta
| Timedelta
) = ...,
) -> Series[S1]: ...
def floor(
self,
freq: str | BaseOffset | None,
ambiguous: Literal["raise", "infer", "NaT"] | bool | np_ndarray_bool = ...,
nonexistent: (
Literal["shift_forward", "shift_backward", "NaT", "raise"]
| timedelta
| Timedelta
) = ...,
) -> Series[S1]: ...
def ceil(
self,
freq: str | BaseOffset | None,
ambiguous: Literal["raise", "infer", "NaT"] | bool | np_ndarray_bool = ...,
nonexistent: (
Literal["shift_forward", "shift_backward", "NaT", "raise"]
| timedelta
| Timedelta
) = ...,
) -> Series[S1]: ...
def as_unit(self, unit: TimeUnit) -> Series[S1]: ...
self, instance: Series[Period], owner: type[Series]
) -> PeriodProperties: ...

@type_check_only
class ArrayDescriptor:
@overload
def __get__(
self, instance: IndexOpsMixin[Never], owner: type[IndexOpsMixin]
) -> ExtensionArray: ...
@overload
def __get__(
self, instance: IndexOpsMixin[CategoricalDtype], owner: type[IndexOpsMixin]
) -> Categorical: ...
@overload
def __get__(
self, instance: IndexOpsMixin[Interval], owner: type[IndexOpsMixin]
) -> IntervalArray: ...
@overload
def __get__(
self, instance: IndexOpsMixin[Timestamp], owner: type[IndexOpsMixin]
) -> DatetimeArray: ...
@overload
def __get__(
self, instance: IndexOpsMixin[Timedelta], owner: type[IndexOpsMixin]
) -> TimedeltaArray: ...
# should be NumpyExtensionArray
@overload
def __get__(
self, instance: IndexOpsMixin, owner: type[IndexOpsMixin]
) -> ExtensionArray: ...
5 changes: 1 addition & 4 deletions pandas-stubs/core/indexes/base.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ from pandas import (
Series,
TimedeltaIndex,
)
from pandas.core.arrays import ExtensionArray
from pandas.core.base import (
IndexOpsMixin,
NumListLike,
Expand Down Expand Up @@ -326,7 +325,7 @@ class Index(IndexOpsMixin[S1]):
def to_flat_index(self): ...
def to_series(
self, index: Index | None = None, name: Hashable | None = None
) -> Series: ...
) -> Series[S1]: ...
def to_frame(self, index: bool = True, name=...) -> DataFrame: ...
@property
def name(self) -> Hashable | None: ...
Expand Down Expand Up @@ -415,8 +414,6 @@ class Index(IndexOpsMixin[S1]):
): ...
@property
def values(self) -> np_1darray: ...
@property
def array(self) -> ExtensionArray: ...
def memory_usage(self, deep: bool = False): ...
def where(self, cond, other: Scalar | ArrayLike | None = None): ...
def __contains__(self, key) -> bool: ...
Expand Down
5 changes: 0 additions & 5 deletions pandas-stubs/core/indexes/datetimes.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ from pandas import (
TimedeltaIndex,
Timestamp,
)
from pandas.core.arrays import DatetimeArray
from pandas.core.indexes.accessors import DatetimeIndexProperties
from pandas.core.indexes.datetimelike import DatetimeTimedeltaMixin
from pandas.core.series import Series
Expand Down Expand Up @@ -60,10 +59,6 @@ class DatetimeIndex(
) -> Self: ...
def __reduce__(self): ...

# Override the array property to return DatetimeArray instead of ExtensionArray
@property
def array(self) -> DatetimeArray: ...

# various ignores needed for mypy, as we do want to restrict what can be used in
# arithmetic for these types
def __add__( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
Expand Down
Loading