diff options
| -rw-r--r-- | data/schemas/definitions.jsonschema | 39 | ||||
| -rw-r--r-- | data/schemas/keyboard.jsonschema | 51 | ||||
| -rw-r--r-- | data/schemas/keymap.jsonschema | 5 | ||||
| -rwxr-xr-x | lib/python/qmk/cli/generate/info_json.py | 8 | ||||
| -rw-r--r-- | lib/python/qmk/json_schema.py | 6 | 
5 files changed, 45 insertions, 64 deletions
| diff --git a/data/schemas/definitions.jsonschema b/data/schemas/definitions.jsonschema index 5a2e5ccc05..2cf76a351c 100644 --- a/data/schemas/definitions.jsonschema +++ b/data/schemas/definitions.jsonschema @@ -1,5 +1,5 @@  { -    "$schema": "http://json-schema.org/draft-07/schema#", +    "$schema": "https://json-schema.org/draft/2020-12/schema#",      "$id": "qmk.definitions.v1",      "title": "Common definitions used across QMK's jsonschemas.",      "type": "object", @@ -65,8 +65,7 @@          ]      },      "key_unit": { -        "type": "number", -        "min": 0.25 +        "type": "number"      },      "keyboard": {          "oneOf": [ @@ -103,8 +102,7 @@                  "pattern": "^LINE_PIN\\d{1,2}$"              },              { -                "type": "number", -                "multipleOf": 1 +                "type": "integer"              },              {                  "type": "null" @@ -115,14 +113,12 @@          "type": "number"      },      "signed_int": { -        "type": "number", -        "multipleOf": 1 +        "type": "integer"      },      "signed_int_8": { -        "type": "number", -        "min": -127, -        "max": 127, -        "multipleOf": 1 +        "type": "integer", +        "minimum": -127, +        "maximum": 127      },      "string_array": {          "type": "array", @@ -138,23 +134,20 @@      },      "unsigned_decimal": {          "type": "number", -        "min": 0 +        "minimum": 0      },      "unsigned_int": { -        "type": "number", -        "min": 0, -        "multipleOf": 1 +        "type": "integer", +        "minimum": 0      },      "unsigned_int_8": { -        "type": "number", -        "min": 0, -        "max": 255, -        "multipleOf": 1 +        "type": "integer", +        "minimum": 0, +        "maximum": 255      },      "bit": { -        "type": "number", -        "min": 0, -        "max": 1, -        "multipleOf": 1 +        "type": "integer", +        "minimum": 0, +        "maximum": 1      }  } diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index e9696cd1d8..52a66cc132 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -1,5 +1,5 @@  { -    "$schema": "http://json-schema.org/draft-07/schema#", +    "$schema": "https://json-schema.org/draft/2020-12/schema#",      "$id": "qmk.keyboard.v1",      "title": "Keyboard Information",      "type": "object", @@ -40,10 +40,9 @@                  "breathing": {"type": "boolean"},                  "breathing_period": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},                  "levels": { -                    "type": "number", +                    "type": "integer",                      "minimum": 1, -                    "maximum": 31, -                    "multipleOf": 1 +                    "maximum": 31                  },                  "pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},                  "on_state": {"$ref": "qmk.definitions.v1#/bit"} @@ -158,12 +157,11 @@                                      "minItems": 2,                                      "maxItems": 2,                                      "items": { -                                        "type": "number", -                                        "minimum": 0, -                                        "multipleOf": 1 +                                        "type": "integer", +                                        "minimum": 0                                      }                                  }, -                                "r": {"$ref": "qmk.definitions.v1#/unsigned_decimal"}, +                                "r": {"$ref": "qmk.definitions.v1#/signed_decimal"},                                  "rx": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},                                  "ry": {"$ref": "qmk.definitions.v1#/unsigned_decimal"},                                  "h": {"$ref": "qmk.definitions.v1#/key_unit"}, @@ -234,14 +232,13 @@                                  "minItems": 2,                                  "maxItems": 2,                                  "items": { -                                    "type": "number", -                                    "minimum": 0, -                                    "multipleOf": 1 +                                    "type": "integer", +                                    "minimum": 0                                  }                              },                              "x": {"$ref": "qmk.definitions.v1#/key_unit"},                              "y": {"$ref": "qmk.definitions.v1#/key_unit"}, -                            "flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"} +                            "flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}                          }                      }                  } @@ -262,14 +259,13 @@                                  "minItems": 2,                                  "maxItems": 2,                                  "items": { -                                    "type": "number", -                                    "minimum": 0, -                                    "multipleOf": 1 +                                    "type": "integer", +                                    "minimum": 0                                  }                              },                              "x": {"$ref": "qmk.definitions.v1#/key_unit"},                              "y": {"$ref": "qmk.definitions.v1#/key_unit"}, -                            "flags": {"$ref": "qmk.definitions.v1#/unsigned_decimal"} +                            "flags": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}                          }                      }                  } @@ -294,10 +290,9 @@                          "blink": {"type": "boolean"},                          "enabled": {"type": "boolean"},                          "max": { -                            "type": "number", +                            "type": "integer",                              "minimum": 1, -                            "maximum": 32, -                            "multipleOf": 1 +                            "maximum": 32                          },                          "override_rgb": {"type": "boolean"}                      } @@ -333,9 +328,8 @@                          "minItems": 2,                          "maxItems": 2,                          "items": { -                            "type": "number", -                            "minimum": 0, -                            "multipleOf": 1 +                            "type": "integer", +                            "minimum": 0                          }                      }                  } @@ -375,10 +369,9 @@                  },                  "soft_serial_pin": {"$ref": "qmk.definitions.v1#/mcu_pin"},                  "soft_serial_speed": { -                    "type": "number", +                    "type": "integer",                      "minimum": 0, -                    "maximum": 5, -                    "multipleOf": 1 +                    "maximum": 5                  },                  "transport": {                      "type": "object", @@ -432,7 +425,7 @@                  "force_nkro": {"type": "boolean"},                  "pid": {"$ref": "qmk.definitions.v1#/hex_number_4d"},                  "vid": {"$ref": "qmk.definitions.v1#/hex_number_4d"}, -                "max_power": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, +                "max_power": {"$ref": "qmk.definitions.v1#/unsigned_int"},                  "no_startup_check": {"type": "boolean"},                  "polling_interval": {"$ref": "qmk.definitions.v1#/unsigned_int_8"},                  "shared_endpoint": { @@ -443,7 +436,7 @@                          "mouse": {"type": "boolean"}                      }                  }, -                "suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, +                "suspend_wakeup_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},                  "wait_for": {"type": "boolean"},              }          }, @@ -452,8 +445,8 @@              "additionalProperties": false,              "properties": {                  "keys_per_scan": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, -                "tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, -                "tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int_8"}, +                "tap_keycode_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"}, +                "tap_capslock_delay": {"$ref": "qmk.definitions.v1#/unsigned_int"},              }          },          "qmk_lufa_bootloader": { diff --git a/data/schemas/keymap.jsonschema b/data/schemas/keymap.jsonschema index 3803301a66..92a1ce533d 100644 --- a/data/schemas/keymap.jsonschema +++ b/data/schemas/keymap.jsonschema @@ -1,5 +1,5 @@  { -    "$schema": "http://json-schema.org/draft-07/schema#", +    "$schema": "https://json-schema.org/draft/2020-12/schema#",      "$id": "qmk.keymap.v1",      "title": "Keymap Information",      "type": "object", @@ -50,8 +50,7 @@          },          "config": {"$ref": "qmk.keyboard.v1"},          "notes": { -            "type": "string", -            "description": "asdf" +            "type": "string"          }      },      "required": [ diff --git a/lib/python/qmk/cli/generate/info_json.py b/lib/python/qmk/cli/generate/info_json.py index 284d1a8510..0dc80f10cc 100755 --- a/lib/python/qmk/cli/generate/info_json.py +++ b/lib/python/qmk/cli/generate/info_json.py @@ -5,7 +5,7 @@ Compile an info.json for a particular keyboard and pretty-print it.  import json  from argcomplete.completers import FilesCompleter -from jsonschema import Draft7Validator, RefResolver, validators +from jsonschema import Draft202012Validator, RefResolver, validators  from milc import cli  from pathlib import Path @@ -18,7 +18,7 @@ from qmk.path import is_keyboard, normpath  def pruning_validator(validator_class): -    """Extends Draft7Validator to remove properties that aren't specified in the schema. +    """Extends Draft202012Validator to remove properties that aren't specified in the schema.      """      validate_properties = validator_class.VALIDATORS["properties"] @@ -37,10 +37,10 @@ def strip_info_json(kb_info_json):      """Remove the API-only properties from the info.json.      """      schema_store = compile_schema_store() -    pruning_draft_7_validator = pruning_validator(Draft7Validator) +    pruning_draft_validator = pruning_validator(Draft202012Validator)      schema = schema_store['qmk.keyboard.v1']      resolver = RefResolver.from_schema(schema_store['qmk.keyboard.v1'], store=schema_store) -    validator = pruning_draft_7_validator(schema, resolver=resolver).validate +    validator = pruning_draft_validator(schema, resolver=resolver).validate      return validator(kb_info_json) diff --git a/lib/python/qmk/json_schema.py b/lib/python/qmk/json_schema.py index 682346113e..01175146b5 100644 --- a/lib/python/qmk/json_schema.py +++ b/lib/python/qmk/json_schema.py @@ -68,11 +68,7 @@ def create_validator(schema):      schema_store = compile_schema_store()      resolver = jsonschema.RefResolver.from_schema(schema_store[schema], store=schema_store) -    # TODO: Remove this after the jsonschema>=4 requirement had time to reach users -    try: -        return jsonschema.Draft202012Validator(schema_store[schema], resolver=resolver).validate -    except AttributeError: -        return jsonschema.Draft7Validator(schema_store[schema], resolver=resolver).validate +    return jsonschema.Draft202012Validator(schema_store[schema], resolver=resolver).validate  def validate(data, schema): | 
