コード例 #1
0
    def get_dependencies_for_product(self, product: BaseProduct):
        """
        для онкретного продукта получить его зависимости, без рекурсии
        :param product:
        :return:
        """
        if not product:
            return None

        # logging.debug("Get dependency for '{0}'".format(product))
        dependencies_names = product.get_dependencies()

        dependencies = ProductCollection()

        if not dependencies_names:
            # logging.debug("There are no dependencies for '{0}'".format(product))
            pass
        else:
            for name in dependencies_names:
                if isinstance(name, list):
                    name = self.get_first_or_installed(name)
                    logging.debug("choice dependence '{0}'".format(name))
                dependent_product = self.core.feed.get_product_or_exception(
                    name)
                dependencies.add_product(dependent_product)

        return dependencies
コード例 #2
0
ファイル: dependency_manager.py プロジェクト: perldev/zoo
    def get_dependencies_for_product(self, product: BaseProduct):
        """
        для онкретного продукта получить его зависимости, без рекурсии
        :param product:
        :return:
        """
        if not product:
            return None

        #logging.debug("Get dependency for '{0}'".format(product))
        dependencies_names = product.get_dependencies()

        dependencies = ProductCollection()

        if not dependencies_names:
            #logging.debug("There are no dependencies for '{0}'".format(product))
            pass
        else:
            for name in dependencies_names:
                if isinstance(name, list):
                    name = self.get_first_or_installed(name)
                    logging.debug("choice dependence '{0}'".format(name))
                dependent_product = self.core.feed.get_product_or_exception(name)
                dependencies.add_product(dependent_product)

        return dependencies
コード例 #3
0
    def _get_products_with_dependencies(self, products: ProductCollection,
                                        result: ProductCollection):
        """
        вспомогательная рекурсивная функция для поиска зависимостей
        :param products:
        :param result:
        :return:
        """
        if not products:
            logging.debug("products is None")
            return

        for p in products:
            if not result.product_in_coll(p):
                result.add_product(p)
                logging.debug("Added '{0}'".format(
                    p.get_product_with_version()))

                dependencies = self.get_dependencies_for_product(p)
                if dependencies and len(dependencies) > 0:
                    # recursion !
                    for dep in dependencies:
                        logging.debug("\tdependant from: '{0}'".format(
                            dep.get_product_with_version()))
                    self._get_products_with_dependencies(dependencies, result)
コード例 #4
0
ファイル: dependency_manager.py プロジェクト: perldev/zoo
    def _get_products_with_dependencies(self, products: ProductCollection, result: ProductCollection):
        """
        вспомогательная рекурсивная функция для поиска зависимостей
        :param products:
        :param result:
        :return:
        """
        if not products:
            logging.debug("products is None")
            return

        for p in products:
            if not result.product_in_coll(p):
                result.add_product(p)
                logging.debug("Added '{0}'".format(p.get_product_with_version()))

                dependencies = self.get_dependencies_for_product(p)
                if dependencies and len(dependencies) > 0:
                    # recursion !
                    for dep in dependencies:
                        logging.debug("\tdependant from: '{0}'".format(dep.get_product_with_version()))
                    self._get_products_with_dependencies(dependencies, result)