code: def __iter__(self):
      if self._cache_complete:
          return iter(self._cache)
      elif self._cache is None:
          return self._iter()
      else:
          return self._iter_cached()
  
imports: import calendar
  import datetime
  import heapq
  import itertools
  import re
  import sys
  from functools import wraps
  from warnings import warn
  from six import advance_iterator, integer_types
  from six.moves import _thread, range
  from ._common import weekday
label_desc: Use image node_id 2 for calling the rrulebase obj's underlying member method code with example usage: obj.__iter__() and returns: iter, self, self