I'm not necessarily against your suggestion, but as for using mixing I was
following what had been done with CacheableOffset.

On Sunday, October 27, 2013, Jeff Tratner wrote:

> In pandas/tseries/offsets.py:
>
> > @@ -31,6 +31,16 @@ class ApplyTypeError(TypeError):
> >  class CacheableOffset(object):
> >      _cacheable = True
> >
> > +class _NonCythonPeriod(object):
> > +    def period_format(self, ordinal, fmt=None):
> > +        raise NotImplementedError("period_format")
> > +
> > +    def get_period_ordinal(self, dt):
> > +        raise NotImplementedError("get_period_ordinal")
> > +
> > +    def dt64arr_to_periodarr(self, data, tz):
>
> I guess, but I'd prefer to have a single interface for DateOffsets. If
> having flexibility with offsets means moving some of it out of the Cython
> code and into methods that's fine, but then you need to do it for all of
> them. I'd probably prefer you have:
>
> class CythonizedOffset(DateOffset):
>
> that has those offset methods with tslib as described and then DateOffset
> have those as notimplemented, then change all the existing offsets (except,
> I guess 52-53 week) to inherit from CythonizedOffset instead.
>
> —
> Reply to this email directly or view it on GitHub<https://github.com/pydata/pandas/pull/5148/files#r7238599>
> .
>