@@ -201,16 +201,6 @@ def __unicode__(self):
201
201
return "%s(%s, dtype='%s')" % (type (self ).__name__ , prepr , self .dtype )
202
202
203
203
204
- # facilitate the properties on the wrapped ops
205
- def _field_accessor (name , docstring = None ):
206
- op_accessor = '_{0}' .format (name )
207
- def f (self ):
208
- return self ._ops_compat (name ,op_accessor )
209
-
210
- f .__name__ = name
211
- f .__doc__ = docstring
212
- return property (f )
213
-
214
204
class IndexOpsMixin (object ):
215
205
""" common ops mixin to support a unified inteface / docs for Series / Index """
216
206
@@ -219,24 +209,9 @@ def _is_allowed_index_op(self, name):
219
209
raise TypeError ("cannot perform an {name} operations on this type {typ}" .format (
220
210
name = name ,typ = type (self ._get_access_object ())))
221
211
222
- def _is_allowed_datetime_index_op (self , name ):
223
- if not self ._allow_datetime_index_ops :
224
- raise TypeError ("cannot perform an {name} operations on this type {typ}" .format (
225
- name = name ,typ = type (self ._get_access_object ())))
226
-
227
- def _is_allowed_period_index_op (self , name ):
228
- if not self ._allow_period_index_ops :
229
- raise TypeError ("cannot perform an {name} operations on this type {typ}" .format (
230
- name = name ,typ = type (self ._get_access_object ())))
231
-
232
212
def _ops_compat (self , name , op_accessor ):
233
- from pandas .tseries .index import DatetimeIndex
234
- from pandas .tseries .period import PeriodIndex
213
+
235
214
obj = self ._get_access_object ()
236
- if isinstance (obj , DatetimeIndex ):
237
- self ._is_allowed_datetime_index_op (name )
238
- elif isinstance (obj , PeriodIndex ):
239
- self ._is_allowed_period_index_op (name )
240
215
try :
241
216
return self ._wrap_access_object (getattr (obj ,op_accessor ))
242
217
except AttributeError :
@@ -336,6 +311,44 @@ def factorize(self, sort=False, na_sentinel=-1):
336
311
from pandas .core .algorithms import factorize
337
312
return factorize (self , sort = sort , na_sentinel = na_sentinel )
338
313
314
+ # facilitate the properties on the wrapped ops
315
+ def _field_accessor (name , docstring = None ):
316
+ op_accessor = '_{0}' .format (name )
317
+ def f (self ):
318
+ return self ._ops_compat (name ,op_accessor )
319
+
320
+ f .__name__ = name
321
+ f .__doc__ = docstring
322
+ return property (f )
323
+
324
+ class DatetimeIndexOpsMixin (object ):
325
+ """ common ops mixin to support a unified inteface datetimelike Index """
326
+
327
+ def _is_allowed_datetime_index_op (self , name ):
328
+ if not self ._allow_datetime_index_ops :
329
+ raise TypeError ("cannot perform an {name} operations on this type {typ}" .format (
330
+ name = name ,typ = type (self ._get_access_object ())))
331
+
332
+ def _is_allowed_period_index_op (self , name ):
333
+ if not self ._allow_period_index_ops :
334
+ raise TypeError ("cannot perform an {name} operations on this type {typ}" .format (
335
+ name = name ,typ = type (self ._get_access_object ())))
336
+
337
+ def _ops_compat (self , name , op_accessor ):
338
+
339
+ from pandas .tseries .index import DatetimeIndex
340
+ from pandas .tseries .period import PeriodIndex
341
+ obj = self ._get_access_object ()
342
+ if isinstance (obj , DatetimeIndex ):
343
+ self ._is_allowed_datetime_index_op (name )
344
+ elif isinstance (obj , PeriodIndex ):
345
+ self ._is_allowed_period_index_op (name )
346
+ try :
347
+ return self ._wrap_access_object (getattr (obj ,op_accessor ))
348
+ except AttributeError :
349
+ raise TypeError ("cannot perform an {name} operations on this type {typ}" .format (
350
+ name = name ,typ = type (obj )))
351
+
339
352
date = _field_accessor ('date' ,'Returns numpy array of datetime.date. The date part of the Timestamps' )
340
353
time = _field_accessor ('time' ,'Returns numpy array of datetime.time. The time part of the Timestamps' )
341
354
year = _field_accessor ('year' , "The year of the datetime" )
0 commit comments