Source code for rez.package_remove

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Rez Project


from rez.package_repository import package_repository_manager
from rez.vendor.version.version import Version
from rez.utils.logging_ import print_info
from rez.vendor.six import six
from rez.config import config


basestring = six.string_types[0]


[docs]def remove_package_family(name, path, force=False): """Remove a package family from its repository. A family can only be deleted if it contains no packages, hidden or otherwise, unless `force` is True. Args: name (str): Name of package family. path (str): Package repository path containing the package family. force (bool): If True, delete family even if not empty. Returns: bool: True if the package family was removed, False if not found. """ repo = package_repository_manager.get_repository(path) return repo.remove_package_family(name, force=force)
[docs]def remove_package(name, version, path): """Remove a package from its repository. Note that you are able to remove a package that is hidden (ie ignored). This is why a Package instance is not specified (if the package were hidden, you wouldn't be able to get one). Args: name (str): Name of package. version (Version or str): Version of the package, eg '1.0.0' path (str): Package repository path containing the package. Returns: bool: True if the package was removed, False if package not found. """ if isinstance(version, basestring): version = Version(version) repo = package_repository_manager.get_repository(path) return repo.remove_package(name, version)
[docs]def remove_packages_ignored_since(days, paths=None, dry_run=False, verbose=False): """Remove packages ignored for >= specified number of days. Args: days (int): Remove packages ignored >= this many days paths (list of str, optional): Paths to search for packages, defaults to `config.packages_path`. dry_run: Dry run mode verbose (bool): Verbose mode Returns: int: Number of packages removed. In dry-run mode, returns the number of packages that _would_ be removed. """ num_removed = 0 for path in (paths or config.packages_path): repo = package_repository_manager.get_repository(path) if verbose: print_info("Searching %s...", repo) num_removed += repo.remove_ignored_since( days=days, dry_run=dry_run, verbose=verbose ) return num_removed