예제 #1
0
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)
예제 #2
0
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.")