1- from datetime import datetime , time , timedelta
1+ from datetime import datetime , time , timedelta , tzinfo
22import operator
3+ from typing import Optional
34import warnings
45
56import numpy as np
@@ -66,8 +67,13 @@ class DatetimeDelegateMixin(DatetimelikeDelegateMixin):
6667 # We also have a few "extra" attrs, which may or may not be raw,
6768 # which we we dont' want to expose in the .dt accessor.
6869 _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" ]
7177 _delegated_properties = DatetimeArray ._datetimelike_ops + _extra_raw_properties
7278 _delegated_methods = (
7379 DatetimeArray ._datetimelike_methods + _extra_methods + _extra_raw_methods
@@ -88,7 +94,7 @@ class DatetimeDelegateMixin(DatetimelikeDelegateMixin):
8894 DatetimeArray ,
8995 DatetimeDelegateMixin ._delegated_methods ,
9096 typ = "method" ,
91- overwrite = False ,
97+ overwrite = True ,
9298)
9399class DatetimeIndex (DatetimeTimedeltaMixin , DatetimeDelegateMixin ):
94100 """
@@ -197,8 +203,6 @@ class DatetimeIndex(DatetimeTimedeltaMixin, DatetimeDelegateMixin):
197203 _engine_type = libindex .DatetimeEngine
198204 _supports_partial_string_indexing = True
199205
200- _tz = None
201- _freq = None
202206 _comparables = ["name" , "freqstr" , "tz" ]
203207 _attributes = ["name" , "tz" , "freq" ]
204208
@@ -214,6 +218,8 @@ class DatetimeIndex(DatetimeTimedeltaMixin, DatetimeDelegateMixin):
214218 _datetimelike_ops = DatetimeArray ._datetimelike_ops
215219 _datetimelike_methods = DatetimeArray ._datetimelike_methods
216220
221+ tz : Optional [tzinfo ]
222+
217223 # --------------------------------------------------------------------
218224 # Constructors
219225
@@ -310,25 +316,6 @@ def __array__(self, dtype=None):
310316 dtype = "M8[ns]"
311317 return np .asarray (self ._data , dtype = dtype )
312318
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-
332319 @cache_readonly
333320 def _is_dates_only (self ) -> bool :
334321 """
@@ -401,15 +388,6 @@ def _mpl_repr(self):
401388 # how to represent ourselves to matplotlib
402389 return libts .ints_to_pydatetime (self .asi8 , self .tz )
403390
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-
413391 @property
414392 def _formatter_func (self ):
415393 from pandas .io .formats .format import _get_format_datetime64
@@ -999,10 +977,6 @@ def __getitem__(self, key):
999977 return result
1000978 return type (self )(result , name = self .name )
1001979
1002- @property
1003- def _box_func (self ):
1004- return lambda x : Timestamp (x , tz = self .tz )
1005-
1006980 # --------------------------------------------------------------------
1007981
1008982 @Substitution (klass = "DatetimeIndex" )
0 commit comments