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)
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)
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
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
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
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