diff --git a/scripts/schema/dvc-yaml.json b/scripts/schema/dvc-yaml.json new file mode 100644 index 000000000..fa3ff0e73 --- /dev/null +++ b/scripts/schema/dvc-yaml.json @@ -0,0 +1,227 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$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": false + }, + "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" + ] +}