def from_test_repr(file_test_repr, base_path=None): assert is_arrayish(file_test_repr) assert len(file_test_repr) >= 2 file_type, old_path, *remainder = file_test_repr old_file_ref = FileReference( BAONPath.from_test_repr(base_path, old_path), file_type == 'DIR', ) new_path = old_path override = False if len(remainder) > 0 and remainder[-1] == 'OVERRIDE': remainder = remainder[:-1] override = True if len(remainder) > 0 and not is_arrayish(remainder[0]): new_path, *remainder = remainder return RenamedFileReference( old_file_ref, BAONPath.from_test_repr(base_path, new_path), [BAONError.from_test_repr(error_repr) for error_repr in remainder], override, )
def convert_raw_overrides(raw_overrides, base_path): """Converts a dict of str->str to a dict of BAONPath->BAONPath""" return { BAONPath.from_path_text(base_path, path_from): BAONPath.from_path_text(base_path, path_to) for path_from, path_to in raw_overrides.items() }
def _check_renamed_files_list(self): BAONPath.assert_all_compatible(*(renamed_fref.path for renamed_fref in self.renamed_files)) if any(renamed_fref.has_errors() for renamed_fref in self.renamed_files): raise RenamedFilesListHasErrorsError() self._check_case_sensitive_sources_destinations() if self.case_insensitive_filesystem: self._check_case_insensitive_sources_destinations()
def from_test_repr(file_test_repr, base_path=None): assert is_arrayish(file_test_repr) assert len(file_test_repr) >= 2 file_type, path, *errors = file_test_repr assert file_type in ['FILE', 'DIR'] file_ref = FileReference( BAONPath.from_test_repr(base_path, path), file_type == 'DIR', problems=[BAONError.from_test_repr(error_repr) for error_repr in errors], ) return file_ref