Skip to content

Instantly share code, notes, and snippets.

@skshetry
Last active June 12, 2020 07:37
Show Gist options
  • Save skshetry/1ac05f0e665bd9e8f04153c0f09208a3 to your computer and use it in GitHub Desktop.
Save skshetry/1ac05f0e665bd9e8f04153c0f09208a3 to your computer and use it in GitHub Desktop.
Schema for `dvc.yaml`
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://github.com/iterative/dvc/blob/master/dvc-yaml.schema.json",
"$comment": "v0.1.0",
"title": "Pipeline Schema",
"description": "A dvc.yaml pipeline definition",
"type": "object",
"definitions": {
"OutputFlags": {
"type": "object",
"description": "Output file with more flags",
"properties": {
"cache": {
"description": "Cache outputs by dvc",
"type": "boolean",
"default": true
},
"persist": {
"description": "Persist outputs among runs",
"type": "boolean",
"default": false
}
}
},
"PlotFlags": {
"description": "Plots file with more flags",
"allOf": [
{
"$ref": "#/definitions/OutputFlags"
}
],
"$comment": "Unfortunately, 'additionalProperties' only works props in immediate schema.",
"properties": {
"cache": {},
"persist": {},
"x": {
"description": "Default field name to use as x-axis data",
"type": [
"string",
"integer"
]
},
"y": {
"description": "Default field name to use as y-axis data",
"type": [
"string",
"integer"
]
},
"x_label": {
"description": "Default label for the x-axis",
"type": "string"
},
"y_label": {
"description": "Default label for the y-axis",
"type": "string"
},
"template": {
"description": "Default plot template",
"type": "string"
},
"title": {
"description": "Default plot title",
"type": "string"
},
"header": {
"description": "The target CSV or TSV has a header",
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"Output": {
"description": "An output of the stage",
"anyOf": [
{
"type": "string",
"description": "Output will be cached by dvc"
},
{
"type": "object",
"description": "Output file",
"patternProperties": {
"^.*$": {
"$ref": "#/definitions/OutputFlags",
"additionalProperties": false
}
},
"additionalProperties": false,
"maxProperties": 1
}
]
}
},
"properties": {
"stages": {
"description": "List of stages.",
"type": "object",
"patternProperties": {
"^[A-Za-z0-9_-]+$": {
"description": "The stage",
"type": "object",
"properties": {
"cmd": {
"type": "string",
"description": "Command to run"
},
"wdir": {
"type": "string",
"description": "Working directory"
},
"deps": {
"type": "array",
"description": "Dependencies for the stage",
"items": {
"type": "string",
"description": "A dependency for the stage"
},
"minItems": 1,
"uniqueItems": true
},
"params": {
"type": "array",
"description": "Params for the stage",
"items": {
"anyOf": [
{
"type": "string",
"description": "Params from default params file"
},
{
"type": "object",
"description": "Params from custom params file",
"patternProperties": {
"^.*$": {
"type": "array",
"description": "Custom params file",
"items": {
"type": "string",
"description": "Params from custom file"
},
"minItems": 1,
"uniqueItems": true
}
},
"additionalProperties": false,
"maxProperties": 1
}
]
},
"minItems": 1,
"uniqueItems": true
},
"outs": {
"type": "array",
"description": "Outputs of the stage",
"items": {
"$ref": "#/definitions/Output"
},
"minItems": 1,
"uniqueItems": true
},
"metrics": {
"type": "array",
"description": "Metrics outputs of the stage",
"items": {
"$ref": "#/definitions/Output"
},
"minItems": 1,
"uniqueItems": true
},
"plots": {
"type": "array",
"description": "Plots outputs of the stage",
"items": {
"anyOf": [
{
"type": "string",
"description": "Plots will be cached by dvc"
},
{
"type": "object",
"description": "Output file",
"patternProperties": {
"^.*$": {
"$ref": "#/definitions/PlotFlags"
}
},
"maxProperties": 1
}
]
},
"minItems": 1,
"uniqueItems": true
},
"frozen": {
"type": "boolean",
"description": "Assume stage as unchanged",
"default": true
},
"locked": {
"type": "boolean",
"description": "Assume stage as unchanged (deprecated)",
"default": false
},
"always_changed": {
"type": "boolean",
"description": "Assume stage as always changed.",
"default": false
},
"meta": {
"description": "Additional information/metadata"
}
},
"additionalProperties": false,
"required": [
"cmd"
]
}
},
"additionalProperties": false
}
},
"required": [
"stages"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment