code: def expand_paths(path, only_python=True):
      # type: (Union[Sequence, PathEntry], bool) -> Iterator
      
  
      if path is not None and (
          isinstance(path, Sequence)
          and not getattr(path.__class__, "__name__", "") == "PathEntry"
      ):
          for p in unnest(path):
              if p is None:
                  continue
              for expanded in itertools.chain.from_iterable(
                  expand_paths(p, only_python=only_python)
              ):
                  yield expanded
      elif path is not None and path.is_dir:
          for p in path.children.values():
              if p is not None and p.is_python and p.as_python is not None:
                  for sub_path in itertools.chain.from_iterable(
                      expand_paths(p, only_python=only_python)
                  ):
                      yield sub_path
      else:
          if path is not None and path.is_python and path.as_python is not None:
              yield path
docs: Recursively expand a list or :class:`~pythonfinder.models.path.PathEntry` instance
  
      :param Union[Sequence, PathEntry] path: The path or list of paths to expand
      :param bool only_python: Whether to filter to include only python paths, default True
      :returns: An iterator over the expanded set of path entries
      :rtype: Iterator[PathEntry]