def remove_model(self, model_uuid: str) -> dict: """Delete the model from the registry. Call `upload()` to update the remote side.""" model_type = None for key, val in self.models.items(): if model_uuid in val: self._log.info("Found %s among %s models.", model_uuid, key) model_type = key break if model_type is None: self._log.error("Model not found, aborted.") raise ValueError model_directory = os.path.join(self.cached_repo, model_type) model_node = self.models[model_type] meta_node = self.meta[model_type] if len(model_node) == 1: self.models.pop(model_type) self.meta.pop(model_type) paths = [ os.path.join(model_directory, model) for model in os.listdir(model_directory) ] else: if meta_node["default"] == model_uuid: self._log.info( "Model is set as default, removing from index ...") meta_node["default"] = "" model_node.pop(model_uuid) paths = [os.path.join(model_directory, model_uuid + ".md")] git.remove(self.cached_repo, paths) return {"model": model_type, "uuid": model_uuid}
def test_get_tree_changes_delete(self): """Unit test for get_tree_changes delete.""" # Make a dummy file, stage, commit, remove filename = 'foo' fullpath = os.path.join(self.repo.path, filename) with open(fullpath, 'w') as f: f.write('stuff') porcelain.add(repo=self.repo.path, paths=fullpath) porcelain.commit(repo=self.repo.path, message=b'test status', author=b'author <email>', committer=b'committer <email>') cwd = os.getcwd() try: os.chdir(self.repo.path) porcelain.remove(repo=self.repo.path, paths=[filename]) finally: os.chdir(cwd) changes = porcelain.get_tree_changes(self.repo.path) self.assertEqual(changes['delete'][0], filename.encode('ascii')) self.assertEqual(len(changes['add']), 0) self.assertEqual(len(changes['modify']), 0) self.assertEqual(len(changes['delete']), 1)
def reset(self): paths = [] for filename in os.listdir(self.cached_repo): if filename.startswith(".git"): continue path = os.path.join(self.cached_repo, filename) if os.path.isfile(path): paths.append(path) elif os.path.isdir(path): for model in os.listdir(path): paths.append(os.path.join(path, model)) git.remove(self.cached_repo, paths) self.contents = {"models": {}, "meta": {}}
def test_remove_file(self): fullpath = os.path.join(self.repo.path, 'foo') with open(fullpath, 'w') as f: f.write("BAR") porcelain.add(self.repo.path, paths=[fullpath]) porcelain.commit(repo=self.repo, message=b'test', author=b'test <email>', committer=b'test <email>') self.assertTrue(os.path.exists(os.path.join(self.repo.path, 'foo'))) cwd = os.getcwd() try: os.chdir(self.repo.path) porcelain.remove(self.repo.path, paths=["foo"]) finally: os.chdir(cwd) self.assertFalse(os.path.exists(os.path.join(self.repo.path, 'foo')))
def test_remove_file(self): fullpath = os.path.join(self.repo.path, 'foo') with open(fullpath, 'w') as f: f.write("BAR") porcelain.add(self.repo.path, paths=[fullpath]) porcelain.commit(repo=self.repo, message=b'test', author=b'test <email>', committer=b'test <email>') self.assertTrue(os.path.exists(os.path.join(self.repo.path, 'foo'))) cwd = os.getcwd() try: os.chdir(self.repo.path) porcelain.remove(self.repo.path, paths=["foo"]) finally: os.chdir(cwd) self.assertFalse(os.path.exists(os.path.join(self.repo.path, 'foo')))
def _remove_existing_files(requirements: List[_Requirement]) -> None: """ Remove existing files in vendored target directories. """ target_directories = set(requirement.target_directory for requirement in requirements) repo_files = ls_files(repo='.') for target_directory in target_directories: git_paths = [ item.decode() for item in repo_files if item.decode().startswith(str(target_directory)) ] remove(paths=git_paths) try: shutil.rmtree(path=str(target_directory)) except FileNotFoundError: pass
def test_get_tree_changes_delete(self): """Unit test for get_tree_changes delete.""" # Make a dummy file, stage, commit, remove filename = 'foo' fullpath = os.path.join(self.repo.path, filename) with open(fullpath, 'w') as f: f.write('stuff') porcelain.add(repo=self.repo.path, paths=fullpath) porcelain.commit(repo=self.repo.path, message=b'test status', author=b'author <email>', committer=b'committer <email>') cwd = os.getcwd() try: os.chdir(self.repo.path) porcelain.remove(repo=self.repo.path, paths=[filename]) finally: os.chdir(cwd) changes = porcelain.get_tree_changes(self.repo.path) self.assertEqual(changes['delete'][0], filename.encode('ascii')) self.assertEqual(len(changes['add']), 0) self.assertEqual(len(changes['modify']), 0) self.assertEqual(len(changes['delete']), 1)