code: def _scan(
          self,
          fs,  # type: FS
          dir_path,  # type: Text
          namespaces=None,  # type: Optional[Collection[Text]]
      ):
          # type: (...) -> Iterator[Info]
          
          try:
              for info in fs.scandir(dir_path, namespaces=namespaces):
                  yield info
          except FSError as error:
              if not self.on_error(dir_path, error):
                  six.reraise(type(error), error)
docs: Get an iterator of `Info` objects for a directory path.
  
          Arguments:
              fs (FS): A filesystem instance.
              dir_path (str): A path to a directory on the filesystem.
              namespaces (list): A list of additional namespaces to
                  include in the `Info` objects.
  
          Returns:
              ~collections.Iterator: iterator of `Info` objects for
              resources within the given path.