Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

Appendix: JSON Schema for Variant Metadata

Appendix: JSON Schema for Variant Metadata

  1{
  2  "$schema": "https://json-schema.org/draft/2020-12/schema",
  3  "$id": "https://wheelnext.dev/schema/variant-0.0.2.json",
  4  "title": "Variant metadata, v0.0.2",
  5  "description": "The format for variant metadata (variant.json) and index-level metadata ({name}-{version}-variants.json)",
  6  "type": "object",
  7  "properties": {
  8    "$schema": {
  9      "description": "JSON schema URL",
 10      "type": "string"
 11    },
 12    "default-priorities": {
 13      "description": "Default priorities for ordering variants",
 14      "type": "object",
 15      "properties": {
 16        "namespace": {
 17          "description": "Namespaces (in order of preference)",
 18          "type": "array",
 19          "items": {
 20            "type": "string",
 21            "pattern": "^[a-z0-9_]+$"
 22          },
 23          "minItems": 1,
 24          "uniqueItems": true
 25        },
 26        "feature": {
 27          "description": "Default feature priorities (by namespace)",
 28          "type": "object",
 29          "patternProperties": {
 30            "^[a-z0-9_]+$": {
 31              "description": "The most preferred features",
 32              "type": "array",
 33              "items": {
 34                "type": "string",
 35                "pattern": "^[a-z0-9_]+$"
 36              },
 37              "minItems": 0,
 38              "uniqueItems": true
 39            }
 40          },
 41          "additionalProperties": false,
 42          "uniqueItems": true
 43        },
 44        "property": {
 45          "description": "Default property priorities (by namespace)",
 46          "type": "object",
 47          "patternProperties": {
 48            "^[a-z0-9_]+$": {
 49              "description": "Default property priorities (by feature name)",
 50              "type": "object",
 51              "patternProperties": {
 52                "^[a-z0-9_]+$": {
 53                  "description": "The most preferred feature values",
 54                  "type": "array",
 55                  "items": {
 56                    "type": "string",
 57                    "pattern": "^[a-z0-9_.]+$"
 58                  },
 59                  "minItems": 0,
 60                  "uniqueItems": true
 61                }
 62              },
 63              "additionalProperties": false,
 64              "uniqueItems": true
 65            }
 66          },
 67          "additionalProperties": false,
 68          "uniqueItems": true
 69        }
 70      },
 71      "additionalProperties": false,
 72      "uniqueItems": true,
 73      "required": [
 74        "namespace"
 75      ]
 76    },
 77    "providers": {
 78      "description": "Mapping of namespaces to provider information",
 79      "type": "object",
 80      "patternProperties": {
 81        "^[A-Za-z0-9_]+$": {
 82          "type": "object",
 83          "description": "Provider information",
 84          "properties": {
 85            "plugin-api": {
 86              "description": "Object reference to plugin class",
 87              "type": "string",
 88              "pattern": "^([a-zA-Z0-9._]+ *: *[a-zA-Z0-9._]+)|([a-zA-Z0-9._]+)$"
 89            },
 90            "optional": {
 91              "description": "Whether the provider is optional (disabled by default)",
 92              "type": "boolean"
 93            },
 94            "requires": {
 95              "description": "Dependency specifiers for how to install the plugin",
 96              "type": "array",
 97              "items": {
 98                "type": "string",
 99                "minLength": 1
100              },
101              "minItems": 0,
102              "uniqueItems": true
103            },
104            "static-properties": {
105              "description": "Static properties (by feature name)",
106              "type": "object",
107              "patternProperties": {
108                "^[a-z0-9_]+$": {
109                  "description": "Ordered value list",
110                  "type": "array",
111                  "items": {
112                    "type": "string",
113                    "pattern": "^[a-z0-9_.]+$"
114                  },
115                  "minItems": 0,
116                  "uniqueItems": true
117                },
118                "additionalProperties": false,
119                "uniqueItems": true
120              }
121            }
122          },
123          "additionalProperties": false,
124          "uniqueItems": true,
125          "anyOf": [
126            {"required": ["requires"]},
127            {"required": ["static-properties"]}
128          ]
129        }
130      },
131      "additionalProperties": false,
132      "uniqueItems": true
133    },
134    "variants": {
135      "description": "Mapping of variant labels to properties",
136      "type": "object",
137      "patternProperties": {
138        "^[a-z0-9_.]{1,16}$": {
139          "type": "object",
140          "description": "Mapping of namespaces in a variant",
141          "patternProperties": {
142            "^[a-z0-9_.]+$": {
143              "description": "Mapping of feature names in a namespace",
144              "patternProperties": {
145                "^[a-z0-9_.]+$": {
146                  "description": "List of values for this variant feature",
147                  "type": "array",
148                  "items": {
149                    "type": "string",
150                    "pattern": "^[a-z0-9_.]+$"
151                  },
152                  "minItems": 1,
153                  "uniqueItems": true
154                }
155              },
156              "uniqueItems": true,
157              "additionalProperties": false
158            }
159          },
160          "uniqueItems": true,
161          "additionalProperties": false
162        }
163      },
164      "additionalProperties": false,
165      "uniqueItems": true
166    }
167  },
168  "required": [
169    "$schema",
170    "default-priorities",
171    "providers",
172    "variants"
173  ],
174  "additionalProperties": false,
175  "uniqueItems": true
176}