def remove(self, auto_confirm=False):
        """Remove paths in ``self.paths`` with confirmation (unless
        ``auto_confirm`` is True)."""
        if not self._can_uninstall():
            return
        if not self.paths:
            logger.info("Can't uninstall '%s'. No files were found to uninstall.", self.dist.project_name)
            return
        logger.info("Uninstalling %s-%s:", self.dist.project_name, self.dist.version)

        with indent_log():
            paths = sorted(self.compact(self.paths))

            if auto_confirm:
                response = "y"
            else:
                for path in paths:
                    logger.info(path)
                response = ask("Proceed (y/n)? ", ("y", "n"))
            if self._refuse:
                logger.info("Not removing or modifying (outside of prefix):")
                for path in self.compact(self._refuse):
                    logger.info(path)
            if response == "y":
                self.save_dir = tempfile.mkdtemp(suffix="-uninstall", prefix="pip-")
                for path in paths:
                    new_path = self._stash(path)
                    logger.debug("Removing file or directory %s", path)
                    self._moved_paths.append(path)
                    renames(path, new_path)
                for pth in self.pth.values():
                    pth.remove()
                logger.info("Successfully uninstalled %s-%s", self.dist.project_name, self.dist.version)
Beispiel #2
0
    def remove(self, auto_confirm=False, verbose=False):
        """Remove paths in ``self.paths`` with confirmation (unless
        ``auto_confirm`` is True)."""

        if not self.paths:
            logger.info(
                "Can't uninstall '%s'. No files were found to uninstall.",
                self.dist.project_name,
            )
            return

        dist_name_version = (
            self.dist.project_name + "-" + self.dist.version
        )
        logger.info('Uninstalling %s:', dist_name_version)

        with indent_log():
            if auto_confirm or self._allowed_to_proceed(verbose):
                self.save_dir.create()

                for path in sorted(self.compact(self.paths)):
                    new_path = self._stash(path)
                    logger.debug('Removing file or directory %s', path)
                    self._moved_paths.append(path)
                    renames(path, new_path)
                for pth in self.pth.values():
                    pth.remove()

                logger.info('Successfully uninstalled %s', dist_name_version)
Beispiel #3
0
    def remove(self, auto_confirm=False, verbose=False):
        """Remove paths in ``self.paths`` with confirmation (unless
        ``auto_confirm`` is True)."""

        if not self.paths:
            logger.info(
                "Can't uninstall '%s'. No files were found to uninstall.",
                self.dist.project_name,
            )
            return

        dist_name_version = (self.dist.project_name + "-" + self.dist.version)
        logger.info('Uninstalling %s:', dist_name_version)

        with indent_log():
            if auto_confirm or self._allowed_to_proceed(verbose):
                self.save_dir.create()

                for path in sorted(self.compact(self.paths)):
                    new_path = self._stash(path)
                    logger.debug('Removing file or directory %s', path)
                    self._moved_paths.append(path)
                    renames(path, new_path)
                for pth in self.pth.values():
                    pth.remove()

                logger.info('Successfully uninstalled %s', dist_name_version)
 def rollback(self):
     """Rollback the changes previously made by remove()."""
     if self.save_dir is None:
         logger.error("Can't roll back %s; was not uninstalled", self.dist.project_name)
         return False
     logger.info("Rolling back uninstall of %s", self.dist.project_name)
     for path in self._moved_paths:
         tmp_path = self._stash(path)
         logger.debug("Replacing %s", path)
         renames(tmp_path, path)
     for pth in self.pth.values():
         pth.rollback()
Beispiel #5
0
 def rollback(self):
     """Rollback the changes previously made by remove()."""
     if self.save_dir is None:
         logger.error(
             "Can't roll back %s; was not uninstalled",
             self.dist.project_name,
         )
         return False
     logger.info('Rolling back uninstall of %s', self.dist.project_name)
     for path in self._moved_paths:
         tmp_path = self._stash(path)
         logger.debug('Replacing %s', path)
         renames(tmp_path, path)
     for pth in self.pth.values():
         pth.rollback()
Beispiel #6
0
    def remove(self, auto_confirm=False):
        """Remove paths in ``self.paths`` with confirmation (unless
        ``auto_confirm`` is True)."""
        if not self._can_uninstall():
            return
        if not self.paths:
            logger.info(
                "Can't uninstall '%s'. No files were found to uninstall.",
                self.dist.project_name,
            )
            return
        logger.info(
            'Uninstalling %s-%s:',
            self.dist.project_name, self.dist.version
        )

        with indent_log():
            paths = sorted(self.compact(self.paths))

            if auto_confirm:
                response = 'y'
            else:
                for path in paths:
                    logger.info(path)
                response = ask('Proceed (y/n)? ', ('y', 'n'))
            if self._refuse:
                logger.info('Not removing or modifying (outside of prefix):')
                for path in self.compact(self._refuse):
                    logger.info(path)
            if response == 'y':
                self.save_dir = tempfile.mkdtemp(suffix='-uninstall',
                                                 prefix='pip-')
                for path in paths:
                    new_path = self._stash(path)
                    logger.debug('Removing file or directory %s', path)
                    self._moved_paths.append(path)
                    renames(path, new_path)
                for pth in self.pth.values():
                    pth.remove()
                logger.info(
                    'Successfully uninstalled %s-%s',
                    self.dist.project_name, self.dist.version
                )