def resolve_dependencies(root_name): """Given the name of a dependency, return all dependencies and packages that require that dependency, directly or indirectly. """ manager = PackageManager() all_packages = manager.list_packages() all_dependencies = manager.list_dependencies() recursive_dependencies = set() dependent_packages = set() dependency_relationships = { name: manager.get_dependencies(name) for name in all_packages + all_dependencies } def rec(name): if name in recursive_dependencies: return recursive_dependencies.add(name) for dep_name in all_dependencies: if name in dependency_relationships[dep_name]: rec(dep_name) for pkg_name in all_packages: if name in dependency_relationships[pkg_name]: dependent_packages.add(pkg_name) rec(root_name) return (recursive_dependencies, dependent_packages)
def resolve_parents(root_name): """Given the name of a dependency, return all dependencies and packages that require that dependency, directly or indirectly. """ manager = PackageManager() everything = manager.list_packages() + manager.list_dependencies() recursive_dependencies = set() dependency_relationships = { name: manager.get_dependencies(name) for name in everything } def rec(name): if name in recursive_dependencies: return recursive_dependencies.add(name) for pkg_name in everything: if name in dependency_relationships[pkg_name]: rec(pkg_name) rec(root_name) recursive_dependencies.remove(root_name) return recursive_dependencies
def get_installed_packages(exclusion_list=[], list_default_packages=False, list_dependencies=False): if PackageManager: packages = [] package_manager = PackageManager() if list_default_packages: packages.extend(package_manager.list_default_packages()) if list_dependencies: packages.extend(package_manager.list_dependencies()) packages.extend(package_manager.list_packages()) return list(set(packages) - set(exclusion_list)) else: raise ImportError( "You can only use the Sublime Text API inside Sublime Text.")