Beispiel #1
0
 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}
Beispiel #2
0
    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)
Beispiel #3
0
 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": {}}
Beispiel #4
0
 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')))
Beispiel #5
0
 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')))
Beispiel #6
0
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
Beispiel #7
0
    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)