diff --git a/lib/matplotlib/dates.py b/lib/matplotlib/dates.py index 023fb16fdfa8..45063b835886 100644 --- a/lib/matplotlib/dates.py +++ b/lib/matplotlib/dates.py @@ -711,6 +711,8 @@ def set(self, **kwargs): self._rrule = rrule(**self._construct) def __getattr__(self, name): + if name in ['__getstate__', '__setstate__']: + return object.__getattr__(self, name) if name in self.__dict__: return self.__dict__[name] return getattr(self._rrule, name) diff --git a/lib/matplotlib/tests/test_pickle.py b/lib/matplotlib/tests/test_pickle.py index 7d43553b8617..52d63c16b19e 100644 --- a/lib/matplotlib/tests/test_pickle.py +++ b/lib/matplotlib/tests/test_pickle.py @@ -11,6 +11,7 @@ import numpy as np from matplotlib.testing.decorators import cleanup, image_comparison +from matplotlib.dates import rrulewrapper import matplotlib.pyplot as plt import matplotlib.transforms as mtransforms @@ -270,6 +271,15 @@ def test_transform(): assert_equal(obj.wrapper.output_dims, obj.composite.output_dims) +def test_rrulewrapper(): + r = rrulewrapper(2) + try: + pickle.loads(pickle.dumps(r)) + except RecursionError: + print('rrulewrapper pickling test failed') + raise + + if __name__ == '__main__': import nose nose.runmodule(argv=['-s'])