1
1
from datetime import timedelta
2
- from typing import List , Union
2
+ from typing import List , Optional , Union
3
3
4
4
import numpy as np
5
5
6
6
from pandas ._libs import lib , tslibs
7
7
from pandas ._libs .tslibs import (
8
+ BaseOffset ,
8
9
NaT ,
9
10
NaTType ,
10
11
Period ,
45
46
from pandas .core .ops .common import unpack_zerodim_and_defer
46
47
47
48
48
- def _field_accessor (name , alias , docstring = None ):
49
- def f (self ):
49
+ def _field_accessor (name : str , alias : str , docstring : str ):
50
+ def f (self ) -> np . ndarray :
50
51
values = self .asi8
51
52
result = get_timedelta_field (values , alias )
52
53
if self ._hasnans :
@@ -121,7 +122,7 @@ def _box_func(self, x) -> Union[Timedelta, NaTType]:
121
122
return Timedelta (x , unit = "ns" )
122
123
123
124
@property
124
- def dtype (self ):
125
+ def dtype (self ) -> np . dtype :
125
126
"""
126
127
The dtype for the TimedeltaArray.
127
128
@@ -196,7 +197,9 @@ def __init__(self, values, dtype=TD64NS_DTYPE, freq=lib.no_default, copy=False):
196
197
type (self )._validate_frequency (self , freq )
197
198
198
199
@classmethod
199
- def _simple_new (cls , values , freq = None , dtype = TD64NS_DTYPE ):
200
+ def _simple_new (
201
+ cls , values , freq : Optional [BaseOffset ] = None , dtype = TD64NS_DTYPE
202
+ ) -> "TimedeltaArray" :
200
203
assert dtype == TD64NS_DTYPE , dtype
201
204
assert isinstance (values , np .ndarray ), type (values )
202
205
if values .dtype != TD64NS_DTYPE :
@@ -211,8 +214,13 @@ def _simple_new(cls, values, freq=None, dtype=TD64NS_DTYPE):
211
214
212
215
@classmethod
213
216
def _from_sequence (
214
- cls , data , dtype = TD64NS_DTYPE , copy = False , freq = lib .no_default , unit = None
215
- ):
217
+ cls ,
218
+ data ,
219
+ dtype = TD64NS_DTYPE ,
220
+ copy : bool = False ,
221
+ freq = lib .no_default ,
222
+ unit = None ,
223
+ ) -> "TimedeltaArray" :
216
224
if dtype :
217
225
_validate_td64_dtype (dtype )
218
226
@@ -240,7 +248,9 @@ def _from_sequence(
240
248
return result
241
249
242
250
@classmethod
243
- def _generate_range (cls , start , end , periods , freq , closed = None ):
251
+ def _generate_range (
252
+ cls , start , end , periods , freq , closed = None
253
+ ) -> "TimedeltaArray" :
244
254
245
255
periods = dtl .validate_periods (periods )
246
256
if freq is None and any (x is None for x in [periods , start , end ]):
@@ -298,7 +308,7 @@ def _maybe_clear_freq(self):
298
308
# ----------------------------------------------------------------
299
309
# Array-Like / EA-Interface Methods
300
310
301
- def astype (self , dtype , copy = True ):
311
+ def astype (self , dtype , copy : bool = True ):
302
312
# We handle
303
313
# --> timedelta64[ns]
304
314
# --> timedelta64
@@ -461,7 +471,7 @@ def _addsub_object_array(self, other, op):
461
471
) from err
462
472
463
473
@unpack_zerodim_and_defer ("__mul__" )
464
- def __mul__ (self , other ):
474
+ def __mul__ (self , other ) -> "TimedeltaArray" :
465
475
if is_scalar (other ):
466
476
# numpy will accept float and int, raise TypeError for others
467
477
result = self ._data * other
@@ -737,22 +747,22 @@ def __rdivmod__(self, other):
737
747
res2 = other - res1 * self
738
748
return res1 , res2
739
749
740
- def __neg__ (self ):
750
+ def __neg__ (self ) -> "TimedeltaArray" :
741
751
if self .freq is not None :
742
752
return type (self )(- self ._data , freq = - self .freq )
743
753
return type (self )(- self ._data )
744
754
745
- def __pos__ (self ):
755
+ def __pos__ (self ) -> "TimedeltaArray" :
746
756
return type (self )(self ._data , freq = self .freq )
747
757
748
- def __abs__ (self ):
758
+ def __abs__ (self ) -> "TimedeltaArray" :
749
759
# Note: freq is not preserved
750
760
return type (self )(np .abs (self ._data ))
751
761
752
762
# ----------------------------------------------------------------
753
763
# Conversion Methods - Vectorized analogues of Timedelta methods
754
764
755
- def total_seconds (self ):
765
+ def total_seconds (self ) -> np . ndarray :
756
766
"""
757
767
Return total duration of each element expressed in seconds.
758
768
0 commit comments