1212# See the License for the specific language governing permissions and
1313# limitations under the License.
1414
15- from typing import Any , Optional , Sequence
15+ from typing import Optional
1616
1717import numpy
1818import pandas
19- from pandas . _libs import NaT
19+ from pandas import NaT
2020import pandas .api .extensions
21- import pandas .compat .numpy .function
22- import pandas .core .algorithms
23- import pandas .core .arrays
24- import pandas .core .dtypes .base
25- from pandas .core .dtypes .common import is_dtype_equal , is_list_like , pandas_dtype
26- import pandas .core .dtypes .dtypes
27- import pandas .core .dtypes .generic
28- import pandas .core .nanops
21+ from pandas .api .types import is_dtype_equal , is_list_like , pandas_dtype
2922
3023from db_dtypes import pandas_backports
3124
@@ -107,42 +100,11 @@ def isna(self):
107100 return pandas .isna (self ._ndarray )
108101
109102 def _validate_scalar (self , value ):
110- if pandas .isna (value ):
111- return None
112-
113- if not isinstance (value , self .dtype .type ):
114- raise ValueError (value )
115-
116- return value
117-
118- def take (
119- self ,
120- indices : Sequence [int ],
121- * ,
122- allow_fill : bool = False ,
123- fill_value : Any = None ,
124- ):
125- indices = numpy .asarray (indices , dtype = numpy .intp )
126- data = self ._ndarray
127- if allow_fill :
128- fill_value = self ._validate_scalar (fill_value )
129- fill_value = (
130- numpy .datetime64 () if fill_value is None else self ._datetime (fill_value )
131- )
132- if (indices < - 1 ).any ():
133- raise ValueError (
134- "take called with negative indexes other than -1,"
135- " when a fill value is provided."
136- )
137- out = data .take (indices )
138- if allow_fill :
139- out [indices == - 1 ] = fill_value
140-
141- return self .__class__ (out )
142-
143- # TODO: provide implementations of dropna, fillna, unique,
144- # factorize, argsort, searchsoeted for better performance over
145- # abstract implementations.
103+ """
104+ Validate and convert a scalar value to datetime64[ns] for storage in
105+ backing NumPy array.
106+ """
107+ return self ._datetime (value )
146108
147109 def any (
148110 self ,
@@ -152,10 +114,8 @@ def any(
152114 keepdims : bool = False ,
153115 skipna : bool = True ,
154116 ):
155- pandas .compat .numpy .function .validate_any (
156- (), {"out" : out , "keepdims" : keepdims }
157- )
158- result = pandas .core .nanops .nanany (self ._ndarray , axis = axis , skipna = skipna )
117+ pandas_backports .numpy_validate_any ((), {"out" : out , "keepdims" : keepdims })
118+ result = pandas_backports .nanany (self ._ndarray , axis = axis , skipna = skipna )
159119 return result
160120
161121 def all (
@@ -166,22 +126,20 @@ def all(
166126 keepdims : bool = False ,
167127 skipna : bool = True ,
168128 ):
169- pandas .compat .numpy .function .validate_all (
170- (), {"out" : out , "keepdims" : keepdims }
171- )
172- result = pandas .core .nanops .nanall (self ._ndarray , axis = axis , skipna = skipna )
129+ pandas_backports .numpy_validate_all ((), {"out" : out , "keepdims" : keepdims })
130+ result = pandas_backports .nanall (self ._ndarray , axis = axis , skipna = skipna )
173131 return result
174132
175133 def min (self , * , axis : Optional [int ] = None , skipna : bool = True , ** kwargs ):
176- pandas . compat . numpy . function . validate_min ((), kwargs )
177- result = pandas . core . nanops .nanmin (
134+ pandas_backports . numpy_validate_min ((), kwargs )
135+ result = pandas_backports .nanmin (
178136 values = self ._ndarray , axis = axis , mask = self .isna (), skipna = skipna
179137 )
180138 return self ._box_func (result )
181139
182140 def max (self , * , axis : Optional [int ] = None , skipna : bool = True , ** kwargs ):
183- pandas . compat . numpy . function . validate_max ((), kwargs )
184- result = pandas . core . nanops .nanmax (
141+ pandas_backports . numpy_validate_max ((), kwargs )
142+ result = pandas_backports .nanmax (
185143 values = self ._ndarray , axis = axis , mask = self .isna (), skipna = skipna
186144 )
187145 return self ._box_func (result )
@@ -197,11 +155,9 @@ def median(
197155 keepdims : bool = False ,
198156 skipna : bool = True ,
199157 ):
200- pandas . compat . numpy . function . validate_median (
158+ pandas_backports . numpy_validate_median (
201159 (),
202160 {"out" : out , "overwrite_input" : overwrite_input , "keepdims" : keepdims },
203161 )
204- result = pandas .core .nanops .nanmedian (
205- self ._ndarray , axis = axis , skipna = skipna
206- )
162+ result = pandas_backports .nanmedian (self ._ndarray , axis = axis , skipna = skipna )
207163 return self ._box_func (result )
0 commit comments