@@ -2,38 +2,59 @@ from collections.abc import (
22 MutableSequence ,
33 Sequence ,
44)
5- from datetime import datetime
5+ from datetime import (
6+ datetime ,
7+ timedelta ,
8+ )
9+ import sys
610from typing import (
711 Any ,
812 TypeAlias ,
913 overload ,
1014)
1115
1216import numpy as np
17+ from pandas .core .arrays .base import ExtensionArray
1318from pandas .core .arrays .boolean import BooleanArray
19+ from pandas .core .arrays .categorical import Categorical
1420from pandas .core .arrays .datetimes import DatetimeArray
1521from pandas .core .arrays .floating import FloatingArray
1622from pandas .core .arrays .integer import IntegerArray
23+ from pandas .core .arrays .interval import IntervalArray
1724from pandas .core .arrays .numpy_ import NumpyExtensionArray
25+ from pandas .core .arrays .period import PeriodArray
26+ from pandas .core .arrays .sparse .array import SparseArray
1827from pandas .core .arrays .string_ import (
1928 BaseStringArray ,
2029 StringArray ,
2130 StringDtype ,
2231)
2332from pandas .core .arrays .string_arrow import ArrowStringArray
2433from pandas .core .arrays .timedeltas import TimedeltaArray
34+ from pandas .core .indexes .base import Index
35+ from pandas .core .indexes .category import CategoricalIndex
36+ from pandas .core .indexes .datetimes import DatetimeIndex
37+ from pandas .core .indexes .interval import IntervalIndex
38+ from pandas .core .indexes .period import PeriodIndex
2539from pandas .core .indexes .range import RangeIndex
2640from pandas .core .indexes .timedeltas import TimedeltaIndex
2741from pandas .core .series import Series
2842from typing_extensions import Never
2943
44+ from pandas ._libs .interval import Interval
3045from pandas ._libs .missing import NAType
46+ from pandas ._libs .sparse import SparseIndex
3147from pandas ._libs .tslibs .nattype import NaTType
48+ from pandas ._libs .tslibs .period import Period
3249from pandas ._libs .tslibs .timedeltas import Timedelta
50+ from pandas ._libs .tslibs .timestamps import Timestamp
3351from pandas ._typing import (
3452 BuiltinNotStrDtypeArg ,
53+ CategoryDtypeArg ,
54+ IntervalT ,
3555 Just ,
3656 NumpyNotTimeDtypeArg ,
57+ NumpyTimedeltaDtypeArg ,
3758 NumpyTimestampDtypeArg ,
3859 PandasBaseStrDtypeArg ,
3960 PandasBooleanDtypeArg ,
@@ -51,9 +72,15 @@ from pandas._typing import (
5172 np_ndarray_dt ,
5273 np_ndarray_float ,
5374 np_ndarray_str ,
75+ np_ndarray_td ,
5476)
5577
56- from pandas .core .dtypes .dtypes import DatetimeTZDtype
78+ from pandas .core .dtypes .base import ExtensionDtype
79+ from pandas .core .dtypes .dtypes import (
80+ DatetimeTZDtype ,
81+ IntervalDtype ,
82+ PeriodDtype ,
83+ )
5784
5885_NAStrElement : TypeAlias = str | np .str_ | NAType | None
5986_NaNStrElement : TypeAlias = Just [float ] | _NAStrElement
@@ -85,6 +112,51 @@ def array( # type: ignore[overload-overlap] # pyright: ignore[reportOverlapping
85112 dtype : BuiltinNotStrDtypeArg | NumpyNotTimeDtypeArg | None = None ,
86113 copy : bool = True ,
87114) -> NumpyExtensionArray : ...
115+ @overload
116+ def array ( # type: ignore[overload-overlap]
117+ data : MutableSequence [Any ] | np_ndarray | ExtensionArray | Index | Series ,
118+ dtype : CategoryDtypeArg ,
119+ copy : bool = True ,
120+ ) -> Categorical : ...
121+ @overload
122+ def array (
123+ # TODO: Categorical Series pandas-dev/pandas-stubs#1415
124+ data : Categorical | CategoricalIndex ,
125+ dtype : CategoryDtypeArg | None = None ,
126+ copy : bool = True ,
127+ ) -> Categorical : ...
128+ @overload
129+ def array ( # type: ignore[overload-overlap]
130+ data : (
131+ Sequence [Period | NaTType | None ] | PeriodArray | PeriodIndex | Series [Period ]
132+ ),
133+ dtype : PeriodDtype | None = None ,
134+ copy : bool = True ,
135+ ) -> PeriodArray : ...
136+ @overload
137+ def array ( # type: ignore[overload-overlap]
138+ # float("nan") also works, but I don't know how to put it in
139+ data : Sequence [IntervalT | None ] | IntervalArray | IntervalIndex | Series [Interval ],
140+ dtype : IntervalDtype | None = None ,
141+ copy : bool = True ,
142+ ) -> IntervalArray : ...
143+
144+ if sys .version_info >= (3 , 11 ):
145+ @overload
146+ def array (
147+ data : SparseArray | SparseIndex ,
148+ dtype : str | np .dtype | ExtensionDtype | None = None ,
149+ copy : bool = True ,
150+ ) -> SparseArray : ...
151+
152+ else :
153+ @overload
154+ def array (
155+ data : SparseArray | SparseIndex ,
156+ dtype : str | np .dtype [Any ] | ExtensionDtype | None = None ,
157+ copy : bool = True ,
158+ ) -> SparseArray : ...
159+
88160@overload
89161def array ( # pyright: ignore[reportOverlappingOverload]
90162 data : (
@@ -169,6 +241,31 @@ def array( # type: ignore[overload-overlap]
169241 copy : bool = True ,
170242) -> DatetimeArray : ...
171243@overload
244+ def array ( # type: ignore[overload-overlap]
245+ data : ( # TODO: merge the two Sequence's after 3.0 pandas-dev/pandas#57064
246+ Sequence [datetime | NaTType | None ]
247+ | Sequence [np .datetime64 | NaTType | None ]
248+ | np_ndarray_dt
249+ | DatetimeArray
250+ | DatetimeIndex
251+ | Series [Timestamp ]
252+ ),
253+ dtype : PandasTimestampDtypeArg | NumpyTimestampDtypeArg | None = None ,
254+ copy : bool = True ,
255+ ) -> DatetimeArray : ...
256+ @overload
257+ def array ( # type: ignore[overload-overlap]
258+ data : (
259+ Sequence [timedelta | np .timedelta64 | NaTType | None ]
260+ | np_ndarray_td
261+ | TimedeltaArray
262+ | TimedeltaIndex
263+ | Series [Timedelta ]
264+ ),
265+ dtype : NumpyTimedeltaDtypeArg | None = None ,
266+ copy : bool = True ,
267+ ) -> TimedeltaArray : ...
268+ @overload
172269def array ( # type: ignore[overload-overlap]
173270 data : _NaNStrData , dtype : StringDtype [Never ], copy : bool = True
174271) -> BaseStringArray : ...
0 commit comments