コード例 #1
0
    def __init__(self,
                 package_loader,
                 name,
                 version=None,
                 runtime_version=None,
                 requirements=None,
                 meta=None):
        super(MuranoPackage, self).__init__()
        self._package_loader = weakref.proxy(package_loader)
        self._name = name
        self._version = helpers.parse_version(version)
        self._runtime_version = helpers.parse_version(runtime_version)
        self._requirements = {
            name: semantic_version.Spec('==' + str(self._version.major))
        }
        if name != constants.CORE_LIBRARY:
            self._requirements[constants.CORE_LIBRARY] = \
                semantic_version.Spec('==0')
        self._classes = {}
        self._imported_types = {object, murano_object.MuranoObject}
        for key, value in six.iteritems(requirements or {}):
            self._requirements[key] = helpers.parse_version_spec(value)

        self._load_queue = {}
        self._native_load_queue = {}
        if self.name == constants.CORE_LIBRARY:
            principal_objects.register(self)
        self._package_class = self._create_package_class()
        self._meta = lambda: dslmeta.MetaData(meta, dsl_types.MetaTargets.
                                              Package, self._package_class)
コード例 #2
0
    def __init__(self, package_loader, name, version=None,
                 runtime_version=None, requirements=None, meta=None):
        super(MuranoPackage, self).__init__()
        self._package_loader = weakref.proxy(package_loader)
        self._name = name
        self._version = helpers.parse_version(version)
        self._runtime_version = helpers.parse_version(runtime_version)
        self._requirements = {
            name: semantic_version.Spec('==' + str(self._version.major))
        }
        if name != constants.CORE_LIBRARY:
            self._requirements[constants.CORE_LIBRARY] = \
                semantic_version.Spec('==0')
        self._classes = {}
        self._imported_types = {object, murano_object.MuranoObject}
        for key, value in six.iteritems(requirements or {}):
            self._requirements[key] = helpers.parse_version_spec(value)

        self._load_queue = {}
        self._native_load_queue = {}
        if self.name == constants.CORE_LIBRARY:
            principal_objects.register(self)
        self._package_class = self._create_package_class()
        self._meta = lambda: dslmeta.MetaData(
            meta, dsl_types.MetaTargets.Package, self._package_class)
コード例 #3
0
def get_loader(version):
    version = helpers.parse_version(version)

    class MuranoPlDict(dict):
        pass

    class YaqlExpression(yaql_expression.YaqlExpression):
        @staticmethod
        def match(expr):
            return yaql_expression.YaqlExpression.is_expression(expr, version)

    def load(contents, file_id):
        def build_position(node):
            return dsl_types.ExpressionFilePosition(
                file_id,
                node.start_mark.line + 1,
                node.start_mark.column + 1,
                node.end_mark.line + 1,
                node.end_mark.column + 1)

        class MuranoPlYamlConstructor(yaml.constructor.SafeConstructor):
            def construct_yaml_map(self, node):
                data = MuranoPlDict()
                data.source_file_position = build_position(node)
                yield data
                value = self.construct_mapping(node)
                data.update(value)

        class YaqlYamlLoader(yaml.SafeLoader, MuranoPlYamlConstructor):
            pass

        YaqlYamlLoader.add_constructor(
            u'tag:yaml.org,2002:map',
            MuranoPlYamlConstructor.construct_yaml_map)

        # workaround for PyYAML bug: http://pyyaml.org/ticket/221
        resolvers = {}
        for k, v in yaml.SafeLoader.yaml_implicit_resolvers.items():
            resolvers[k] = v[:]
        YaqlYamlLoader.yaml_implicit_resolvers = resolvers

        def yaql_constructor(loader, node):
            value = loader.construct_scalar(node)
            result = yaql_expression.YaqlExpression(value, version)
            result.source_file_position = build_position(node)
            return result

        YaqlYamlLoader.add_constructor(u'!yaql', yaql_constructor)
        YaqlYamlLoader.add_implicit_resolver(u'!yaql', YaqlExpression, None)
        return list(filter(
            lambda t: t,
            yaml.load_all(contents, Loader=YaqlYamlLoader))
        )

    return load
コード例 #4
0
def get_loader(version):
    version = helpers.parse_version(version)

    class MuranoPlDict(dict):
        pass

    class YaqlExpression(yaql_expression.YaqlExpression):
        @staticmethod
        def match(expr):
            return yaql_expression.YaqlExpression.is_expression(expr, version)

    def load(contents, file_id):
        def build_position(node):
            return dsl_types.ExpressionFilePosition(file_id,
                                                    node.start_mark.line + 1,
                                                    node.start_mark.column + 1,
                                                    node.end_mark.line + 1,
                                                    node.end_mark.column + 1)

        class MuranoPlYamlConstructor(yaml.constructor.SafeConstructor):
            def construct_yaml_map(self, node):
                data = MuranoPlDict()
                data.source_file_position = build_position(node)
                yield data
                value = self.construct_mapping(node)
                data.update(value)

        class YaqlYamlLoader(yaml.SafeLoader, MuranoPlYamlConstructor):
            pass

        YaqlYamlLoader.add_constructor(
            u'tag:yaml.org,2002:map',
            MuranoPlYamlConstructor.construct_yaml_map)

        # workaround for PyYAML bug: http://pyyaml.org/ticket/221
        resolvers = {}
        for k, v in yaml.SafeLoader.yaml_implicit_resolvers.items():
            resolvers[k] = v[:]
        YaqlYamlLoader.yaml_implicit_resolvers = resolvers

        def yaql_constructor(loader, node):
            value = loader.construct_scalar(node)
            result = yaql_expression.YaqlExpression(value, version)
            result.source_file_position = build_position(node)
            return result

        YaqlYamlLoader.add_constructor(u'!yaql', yaql_constructor)
        YaqlYamlLoader.add_implicit_resolver(u'!yaql', YaqlExpression, None)
        return list(
            filter(lambda t: t, yaml.load_all(contents,
                                              Loader=YaqlYamlLoader)))

    return load
コード例 #5
0
ファイル: package_loader.py プロジェクト: wdhwang/murano
def deserialize_package_fixations(fixations):
    result = collections.defaultdict(set)
    for name, versions in fixations.items():
        for version in versions:
            result[name].add(helpers.parse_version(version))
    return result
コード例 #6
0
ファイル: package_loader.py プロジェクト: AleptNamrata/murano
def deserialize_package_fixations(fixations):
    result = collections.defaultdict(set)
    for name, versions in six.iteritems(fixations):
        for version in versions:
            result[name].add(helpers.parse_version(version))
    return result