@@ -182,30 +182,25 @@ def __neg__(self):
182
182
183
183
def rollback (self , dt ):
184
184
"""Roll provided date backward to next offset only if not on offset"""
185
- try :
186
- if not self .onOffset (dt ):
187
- dt = dt - self .__class__ (1 , ** self .kwds )
188
- return dt
189
- except Exception :
190
- if isinstance (dt , date ):
191
- return self .rollback (datetime (dt .year , dt .month , dt .day ))
192
- else :
193
- raise
185
+ if type (dt ) == date :
186
+ dt = datetime (dt .year , dt .month , dt .day )
187
+
188
+ if not self .onOffset (dt ):
189
+ dt = dt - self .__class__ (1 , ** self .kwds )
190
+ return dt
194
191
195
192
def rollforward (self , dt ):
196
193
"""Roll provided date forward to next offset only if not on offset"""
197
- try :
198
- if not self .onOffset (dt ):
199
- dt = dt + self .__class__ (1 , ** self .kwds )
200
- return dt
201
- except Exception :
202
- if isinstance (dt , date ):
203
- return self .rollforward (datetime (dt .year , dt .month , dt .day ))
204
- else :
205
- raise
194
+ if type (dt ) == date :
195
+ dt = datetime (dt .year , dt .month , dt .day )
196
+
197
+ if not self .onOffset (dt ):
198
+ dt = dt + self .__class__ (1 , ** self .kwds )
199
+ return dt
206
200
207
201
def onOffset (self , dt ):
208
- if type (self ) == DateOffset :
202
+ # XXX, see #1395
203
+ if type (self ) == DateOffset or isinstance (self , Tick ):
209
204
return True
210
205
211
206
# Default (slow) method for determining if some date is a member of the
@@ -1033,10 +1028,15 @@ def nanos(self):
1033
1028
return _delta_to_nanoseconds (self .delta )
1034
1029
1035
1030
def apply (self , other ):
1031
+ if type (other ) == date :
1032
+ other = datetime (other .year , other .month , other .day )
1033
+
1036
1034
if isinstance (other , (datetime , timedelta )):
1037
1035
return other + self .delta
1038
1036
elif isinstance (other , type (self )):
1039
1037
return type (self )(self .n + other .n )
1038
+ else : # pragma: no cover
1039
+ raise TypeError ('Unhandled type: %s' % type (other ))
1040
1040
1041
1041
_rule_base = 'undefined'
1042
1042
@property
0 commit comments