spack.schema package

This module contains jsonschema files for all of Spack’s YAML formats.

Submodules

spack.schema.bootstrap module

Schema for bootstrap.yaml configuration file.

spack.schema.bootstrap.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'bootstrap': {'properties': {'enable': {'type': 'boolean'}, 'root': {'type': 'string'}, 'sources': {'items': {'additionalProperties': False, 'properties': {'metadata': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'metadata'], 'type': 'object'}, 'type': 'array'}, 'trusted': {'patternProperties': {'\\w[\\w-]*': {'type': 'boolean'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack bootstrap configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.buildcache_spec module

Schema for a buildcache spec.yaml file

properties: Dict[str, Any] = {
    # `buildinfo` is no longer needed as of Spack 0.21
    "buildinfo": {"type": "object"},
    "spec": {
        "type": "object",
        "additionalProperties": True,
        "items": spack.schema.spec.properties,
    },
    "binary_cache_checksum": {
        "type": "object",
        "properties": {"hash_algorithm": {"type": "string"}, "hash": {"type": "string"}},
    },
    "buildcache_layout_version": {"type": "number"},
}

schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack buildcache specfile schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}

spack.schema.cdash module

Schema for cdash.yaml configuration file.

properties: Dict[str, Any] = {
    "cdash": {
        "type": "object",
        "additionalProperties": False,
        # "required": ["build-group", "url", "project", "site"],
        "required": ["build-group"],
        "patternProperties": {
            r"build-group": {"type": "string"},
            r"url": {"type": "string"},
            r"project": {"type": "string"},
            r"site": {"type": "string"},
        },
    }
}


#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack cdash configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.cdash.properties: Dict[str, Any] = {'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}}

Properties for inclusion in other schemas

spack.schema.cdash.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}}, 'title': 'Spack cdash configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.ci module

Schema for gitlab-ci.yaml configuration file.

# Schema for script fields
# List of lists and/or strings
# This is similar to what is allowed in
# the gitlab schema
script_schema = {
    "type": "array",
    "items": {"anyOf": [{"type": "string"}, {"type": "array", "items": {"type": "string"}}]},
}

# Schema for CI image
image_schema = {
    "oneOf": [
        {"type": "string"},
        {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "entrypoint": {"type": "array", "items": {"type": "string"}},
            },
        },
    ]
}

# Additional attributes are allow
# and will be forwarded directly to the
# CI target YAML for each job.
attributes_schema = {
    "type": "object",
    "additionalProperties": True,
    "properties": {
        "image": image_schema,
        "tags": {"type": "array", "items": {"type": "string"}},
        "variables": {
            "type": "object",
            "patternProperties": {r"[\w\d\-_\.]+": {"type": "string"}},
        },
        "before_script": script_schema,
        "script": script_schema,
        "after_script": script_schema,
    },
}

submapping_schema = {
    "type": "object",
    "additionalProperties": False,
    "required": ["submapping"],
    "properties": {
        "match_behavior": {"type": "string", "enum": ["first", "merge"], "default": "first"},
        "submapping": {
            "type": "array",
            "items": {
                "type": "object",
                "additionalProperties": False,
                "required": ["match"],
                "properties": {
                    "match": {"type": "array", "items": {"type": "string"}},
                    "build-job": attributes_schema,
                    "build-job-remove": attributes_schema,
                },
            },
        },
    },
}

named_attributes_schema = {
    "oneOf": [
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {"noop-job": attributes_schema, "noop-job-remove": attributes_schema},
        },
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {"build-job": attributes_schema, "build-job-remove": attributes_schema},
        },
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {"copy-job": attributes_schema, "copy-job-remove": attributes_schema},
        },
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {
                "reindex-job": attributes_schema,
                "reindex-job-remove": attributes_schema,
            },
        },
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {
                "signing-job": attributes_schema,
                "signing-job-remove": attributes_schema,
            },
        },
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {
                "cleanup-job": attributes_schema,
                "cleanup-job-remove": attributes_schema,
            },
        },
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {"any-job": attributes_schema, "any-job-remove": attributes_schema},
        },
    ]
}

pipeline_gen_schema = {
    "type": "array",
    "items": {"oneOf": [submapping_schema, named_attributes_schema]},
}

core_shared_properties = union_dicts(
    {
        "pipeline-gen": pipeline_gen_schema,
        "rebuild-index": {"type": "boolean"},
        "broken-specs-url": {"type": "string"},
        "broken-tests-packages": {"type": "array", "items": {"type": "string"}},
        "target": {"type": "string", "enum": ["gitlab"], "default": "gitlab"},
    }
)

# TODO: Remove in Spack 0.23
ci_properties = {
    "anyOf": [
        {
            "type": "object",
            "additionalProperties": False,
            # "required": ["mappings"],
            "properties": union_dicts(
                core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}}
            ),
        },
        {
            "type": "object",
            "additionalProperties": False,
            # "required": ["mappings"],
            "properties": union_dicts(
                core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}}
            ),
        },
    ]
}

#: Properties for inclusion in other schemas
properties: Dict[str, Any] = {
    "ci": {
        "oneOf": [
            # TODO: Replace with core-shared-properties in Spack 0.23
            ci_properties,
            # Allow legacy format under `ci` for `config update ci`
            spack.schema.gitlab_ci.gitlab_ci_properties,
        ]
    }
}

#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack CI configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}


def update(data):
    import llnl.util.tty as tty

    import spack.ci
    import spack.environment as ev

    # Warn if deprecated section is still in the environment
    ci_env = ev.active_environment()
    if ci_env:
        env_config = ci_env.manifest[ev.TOP_LEVEL_KEY]
        if "gitlab-ci" in env_config:
            tty.die("Error: `gitlab-ci` section detected with `ci`, these are not compatible")

    # Detect if the ci section is using the new pipeline-gen
    # If it is, assume it has already been converted
    return spack.ci.translate_deprecated_config(data)
spack.schema.ci.properties: Dict[str, Any] = {'ci': {'oneOf': [{'anyOf': [{'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}, 'temporary-storage-url-prefix': {'type': 'string'}}, 'type': 'object'}]}, {'anyOf': [{'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'temporary-storage-url-prefix': {'type': 'string'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}]}]}}

Properties for inclusion in other schemas

spack.schema.ci.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'ci': {'oneOf': [{'anyOf': [{'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}, 'temporary-storage-url-prefix': {'type': 'string'}}, 'type': 'object'}]}, {'anyOf': [{'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'temporary-storage-url-prefix': {'type': 'string'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}]}]}}, 'title': 'Spack CI configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.ci.update(data)[source]

spack.schema.compilers module

Schema for compilers.yaml configuration file.

properties: Dict[str, Any] = {
    "compilers": {
        "type": "array",
        "items": {
            "type": "object",
            "additionalProperties": False,
            "properties": {
                "compiler": {
                    "type": "object",
                    "additionalProperties": False,
                    "required": ["paths", "spec", "modules", "operating_system"],
                    "properties": {
                        "paths": {
                            "type": "object",
                            "required": ["cc", "cxx", "f77", "fc"],
                            "additionalProperties": False,
                            "properties": {
                                "cc": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "cxx": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "f77": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "fc": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                            },
                        },
                        "flags": {
                            "type": "object",
                            "additionalProperties": False,
                            "properties": {
                                "cflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "cxxflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "fflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "cppflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "ldflags": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                                "ldlibs": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                            },
                        },
                        "spec": {"type": "string"},
                        "operating_system": {"type": "string"},
                        "target": {"type": "string"},
                        "alias": {"anyOf": [{"type": "string"}, {"type": "null"}]},
                        "modules": {
                            "anyOf": [{"type": "string"}, {"type": "null"}, {"type": "array"}]
                        },
                        "implicit_rpaths": {
                            "anyOf": [
                                {"type": "array", "items": {"type": "string"}},
                                {"type": "boolean"},
                            ]
                        },
                        "environment": spack.schema.environment.definition,
                        "extra_rpaths": {
                            "type": "array",
                            "default": [],
                            "items": {"type": "string"},
                        },
                    },
                }
            },
        },
    }
}


#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack compiler configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.compilers.properties: Dict[str, Any] = {'compilers': {'items': {'additionalProperties': False, 'properties': {'compiler': {'additionalProperties': False, 'properties': {'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'extra_rpaths': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'type': 'object'}, 'implicit_rpaths': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'boolean'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'operating_system': {'type': 'string'}, 'paths': {'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object'}, 'spec': {'type': 'string'}, 'target': {'type': 'string'}}, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}}

Properties for inclusion in other schemas

spack.schema.compilers.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'compilers': {'items': {'additionalProperties': False, 'properties': {'compiler': {'additionalProperties': False, 'properties': {'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'extra_rpaths': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'type': 'object'}, 'implicit_rpaths': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'boolean'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'operating_system': {'type': 'string'}, 'paths': {'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object'}, 'spec': {'type': 'string'}, 'target': {'type': 'string'}}, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}}, 'title': 'Spack compiler configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.concretizer module

Schema for concretizer.yaml configuration file.

LIST_OF_SPECS = {"type": "array", "items": {"type": "string"}}

properties: Dict[str, Any] = {
    "concretizer": {
        "type": "object",
        "additionalProperties": False,
        "properties": {
            "reuse": {
                "oneOf": [
                    {"type": "boolean"},
                    {"type": "string", "enum": ["dependencies"]},
                    {
                        "type": "object",
                        "properties": {
                            "roots": {"type": "boolean"},
                            "include": LIST_OF_SPECS,
                            "exclude": LIST_OF_SPECS,
                            "from": {
                                "type": "array",
                                "items": {
                                    "type": "object",
                                    "properties": {
                                        "type": {
                                            "type": "string",
                                            "enum": ["local", "buildcache", "external"],
                                        },
                                        "include": LIST_OF_SPECS,
                                        "exclude": LIST_OF_SPECS,
                                    },
                                },
                            },
                        },
                    },
                ]
            },
            "enable_node_namespace": {"type": "boolean"},
            "targets": {
                "type": "object",
                "properties": {
                    "host_compatible": {"type": "boolean"},
                    "granularity": {"type": "string", "enum": ["generic", "microarchitectures"]},
                },
            },
            "unify": {
                "oneOf": [{"type": "boolean"}, {"type": "string", "enum": ["when_possible"]}]
            },
            "duplicates": {
                "type": "object",
                "properties": {
                    "strategy": {"type": "string", "enum": ["none", "minimal", "full"]}
                },
            },
            "os_compatible": {"type": "object", "additionalProperties": {"type": "array"}},
        },
    }
}


#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack concretizer configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.concretizer.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'concretizer': {'additionalProperties': False, 'properties': {'duplicates': {'properties': {'strategy': {'enum': ['none', 'minimal', 'full'], 'type': 'string'}}, 'type': 'object'}, 'enable_node_namespace': {'type': 'boolean'}, 'os_compatible': {'additionalProperties': {'type': 'array'}, 'type': 'object'}, 'reuse': {'oneOf': [{'type': 'boolean'}, {'enum': ['dependencies'], 'type': 'string'}, {'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'from': {'items': {'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'include': {'items': {'type': 'string'}, 'type': 'array'}, 'type': {'enum': ['local', 'buildcache', 'external'], 'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'include': {'items': {'type': 'string'}, 'type': 'array'}, 'roots': {'type': 'boolean'}}, 'type': 'object'}]}, 'targets': {'properties': {'granularity': {'enum': ['generic', 'microarchitectures'], 'type': 'string'}, 'host_compatible': {'type': 'boolean'}}, 'type': 'object'}, 'unify': {'oneOf': [{'type': 'boolean'}, {'enum': ['when_possible'], 'type': 'string'}]}}, 'type': 'object'}}, 'title': 'Spack concretizer configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.config module

Schema for config.yaml configuration file.

properties: Dict[str, Any] = {
    "config": {
        "type": "object",
        "default": {},
        "properties": {
            "flags": {
                "type": "object",
                "properties": {
                    "keep_werror": {"type": "string", "enum": ["all", "specific", "none"]}
                },
            },
            "shared_linking": {
                "anyOf": [
                    {"type": "string", "enum": ["rpath", "runpath"]},
                    {
                        "type": "object",
                        "properties": {
                            "type": {"type": "string", "enum": ["rpath", "runpath"]},
                            "bind": {"type": "boolean"},
                        },
                    },
                ]
            },
            "install_tree": {
                "anyOf": [
                    {
                        "type": "object",
                        "properties": union_dicts(
                            {"root": {"type": "string"}},
                            {
                                "padded_length": {
                                    "oneOf": [
                                        {"type": "integer", "minimum": 0},
                                        {"type": "boolean"},
                                    ]
                                }
                            },
                            spack.schema.projections.properties,
                        ),
                    },
                    {"type": "string"},  # deprecated
                ]
            },
            "install_hash_length": {"type": "integer", "minimum": 1},
            "install_path_scheme": {"type": "string"},  # deprecated
            "build_stage": {
                "oneOf": [{"type": "string"}, {"type": "array", "items": {"type": "string"}}]
            },
            "stage_name": {"type": "string"},
            "develop_stage_link": {"type": "string"},
            "test_stage": {"type": "string"},
            "extensions": {"type": "array", "items": {"type": "string"}},
            "template_dirs": {"type": "array", "items": {"type": "string"}},
            "license_dir": {"type": "string"},
            "source_cache": {"type": "string"},
            "misc_cache": {"type": "string"},
            "environments_root": {"type": "string"},
            "connect_timeout": {"type": "integer", "minimum": 0},
            "verify_ssl": {"type": "boolean"},
            "ssl_certs": {"type": "string"},
            "suppress_gpg_warnings": {"type": "boolean"},
            "install_missing_compilers": {"type": "boolean"},
            "debug": {"type": "boolean"},
            "checksum": {"type": "boolean"},
            "deprecated": {"type": "boolean"},
            "locks": {"type": "boolean"},
            "dirty": {"type": "boolean"},
            "build_language": {"type": "string"},
            "build_jobs": {"type": "integer", "minimum": 1},
            "ccache": {"type": "boolean"},
            "concretizer": {"type": "string", "enum": ["original", "clingo"]},
            "db_lock_timeout": {"type": "integer", "minimum": 1},
            "package_lock_timeout": {
                "anyOf": [{"type": "integer", "minimum": 1}, {"type": "null"}]
            },
            "allow_sgid": {"type": "boolean"},
            "install_status": {"type": "boolean"},
            "binary_index_root": {"type": "string"},
            "url_fetch_method": {"type": "string", "enum": ["urllib", "curl"]},
            "additional_external_search_paths": {"type": "array", "items": {"type": "string"}},
            "binary_index_ttl": {"type": "integer", "minimum": 0},
            "aliases": {"type": "object", "patternProperties": {r"\w[\w-]*": {"type": "string"}}},
        },
        "deprecatedProperties": {
            "properties": ["terminal_title"],
            "message": "config:terminal_title has been replaced by "
            "install_status and is ignored",
            "error": False,
        },
    }
}


#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack core configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}


def update(data):
    """Update the data in place to remove deprecated properties.

    Args:
        data (dict): dictionary to be updated

    Returns:
        True if data was changed, False otherwise
    """
    # currently deprecated properties are
    # install_tree: <string>
    # install_path_scheme: <string>
    # updated: install_tree: {root: <string>,
    #                         projections: <projections_dict}
    # root replaces install_tree, projections replace install_path_scheme
    changed = False

    install_tree = data.get("install_tree", None)
    if isinstance(install_tree, str):
        # deprecated short-form install tree
        # add value as `root` in updated install_tree
        data["install_tree"] = {"root": install_tree}
        changed = True

    install_path_scheme = data.pop("install_path_scheme", None)
    if install_path_scheme:
        projections_data = {"projections": {"all": install_path_scheme}}

        # update projections with install_scheme
        # whether install_tree was updated or not
        # we merge the yaml to ensure we don't invalidate other projections
        update_data = data.get("install_tree", {})
        update_data = spack.config.merge_yaml(update_data, projections_data)
        data["install_tree"] = update_data
        changed = True

    use_curl = data.pop("use_curl", None)
    if use_curl is not None:
        data["url_fetch_method"] = "curl" if use_curl else "urllib"
        changed = True

    shared_linking = data.get("shared_linking", None)
    if isinstance(shared_linking, str):
        # deprecated short-form shared_linking: rpath/runpath
        # add value as `type` in updated shared_linking
        data["shared_linking"] = {"type": shared_linking, "bind": False}
        changed = True

    return changed
spack.schema.config.properties: Dict[str, Any] = {'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:terminal_title has been replaced by install_status and is ignored', 'properties': ['terminal_title']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'aliases': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'develop_stage_link': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_status': {'type': 'boolean'}, 'install_tree': {'anyOf': [{'properties': {'padded_length': {'oneOf': [{'minimum': 0, 'type': 'integer'}, {'type': 'boolean'}]}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'root': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'enum': ['rpath', 'runpath'], 'type': 'string'}, {'properties': {'bind': {'type': 'boolean'}, 'type': {'enum': ['rpath', 'runpath'], 'type': 'string'}}, 'type': 'object'}]}, 'source_cache': {'type': 'string'}, 'ssl_certs': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}}

Properties for inclusion in other schemas

spack.schema.config.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:terminal_title has been replaced by install_status and is ignored', 'properties': ['terminal_title']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'aliases': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'develop_stage_link': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_status': {'type': 'boolean'}, 'install_tree': {'anyOf': [{'properties': {'padded_length': {'oneOf': [{'minimum': 0, 'type': 'integer'}, {'type': 'boolean'}]}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'root': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'enum': ['rpath', 'runpath'], 'type': 'string'}, {'properties': {'bind': {'type': 'boolean'}, 'type': {'enum': ['rpath', 'runpath'], 'type': 'string'}}, 'type': 'object'}]}, 'source_cache': {'type': 'string'}, 'ssl_certs': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}}, 'title': 'Spack core configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.config.update(data)[source]

Update the data in place to remove deprecated properties.

Parameters:

data (dict) – dictionary to be updated

Returns:

True if data was changed, False otherwise

spack.schema.container module

Schema for the ‘container’ subsection of Spack environments.

spack.schema.container.container_schema = {'additionalProperties': False, 'properties': {'depfile': {'default': False, 'type': 'boolean'}, 'docker': {'additionalProperties': False, 'default': {}, 'type': 'object'}, 'format': {'enum': ['docker', 'singularity'], 'type': 'string'}, 'images': {'anyOf': [{'additionalProperties': False, 'properties': {'os': {'type': 'string'}, 'spack': {'anyOf': [{'type': 'string'}, {'additional_properties': False, 'properties': {'ref': {'type': 'string'}, 'resolve_sha': {'default': False, 'type': 'boolean'}, 'url': {'type': 'string'}, 'verify': {'default': False, 'type': 'boolean'}}, 'type': 'object'}]}}, 'required': ['os', 'spack'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'required': ['build', 'final'], 'type': 'object'}]}, 'labels': {'type': 'object'}, 'os_packages': {'additionalProperties': False, 'properties': {'build': {'items': {'type': 'string'}, 'type': 'array'}, 'command': {'enum': ['apt', 'yum', 'zypper', 'apk', 'yum_amazon'], 'type': 'string'}, 'final': {'items': {'type': 'string'}, 'type': 'array'}, 'update': {'type': 'boolean'}}, 'type': 'object'}, 'singularity': {'additionalProperties': False, 'default': {}, 'properties': {'help': {'type': 'string'}, 'runscript': {'type': 'string'}, 'startscript': {'type': 'string'}, 'test': {'type': 'string'}}, 'type': 'object'}, 'strip': {'default': True, 'type': 'boolean'}, 'template': {'default': None, 'type': 'string'}}, 'type': 'object'}

Schema for the container attribute included in Spack environments

spack.schema.cray_manifest module

Schema for Cray descriptive manifest: this describes a set of installed packages on the system and also specifies dependency relationships between them (so this provides more information than external entries in packages configuration).

This does not specify a configuration - it is an input format that is consumed and transformed into Spack DB records.

spack.schema.database_index module

Schema for database index.json file

properties: Dict[str, Any] = {
    "database": {
        "type": "object",
        "required": ["installs", "version"],
        "additionalProperties": False,
        "properties": {
            "installs": {
                "type": "object",
                "patternProperties": {
                    r"^[\w\d]{32}$": {
                        "type": "object",
                        "properties": {
                            "spec": spack.schema.spec.properties,
                            "path": {"oneOf": [{"type": "string"}, {"type": "null"}]},
                            "installed": {"type": "boolean"},
                            "ref_count": {"type": "integer", "minimum": 0},
                            "explicit": {"type": "boolean"},
                            "installation_time": {"type": "number"},
                        },
                    }
                },
            },
            "version": {"type": "string"},
        },
    }
}

#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack spec schema",
    "type": "object",
    "required": ["database"],
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.database_index.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'database': {'additionalProperties': False, 'properties': {'installs': {'patternProperties': {'^[\\w\\d]{32}$': {'properties': {'explicit': {'type': 'boolean'}, 'installation_time': {'type': 'number'}, 'installed': {'type': 'boolean'}, 'path': {'oneOf': [{'type': 'string'}, {'type': 'null'}]}, 'ref_count': {'minimum': 0, 'type': 'integer'}, 'spec': {'spec': {'additionalProperties': False, 'properties': {'_meta': {'properties': {'version': {'type': 'number'}}, 'type': 'object'}, 'nodes': {'items': {'additionalProperties': False, 'properties': {'arch': {'additionalProperties': False, 'properties': {'platform': {}, 'platform_os': {}, 'target': {'oneOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'features': {'items': {'type': 'string'}, 'type': 'array'}, 'generation': {'type': 'integer'}, 'name': {'type': 'string'}, 'parents': {'items': {'type': 'string'}, 'type': 'array'}, 'vendor': {'type': 'string'}}, 'required': ['name', 'vendor', 'features', 'generation', 'parents'], 'type': 'object'}]}}, 'type': 'object'}, 'build_hash': {'type': 'string'}, 'build_spec': {'additionalProperties': False, 'properties': {'hash': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'hash'], 'type': 'object'}, 'compiler': {'additionalProperties': False, 'properties': {'name': {'type': 'string'}, 'version': {'type': 'string'}}, 'type': 'object'}, 'dependencies': {'patternProperties': {'\\w[\\w-]*': {'properties': {'hash': {'type': 'string'}, 'type': {'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'develop': {'anyOf': [{'type': 'boolean'}, {'type': 'string'}]}, 'full_hash': {'type': 'string'}, 'hash': {'type': 'string'}, 'name': {'type': 'string'}, 'namespace': {'type': 'string'}, 'package_hash': {'type': 'string'}, 'parameters': {'additionalProperties': True, 'properties': {'cflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cppflags': {'items': {'type': 'string'}, 'type': 'array'}, 'cxxflags': {'items': {'type': 'string'}, 'type': 'array'}, 'fflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldflags': {'items': {'type': 'string'}, 'type': 'array'}, 'ldlib': {'items': {'type': 'string'}, 'type': 'array'}, 'patches': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['cflags', 'cppflags', 'cxxflags', 'fflags', 'ldflags', 'ldlibs'], 'type': 'object'}, 'patches': {'items': {}, 'type': 'array'}, 'version': {'oneOf': [{'type': 'string'}, {'type': 'number'}]}}, 'required': ['version', 'arch', 'compiler', 'namespace', 'parameters'], 'type': 'object'}, 'type': 'array'}}, 'required': ['_meta', 'nodes'], 'type': 'object'}}}, 'type': 'object'}}, 'type': 'object'}, 'version': {'type': 'string'}}, 'required': ['installs', 'version'], 'type': 'object'}}, 'required': ['database'], 'title': 'Spack spec schema', 'type': 'object'}

Full schema with metadata

spack.schema.definitions module

Schema for definitions

properties: Dict[str, Any] = {
    "definitions": {
        "type": "array",
        "default": [],
        "items": {
            "type": "object",
            "properties": {"when": {"type": "string"}},
            "patternProperties": {r"^(?!when$)\w*": spec_list_schema},
        },
    }
}

#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack definitions configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.definitions.properties: Dict[str, Any] = {'definitions': {'default': [], 'items': {'patternProperties': {'^(?!when$)\\w*': {'default': [], 'items': {'anyOf': [{'additionalProperties': False, 'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'matrix': {'items': {'items': {'type': 'string'}, 'type': 'array'}, 'type': 'array'}}, 'type': 'object'}, {'type': 'string'}, {'type': 'null'}]}, 'type': 'array'}}, 'properties': {'when': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}}

Properties for inclusion in other schemas

spack.schema.definitions.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'definitions': {'default': [], 'items': {'patternProperties': {'^(?!when$)\\w*': {'default': [], 'items': {'anyOf': [{'additionalProperties': False, 'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'matrix': {'items': {'items': {'type': 'string'}, 'type': 'array'}, 'type': 'array'}}, 'type': 'object'}, {'type': 'string'}, {'type': 'null'}]}, 'type': 'array'}}, 'properties': {'when': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}}, 'title': 'Spack definitions configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.develop module

spack.schema.develop.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'develop': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'properties': {'path': {'type': 'string'}, 'spec': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack repository configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.develop.update(data)[source]

spack.schema.env module

Schema for env.yaml configuration file.

from .spec_list import spec_list_schema

#: Top level key in a manifest file
TOP_LEVEL_KEY = "spack"

properties: Dict[str, Any] = {
    "spack": {
        "type": "object",
        "default": {},
        "additionalProperties": False,
        "properties": union_dicts(
            # Include deprecated "gitlab-ci" section
            spack.schema.gitlab_ci.properties,
            # merged configuration scope schemas
            spack.schema.merged.properties,
            # extra environment schema properties
            {
                "include": {"type": "array", "default": [], "items": {"type": "string"}},
                "specs": spec_list_schema,
                "include_concrete": {"type": "array", "default": [], "items": {"type": "string"}},
            },
        ),
    }
}

schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack environment file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}


def update(data):
    """Update the data in place to remove deprecated properties.

    Args:
        data (dict): dictionary to be updated

    Returns:
        True if data was changed, False otherwise
    """

    import spack.ci

    if "gitlab-ci" in data:
        data["ci"] = data.pop("gitlab-ci")

    if "ci" in data:
        return spack.ci.translate_deprecated_config(data["ci"])

    # There are not currently any deprecated attributes in this section
    # that have not been removed
    return False
spack.schema.env.TOP_LEVEL_KEY = 'spack'

Top level key in a manifest file

spack.schema.env.update(data)[source]

Update the data in place to remove deprecated properties.

Parameters:

data (dict) – dictionary to be updated

Returns:

True if data was changed, False otherwise

spack.schema.environment module

Schema for environment modifications. Meant for inclusion in other schemas.

spack.schema.environment.parse(config_obj)[source]

Returns an EnvironmentModifications object containing the modifications parsed from input.

Parameters:

config_obj – a configuration dictionary conforming to the schema definition for environment modifications

spack.schema.gitlab_ci module

Schema for gitlab-ci.yaml configuration file.

image_schema = {
    "oneOf": [
        {"type": "string"},
        {
            "type": "object",
            "properties": {
                "name": {"type": "string"},
                "entrypoint": {"type": "array", "items": {"type": "string"}},
            },
        },
    ]
}

runner_attributes_schema_items = {
    "image": image_schema,
    "tags": {"type": "array", "items": {"type": "string"}},
    "variables": {"type": "object", "patternProperties": {r"[\w\d\-_\.]+": {"type": "string"}}},
    "before_script": {"type": "array", "items": {"type": "string"}},
    "script": {"type": "array", "items": {"type": "string"}},
    "after_script": {"type": "array", "items": {"type": "string"}},
}

runner_selector_schema = {
    "type": "object",
    "additionalProperties": True,
    "required": ["tags"],
    "properties": runner_attributes_schema_items,
}

remove_attributes_schema = {
    "type": "object",
    "additionalProperties": False,
    "required": ["tags"],
    "properties": {"tags": {"type": "array", "items": {"type": "string"}}},
}


core_shared_properties = union_dicts(
    runner_attributes_schema_items,
    {
        "bootstrap": {
            "type": "array",
            "items": {
                "anyOf": [
                    {"type": "string"},
                    {
                        "type": "object",
                        "additionalProperties": False,
                        "required": ["name"],
                        "properties": {
                            "name": {"type": "string"},
                            "compiler-agnostic": {"type": "boolean", "default": False},
                        },
                    },
                ]
            },
        },
        "match_behavior": {"type": "string", "enum": ["first", "merge"], "default": "first"},
        "mappings": {
            "type": "array",
            "items": {
                "type": "object",
                "additionalProperties": False,
                "required": ["match"],
                "properties": {
                    "match": {"type": "array", "items": {"type": "string"}},
                    "remove-attributes": remove_attributes_schema,
                    "runner-attributes": runner_selector_schema,
                },
            },
        },
        "service-job-attributes": runner_selector_schema,
        "signing-job-attributes": runner_selector_schema,
        "rebuild-index": {"type": "boolean"},
        "broken-specs-url": {"type": "string"},
        "broken-tests-packages": {"type": "array", "items": {"type": "string"}},
    },
)

gitlab_ci_properties = {
    "anyOf": [
        {
            "type": "object",
            "additionalProperties": False,
            "required": ["mappings"],
            "properties": union_dicts(
                core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}}
            ),
        },
        {
            "type": "object",
            "additionalProperties": False,
            "required": ["mappings"],
            "properties": union_dicts(
                core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}}
            ),
        },
    ]
}

#: Properties for inclusion in other schemas
properties: Dict[str, Any] = {"gitlab-ci": gitlab_ci_properties}

#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack gitlab-ci configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.gitlab_ci.properties: Dict[str, Any] = {'gitlab-ci': {'anyOf': [{'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'temporary-storage-url-prefix': {'type': 'string'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}]}}

Properties for inclusion in other schemas

spack.schema.gitlab_ci.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'gitlab-ci': {'anyOf': [{'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'temporary-storage-url-prefix': {'type': 'string'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}]}}, 'title': 'Spack gitlab-ci configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.merged module

Schema for configuration merged into one file.

properties: Dict[str, Any] = union_dicts(
    spack.schema.bootstrap.properties,
    spack.schema.cdash.properties,
    spack.schema.compilers.properties,
    spack.schema.concretizer.properties,
    spack.schema.config.properties,
    spack.schema.container.properties,
    spack.schema.ci.properties,
    spack.schema.definitions.properties,
    spack.schema.develop.properties,
    spack.schema.mirrors.properties,
    spack.schema.modules.properties,
    spack.schema.packages.properties,
    spack.schema.repos.properties,
    spack.schema.upstreams.properties,
    spack.schema.view.properties,
)


#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack merged configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.merged.properties: Dict[str, Any] = {'bootstrap': {'properties': {'enable': {'type': 'boolean'}, 'root': {'type': 'string'}, 'sources': {'items': {'additionalProperties': False, 'properties': {'metadata': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'metadata'], 'type': 'object'}, 'type': 'array'}, 'trusted': {'patternProperties': {'\\w[\\w-]*': {'type': 'boolean'}}, 'type': 'object'}}, 'type': 'object'}, 'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}, 'ci': {'oneOf': [{'anyOf': [{'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}, 'temporary-storage-url-prefix': {'type': 'string'}}, 'type': 'object'}]}, {'anyOf': [{'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'temporary-storage-url-prefix': {'type': 'string'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}]}]}, 'compilers': {'items': {'additionalProperties': False, 'properties': {'compiler': {'additionalProperties': False, 'properties': {'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'extra_rpaths': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'type': 'object'}, 'implicit_rpaths': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'boolean'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'operating_system': {'type': 'string'}, 'paths': {'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object'}, 'spec': {'type': 'string'}, 'target': {'type': 'string'}}, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'concretizer': {'additionalProperties': False, 'properties': {'duplicates': {'properties': {'strategy': {'enum': ['none', 'minimal', 'full'], 'type': 'string'}}, 'type': 'object'}, 'enable_node_namespace': {'type': 'boolean'}, 'os_compatible': {'additionalProperties': {'type': 'array'}, 'type': 'object'}, 'reuse': {'oneOf': [{'type': 'boolean'}, {'enum': ['dependencies'], 'type': 'string'}, {'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'from': {'items': {'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'include': {'items': {'type': 'string'}, 'type': 'array'}, 'type': {'enum': ['local', 'buildcache', 'external'], 'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'include': {'items': {'type': 'string'}, 'type': 'array'}, 'roots': {'type': 'boolean'}}, 'type': 'object'}]}, 'targets': {'properties': {'granularity': {'enum': ['generic', 'microarchitectures'], 'type': 'string'}, 'host_compatible': {'type': 'boolean'}}, 'type': 'object'}, 'unify': {'oneOf': [{'type': 'boolean'}, {'enum': ['when_possible'], 'type': 'string'}]}}, 'type': 'object'}, 'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:terminal_title has been replaced by install_status and is ignored', 'properties': ['terminal_title']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'aliases': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'develop_stage_link': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_status': {'type': 'boolean'}, 'install_tree': {'anyOf': [{'properties': {'padded_length': {'oneOf': [{'minimum': 0, 'type': 'integer'}, {'type': 'boolean'}]}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'root': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'enum': ['rpath', 'runpath'], 'type': 'string'}, {'properties': {'bind': {'type': 'boolean'}, 'type': {'enum': ['rpath', 'runpath'], 'type': 'string'}}, 'type': 'object'}]}, 'source_cache': {'type': 'string'}, 'ssl_certs': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}, 'container': {'additionalProperties': False, 'properties': {'depfile': {'default': False, 'type': 'boolean'}, 'docker': {'additionalProperties': False, 'default': {}, 'type': 'object'}, 'format': {'enum': ['docker', 'singularity'], 'type': 'string'}, 'images': {'anyOf': [{'additionalProperties': False, 'properties': {'os': {'type': 'string'}, 'spack': {'anyOf': [{'type': 'string'}, {'additional_properties': False, 'properties': {'ref': {'type': 'string'}, 'resolve_sha': {'default': False, 'type': 'boolean'}, 'url': {'type': 'string'}, 'verify': {'default': False, 'type': 'boolean'}}, 'type': 'object'}]}}, 'required': ['os', 'spack'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'required': ['build', 'final'], 'type': 'object'}]}, 'labels': {'type': 'object'}, 'os_packages': {'additionalProperties': False, 'properties': {'build': {'items': {'type': 'string'}, 'type': 'array'}, 'command': {'enum': ['apt', 'yum', 'zypper', 'apk', 'yum_amazon'], 'type': 'string'}, 'final': {'items': {'type': 'string'}, 'type': 'array'}, 'update': {'type': 'boolean'}}, 'type': 'object'}, 'singularity': {'additionalProperties': False, 'default': {}, 'properties': {'help': {'type': 'string'}, 'runscript': {'type': 'string'}, 'startscript': {'type': 'string'}, 'test': {'type': 'string'}}, 'type': 'object'}, 'strip': {'default': True, 'type': 'boolean'}, 'template': {'default': None, 'type': 'string'}}, 'type': 'object'}, 'definitions': {'default': [], 'items': {'patternProperties': {'^(?!when$)\\w*': {'default': [], 'items': {'anyOf': [{'additionalProperties': False, 'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'matrix': {'items': {'items': {'type': 'string'}, 'type': 'array'}, 'type': 'array'}}, 'type': 'object'}, {'type': 'string'}, {'type': 'null'}]}, 'type': 'array'}}, 'properties': {'when': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'develop': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'properties': {'path': {'type': 'string'}, 'spec': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'anyOf': [{'required': ['url']}, {'required': ['fetch']}, {'required': ['pull']}], 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'autopush': {'type': 'boolean'}, 'binary': {'type': 'boolean'}, 'endpoint_url': {'type': ['string', 'null']}, 'fetch': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'profile': {'type': ['string', 'null']}, 'push': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'signed': {'type': 'boolean'}, 'source': {'type': 'boolean'}, 'url': {'type': 'string'}}, 'type': 'object'}]}}, 'type': 'object'}, 'modules': {'additionalProperties': False, 'patternProperties': {'^(?!prefix_inspections$)\\w[\\w-]*$': {'additionalProperties': False, 'default': {}, 'properties': {'arch_folder': {'type': 'boolean'}, 'enable': {'default': [], 'items': {'enum': ['tcl', 'lmod'], 'type': 'string'}, 'type': 'array'}, 'lmod': {'allOf': [{'allOf': [{'properties': {'all': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, 'defaults': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude_implicits': {'default': False, 'type': 'boolean'}, 'hash_length': {'default': 7, 'minimum': 0, 'type': 'integer'}, 'hide_implicits': {'default': False, 'type': 'boolean'}, 'include': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'naming_scheme': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'verbose': {'default': False, 'type': 'boolean'}}}, {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, '^[\\^@%+~]': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}}, 'validate_spec': True}], 'default': {}, 'type': 'object'}, {'properties': {'core_compilers': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'core_specs': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'filter_hierarchy_specs': {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'hierarchy': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}]}, 'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'roots': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}, 'tcl': {'allOf': [{'allOf': [{'properties': {'all': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, 'defaults': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude_implicits': {'default': False, 'type': 'boolean'}, 'hash_length': {'default': 7, 'minimum': 0, 'type': 'integer'}, 'hide_implicits': {'default': False, 'type': 'boolean'}, 'include': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'naming_scheme': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'verbose': {'default': False, 'type': 'boolean'}}}, {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, '^[\\^@%+~]': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}}, 'validate_spec': True}], 'default': {}, 'type': 'object'}, {}]}, 'use_view': {'anyOf': [{'type': 'string'}, {'type': 'boolean'}]}}, 'type': 'object'}}, 'properties': {'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'(?!^all$)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting 'compiler:', 'target:' or 'provider:' preferences in a package-specific section of packages.yaml is deprecated, and will be removed in v0.23.\n\n\tThese preferences will be ignored by Spack, and can be set only in the 'all' section of the same file. You can run:\n\n\t\t$ spack audit configs\n\n\tto get better diagnostics, including files:lines where the deprecated attributes are used.\n\n\tUse requirements to enforce conditions on specific packages: https://spack.readthedocs.io/en/latest/packages_yaml.html#package-requirements\n", 'properties': ['target', 'compiler', 'providers']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'additionalProperties': True, 'properties': {'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'properties': {'all': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting version preferences in the 'all' section of packages.yaml is deprecated and will be removed in v0.23\n\n\tThese preferences will be ignored by Spack. You can set them only in package-specific sections of the same file.\n", 'properties': ['version']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {}}, 'type': 'object'}}, 'type': 'object'}, 'repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'upstreams': {'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'install_tree': {'type': 'string'}, 'modules': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, 'view': {'anyOf': [{'type': 'boolean'}, {'type': 'string'}, {'patternProperties': {'\\w+': {'additionalProperties': False, 'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'link': {'pattern': '(roots|all|run)', 'type': 'string'}, 'link_type': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'root': {'type': 'string'}, 'select': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['root']}}, 'type': 'object'}]}}

Properties for inclusion in other schemas

spack.schema.merged.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'bootstrap': {'properties': {'enable': {'type': 'boolean'}, 'root': {'type': 'string'}, 'sources': {'items': {'additionalProperties': False, 'properties': {'metadata': {'type': 'string'}, 'name': {'type': 'string'}}, 'required': ['name', 'metadata'], 'type': 'object'}, 'type': 'array'}, 'trusted': {'patternProperties': {'\\w[\\w-]*': {'type': 'boolean'}}, 'type': 'object'}}, 'type': 'object'}, 'cdash': {'additionalProperties': False, 'patternProperties': {'build-group': {'type': 'string'}, 'project': {'type': 'string'}, 'site': {'type': 'string'}, 'url': {'type': 'string'}}, 'required': ['build-group'], 'type': 'object'}, 'ci': {'oneOf': [{'anyOf': [{'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'pipeline-gen': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'submapping': {'items': {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'match': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}}, 'required': ['submapping'], 'type': 'object'}, {'oneOf': [{'additionalProperties': False, 'properties': {'noop-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'noop-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'build-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'build-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'copy-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'copy-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'reindex-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'reindex-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'signing-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'signing-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'cleanup-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'cleanup-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, {'additionalProperties': False, 'properties': {'any-job': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'any-job-remove': {'additionalProperties': True, 'properties': {'after_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'before_script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'anyOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}]}]}, 'type': 'array'}, 'rebuild-index': {'type': 'boolean'}, 'target': {'default': 'gitlab', 'enum': ['gitlab'], 'type': 'string'}, 'temporary-storage-url-prefix': {'type': 'string'}}, 'type': 'object'}]}, {'anyOf': [{'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'enable-artifacts-buildcache': {'type': 'boolean'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'bootstrap': {'items': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'compiler-agnostic': {'default': False, 'type': 'boolean'}, 'name': {'type': 'string'}}, 'required': ['name'], 'type': 'object'}]}, 'type': 'array'}, 'broken-specs-url': {'type': 'string'}, 'broken-tests-packages': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'mappings': {'items': {'additionalProperties': False, 'properties': {'match': {'items': {'type': 'string'}, 'type': 'array'}, 'remove-attributes': {'additionalProperties': False, 'properties': {'tags': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['tags'], 'type': 'object'}, 'runner-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}}, 'required': ['match'], 'type': 'object'}, 'type': 'array'}, 'match_behavior': {'default': 'first', 'enum': ['first', 'merge'], 'type': 'string'}, 'rebuild-index': {'type': 'boolean'}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'service-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'signing-job-attributes': {'additionalProperties': True, 'properties': {'after_script': {'items': {'type': 'string'}, 'type': 'array'}, 'before_script': {'items': {'type': 'string'}, 'type': 'array'}, 'image': {'oneOf': [{'type': 'string'}, {'properties': {'entrypoint': {'items': {'type': 'string'}, 'type': 'array'}, 'name': {'type': 'string'}}, 'type': 'object'}]}, 'script': {'items': {'type': 'string'}, 'type': 'array'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['tags'], 'type': 'object'}, 'tags': {'items': {'type': 'string'}, 'type': 'array'}, 'temporary-storage-url-prefix': {'type': 'string'}, 'variables': {'patternProperties': {'[\\w\\d\\-_\\.]+': {'type': 'string'}}, 'type': 'object'}}, 'required': ['mappings'], 'type': 'object'}]}]}, 'compilers': {'items': {'additionalProperties': False, 'properties': {'compiler': {'additionalProperties': False, 'properties': {'alias': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'extra_rpaths': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'additionalProperties': False, 'properties': {'cflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cppflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxxflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldflags': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'ldlibs': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'type': 'object'}, 'implicit_rpaths': {'anyOf': [{'items': {'type': 'string'}, 'type': 'array'}, {'type': 'boolean'}]}, 'modules': {'anyOf': [{'type': 'string'}, {'type': 'null'}, {'type': 'array'}]}, 'operating_system': {'type': 'string'}, 'paths': {'additionalProperties': False, 'properties': {'cc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'cxx': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'f77': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'fc': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'required': ['cc', 'cxx', 'f77', 'fc'], 'type': 'object'}, 'spec': {'type': 'string'}, 'target': {'type': 'string'}}, 'required': ['paths', 'spec', 'modules', 'operating_system'], 'type': 'object'}}, 'type': 'object'}, 'type': 'array'}, 'concretizer': {'additionalProperties': False, 'properties': {'duplicates': {'properties': {'strategy': {'enum': ['none', 'minimal', 'full'], 'type': 'string'}}, 'type': 'object'}, 'enable_node_namespace': {'type': 'boolean'}, 'os_compatible': {'additionalProperties': {'type': 'array'}, 'type': 'object'}, 'reuse': {'oneOf': [{'type': 'boolean'}, {'enum': ['dependencies'], 'type': 'string'}, {'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'from': {'items': {'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'include': {'items': {'type': 'string'}, 'type': 'array'}, 'type': {'enum': ['local', 'buildcache', 'external'], 'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'include': {'items': {'type': 'string'}, 'type': 'array'}, 'roots': {'type': 'boolean'}}, 'type': 'object'}]}, 'targets': {'properties': {'granularity': {'enum': ['generic', 'microarchitectures'], 'type': 'string'}, 'host_compatible': {'type': 'boolean'}}, 'type': 'object'}, 'unify': {'oneOf': [{'type': 'boolean'}, {'enum': ['when_possible'], 'type': 'string'}]}}, 'type': 'object'}, 'config': {'default': {}, 'deprecatedProperties': {'error': False, 'message': 'config:terminal_title has been replaced by install_status and is ignored', 'properties': ['terminal_title']}, 'properties': {'additional_external_search_paths': {'items': {'type': 'string'}, 'type': 'array'}, 'aliases': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'allow_sgid': {'type': 'boolean'}, 'binary_index_root': {'type': 'string'}, 'binary_index_ttl': {'minimum': 0, 'type': 'integer'}, 'build_jobs': {'minimum': 1, 'type': 'integer'}, 'build_language': {'type': 'string'}, 'build_stage': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'ccache': {'type': 'boolean'}, 'checksum': {'type': 'boolean'}, 'concretizer': {'enum': ['original', 'clingo'], 'type': 'string'}, 'connect_timeout': {'minimum': 0, 'type': 'integer'}, 'db_lock_timeout': {'minimum': 1, 'type': 'integer'}, 'debug': {'type': 'boolean'}, 'deprecated': {'type': 'boolean'}, 'develop_stage_link': {'type': 'string'}, 'dirty': {'type': 'boolean'}, 'environments_root': {'type': 'string'}, 'extensions': {'items': {'type': 'string'}, 'type': 'array'}, 'flags': {'properties': {'keep_werror': {'enum': ['all', 'specific', 'none'], 'type': 'string'}}, 'type': 'object'}, 'install_hash_length': {'minimum': 1, 'type': 'integer'}, 'install_missing_compilers': {'type': 'boolean'}, 'install_path_scheme': {'type': 'string'}, 'install_status': {'type': 'boolean'}, 'install_tree': {'anyOf': [{'properties': {'padded_length': {'oneOf': [{'minimum': 0, 'type': 'integer'}, {'type': 'boolean'}]}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'root': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'license_dir': {'type': 'string'}, 'locks': {'type': 'boolean'}, 'misc_cache': {'type': 'string'}, 'package_lock_timeout': {'anyOf': [{'minimum': 1, 'type': 'integer'}, {'type': 'null'}]}, 'shared_linking': {'anyOf': [{'enum': ['rpath', 'runpath'], 'type': 'string'}, {'properties': {'bind': {'type': 'boolean'}, 'type': {'enum': ['rpath', 'runpath'], 'type': 'string'}}, 'type': 'object'}]}, 'source_cache': {'type': 'string'}, 'ssl_certs': {'type': 'string'}, 'stage_name': {'type': 'string'}, 'suppress_gpg_warnings': {'type': 'boolean'}, 'template_dirs': {'items': {'type': 'string'}, 'type': 'array'}, 'test_stage': {'type': 'string'}, 'url_fetch_method': {'enum': ['urllib', 'curl'], 'type': 'string'}, 'verify_ssl': {'type': 'boolean'}}, 'type': 'object'}, 'container': {'additionalProperties': False, 'properties': {'depfile': {'default': False, 'type': 'boolean'}, 'docker': {'additionalProperties': False, 'default': {}, 'type': 'object'}, 'format': {'enum': ['docker', 'singularity'], 'type': 'string'}, 'images': {'anyOf': [{'additionalProperties': False, 'properties': {'os': {'type': 'string'}, 'spack': {'anyOf': [{'type': 'string'}, {'additional_properties': False, 'properties': {'ref': {'type': 'string'}, 'resolve_sha': {'default': False, 'type': 'boolean'}, 'url': {'type': 'string'}, 'verify': {'default': False, 'type': 'boolean'}}, 'type': 'object'}]}}, 'required': ['os', 'spack'], 'type': 'object'}, {'additionalProperties': False, 'properties': {'build': {'type': 'string'}, 'final': {'type': 'string'}}, 'required': ['build', 'final'], 'type': 'object'}]}, 'labels': {'type': 'object'}, 'os_packages': {'additionalProperties': False, 'properties': {'build': {'items': {'type': 'string'}, 'type': 'array'}, 'command': {'enum': ['apt', 'yum', 'zypper', 'apk', 'yum_amazon'], 'type': 'string'}, 'final': {'items': {'type': 'string'}, 'type': 'array'}, 'update': {'type': 'boolean'}}, 'type': 'object'}, 'singularity': {'additionalProperties': False, 'default': {}, 'properties': {'help': {'type': 'string'}, 'runscript': {'type': 'string'}, 'startscript': {'type': 'string'}, 'test': {'type': 'string'}}, 'type': 'object'}, 'strip': {'default': True, 'type': 'boolean'}, 'template': {'default': None, 'type': 'string'}}, 'type': 'object'}, 'definitions': {'default': [], 'items': {'patternProperties': {'^(?!when$)\\w*': {'default': [], 'items': {'anyOf': [{'additionalProperties': False, 'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'matrix': {'items': {'items': {'type': 'string'}, 'type': 'array'}, 'type': 'array'}}, 'type': 'object'}, {'type': 'string'}, {'type': 'null'}]}, 'type': 'array'}}, 'properties': {'when': {'type': 'string'}}, 'type': 'object'}, 'type': 'array'}, 'develop': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'properties': {'path': {'type': 'string'}, 'spec': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}, 'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'anyOf': [{'required': ['url']}, {'required': ['fetch']}, {'required': ['pull']}], 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'autopush': {'type': 'boolean'}, 'binary': {'type': 'boolean'}, 'endpoint_url': {'type': ['string', 'null']}, 'fetch': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'profile': {'type': ['string', 'null']}, 'push': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'signed': {'type': 'boolean'}, 'source': {'type': 'boolean'}, 'url': {'type': 'string'}}, 'type': 'object'}]}}, 'type': 'object'}, 'modules': {'additionalProperties': False, 'patternProperties': {'^(?!prefix_inspections$)\\w[\\w-]*$': {'additionalProperties': False, 'default': {}, 'properties': {'arch_folder': {'type': 'boolean'}, 'enable': {'default': [], 'items': {'enum': ['tcl', 'lmod'], 'type': 'string'}, 'type': 'array'}, 'lmod': {'allOf': [{'allOf': [{'properties': {'all': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, 'defaults': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude_implicits': {'default': False, 'type': 'boolean'}, 'hash_length': {'default': 7, 'minimum': 0, 'type': 'integer'}, 'hide_implicits': {'default': False, 'type': 'boolean'}, 'include': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'naming_scheme': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'verbose': {'default': False, 'type': 'boolean'}}}, {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, '^[\\^@%+~]': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}}, 'validate_spec': True}], 'default': {}, 'type': 'object'}, {'properties': {'core_compilers': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'core_specs': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'filter_hierarchy_specs': {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'hierarchy': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}]}, 'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'roots': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}, 'tcl': {'allOf': [{'allOf': [{'properties': {'all': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, 'defaults': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude_implicits': {'default': False, 'type': 'boolean'}, 'hash_length': {'default': 7, 'minimum': 0, 'type': 'integer'}, 'hide_implicits': {'default': False, 'type': 'boolean'}, 'include': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'naming_scheme': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'verbose': {'default': False, 'type': 'boolean'}}}, {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, '^[\\^@%+~]': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}}, 'validate_spec': True}], 'default': {}, 'type': 'object'}, {}]}, 'use_view': {'anyOf': [{'type': 'string'}, {'type': 'boolean'}]}}, 'type': 'object'}}, 'properties': {'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'(?!^all$)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting 'compiler:', 'target:' or 'provider:' preferences in a package-specific section of packages.yaml is deprecated, and will be removed in v0.23.\n\n\tThese preferences will be ignored by Spack, and can be set only in the 'all' section of the same file. You can run:\n\n\t\t$ spack audit configs\n\n\tto get better diagnostics, including files:lines where the deprecated attributes are used.\n\n\tUse requirements to enforce conditions on specific packages: https://spack.readthedocs.io/en/latest/packages_yaml.html#package-requirements\n", 'properties': ['target', 'compiler', 'providers']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'additionalProperties': True, 'properties': {'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'properties': {'all': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting version preferences in the 'all' section of packages.yaml is deprecated and will be removed in v0.23\n\n\tThese preferences will be ignored by Spack. You can set them only in package-specific sections of the same file.\n", 'properties': ['version']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {}}, 'type': 'object'}}, 'type': 'object'}, 'repos': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'upstreams': {'default': {}, 'patternProperties': {'\\w[\\w-]*': {'additionalProperties': False, 'default': {}, 'properties': {'install_tree': {'type': 'string'}, 'modules': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}}, 'type': 'object'}}, 'type': 'object'}, 'view': {'anyOf': [{'type': 'boolean'}, {'type': 'string'}, {'patternProperties': {'\\w+': {'additionalProperties': False, 'properties': {'exclude': {'items': {'type': 'string'}, 'type': 'array'}, 'link': {'pattern': '(roots|all|run)', 'type': 'string'}, 'link_type': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'root': {'type': 'string'}, 'select': {'items': {'type': 'string'}, 'type': 'array'}}, 'required': ['root']}}, 'type': 'object'}]}}, 'title': 'Spack merged configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.mirrors module

Schema for mirrors.yaml configuration file.

#: Common properties for connection specification
connection = {
    "url": {"type": "string"},
    # todo: replace this with named keys "username" / "password" or "id" / "secret"
    "access_pair": {
        "type": "array",
        "items": {"type": ["string", "null"], "minItems": 2, "maxItems": 2},
    },
    "access_token": {"type": ["string", "null"]},
    "profile": {"type": ["string", "null"]},
    "endpoint_url": {"type": ["string", "null"]},
}

#: Mirror connection inside pull/push keys
fetch_and_push = {
    "anyOf": [
        {"type": "string"},
        {
            "type": "object",
            "additionalProperties": False,
            "properties": {**connection},  # type: ignore
        },
    ]
}

#: Mirror connection when no pull/push keys are set
mirror_entry = {
    "type": "object",
    "additionalProperties": False,
    "anyOf": [{"required": ["url"]}, {"required": ["fetch"]}, {"required": ["pull"]}],
    "properties": {
        "source": {"type": "boolean"},
        "binary": {"type": "boolean"},
        "signed": {"type": "boolean"},
        "fetch": fetch_and_push,
        "push": fetch_and_push,
        "autopush": {"type": "boolean"},
        **connection,  # type: ignore
    },
}

#: Properties for inclusion in other schemas
properties: Dict[str, Any] = {
    "mirrors": {
        "type": "object",
        "default": {},
        "additionalProperties": False,
        "patternProperties": {r"\w[\w-]*": {"anyOf": [{"type": "string"}, mirror_entry]}},
    }
}


#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack mirror configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.mirrors.connection = {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}

Common properties for connection specification

spack.schema.mirrors.fetch_and_push = {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}

Mirror connection inside pull/push keys

spack.schema.mirrors.mirror_entry = {'additionalProperties': False, 'anyOf': [{'required': ['url']}, {'required': ['fetch']}, {'required': ['pull']}], 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'autopush': {'type': 'boolean'}, 'binary': {'type': 'boolean'}, 'endpoint_url': {'type': ['string', 'null']}, 'fetch': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'profile': {'type': ['string', 'null']}, 'push': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'signed': {'type': 'boolean'}, 'source': {'type': 'boolean'}, 'url': {'type': 'string'}}, 'type': 'object'}

Mirror connection when no pull/push keys are set

spack.schema.mirrors.properties: Dict[str, Any] = {'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'anyOf': [{'required': ['url']}, {'required': ['fetch']}, {'required': ['pull']}], 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'autopush': {'type': 'boolean'}, 'binary': {'type': 'boolean'}, 'endpoint_url': {'type': ['string', 'null']}, 'fetch': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'profile': {'type': ['string', 'null']}, 'push': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'signed': {'type': 'boolean'}, 'source': {'type': 'boolean'}, 'url': {'type': 'string'}}, 'type': 'object'}]}}, 'type': 'object'}}

Properties for inclusion in other schemas

spack.schema.mirrors.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'mirrors': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'anyOf': [{'required': ['url']}, {'required': ['fetch']}, {'required': ['pull']}], 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'autopush': {'type': 'boolean'}, 'binary': {'type': 'boolean'}, 'endpoint_url': {'type': ['string', 'null']}, 'fetch': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'profile': {'type': ['string', 'null']}, 'push': {'anyOf': [{'type': 'string'}, {'additionalProperties': False, 'properties': {'access_pair': {'items': {'maxItems': 2, 'minItems': 2, 'type': ['string', 'null']}, 'type': 'array'}, 'access_token': {'type': ['string', 'null']}, 'endpoint_url': {'type': ['string', 'null']}, 'profile': {'type': ['string', 'null']}, 'url': {'type': 'string'}}, 'type': 'object'}]}, 'signed': {'type': 'boolean'}, 'source': {'type': 'boolean'}, 'url': {'type': 'string'}}, 'type': 'object'}]}}, 'type': 'object'}}, 'title': 'Spack mirror configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.modules module

Schema for modules.yaml configuration file.

#: Matches a spec or a multi-valued variant but not another
#: valid keyword.
#:
#: THIS NEEDS TO BE UPDATED FOR EVERY NEW KEYWORD THAT
#: IS ADDED IMMEDIATELY BELOW THE MODULE TYPE ATTRIBUTE
spec_regex = (
    r"(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|"
    r"include|exclude|projections|naming_scheme|core_compilers|all)(^\w[\w-]*)"
)

#: Matches a valid name for a module set
valid_module_set_name = r"^(?!prefix_inspections$)\w[\w-]*$"

#: Matches an anonymous spec, i.e. a spec without a root name
anonymous_spec_regex = r"^[\^@%+~]"

#: Definitions for parts of module schema
array_of_strings = {"type": "array", "default": [], "items": {"type": "string"}}

dictionary_of_strings = {"type": "object", "patternProperties": {r"\w[\w-]*": {"type": "string"}}}

dependency_selection = {"type": "string", "enum": ["none", "run", "direct", "all"]}

module_file_configuration = {
    "type": "object",
    "default": {},
    "additionalProperties": False,
    "properties": {
        "filter": {
            "type": "object",
            "default": {},
            "additionalProperties": False,
            "properties": {
                "exclude_env_vars": {"type": "array", "default": [], "items": {"type": "string"}}
            },
        },
        "template": {"type": "string"},
        "autoload": dependency_selection,
        "prerequisites": dependency_selection,
        "conflict": array_of_strings,
        "load": array_of_strings,
        "suffixes": {
            "type": "object",
            "validate_spec": True,
            "patternProperties": {r"\w[\w-]*": {"type": "string"}},  # key
        },
        "environment": spack.schema.environment.definition,
    },
}

projections_scheme = spack.schema.projections.properties["projections"]

module_type_configuration = {
    "type": "object",
    "default": {},
    "allOf": [
        {
            "properties": {
                "verbose": {"type": "boolean", "default": False},
                "hash_length": {"type": "integer", "minimum": 0, "default": 7},
                "include": array_of_strings,
                "exclude": array_of_strings,
                "exclude_implicits": {"type": "boolean", "default": False},
                "defaults": array_of_strings,
                "hide_implicits": {"type": "boolean", "default": False},
                "naming_scheme": {"type": "string"},  # Can we be more specific here?
                "projections": projections_scheme,
                "all": module_file_configuration,
            }
        },
        {
            "validate_spec": True,
            "patternProperties": {
                spec_regex: module_file_configuration,
                anonymous_spec_regex: module_file_configuration,
            },
        },
    ],
}


module_config_properties = {
    "use_view": {"anyOf": [{"type": "string"}, {"type": "boolean"}]},
    "arch_folder": {"type": "boolean"},
    "roots": {
        "type": "object",
        "properties": {"tcl": {"type": "string"}, "lmod": {"type": "string"}},
    },
    "enable": {
        "type": "array",
        "default": [],
        "items": {"type": "string", "enum": ["tcl", "lmod"]},
    },
    "lmod": {
        "allOf": [
            # Base configuration
            module_type_configuration,
            {
                "type": "object",
                "properties": {
                    "core_compilers": array_of_strings,
                    "hierarchy": array_of_strings,
                    "core_specs": array_of_strings,
                    "filter_hierarchy_specs": {
                        "type": "object",
                        "patternProperties": {spec_regex: array_of_strings},
                    },
                },
            },  # Specific lmod extensions
        ]
    },
    "tcl": {
        "allOf": [
            # Base configuration
            module_type_configuration,
            {},  # Specific tcl extensions
        ]
    },
    "prefix_inspections": {
        "type": "object",
        "additionalProperties": False,
        "patternProperties": {
            # prefix-relative path to be inspected for existence
            r"^[\w-]*": array_of_strings
        },
    },
}


# Properties for inclusion into other schemas (requires definitions)
properties: Dict[str, Any] = {
    "modules": {
        "type": "object",
        "additionalProperties": False,
        "properties": {
            "prefix_inspections": {
                "type": "object",
                "additionalProperties": False,
                "patternProperties": {
                    # prefix-relative path to be inspected for existence
                    r"^[\w-]*": array_of_strings
                },
            }
        },
        "patternProperties": {
            valid_module_set_name: {
                "type": "object",
                "default": {},
                "additionalProperties": False,
                "properties": module_config_properties,
            }
        },
    }
}

#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack module file configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}
spack.schema.modules.anonymous_spec_regex = '^[\\^@%+~]'

Matches an anonymous spec, i.e. a spec without a root name

spack.schema.modules.array_of_strings = {'default': [], 'items': {'type': 'string'}, 'type': 'array'}

Definitions for parts of module schema

spack.schema.modules.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'modules': {'additionalProperties': False, 'patternProperties': {'^(?!prefix_inspections$)\\w[\\w-]*$': {'additionalProperties': False, 'default': {}, 'properties': {'arch_folder': {'type': 'boolean'}, 'enable': {'default': [], 'items': {'enum': ['tcl', 'lmod'], 'type': 'string'}, 'type': 'array'}, 'lmod': {'allOf': [{'allOf': [{'properties': {'all': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, 'defaults': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude_implicits': {'default': False, 'type': 'boolean'}, 'hash_length': {'default': 7, 'minimum': 0, 'type': 'integer'}, 'hide_implicits': {'default': False, 'type': 'boolean'}, 'include': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'naming_scheme': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'verbose': {'default': False, 'type': 'boolean'}}}, {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, '^[\\^@%+~]': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}}, 'validate_spec': True}], 'default': {}, 'type': 'object'}, {'properties': {'core_compilers': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'core_specs': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'filter_hierarchy_specs': {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'hierarchy': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}]}, 'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'roots': {'properties': {'lmod': {'type': 'string'}, 'tcl': {'type': 'string'}}, 'type': 'object'}, 'tcl': {'allOf': [{'allOf': [{'properties': {'all': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, 'defaults': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'exclude_implicits': {'default': False, 'type': 'boolean'}, 'hash_length': {'default': 7, 'minimum': 0, 'type': 'integer'}, 'hide_implicits': {'default': False, 'type': 'boolean'}, 'include': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'naming_scheme': {'type': 'string'}, 'projections': {'patternProperties': {'all|\\w[\\w-]*': {'type': 'string'}}, 'type': 'object'}, 'verbose': {'default': False, 'type': 'boolean'}}}, {'patternProperties': {'(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}, '^[\\^@%+~]': {'additionalProperties': False, 'default': {}, 'properties': {'autoload': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'conflict': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}, 'filter': {'additionalProperties': False, 'default': {}, 'properties': {'exclude_env_vars': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'load': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'prerequisites': {'enum': ['none', 'run', 'direct', 'all'], 'type': 'string'}, 'suffixes': {'patternProperties': {'\\w[\\w-]*': {'type': 'string'}}, 'type': 'object', 'validate_spec': True}, 'template': {'type': 'string'}}, 'type': 'object'}}, 'validate_spec': True}], 'default': {}, 'type': 'object'}, {}]}, 'use_view': {'anyOf': [{'type': 'string'}, {'type': 'boolean'}]}}, 'type': 'object'}}, 'properties': {'prefix_inspections': {'additionalProperties': False, 'patternProperties': {'^[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack module file configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.modules.spec_regex = '(?!hierarchy|core_specs|verbose|hash_length|defaults|filter_hierarchy_specs|hide|include|exclude|projections|naming_scheme|core_compilers|all)(^\\w[\\w-]*)'

Matches a spec or a multi-valued variant but not another valid keyword.

THIS NEEDS TO BE UPDATED FOR EVERY NEW KEYWORD THAT IS ADDED IMMEDIATELY BELOW THE MODULE TYPE ATTRIBUTE

spack.schema.modules.valid_module_set_name = '^(?!prefix_inspections$)\\w[\\w-]*$'

Matches a valid name for a module set

spack.schema.packages module

Schema for packages.yaml configuration files.

permissions = {
    "type": "object",
    "additionalProperties": False,
    "properties": {
        "read": {"type": "string", "enum": ["user", "group", "world"]},
        "write": {"type": "string", "enum": ["user", "group", "world"]},
        "group": {"type": "string"},
    },
}

variants = {"oneOf": [{"type": "string"}, {"type": "array", "items": {"type": "string"}}]}

requirements = {
    "oneOf": [
        # 'require' can be a list of requirement_groups.
        # each requirement group is a list of one or more
        # specs. Either at least one or exactly one spec
        # in the group must be satisfied (depending on
        # whether you use "any_of" or "one_of",
        # repectively)
        {
            "type": "array",
            "items": {
                "oneOf": [
                    {
                        "type": "object",
                        "additionalProperties": False,
                        "properties": {
                            "one_of": {"type": "array", "items": {"type": "string"}},
                            "any_of": {"type": "array", "items": {"type": "string"}},
                            "spec": {"type": "string"},
                            "message": {"type": "string"},
                            "when": {"type": "string"},
                        },
                    },
                    {"type": "string"},
                ]
            },
        },
        # Shorthand for a single requirement group with
        # one member
        {"type": "string"},
    ]
}

prefer_and_conflict = {
    "type": "array",
    "items": {
        "oneOf": [
            {
                "type": "object",
                "additionalProperties": False,
                "properties": {
                    "spec": {"type": "string"},
                    "message": {"type": "string"},
                    "when": {"type": "string"},
                },
            },
            {"type": "string"},
        ]
    },
}

permissions = {
    "type": "object",
    "additionalProperties": False,
    "properties": {
        "read": {"type": "string", "enum": ["user", "group", "world"]},
        "write": {"type": "string", "enum": ["user", "group", "world"]},
        "group": {"type": "string"},
    },
}

package_attributes = {
    "type": "object",
    "additionalProperties": False,
    "patternProperties": {r"\w+": {}},
}

REQUIREMENT_URL = "https://spack.readthedocs.io/en/latest/packages_yaml.html#package-requirements"

#: Properties for inclusion in other schemas
properties: Dict[str, Any] = {
    "packages": {
        "type": "object",
        "default": {},
        "additionalProperties": False,
        "properties": {
            "all": {  # package name
                "type": "object",
                "default": {},
                "additionalProperties": False,
                "properties": {
                    "require": requirements,
                    "prefer": prefer_and_conflict,
                    "conflict": prefer_and_conflict,
                    "version": {},  # Here only to warn users on ignored properties
                    "target": {
                        "type": "array",
                        "default": [],
                        # target names
                        "items": {"type": "string"},
                    },
                    "compiler": {
                        "type": "array",
                        "default": [],
                        "items": {"type": "string"},
                    },  # compiler specs
                    "buildable": {"type": "boolean", "default": True},
                    "permissions": permissions,
                    # If 'get_full_repo' is promoted to a Package-level
                    # attribute, it could be useful to set it here
                    "package_attributes": package_attributes,
                    "providers": {
                        "type": "object",
                        "default": {},
                        "additionalProperties": False,
                        "patternProperties": {
                            r"\w[\w-]*": {
                                "type": "array",
                                "default": [],
                                "items": {"type": "string"},
                            }
                        },
                    },
                    "variants": variants,
                },
                "deprecatedProperties": {
                    "properties": ["version"],
                    "message": "setting version preferences in the 'all' section of packages.yaml "
                    "is deprecated and will be removed in v0.23\n\n\tThese preferences "
                    "will be ignored by Spack. You can set them only in package-specific sections "
                    "of the same file.\n",
                    "error": False,
                },
            }
        },
        "patternProperties": {
            r"(?!^all$)(^\w[\w-]*)": {  # package name
                "type": "object",
                "default": {},
                "additionalProperties": False,
                "properties": {
                    "require": requirements,
                    "prefer": prefer_and_conflict,
                    "conflict": prefer_and_conflict,
                    "version": {
                        "type": "array",
                        "default": [],
                        # version strings
                        "items": {"anyOf": [{"type": "string"}, {"type": "number"}]},
                    },
                    "target": {},  # Here only to warn users on ignored properties
                    "compiler": {},  # Here only to warn users on ignored properties
                    "buildable": {"type": "boolean", "default": True},
                    "permissions": permissions,
                    # If 'get_full_repo' is promoted to a Package-level
                    # attribute, it could be useful to set it here
                    "package_attributes": package_attributes,
                    "providers": {},  # Here only to warn users on ignored properties
                    "variants": variants,
                    "externals": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "spec": {"type": "string"},
                                "prefix": {"type": "string"},
                                "modules": {"type": "array", "items": {"type": "string"}},
                                "extra_attributes": {
                                    "type": "object",
                                    "additionalProperties": True,
                                    "properties": {
                                        "environment": spack.schema.environment.definition
                                    },
                                },
                            },
                            "additionalProperties": True,
                            "required": ["spec"],
                        },
                    },
                },
                "deprecatedProperties": {
                    "properties": ["target", "compiler", "providers"],
                    "message": "setting 'compiler:', 'target:' or 'provider:' preferences in "
                    "a package-specific section of packages.yaml is deprecated, and will be "
                    "removed in v0.23.\n\n\tThese preferences will be ignored by Spack, and "
                    "can be set only in the 'all' section of the same file. "
                    "You can run:\n\n\t\t$ spack audit configs\n\n\tto get better diagnostics, "
                    "including files:lines where the deprecated attributes are used.\n\n"
                    "\tUse requirements to enforce conditions on specific packages: "
                    f"{REQUIREMENT_URL}\n",
                    "error": False,
                },
            }
        },
    }
}

#: Full schema with metadata
schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": "Spack package configuration file schema",
    "type": "object",
    "additionalProperties": False,
    "properties": properties,
}


def update(data):
    changed = False
    for key in data:
        version = data[key].get("version")
        if not version or all(isinstance(v, str) for v in version):
            continue

        data[key]["version"] = [str(v) for v in version]
        changed = True

    return changed
spack.schema.packages.properties: Dict[str, Any] = {'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'(?!^all$)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting 'compiler:', 'target:' or 'provider:' preferences in a package-specific section of packages.yaml is deprecated, and will be removed in v0.23.\n\n\tThese preferences will be ignored by Spack, and can be set only in the 'all' section of the same file. You can run:\n\n\t\t$ spack audit configs\n\n\tto get better diagnostics, including files:lines where the deprecated attributes are used.\n\n\tUse requirements to enforce conditions on specific packages: https://spack.readthedocs.io/en/latest/packages_yaml.html#package-requirements\n", 'properties': ['target', 'compiler', 'providers']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'additionalProperties': True, 'properties': {'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'properties': {'all': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting version preferences in the 'all' section of packages.yaml is deprecated and will be removed in v0.23\n\n\tThese preferences will be ignored by Spack. You can set them only in package-specific sections of the same file.\n", 'properties': ['version']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {}}, 'type': 'object'}}, 'type': 'object'}}

Properties for inclusion in other schemas

spack.schema.packages.schema = {'$schema': 'http://json-schema.org/draft-07/schema#', 'additionalProperties': False, 'properties': {'packages': {'additionalProperties': False, 'default': {}, 'patternProperties': {'(?!^all$)(^\\w[\\w-]*)': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting 'compiler:', 'target:' or 'provider:' preferences in a package-specific section of packages.yaml is deprecated, and will be removed in v0.23.\n\n\tThese preferences will be ignored by Spack, and can be set only in the 'all' section of the same file. You can run:\n\n\t\t$ spack audit configs\n\n\tto get better diagnostics, including files:lines where the deprecated attributes are used.\n\n\tUse requirements to enforce conditions on specific packages: https://spack.readthedocs.io/en/latest/packages_yaml.html#package-requirements\n", 'properties': ['target', 'compiler', 'providers']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'externals': {'items': {'additionalProperties': True, 'properties': {'extra_attributes': {'additionalProperties': True, 'properties': {'environment': {'additionalProperties': False, 'default': {}, 'properties': {'append_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'prepend_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'remove_path': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'set': {'patternProperties': {'\\w[\\w-]*': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}}, 'type': 'object'}, 'unset': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'type': 'object'}, 'modules': {'items': {'type': 'string'}, 'type': 'array'}, 'prefix': {'type': 'string'}, 'spec': {'type': 'string'}}, 'required': ['spec'], 'type': 'object'}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {'default': [], 'items': {'anyOf': [{'type': 'string'}, {'type': 'number'}]}, 'type': 'array'}}, 'type': 'object'}}, 'properties': {'all': {'additionalProperties': False, 'default': {}, 'deprecatedProperties': {'error': False, 'message': "setting version preferences in the 'all' section of packages.yaml is deprecated and will be removed in v0.23\n\n\tThese preferences will be ignored by Spack. You can set them only in package-specific sections of the same file.\n", 'properties': ['version']}, 'properties': {'buildable': {'default': True, 'type': 'boolean'}, 'compiler': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'conflict': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'package_attributes': {'additionalProperties': False, 'patternProperties': {'\\w+': {}}, 'type': 'object'}, 'permissions': {'additionalProperties': False, 'properties': {'group': {'type': 'string'}, 'read': {'enum': ['user', 'group', 'world'], 'type': 'string'}, 'write': {'enum': ['user', 'group', 'world'], 'type': 'string'}}, 'type': 'object'}, 'prefer': {'items': {'oneOf': [{'additionalProperties': False, 'properties': {'message': {'type': 'string'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, 'providers': {'additionalProperties': False, 'default': {}, 'patternProperties': {'\\w[\\w-]*': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}}, 'type': 'object'}, 'require': {'oneOf': [{'items': {'oneOf': [{'additionalProperties': False, 'properties': {'any_of': {'items': {'type': 'string'}, 'type': 'array'}, 'message': {'type': 'string'}, 'one_of': {'items': {'type': 'string'}, 'type': 'array'}, 'spec': {'type': 'string'}, 'when': {'type': 'string'}}, 'type': 'object'}, {'type': 'string'}]}, 'type': 'array'}, {'type': 'string'}]}, 'target': {'default': [], 'items': {'type': 'string'}, 'type': 'array'}, 'variants': {'oneOf': [{'type': 'string'}, {'items': {'type': 'string'}, 'type': 'array'}]}, 'version': {}}, 'type': 'object'}}, 'type': 'object'}}, 'title': 'Spack package configuration file schema', 'type': 'object'}

Full schema with metadata

spack.schema.packages.update(data