def dispatch(self, file: File) -> None: FileDispatcher.__LOG.info(f"[DISPATCHING] '{file.filename}'") copied = False # indicates that input file has been copied at least in one destination for rule in self.__rules: if file.match_rule(rule): FileDispatcher.__LOG.debug( f"[COPYING] '{file.filename}' to '{rule.destinations}") file.copy_to(rule.destinations) copied |= len(rule.destinations) > 0 if copied: # if file matches a rule, remove it FileDispatcher.__LOG.debug(f"[REMOVING] '{file.filename}'") file.delete() else: FileDispatcher.__LOG.debug( f"[SKIPPING] '{file.filename}': not match any rule")