def process_dir(self, base_dir, dir_path, callback, read_metadata, inherited_metadata=None): if read_metadata: dir_metadata = deepcopy(inherited_metadata) dir_metadata.update(read_dir_metadata(dir_path)) else: dir_metadata = None for filename in os.listdir(dir_path): path = os.path.join(dir_path, filename) relative_path = path[len(base_dir) + 1:] if self.ignore_file(relative_path): self.logger.debug('Ignoring "%s".', path) continue if os.path.isdir(path): if not self._do_nothing: out_dir_path = os.path.join(self._out_dir, relative_path) if not os.path.exists(out_dir_path): os.mkdir(out_dir_path) self.process_dir(base_dir, path, callback, read_metadata, dir_metadata) else: callback(path, relative_path, dir_metadata)
def _call_fut(self, path): from soho.utils import read_dir_metadata return read_dir_metadata(path)