docs: def clear_cache(scope=None):
      """
      Clear all cached data.
  
      Parameters
      ----------
      scope : {None, 'step', 'iteration', 'forever'}, optional
          Clear cached values with a given scope.
          By default all cached values are removed.
  
      """
      if not scope:
          _TABLE_CACHE.clear()
          _COLUMN_CACHE.clear()
          _INJECTABLE_CACHE.clear()
          for m in _MEMOIZED.values():
              m.value.clear_cached()
          logger.debug('pipeline cache cleared')
      else:
          for d in (_TABLE_CACHE, _COLUMN_CACHE, _INJECTABLE_CACHE):
              items = tz.valfilter(lambda x: x.scope == scope, d)
              for k in items:
                  del d[k]
          for m in tz.filter(lambda x: x.scope == scope, _MEMOIZED.values()):
              m.value.clear_cached()
          logger.debug('cleared cached values with scope {!r}'.format(scope))