code: def iter_tree(root, on_error=None, follow_links=None):
  	
  	if on_error is not None and not callable(on_error):
  		raise TypeError("on_error:{!r} is not callable.".format(on_error))
  
  	if follow_links is None:
  		follow_links = True
  
  	for file_rel in _iter_tree_next(os.path.abspath(root), '', {}, on_error, follow_links):
  		yield file_rel
docs: Walks the specified directory for all files.
  
  	*root* (:class:`str`) is the root directory to search for files.
  
  	*on_error* (:class:`~collections.abc.Callable` or :data:`None`)
  	optionally is the error handler for file-system exceptions. It will be
  	called with the exception (:exc:`OSError`). Reraise the exception to
  	abort the walk. Default is :data:`None` to ignore file-system
  	exceptions.
  
  	*follow_links* (:class:`bool` or :data:`None`) optionally is whether
  	to walk symbolik links that resolve to directories. Default is
  	:data:`None` for :data:`True`.
  
  	Raises :exc:`RecursionError` if recursion is detected.
  
  	Returns an :class:`~collections.abc.Iterable` yielding the path to
  	each file (:class:`str`) relative to *root*.