code: def iter_tree_files(
      root: StrPath,
      on_error: Optional[Callable[[OSError], None]] = None,
      follow_links: Optional[bool] = None,
  ) -> Iterator[str]:
      """
      Walks the specified directory for all files.
  
      *root* (:class:`str` or :class:`os.PathLike`) 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 symbolic links that resolve to directories. Default is
      :data:`None` for :data:`True`.
  
      Raises :exc:`RecursionError` if recursion is detected.
  
      Returns an :class:`~collections.abc.Iterator` yielding the path to
      each file (:class:`str`) relative to *root*.
      """
      for entry in iter_tree_entries(
          root, on_error=on_error, follow_links=follow_links
      ):
          if not entry.is_dir(follow_links):
              yield entry.path
  
imports: import os
  import os.path
  import pathlib
  import posixpath
  import stat
  import sys
  import warnings
  from collections.abc import Collection, Iterable
  from dataclasses import dataclass
  from os import PathLike
  from typing import Any, AnyStr, Callable, Collection, Dict, Generic, Iterable, Iterator, List, Optional, Sequence, Set, Tuple, TypeVar, Union
  from .pattern import Pattern
label_desc: Use image node_id 8 for calling a global function with example usage: iter_tree_files(root, on_error, follow_links) without return types