Skip to content
Draft
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
38 changes: 38 additions & 0 deletions pandas-stubs/_libs/arrays.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
from collections.abc import Sequence
from typing import Any

import numpy as np
from typing_extensions import Self

from pandas._typing import (
AnyArrayLikeInt,
AxisInt,
DtypeObj,
Shape,
)

class NDArrayBacked:
_dtype: DtypeObj
_ndarray: np.ndarray
def __setstate__(self, state: Any) -> None: ...
def __len__(self) -> int: ...
@property
def shape(self) -> Shape: ...
@property
def ndim(self) -> int: ...
@property
def size(self) -> int: ...
@property
def nbytes(self) -> int: ...
def copy(self, order=...) -> Self: ...
def delete(self, loc, axis=...) -> Self: ...
def swapaxes(self, axis1, axis2) -> Self: ...
def repeat(
self,
repeats: int | Sequence[int] | AnyArrayLikeInt,
axis: AxisInt | None = None,
) -> Self: ...
def reshape(self, *args: Any, **kwargs: Any) -> Self: ...
def ravel(self, order=...) -> Self: ...
@property
def T(self) -> Self: ...
39 changes: 29 additions & 10 deletions pandas-stubs/arrays/__init__.pyi
Original file line number Diff line number Diff line change
@@ -1,12 +1,31 @@
from pandas.core.arrays import (
BooleanArray as BooleanArray,
Categorical as Categorical,
DatetimeArray as DatetimeArray,
IntegerArray as IntegerArray,
IntervalArray as IntervalArray,
PandasArray as PandasArray,
PeriodArray as PeriodArray,
SparseArray as SparseArray,
StringArray as StringArray,
TimedeltaArray as TimedeltaArray,
ArrowExtensionArray,
ArrowStringArray,
BooleanArray,
Categorical,
DatetimeArray,
FloatingArray,
IntegerArray,
IntervalArray,
NumpyExtensionArray,
PeriodArray,
SparseArray,
StringArray,
TimedeltaArray,
)

__all__ = [
"ArrowExtensionArray",
"ArrowStringArray",
"BooleanArray",
"Categorical",
"DatetimeArray",
"FloatingArray",
"IntegerArray",
"IntervalArray",
"NumpyExtensionArray",
"PeriodArray",
"SparseArray",
"StringArray",
"TimedeltaArray",
]
54 changes: 41 additions & 13 deletions pandas-stubs/core/arrays/__init__.pyi
Original file line number Diff line number Diff line change
@@ -1,15 +1,43 @@
from pandas.core.arrays.arrow import ArrowExtensionArray
from pandas.core.arrays.base import (
ExtensionArray as ExtensionArray,
ExtensionOpsMixin as ExtensionOpsMixin,
ExtensionScalarOpsMixin as ExtensionScalarOpsMixin,
ExtensionArray,
ExtensionOpsMixin,
ExtensionScalarOpsMixin,
)
from pandas.core.arrays.boolean import BooleanArray as BooleanArray
from pandas.core.arrays.categorical import Categorical as Categorical
from pandas.core.arrays.datetimes import DatetimeArray as DatetimeArray
from pandas.core.arrays.integer import IntegerArray as IntegerArray
from pandas.core.arrays.interval import IntervalArray as IntervalArray
from pandas.core.arrays.numpy_ import PandasArray as PandasArray
from pandas.core.arrays.period import PeriodArray as PeriodArray
from pandas.core.arrays.sparse import SparseArray as SparseArray
from pandas.core.arrays.string_ import StringArray as StringArray
from pandas.core.arrays.timedeltas import TimedeltaArray as TimedeltaArray
from pandas.core.arrays.boolean import BooleanArray
from pandas.core.arrays.categorical import Categorical
from pandas.core.arrays.datetimes import DatetimeArray
from pandas.core.arrays.floating import FloatingArray
from pandas.core.arrays.integer import IntegerArray
from pandas.core.arrays.interval import IntervalArray
from pandas.core.arrays.masked import BaseMaskedArray
from pandas.core.arrays.numpy_ import NumpyExtensionArray
from pandas.core.arrays.period import (
PeriodArray,
period_array,
)
from pandas.core.arrays.sparse import SparseArray
from pandas.core.arrays.string_ import StringArray
from pandas.core.arrays.string_arrow import ArrowStringArray
from pandas.core.arrays.timedeltas import TimedeltaArray

__all__ = [
"ArrowExtensionArray",
"ArrowStringArray",
"BaseMaskedArray",
"BooleanArray",
"Categorical",
"DatetimeArray",
"ExtensionArray",
"ExtensionOpsMixin",
"ExtensionScalarOpsMixin",
"FloatingArray",
"IntegerArray",
"IntervalArray",
"NumpyExtensionArray",
"PeriodArray",
"SparseArray",
"StringArray",
"TimedeltaArray",
"period_array",
]
1 change: 1 addition & 0 deletions pandas-stubs/core/arrays/_arrow_string_mixins.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
class ArrowStringArrayMixin: ...
15 changes: 15 additions & 0 deletions pandas-stubs/core/arrays/_mixins.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from pandas.core.arrays.base import ExtensionArray
from pandas.core.series import Series
from typing_extensions import Self

from pandas._libs.arrays import NDArrayBacked
from pandas._typing import (
AxisInt,
Scalar,
)

class NDArrayBackedExtensionArray(NDArrayBacked, ExtensionArray):
def argmin(self, axis: AxisInt = 0, skipna: bool = True) -> int: ...
def argmax(self, axis: AxisInt = 0, skipna: bool = True) -> int: ...
def insert(self, loc: int, item: Scalar) -> Self: ...
def value_counts(self, dropna: bool = True) -> Series[int]: ...
7 changes: 7 additions & 0 deletions pandas-stubs/core/arrays/arrow/__init__.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from pandas.core.arrays.arrow.accessors import (
ListAccessor,
StructAccessor,
)
from pandas.core.arrays.arrow.array import ArrowExtensionArray

__all__ = ["ArrowExtensionArray", "ListAccessor", "StructAccessor"]
5 changes: 5 additions & 0 deletions pandas-stubs/core/arrays/arrow/accessors.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from abc import ABCMeta

class ArrowAccessor(metaclass=ABCMeta): ...
class ListAccessor(ArrowAccessor): ...
class StructAccessor(ArrowAccessor): ...
7 changes: 7 additions & 0 deletions pandas-stubs/core/arrays/arrow/array.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from pandas.core.arraylike import OpsMixin
from pandas.core.arrays._arrow_string_mixins import ArrowStringArrayMixin
from pandas.core.arrays.base import ExtensionArraySupportsAnyAll

class ArrowExtensionArray(
OpsMixin, ExtensionArraySupportsAnyAll, ArrowStringArrayMixin
): ...
4 changes: 3 additions & 1 deletion pandas-stubs/core/arrays/base.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ class ExtensionArray:
) -> np.intp: ...
def factorize(self, use_na_sentinel: bool = True) -> tuple[np_1darray, Self]: ...
def repeat(
self, repeats: int | AnyArrayLikeInt | Sequence[int], axis: None = None
self, repeats: int | Sequence[int] | AnyArrayLikeInt, axis: None = None
) -> Self: ...
def take(
self,
Expand All @@ -112,6 +112,8 @@ class ExtensionArray:
**kwargs: Any,
) -> Self: ...

class ExtensionArraySupportsAnyAll(ExtensionArray): ...

class ExtensionOpsMixin:
@classmethod
def _add_arithmetic_ops(cls) -> None: ...
Expand Down
23 changes: 17 additions & 6 deletions pandas-stubs/core/arrays/boolean.pyi
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
from typing import Any
from collections.abc import Sequence

import numpy as np
from pandas.core.arrays.masked import BaseMaskedArray as BaseMaskedArray
from pandas.core.indexes.base import Index
from pandas.core.series import Series
from typing_extensions import Self

from pandas._libs.missing import NAType
from pandas._typing import type_t
Expand All @@ -16,10 +19,18 @@ class BooleanDtype(ExtensionDtype):

class BooleanArray(BaseMaskedArray):
def __init__(
self, values: np.ndarray, mask: np.ndarray, copy: bool = ...
self,
values: (
Sequence[bool | np.bool]
| np.typing.NDArray[np.bool]
| Index[bool]
| Series[bool]
| Self
),
mask: np.ndarray,
copy: bool = False,
) -> None: ...
@property
def dtype(self): ...
def __setitem__(self, key, value) -> None: ...
def any(self, *, skipna: bool = ..., **kwargs: Any): ...
def all(self, *, skipna: bool = ..., **kwargs: Any): ...
def dtype( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
self,
) -> np.dtypes.BoolDType: ...
90 changes: 20 additions & 70 deletions pandas-stubs/core/arrays/datetimes.pyi
Original file line number Diff line number Diff line change
@@ -1,83 +1,33 @@
from datetime import tzinfo as _tzinfo
from collections.abc import Sequence
from datetime import datetime

import numpy as np
from pandas.core.arrays.datetimelike import (
DatelikeOps,
DatetimeLikeArrayMixin,
TimelikeOps,
)
from pandas.core.indexes.datetimes import DatetimeIndex
from pandas.core.series import Series
from typing_extensions import Self

from pandas._typing import (
TimeAmbiguous,
TimeNonexistent,
TimeZones,
)

from pandas.core.dtypes.dtypes import DatetimeTZDtype as DatetimeTZDtype
from pandas._libs.tslibs.timestamps import Timestamp

class DatetimeArray(DatetimeLikeArrayMixin, TimelikeOps, DatelikeOps):
__array_priority__: int = ...
def __init__(self, values, dtype=..., freq=..., copy: bool = ...) -> None: ...
# ignore in dtype() is from the pandas source
@property
def dtype(self) -> np.dtype | DatetimeTZDtype: ... # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
@property
def tz(self): ...
@tz.setter
def tz(self, value) -> None: ...
@property
def tzinfo(self) -> _tzinfo | None: ...
@property
def is_normalized(self): ...
def __iter__(self): ...
def tz_convert(self, tz: TimeZones): ...
def tz_localize(
def __init__(
self,
tz: TimeZones,
ambiguous: TimeAmbiguous = "raise",
nonexistent: TimeNonexistent = "raise",
): ...
def to_pydatetime(self): ...
def normalize(self): ...
def to_period(self, freq=...): ...
def to_perioddelta(self, freq): ...
def month_name(self, locale=...): ...
def day_name(self, locale=...): ...
@property
def time(self): ...
@property
def timetz(self): ...
values: (
Sequence[datetime | np.datetime64]
| np.typing.NDArray[np.datetime64]
| DatetimeIndex
| Series[Timestamp]
| Self
),
dtype: np.dtype | None = None,
copy: bool = False,
) -> None: ...
@property
def date(self): ...
year = ...
month = ...
day = ...
hour = ...
minute = ...
second = ...
microsecond = ...
nanosecond = ...
dayofweek = ...
weekday = ...
dayofyear = ...
quarter = ...
days_in_month = ...
daysinmonth = ...
is_month_start = ...
is_month_end = ...
is_quarter_start = ...
is_quarter_end = ...
is_year_start = ...
is_year_end = ...
is_leap_year = ...
def to_julian_date(self): ...

def objects_to_datetime64ns(
data,
dayfirst,
yearfirst,
utc: bool = ...,
errors: str = ...,
require_iso8601: bool = ...,
allow_object: bool = ...,
): ...
def dtype( # type: ignore[override] # pyright: ignore[reportIncompatibleMethodOverride]
self,
) -> np.dtypes.DateTime64DType: ...
6 changes: 5 additions & 1 deletion pandas-stubs/core/arrays/floating.pyi
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
from pandas.core.arrays.numeric import NumericDtype
from pandas.core.arrays.numeric import (
NumericArray,
NumericDtype,
)

class Float32Dtype(NumericDtype): ...
class Float64Dtype(NumericDtype): ...
class FloatingArray(NumericArray): ...
9 changes: 7 additions & 2 deletions pandas-stubs/core/arrays/integer.pyi
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import numpy as np
from pandas.core.arrays.masked import BaseMaskedArray

from pandas._libs.missing import NAType
Expand All @@ -16,8 +17,12 @@ class _IntegerDtype(ExtensionDtype):
class IntegerArray(BaseMaskedArray):
@property
def dtype(self) -> _IntegerDtype: ...
def __init__(self, values, mask, copy: bool = ...) -> None: ...
def __setitem__(self, key, value) -> None: ...
def __init__(
self,
values: np.typing.NDArray[np.integer],
mask: np.typing.NDArray[np.bool],
copy: bool = False,
) -> None: ...

class Int8Dtype(_IntegerDtype): ...
class Int16Dtype(_IntegerDtype): ...
Expand Down
8 changes: 8 additions & 0 deletions pandas-stubs/core/arrays/numeric.pyi
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
from pandas.core.arrays.masked import BaseMaskedArray

from pandas._libs.properties import cache_readonly

from pandas.core.dtypes.dtypes import BaseMaskedDtype

class NumericDtype(BaseMaskedDtype): ...

class NumericArray(BaseMaskedArray):
@cache_readonly
def dtype(self) -> NumericDtype: ...
Loading