Source code for seamm_installer.uninstall

# -*- coding: utf-8 -*-

"""Uninstall requested components of SEAMM."""
from . import my
from .util import find_packages, get_metadata, package_info, run_plugin_installer


[docs] def setup(parser): """Define the command-line interface for removing SEAMM components. Parameters ---------- parser : argparse.ArgumentParser The main parser for the application. """ subparser = parser.add_parser("uninstall") subparser.set_defaults(func=uninstall) subparser.add_argument( "--all", action="store_true", help="Fully uninstall the SEAMM installation", ) subparser.add_argument( "--third-party", action="store_true", help="Uninstall all packages from 3rd parties", ) subparser.add_argument( "--gui-only", action="store_true", help="Uninstall only the GUI part of packages, leaving the background part.", ) subparser.add_argument( "modules", nargs="*", default=None, help="Specific modules and plug-ins to uninstall.", )
[docs] def uninstall(): """Uninstall the requested SEAMM components and plug-ins. Parameters ---------- """ if my.options.all: # First uninstall the conda environment environment = my.conda.active_environment print(f"Removing the conda environment {environment}") # my.conda.uninstall(all=True) uninstall_packages("all") else: uninstall_packages(my.options.modules)
[docs] def uninstall_packages(to_uninstall): """Uninstall SEAMM components and plug-ins.""" metadata = get_metadata() # Find all the packages packages = find_packages(progress=True) if to_uninstall == "all": for package in package_info: version, channel = package_info(package) ptype = packages[package]["type"] print(f"Uninstalling {ptype.lower()} {package}") if channel == "pypi": my.pip.uninstall(package) else: my.conda.uninstall(package) # See if the package has an installer if not metadata["gui-only"] and not my.options.gui_only: run_plugin_installer(package, "uninstall") else: for package in to_uninstall: version, channel = package_info(package) ptype = packages[package]["type"] print(f"Uninstalling {ptype.lower()} {package}") if channel == "pypi": my.pip.uninstall(package) else: my.conda.uninstall(package) # See if the package has an installer if not metadata["gui-only"] and not my.options.gui_only: run_plugin_installer(package, "uninstall")