xref #8293

The code has evolved quite a bit and could probably benefit from refactoring.

In particular warpping the busdaycalendar logic in a wrapper class could make the code easier.

Notes about the current implementation: - CustomBusinessDay uses np.busdaycalendar to do the computations. - To speed up creation of new CustomBusinessDay offsets the calendar is cached in kwds. - To check equality of two CustomBusinessDay instances, the attributes holidays and weekdays are used. - remove EXPERIMENTAL (in docs, but check off in the experimental issue #5049) - might be some docs that say requires numpy >= 1.7 (but now all of pandas on that, so can cleanup)

Comment From: bjonen

From the previous discussion Quoting @jreback

hmm sounds like we really should have is a wrapper object 
around np.busycalensar that is more friendly 
(and does these types of validations) and can cache itself too -
this is pretty straightforward btw

just a

class Calendar(object):

holds the actual np.busycalendar
and weekmask/holidays

Comment From: jreback

@bjonen if you want to do a PR for the last point up their (any numpy 1.7 references in docs ok by me)

Comment From: TomAugspurger

There's been a decent amount of work on offsets recently. It's not immediately clear which of the original items are still issues. If we have specific snippets / tests for any remaining items we can reopen / open new issues.