1
- from datetime import datetime , time , timedelta
1
+ from datetime import datetime , time , timedelta , tzinfo
2
2
import operator
3
+ from typing import Optional
3
4
import warnings
4
5
5
6
import numpy as np
@@ -66,8 +67,13 @@ class DatetimeDelegateMixin(DatetimelikeDelegateMixin):
66
67
# We also have a few "extra" attrs, which may or may not be raw,
67
68
# which we we dont' want to expose in the .dt accessor.
68
69
_extra_methods = ["to_period" , "to_perioddelta" , "to_julian_date" , "strftime" ]
69
- _extra_raw_methods = ["to_pydatetime" , "_local_timestamps" , "_has_same_tz" ]
70
- _extra_raw_properties = ["_box_func" , "tz" , "tzinfo" ]
70
+ _extra_raw_methods = [
71
+ "to_pydatetime" ,
72
+ "_local_timestamps" ,
73
+ "_has_same_tz" ,
74
+ "_format_native_types" ,
75
+ ]
76
+ _extra_raw_properties = ["_box_func" , "tz" , "tzinfo" , "dtype" ]
71
77
_delegated_properties = DatetimeArray ._datetimelike_ops + _extra_raw_properties
72
78
_delegated_methods = (
73
79
DatetimeArray ._datetimelike_methods + _extra_methods + _extra_raw_methods
@@ -88,7 +94,7 @@ class DatetimeDelegateMixin(DatetimelikeDelegateMixin):
88
94
DatetimeArray ,
89
95
DatetimeDelegateMixin ._delegated_methods ,
90
96
typ = "method" ,
91
- overwrite = False ,
97
+ overwrite = True ,
92
98
)
93
99
class DatetimeIndex (DatetimeTimedeltaMixin , DatetimeDelegateMixin ):
94
100
"""
@@ -197,8 +203,6 @@ class DatetimeIndex(DatetimeTimedeltaMixin, DatetimeDelegateMixin):
197
203
_engine_type = libindex .DatetimeEngine
198
204
_supports_partial_string_indexing = True
199
205
200
- _tz = None
201
- _freq = None
202
206
_comparables = ["name" , "freqstr" , "tz" ]
203
207
_attributes = ["name" , "tz" , "freq" ]
204
208
@@ -214,6 +218,8 @@ class DatetimeIndex(DatetimeTimedeltaMixin, DatetimeDelegateMixin):
214
218
_datetimelike_ops = DatetimeArray ._datetimelike_ops
215
219
_datetimelike_methods = DatetimeArray ._datetimelike_methods
216
220
221
+ tz : Optional [tzinfo ]
222
+
217
223
# --------------------------------------------------------------------
218
224
# Constructors
219
225
@@ -310,25 +316,6 @@ def __array__(self, dtype=None):
310
316
dtype = "M8[ns]"
311
317
return np .asarray (self ._data , dtype = dtype )
312
318
313
- @property
314
- def dtype (self ):
315
- return self ._data .dtype
316
-
317
- @property
318
- def tz (self ):
319
- # GH 18595
320
- return self ._data .tz
321
-
322
- @tz .setter
323
- def tz (self , value ):
324
- # GH 3746: Prevent localizing or converting the index by setting tz
325
- raise AttributeError (
326
- "Cannot directly set timezone. Use tz_localize() "
327
- "or tz_convert() as appropriate"
328
- )
329
-
330
- tzinfo = tz
331
-
332
319
@cache_readonly
333
320
def _is_dates_only (self ) -> bool :
334
321
"""
@@ -401,15 +388,6 @@ def _mpl_repr(self):
401
388
# how to represent ourselves to matplotlib
402
389
return libts .ints_to_pydatetime (self .asi8 , self .tz )
403
390
404
- def _format_native_types (self , na_rep = "NaT" , date_format = None , ** kwargs ):
405
- from pandas .io .formats .format import _get_format_datetime64_from_values
406
-
407
- fmt = _get_format_datetime64_from_values (self , date_format )
408
-
409
- return libts .format_array_from_datetime (
410
- self .asi8 , tz = self .tz , format = fmt , na_rep = na_rep
411
- )
412
-
413
391
@property
414
392
def _formatter_func (self ):
415
393
from pandas .io .formats .format import _get_format_datetime64
@@ -999,10 +977,6 @@ def __getitem__(self, key):
999
977
return result
1000
978
return type (self )(result , name = self .name )
1001
979
1002
- @property
1003
- def _box_func (self ):
1004
- return lambda x : Timestamp (x , tz = self .tz )
1005
-
1006
980
# --------------------------------------------------------------------
1007
981
1008
982
@Substitution (klass = "DatetimeIndex" )
0 commit comments