12
12
# See the License for the specific language governing permissions and
13
13
# limitations under the License.
14
14
15
- from typing import Any , Optional , Sequence
15
+ from typing import Optional
16
16
17
17
import numpy
18
18
import pandas
19
- from pandas . _libs import NaT
19
+ from pandas import NaT
20
20
import 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
29
22
30
23
from db_dtypes import pandas_backports
31
24
@@ -107,42 +100,11 @@ def isna(self):
107
100
return pandas .isna (self ._ndarray )
108
101
109
102
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 )
146
108
147
109
def any (
148
110
self ,
@@ -152,10 +114,8 @@ def any(
152
114
keepdims : bool = False ,
153
115
skipna : bool = True ,
154
116
):
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 )
159
119
return result
160
120
161
121
def all (
@@ -166,22 +126,20 @@ def all(
166
126
keepdims : bool = False ,
167
127
skipna : bool = True ,
168
128
):
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 )
173
131
return result
174
132
175
133
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 (
178
136
values = self ._ndarray , axis = axis , mask = self .isna (), skipna = skipna
179
137
)
180
138
return self ._box_func (result )
181
139
182
140
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 (
185
143
values = self ._ndarray , axis = axis , mask = self .isna (), skipna = skipna
186
144
)
187
145
return self ._box_func (result )
@@ -197,11 +155,9 @@ def median(
197
155
keepdims : bool = False ,
198
156
skipna : bool = True ,
199
157
):
200
- pandas . compat . numpy . function . validate_median (
158
+ pandas_backports . numpy_validate_median (
201
159
(),
202
160
{"out" : out , "overwrite_input" : overwrite_input , "keepdims" : keepdims },
203
161
)
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 )
207
163
return self ._box_func (result )
0 commit comments