Mercurial > hgrepos > Python > libs > data-schema
changeset 31:271ec3abdfa3
Use "$type" as the schema's type specifier instead of "type".
THIS IS BACKWARDS INCOMPATIBLE.
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Tue, 18 Jul 2023 14:28:52 +0200 |
| parents | 2e7c08c356ee |
| children | 7c95d24256e3 |
| files | data_schema/__init__.py docs/schema.txt tests/schemata/test1.schema.yml tests/test_schema.py |
| diffstat | 4 files changed, 302 insertions(+), 302 deletions(-) [+] |
line wrap: on
line diff
--- a/data_schema/__init__.py Sat Jul 08 20:45:36 2023 +0200 +++ b/data_schema/__init__.py Tue Jul 18 14:28:52 2023 +0200 @@ -540,21 +540,21 @@ # 3. Real validation - # check combinator shortcuts without "type" indirection + # check combinator shortcuts without "$type" indirection combinator, combinator_schema = _get_one_of( schema, "not", "all-of", "any-of", "one-of") if combinator is None: try: - t = schema["type"] + t = schema["$type"] except KeyError: - raise SchemaError("Schema has no `type' key: {!r}." + raise SchemaError("Schema has no `$type' key: {!r}." " Context: {!s}".format(schema, context)) else: # # Construct a temporary schema with the proper indirection for # the check below # - t = {"type": {combinator: combinator_schema}} + t = {"$type": {combinator: combinator_schema}} if combinator_schema is None: raise SchemaError("a combinator requires a child") if callable(t): @@ -758,7 +758,7 @@ try: schema_items = schema.ensure_child_schema(schema["items"]) except KeyError: - schema_items = _Schema(schema, False, {"type": validate_deny}) + schema_items = _Schema(schema, False, {"$type": validate_deny}) for idx, o in enumerate(obj): new_context = Context(parent=context, index=idx, current_object=o) yield from _validate(o, schema_items, new_context) @@ -782,7 +782,7 @@ try: schema_items = schema.ensure_child_schema(schema["items"]) except KeyError: - schema_items = _Schema(schema, False, {"type": validate_deny}) + schema_items = _Schema(schema, False, {"$type": validate_deny}) for o in obj: new_context = Context(parent=context, key=o, current_object=o) yield from _validate(o, schema_items, new_context)
--- a/docs/schema.txt Sat Jul 08 20:45:36 2023 +0200 +++ b/docs/schema.txt Tue Jul 18 14:28:52 2023 +0200 @@ -64,7 +64,7 @@ Typen ===== -Durch ``type`` (required) gekennzeichnet +Durch ``$type`` (required) gekennzeichnet Alle Schemata außer den `Schema-Kombinatoren`_ haben auch ein optionales @@ -91,7 +91,7 @@ Wenn vorhanden: ein Schema, dem die *Keys* -- auch die `additional-keys` -- folgen müssen. - Default: entspricht ``{"type": "string"}`` + Default: entspricht ``{"$type": "string"}`` - ``additional-keys``
--- a/tests/schemata/test1.schema.yml Sat Jul 08 20:45:36 2023 +0200 +++ b/tests/schemata/test1.schema.yml Tue Jul 18 14:28:52 2023 +0200 @@ -5,10 +5,10 @@ %YAML 1.1 --- -type: dict +$type: dict keys: string-value: - type: string + $type: string min-length: 1 max-length: 255 pattern: @@ -17,111 +17,111 @@ - &CALLABLE !!python/name:test_schema._test_generic_validator_for_yaml binary-value: - type: binary + $type: binary min-length: 20 max-length: 256 value: *CALLABLE int-value: - type: int + $type: int min-value: 0 max-value: 100 value: *CALLABLE float-value: - type: float + $type: float min-value: 0.0 max-value: 50.0 value: *CALLABLE numeric-value: - type: number + $type: number min-value: 0 max-value: 1000 value: *CALLABLE scalar-value: - type: scalar + $type: scalar bool-value: - type: bool + $type: bool value: *CALLABLE timestamp-value: - type: timestamp + $type: timestamp value: *CALLABLE null-value: - type: null + $type: null empty-value: - type: empty + $type: empty any-value: - type: accept + $type: accept not-any-value-allowed: - type: deny + $type: deny custom-value: - type: *CALLABLE + $type: *CALLABLE dict-value: - type: dict + $type: dict keys: key1: - type: accept + $type: accept 0: - type: accept + $type: accept 1: - type: accept + $type: accept key-names: one-of: - - type: string - - type: integer + - $type: string + - $type: integer min-value: 0 additional-keys: - type: accept # equivalent to the simpler: additional-keys: true + $type: accept # equivalent to the simpler: additional-keys: true required: - key1 - 0 list-value: - type: list + $type: list min-length: 1 max-length: 10 items: any-of: - - type: scalar - - type: *CALLABLE + - $type: scalar + - $type: *CALLABLE record-value: - type: record + $type: record items: - - type: string - - type: number + - $type: string + - $type: number min-length: 2 max-length: 2 additional-items: false combinator-one-of: one-of: - - type: int - - type: float - - type: null + - $type: int + - $type: float + - $type: null combinator-all-of: all-of: - &NAME - type: string + $type: string max-length: 255 pattern: *NAMERE - - type: *CALLABLE + - $type: *CALLABLE combinator-any-of: any-of: - *NAME - - type: *CALLABLE + - $type: *CALLABLE - null additional-keys: false
--- a/tests/test_schema.py Sat Jul 08 20:45:36 2023 +0200 +++ b/tests/test_schema.py Tue Jul 18 14:28:52 2023 +0200 @@ -589,20 +589,20 @@ None, root_object={"foo": "bar", "foo2": None}, settings=None) def test_no_cond(self): - schema = data_schema._Schema(None, True, {"type": None}) + schema = data_schema._Schema(None, True, {"$type": None}) self.assertIs(data_schema.process_schema_conditionals( schema, self._ctx), schema) def test_cond_is_none(self): - schema = data_schema._Schema(None, True, {"type": None, + schema = data_schema._Schema(None, True, {"$type": None, "cond": None}) self.assertIs(data_schema.process_schema_conditionals( schema, self._ctx), schema) def test_ambiguous(self): - schema = data_schema._Schema(None, True, {"type": None, + schema = data_schema._Schema(None, True, {"$type": None, "cond": None, "match": None}) self.assertRaises( @@ -612,8 +612,8 @@ self._ctx) def test_cond_not_a_sequence(self): - schema = data_schema._Schema(None, True, {"type": None, - "cond": {"type": None}}) + schema = data_schema._Schema(None, True, {"$type": None, + "cond": {"$type": None}}) self.assertRaises( data_schema.SchemaError, data_schema.process_schema_conditionals, @@ -622,8 +622,8 @@ def test_match_not_a_sequence(self): schema = data_schema._Schema( - None, True, {"type": None, - "match": {"type": None}}) + None, True, {"$type": None, + "match": {"$type": None}}) self.assertRaises( data_schema.SchemaError, data_schema.process_schema_conditionals, @@ -631,7 +631,7 @@ self._ctx) def test_condline_not_a_dict(self): - schema = data_schema._Schema(None, True, {"type": None, + schema = data_schema._Schema(None, True, {"$type": None, "cond": [None]}) self.assertRaises( data_schema.SchemaError, @@ -640,7 +640,7 @@ self._ctx) def test_matchline_not_a_dict(self): - schema = {"type": None, + schema = {"$type": None, "match": [None]} self.assertRaises( data_schema.SchemaError, @@ -650,7 +650,7 @@ def test_cond_unknown_predicate(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "cond": [ {"unexisting-when-xxxx": None, "then": {}} @@ -663,7 +663,7 @@ def test_match_unknown_predicate(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "match": [ {"unexisting-when-xxxx": None, "then": {}} @@ -676,7 +676,7 @@ def test_simple_replace_when_true(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when": True, @@ -694,7 +694,7 @@ def test_simple_replace_when_not_false(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when": {"not": False}, @@ -712,7 +712,7 @@ def test_simple_merge_when_true(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "old-key": "here I am", "cond": [ @@ -733,7 +733,7 @@ def test_simple_replace_first_wins_1(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha", "hehe"], "cond": [ {"when": True, @@ -753,7 +753,7 @@ def test_simple_replace_first_wins_2(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha", "hehe"], "cond": [ {"when": False, @@ -774,7 +774,7 @@ def test_simple_replace_when_false(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when": False, @@ -791,7 +791,7 @@ def test_simple_replace_when_ref_true(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when-ref-true": '#foo', @@ -809,7 +809,7 @@ def test_simple_replace_when_ref_true_2(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when": {"ref-true": '#foo'}, @@ -827,7 +827,7 @@ def test_simple_replace_when_ref_is_not_true(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when-ref-true": '#not-a-foo', @@ -844,7 +844,7 @@ def test_simple_replace_when_ref_is_not_true_2(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when": {"ref-true": '#not-a-foo'}, @@ -861,7 +861,7 @@ def test_simple_replace_when_ref_exists(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when-ref-exists": '#foo2', @@ -883,7 +883,7 @@ def test_simple_replace_when_ref_exists_2(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "require": ["huhu", "haha"], "cond": [ {"when": {"ref-exists": '#foo2'}, @@ -905,7 +905,7 @@ def test_simple_replace_when_ref_exists_is_false(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "cond": [ {"when-ref-exists": '#foo-not-existing', "then": { @@ -925,7 +925,7 @@ def test_simple_replace_when_ref_exists_is_false_2(self): schema = data_schema._Schema( - None, True, {"type": None, + None, True, {"$type": None, "cond": [ {"when": {"ref-exists": '#foo-not-existing'}, "then": { @@ -950,13 +950,13 @@ True, {"ref-exists": '#foo2'}, {"ref-true": '#foo'}]}, - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertEqual("string", r["type"]) + self.assertEqual("string", r["$type"]) def test_allOf_false(self): schema = data_schema._Schema( @@ -965,13 +965,13 @@ True, {"ref-exists": '#foo-non-existing'}, {"ref-true": '#foo'}]}, - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertIsNone(r["type"]) + self.assertIsNone(r["$type"]) def test_short_allOf_true(self): schema = data_schema._Schema( @@ -980,13 +980,13 @@ True, {"ref-exists": '#foo2'}, {"ref-true": '#foo'}], - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertEqual("string", r["type"]) + self.assertEqual("string", r["$type"]) def test_short_allOf_false(self): schema = data_schema._Schema( @@ -995,13 +995,13 @@ True, {"ref-exists": '#foo-non-existing'}, {"ref-true": '#foo'}], - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertIsNone(r["type"]) + self.assertIsNone(r["$type"]) def test_anyOf_true(self): schema = data_schema._Schema( @@ -1010,13 +1010,13 @@ False, {"ref-exists": '#foo2'}, {"ref-true": '#foo'}]}, - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertEqual("string", r["type"]) + self.assertEqual("string", r["$type"]) def test_anyOf_false(self): schema = data_schema._Schema( @@ -1025,13 +1025,13 @@ False, {"ref-exists": '#foo2-non'}, {"ref-true": '#foo2'}]}, - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertIsNone(r["type"]) + self.assertIsNone(r["$type"]) def test_oneOf_true(self): schema = data_schema._Schema( @@ -1040,13 +1040,13 @@ False, {"ref-exists": '#foo2'}, {"not": {"ref-true": '#foo'}}]}, - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertEqual("string", r["type"]) + self.assertEqual("string", r["$type"]) def test_oneOf_false(self): schema = data_schema._Schema( @@ -1055,13 +1055,13 @@ False, {"ref-exists": '#foo2'}, {"ref-true": '#foo'}]}, - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertIsNone(r["type"]) + self.assertIsNone(r["$type"]) def test_oneOf_false_2(self): schema = data_schema._Schema( @@ -1070,13 +1070,13 @@ False, {"not": {"ref-exists": '#foo2'}}, {"not": {"ref-true": '#foo'}}]}, - "then": {"type": "string"}}, + "then": {"$type": "string"}}, {"when": True, - "then": {"type": None}} + "then": {"$type": None}} ]}) r = data_schema.process_schema_conditionals(schema, self._ctx) self.assertIsNot(r, schema) - self.assertIsNone(r["type"]) + self.assertIsNone(r["$type"]) def test_match_nothing(self): schema = data_schema._Schema( @@ -1217,7 +1217,7 @@ None, True, {"foos": "bar", "match": [{ "when": { - "equals": {"type": None}, + "equals": {"$type": None}, "then-replace": { "foos": "new-bar"}}}] }) @@ -1345,7 +1345,7 @@ def test_raise_if_scheme_ref_is_not_the_single_key(self): schema = data_schema._Schema( None, True, {"$ref": "schema:#/", - "type": None + "$type": None }) ctx = data_schema.Context( None, root_schema=schema, settings=None) @@ -1359,7 +1359,7 @@ schema = data_schema._Schema( None, True, {"$ref": "schema:#/subschema", "subschema": { - "type": None + "$type": None } }) ctx = data_schema.Context( @@ -1368,11 +1368,11 @@ schema, ctx, check_single_ref_key=False) - self.assertEqual({"type": None}, r) + self.assertEqual({"$type": None}, r) def test_recursive_schema_scheme(self): barschema = { - "type": "null" + "$type": "null" } fooschema = { "$ref": "schema:#/bar" @@ -1388,15 +1388,15 @@ schema, ctx, check_single_ref_key=False) - self.assertEqual({"type": "null"}, r) + self.assertEqual({"$type": "null"}, r) def test_recursive_schema_scheme_raises_if_non_root_is_not_single_key(self): barschema = { - "type": "null" + "$type": "null" } fooschema = { "$ref": "schema:#/bar", - "type": "dict", + "$type": "dict", } schema = data_schema._Schema( None, True, { @@ -1415,7 +1415,7 @@ def test_recursive_schema_scheme_ref_to_non_existing_schema_raises(self): barschema = { - "type": "null" + "$type": "null" } fooschema = { "$ref": "schema:#/non-bar", @@ -1476,21 +1476,21 @@ self.assertEqual(SEVERITY.WARNING, v.severity) def test_d1(self): - x = list(data_schema.validate({}, {"type": "dict"})) + x = list(data_schema.validate({}, {"$type": "dict"})) self.assertEqual(0, len(x)) def test_d1_not_nullable(self): - x = list(data_schema.validate(None, {"type": "dict"})) + x = list(data_schema.validate(None, {"$type": "dict"})) self.assertEqual(1, len(x)) self.assertEqual(ERRORS.E10000, x[0].code) def test_d1_nullable(self): - x = list(data_schema.validate(None, {"type": "dict", + x = list(data_schema.validate(None, {"$type": "dict", "nullable": True})) self.assertEqual(0, len(x)) def test_d2(self): - x = list(data_schema.validate([], {"type": "map"})) + x = list(data_schema.validate([], {"$type": "map"})) self.assertEqual(1, len(x)) self.assertEqual(SEVERITY.ERROR, x[0].severity) self.assertEqual(ERRORS.E10000, x[0].code) @@ -1498,7 +1498,7 @@ def test_d3(self): x = list(data_schema.validate( {"key": "value"}, - {"type": "dict", + {"$type": "dict", "required": ["key2"]})) self.assertEqual(2, len(x)) self.assertEqual(SEVERITY.ERROR, x[0].severity) @@ -1511,9 +1511,9 @@ def test_d4(self): x = list(data_schema.validate( {"key": "value"}, - {"type": "dict", + {"$type": "dict", "keys": { - "key": {"type": "string"}, + "key": {"$type": "string"}, }, "required": ["key"]})) self.assertEqual(0, len(x)) @@ -1521,7 +1521,7 @@ def test_d5(self): x = list(data_schema.validate( {"key": "value"}, - {"type": "dict", + {"$type": "dict", "additional-keys": False})) self.assertEqual(1, len(x)) self.assertEqual(ERRORS.E10004, x[0].code) @@ -1530,7 +1530,7 @@ def test_d5_2(self): x = list(data_schema.validate( {"key": "value"}, - {"type": "dict", + {"$type": "dict", "additional-keys": False}, skip_keys=["key"])) self.assertEqual(0, len(x)) @@ -1539,7 +1539,7 @@ x = list(data_schema.validate( {"key": "value", "key2": "value"}, - {"type": "dict", + {"$type": "dict", "additional-keys": False}, skip_keys=[re.compile(r"\Akey\d*\Z")])) self.assertEqual(0, len(x)) @@ -1548,7 +1548,7 @@ x = list(data_schema.validate( {"key": "value", "key2": "value"}, - {"type": "dict", + {"$type": "dict", "additional-keys": False}, skip_keys=[re.compile(r"\A__.+"), re.compile(r"\Akey\d+\Z")])) self.assertEqual(1, len(x)) @@ -1558,24 +1558,24 @@ def test_d6(self): x = list(data_schema.validate( {"key": "value"}, - {"type": "dict", + {"$type": "dict", "additional-keys": True})) self.assertEqual(0, len(x)) def test_d7(self): x = list(data_schema.validate( {"key": "value"}, - {"type": "dict", + {"$type": "dict", "additional-keys": { - "type": "string"}})) + "$type": "string"}})) self.assertEqual(0, len(x)) def test_d8(self): x = list(data_schema.validate( {"key": 1234}, - {"type": "dict", + {"$type": "dict", "additional-keys": { - "type": "string"}})) + "$type": "string"}})) self.assertEqual(1, len(x)) self.assertEqual(ERRORS.E10002, x[0].code) self.assertEqual(1234, x[0].hint) @@ -1583,16 +1583,16 @@ def test_d8_2(self): x = list(data_schema.validate( {"key": 1234}, - {"type": "dict", + {"$type": "dict", "additional-keys": { - "type": "string"}}, + "$type": "string"}}, skip_keys=["key"])) self.assertEqual(0, len(x)) def test_d9_non_string_keys(self): pr = list(data_schema.validate( {0: "value"}, - {"type": "dict", + {"$type": "dict", "additional-keys": True})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10003, pr[0].code) @@ -1600,11 +1600,11 @@ def test_d10_int_dict_keys(self): pr = list(data_schema.validate( {1: "value", 2: "value2"}, - {"type": "dict", + {"$type": "dict", "keys": { - 1: {"type": "string"}}, + 1: {"$type": "string"}}, "additional-keys": True, - "key-names": {"type": "int"}})) + "key-names": {"$type": "int"}})) self.assertEqual(0, len(pr)) def test_error_message(self): @@ -1624,20 +1624,20 @@ def test_str_enum(self): pr = list(data_schema.validate( "e1", - {"type": "string", + {"$type": "string", "enum": ["e1", "e2"]})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( "e2", - {"type": "string", + {"$type": "string", "enum": ["e1", "e2"]})) self.assertEqual(0, len(pr)) def test_str_not_in_enum(self): pr = list(data_schema.validate( "e3", - {"type": "string", + {"$type": "string", "enum": ["e1", "e2"]})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10043, pr[0].code) @@ -1645,46 +1645,46 @@ def test_str_minlen(self): pr = list(data_schema.validate( "", - {"type": "string", + {"$type": "string", "min-length": 0})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( "", - {"type": "string", + {"$type": "string", "min-length": 1})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10006, pr[0].code) pr = list(data_schema.validate( "x", - {"type": "string", + {"$type": "string", "min-length": 1})) self.assertEqual(0, len(pr)) def test_str_maxlen(self): pr = list(data_schema.validate( "", - {"type": "string", + {"$type": "string", "max-length": 0})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( "x", - {"type": "string", + {"$type": "string", "max-length": 0})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10007, pr[0].code) pr = list(data_schema.validate( "x", - {"type": "string", + {"$type": "string", "max-length": 1})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( b"x", - {"type": "string", + {"$type": "string", "max-length": 1})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10002, pr[0].code) @@ -1697,27 +1697,27 @@ def test_str_re(self): pr = list(data_schema.validate( "abc", - {"type": "string", + {"$type": "string", "pattern": r'\A[0-9]+\Z'})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10008, pr[0].code) pr = list(data_schema.validate( "123", - {"type": "string", + {"$type": "string", "pattern": re.compile(r'\A[a-z]+\Z')})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10008, pr[0].code) pr = list(data_schema.validate( "123", - {"type": "string", + {"$type": "string", "pattern": self._pattern_check_function})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( " 5 ", - {"type": "string", + {"$type": "string", "pattern": self._pattern_check_function})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10009, pr[0].code) @@ -1725,13 +1725,13 @@ def test_binary_basic(self): pr = list(data_schema.validate( b"", - {"type": "binary"})) + {"$type": "binary"})) self.assertEqual(0, len(pr)) def test_str_is_not_binary(self): pr = list(data_schema.validate( "", - {"type": "binary"})) + {"$type": "binary"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10035, pr[0].code) @@ -1743,13 +1743,13 @@ def test_binary_pattern_check(self): pr = list(data_schema.validate( b"\x00", - {"type": "binary", + {"$type": "binary", "pattern": self._binary_pattern_check_function})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( b"\x01", - {"type": "binary", + {"$type": "binary", "pattern": self._binary_pattern_check_function})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10009, pr[0].code) @@ -1757,21 +1757,21 @@ def test_binary_re_str_match(self): pr = list(data_schema.validate( b"\x00\x00\x00", - {"type": "binary", + {"$type": "binary", "pattern": u"\\x00+"})) self.assertEqual(0, len(pr)) def test_binary_re_bytes_match(self): pr = list(data_schema.validate( b"\x00\x00\x00", - {"type": "binary", + {"$type": "binary", "pattern": b"\x00+"})) self.assertEqual(0, len(pr)) def test_binary_re_str_mismatch(self): pr = list(data_schema.validate( b"\x00\x00\x00", - {"type": "binary", + {"$type": "binary", "pattern": u"\\x01+"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10047, pr[0].code) @@ -1779,7 +1779,7 @@ def test_binary_re_bytes_mismatch(self): pr = list(data_schema.validate( b"\x00\x00\x00", - {"type": "binary", + {"$type": "binary", "pattern": b"\x01+"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10047, pr[0].code) @@ -1787,66 +1787,66 @@ def test_binary_length(self): pr = list(data_schema.validate( b"", - {"type": "binary", + {"$type": "binary", "min-length": 1})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10036, pr[0].code) pr = list(data_schema.validate( b"1", - {"type": "binary", + {"$type": "binary", "max-length": 0})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10037, pr[0].code) def test_deny(self): - pr = list(data_schema.validate("abc", {"type": "deny"})) + pr = list(data_schema.validate("abc", {"$type": "deny"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10010, pr[0].code) def test_accept(self): - pr = list(data_schema.validate("abc", {"type": "accept"})) + pr = list(data_schema.validate("abc", {"$type": "accept"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(None, {"type": "accept"})) + pr = list(data_schema.validate(None, {"$type": "accept"})) self.assertEqual(0, len(pr)) def test_null(self): - pr = list(data_schema.validate(None, {"type": "none"})) + pr = list(data_schema.validate(None, {"$type": "none"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(None, {"type": "null"})) + pr = list(data_schema.validate(None, {"$type": "null"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(None, {"type": "nil"})) + pr = list(data_schema.validate(None, {"$type": "nil"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(None, {"type": None})) + pr = list(data_schema.validate(None, {"$type": None})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate({}, {"type": None})) + pr = list(data_schema.validate({}, {"$type": None})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10011, pr[0].code) def test_l1(self): - pr = list(data_schema.validate([], {"type": "list"})) + pr = list(data_schema.validate([], {"$type": "list"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(tuple(), {"type": "list"})) + pr = list(data_schema.validate(tuple(), {"$type": "list"})) self.assertEqual(0, len(pr)) def test_l1_not_nullable(self): - pr = list(data_schema.validate(None, {"type": "list"})) + pr = list(data_schema.validate(None, {"$type": "list"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10001, pr[0].code) def test_l1_nullable(self): pr = list(data_schema.validate( - None, {"type": "list", "nullable": True})) + None, {"$type": "list", "nullable": True})) self.assertEqual(0, len(pr)) def test_l2_default_schema_for_items_is_deny(self): - pr = list(data_schema.validate(["a", "b", "c"], {"type": "list"})) + pr = list(data_schema.validate(["a", "b", "c"], {"$type": "list"})) self.assertEqual(3, len(pr)) for i in range(0, 3): self.assertEqual(ERRORS.E10010, pr[i].code) @@ -1854,45 +1854,45 @@ def test_l3_schema_for_items(self): pr = list(data_schema.validate( ["a", "b", "c"], - {"type": "array", - "items": {"type": "string"}})) + {"$type": "array", + "items": {"$type": "string"}})) self.assertEqual(0, len(pr)) def test_t1(self): - pr = list(data_schema.validate([], {"type": "tuple"})) + pr = list(data_schema.validate([], {"$type": "tuple"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(tuple(), {"type": "tuple"})) + pr = list(data_schema.validate(tuple(), {"$type": "tuple"})) self.assertEqual(0, len(pr)) def test_t1_not_nullable(self): - pr = list(data_schema.validate(None, {"type": "tuple"})) + pr = list(data_schema.validate(None, {"$type": "tuple"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10014, pr[0].code) def test_t1_nullable(self): pr = list(data_schema.validate( - None, {"type": "tuple", "nullable": True})) + None, {"$type": "tuple", "nullable": True})) self.assertEqual(0, len(pr)) def test_t2(self): pr = list(data_schema.validate( ["a", None, {"key": "value"}], - {"type": "tuple", + {"$type": "tuple", "items": [ - {"type": "string"}, - {"type": None}, - {"type": "accept"}]})) + {"$type": "string"}, + {"$type": None}, + {"$type": "accept"}]})) self.assertEqual(0, len(pr)) def test_t3(self): pr = list(data_schema.validate( ["a", None, {"key": "value"}], - {"type": "tuple", + {"$type": "tuple", "items": [ - {"type": "string"}, - {"type": None}, - {"type": "deny"}]})) + {"$type": "string"}, + {"$type": None}, + {"$type": "deny"}]})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10010, pr[0].code) self.assertEqual(2, pr[0].context.index) @@ -1900,10 +1900,10 @@ def test_t4(self): pr = list(data_schema.validate( ["a", None, {"key": "value"}], - {"type": "tuple", + {"$type": "tuple", "items": [ - {"type": "string"}, - {"type": None}]})) + {"$type": "string"}, + {"$type": None}]})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10017, pr[0].code) self.assertEqual(2, pr[0].context.index) @@ -1911,23 +1911,23 @@ def test_t5(self): pr = list(data_schema.validate( ["a", None, {"key": "value"}], - {"type": "tuple", + {"$type": "tuple", "items": [ - {"type": "string"}, - {"type": None}], + {"$type": "string"}, + {"$type": None}], "additional-items": True})) self.assertEqual(0, len(pr)) def test_t6(self): pr = list(data_schema.validate( ["a", None, {"key": "value"}, {"key": "value"}], - {"type": "tuple", + {"$type": "tuple", "items": [ - {"type": "string"}, - {"type": None}], + {"$type": "string"}, + {"$type": None}], "additional-items": { - "type": "dict", - "keys": {"key": {"type": "string"}} + "$type": "dict", + "keys": {"key": {"$type": "string"}} }})) self.assertEqual(0, len(pr)) @@ -1935,14 +1935,14 @@ # do not check anything that exceeds max-length pr = list(data_schema.validate( ["a", None, {"key": "value"}, {"key": "value"}, {"key2": "value"}], - {"type": "tuple", + {"$type": "tuple", "max-length": 4, "items": [ - {"type": "string"}, - {"type": None}], + {"$type": "string"}, + {"$type": None}], "additional-items": { - "type": "dict", - "keys": {"key": {"type": "string"}} + "$type": "dict", + "keys": {"key": {"$type": "string"}} }})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10016, pr[0].code) @@ -1951,15 +1951,15 @@ # do not check anything that exceeds max-length pr = list(data_schema.validate( ["a", None, {"key": "value"}, {"key": "value"}, {"key2": "value"}], - {"type": "tuple", + {"$type": "tuple", "min-length": 6, "max-length": 4, "items": [ - {"type": "string"}, - {"type": None}], + {"$type": "string"}, + {"$type": None}], "additional-items": { - "type": "dict", - "keys": {"key": {"type": "string"}} + "$type": "dict", + "keys": {"key": {"$type": "string"}} }})) self.assertEqual(2, len(pr)) self.assertEqual(ERRORS.E10015, pr[0].code) @@ -1969,11 +1969,11 @@ # do not check anything that exceeds max-length pr = list(data_schema.validate( set(["a", None, "b"]), - {"type": "set", + {"$type": "set", "min-length": 3, "items": {"any-of": [ - {"type": "string"}, - {"type": None}]}} + {"$type": "string"}, + {"$type": None}]}} )) self.assertEqual(0, len(pr)) @@ -1981,7 +1981,7 @@ # do not check anything that exceeds max-length pr = list(data_schema.validate( None, - {"type": "set"})) + {"$type": "set"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10038, pr[0].code) @@ -1989,18 +1989,18 @@ # do not check anything that exceeds max-length pr = list(data_schema.validate( None, - {"type": "set", "nullable": True})) + {"$type": "set", "nullable": True})) self.assertEqual(0, len(pr)) def test_set2(self): # do not check anything that exceeds max-length pr = list(data_schema.validate( set(["a", None, "b"]), - {"type": "set", + {"$type": "set", "min-length": 4, "items": {"any-of": [ - {"type": "string"}, - {"type": None}]}} + {"$type": "string"}, + {"$type": None}]}} )) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10039, pr[0].code) @@ -2009,11 +2009,11 @@ # do not check anything that exceeds max-length pr = list(data_schema.validate( set(["a", None, "b"]), - {"type": "set", + {"$type": "set", "max-length": 2, "items": {"any-of": [ - {"type": "string"}, - {"type": None}]}} + {"$type": "string"}, + {"$type": None}]}} )) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10040, pr[0].code) @@ -2021,10 +2021,10 @@ def test_set4_itemschema(self): pr = list(data_schema.validate( set(["a", None, "b"]), - {"type": "set", + {"$type": "set", "items": {"any-of": [ - {"type": "string"}, - {"type": "int"}]}} + {"$type": "string"}, + {"$type": "int"}]}} )) codes = set([p.code for p in pr]) @@ -2039,58 +2039,58 @@ self.assertEqual(ERRORS.E10020, pr[0].cause[1].cause[0].code) def test_empty(self): - pr = list(data_schema.validate(None, {"type": "empty"})) + pr = list(data_schema.validate(None, {"$type": "empty"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate([], {"type": "empty"})) + pr = list(data_schema.validate([], {"$type": "empty"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(["a"], {"type": "empty"})) + pr = list(data_schema.validate(["a"], {"$type": "empty"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10018, pr[0].code) - pr = list(data_schema.validate(tuple(), {"type": "empty"})) + pr = list(data_schema.validate(tuple(), {"$type": "empty"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(set(), {"type": "empty"})) + pr = list(data_schema.validate(set(), {"$type": "empty"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(frozenset(), {"type": "empty"})) + pr = list(data_schema.validate(frozenset(), {"$type": "empty"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(tuple(["a"]), {"type": "empty"})) + pr = list(data_schema.validate(tuple(["a"]), {"$type": "empty"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10018, pr[0].code) - pr = list(data_schema.validate({}, {"type": "empty"})) + pr = list(data_schema.validate({}, {"$type": "empty"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate({"key": "value"}, {"type": "empty"})) + pr = list(data_schema.validate({"key": "value"}, {"$type": "empty"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10018, pr[0].code) - pr = list(data_schema.validate("", {"type": "empty"})) + pr = list(data_schema.validate("", {"$type": "empty"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10018, pr[0].code) def test_allOf(self): pr = list(data_schema.validate( None, - {"type": { + {"$type": { "all-of": [ - {"type": None}, - {"type": "accept"}, + {"$type": None}, + {"$type": "accept"}, ] }})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( None, - {"type": { + {"$type": { "all-of": [ - {"type": None}, - {"type": "accept"}, - {"type": "deny"}, + {"$type": None}, + {"$type": "accept"}, + {"$type": "deny"}, ] }})) self.assertEqual(1, len(pr)) @@ -2103,20 +2103,20 @@ def test_anyOf(self): pr = list(data_schema.validate( None, - {"type": { + {"$type": { "any-of": [ - {"type": "deny"}, - {"type": None}, + {"$type": "deny"}, + {"$type": None}, ] }})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( None, - {"type": { + {"$type": { "any-of": [ - {"type": "string"}, - {"type": "deny"}, + {"$type": "string"}, + {"$type": "deny"}, ] }})) self.assertEqual(1, len(pr)) @@ -2132,17 +2132,17 @@ def test_anyOf_with_list(self): pr = list(data_schema.validate( None, - {"type": [ - {"type": "deny"}, - {"type": None}, + {"$type": [ + {"$type": "deny"}, + {"$type": None}, ]})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( None, - {"type": [ - {"type": "string"}, - {"type": "deny"}, + {"$type": [ + {"$type": "string"}, + {"$type": "deny"}, ]})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10055, pr[0].code) @@ -2157,20 +2157,20 @@ def test_oneOf(self): pr = list(data_schema.validate( None, - {"type": { + {"$type": { "one-of": [ - {"type": "deny"}, - {"type": None}, + {"$type": "deny"}, + {"$type": None}, ] }})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( None, - {"type": { + {"$type": { "one-of": [ - {"type": "string"}, - {"type": "deny"}, + {"$type": "string"}, + {"$type": "deny"}, ] }})) @@ -2186,12 +2186,12 @@ pr = list(data_schema.validate( None, - {"type": { + {"$type": { "one-of": [ - {"type": "string"}, - {"type": "deny"}, - {"type": "empty"}, - {"type": None}, + {"$type": "string"}, + {"$type": "deny"}, + {"$type": "empty"}, + {"$type": None}, ] }})) self.assertEqual(1, len(pr)) @@ -2201,50 +2201,50 @@ def test_not(self): pr = list(data_schema.validate( None, - {"type": { + {"$type": { "not": { - "type": "empty"}}})) + "$type": "empty"}}})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10029, pr[0].code) pr = list(data_schema.validate( None, - {"type": { + {"$type": { "not": { - "type": { + "$type": { "not": { - "type": "empty"}}}}})) + "$type": "empty"}}}}})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( 2, - {"type": { + {"$type": { "not": { - "type": "int"}}})) + "$type": "int"}}})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10029, pr[0].code) pr = list(data_schema.validate( 1, - {"type": { + {"$type": { "not": { - "type": { + "$type": { "not": { - "type": "int"}}}}})) + "$type": "int"}}}}})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( 2.0, - {"type": { + {"$type": { "not": { - "type": "int"}}})) + "$type": "int"}}})) self.assertEqual(0, len(pr)) def test_not_shortcut(self): pr = list(data_schema.validate( None, {"not": { - "type": "empty"}})) + "$type": "empty"}})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10029, pr[0].code) @@ -2252,13 +2252,13 @@ None, {"not": { "not": { - "type": "empty"}}})) + "$type": "empty"}}})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( 2, {"not": { - "type": "int"}})) + "$type": "int"}})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10029, pr[0].code) @@ -2266,26 +2266,26 @@ 1, {"not": { "not": { - "type": "int"}}})) + "$type": "int"}}})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( 2.0, {"not": { - "type": "int"}})) + "$type": "int"}})) self.assertEqual(0, len(pr)) def test_integer(self): - pr = list(data_schema.validate(1, {"type": "integer"})) + pr = list(data_schema.validate(1, {"$type": "integer"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(1, {"type": "float"})) + pr = list(data_schema.validate(1, {"$type": "float"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10023, pr[0].code) pr = list(data_schema.validate( 2, - {"type": "int", + {"$type": "int", "min-value": 3, "max-value": 1})) @@ -2294,16 +2294,16 @@ self.assertEqual(ERRORS.E10022, pr[1].code) def test_float(self): - pr = list(data_schema.validate(1.8, {"type": "float"})) + pr = list(data_schema.validate(1.8, {"$type": "float"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(1, {"type": "float"})) + pr = list(data_schema.validate(1, {"$type": "float"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10023, pr[0].code) pr = list(data_schema.validate( 2.0, - {"type": "real", + {"$type": "real", "min-value": 2.1, "max-value": 1.9})) @@ -2312,14 +2312,14 @@ self.assertEqual(ERRORS.E10025, pr[1].code) def test_number(self): - pr = list(data_schema.validate(1.8, {"type": "number"})) + pr = list(data_schema.validate(1.8, {"$type": "number"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(1, {"type": "num"})) + pr = list(data_schema.validate(1, {"$type": "num"})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( 2.0, - {"type": "number", + {"$type": "number", "min-value": 3, "max-value": 1.3})) @@ -2327,45 +2327,45 @@ self.assertEqual(ERRORS.E10031, pr[0].code) self.assertEqual(ERRORS.E10032, pr[1].code) - pr = list(data_schema.validate({}, {"type": "number"})) + pr = list(data_schema.validate({}, {"$type": "number"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10030, pr[0].code) def test_bool(self): - pr = list(data_schema.validate(True, {"type": "bool"})) + pr = list(data_schema.validate(True, {"$type": "bool"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(True, {"type": "boolean", + pr = list(data_schema.validate(True, {"$type": "boolean", "value": True})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(True, {"type": "boolean", + pr = list(data_schema.validate(True, {"$type": "boolean", "value": False})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10028, pr[0].code) - pr = list(data_schema.validate(False, {"type": "boolean"})) + pr = list(data_schema.validate(False, {"$type": "boolean"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(False, {"type": "boolean", + pr = list(data_schema.validate(False, {"$type": "boolean", "value": False})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(False, {"type": "boolean", + pr = list(data_schema.validate(False, {"$type": "boolean", "value": True})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10027, pr[0].code) def test_bool_real(self): - pr = list(data_schema.validate([1, 2], {"type": "bool"})) + pr = list(data_schema.validate([1, 2], {"$type": "bool"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10026, pr[0].code) - pr = list(data_schema.validate([], {"type": "bool"})) + pr = list(data_schema.validate([], {"$type": "bool"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10026, pr[0].code) - pr = list(data_schema.validate(None, {"type": "bool"})) + pr = list(data_schema.validate(None, {"$type": "bool"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10026, pr[0].code) @@ -2378,65 +2378,65 @@ def test_timestamp(self): pr = list(data_schema.validate( datetime.datetime.utcnow(), - {"type": "timestamp"})) + {"$type": "timestamp"})) pr = list(data_schema.validate( datetime.datetime.fromtimestamp(180000), - {"type": "datetime", + {"$type": "datetime", "value": self._check_value_ts})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate( datetime.datetime.fromtimestamp(0), - {"type": "datetime", + {"$type": "datetime", "value": self._check_value_ts})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10042, pr[0].code) def test_scalar(self): - pr = list(data_schema.validate(1, {"type": "scalar"})) + pr = list(data_schema.validate(1, {"$type": "scalar"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate("", {"type": "scalar"})) + pr = list(data_schema.validate("", {"$type": "scalar"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(False, {"type": "scalar"})) + pr = list(data_schema.validate(False, {"$type": "scalar"})) self.assertEqual(0, len(pr)) pr = list(data_schema.validate(datetime.datetime.utcnow(), - {"type": "scalar"})) + {"$type": "scalar"})) self.assertEqual(0, len(pr)) - pr = list(data_schema.validate(None, {"type": "scalar"})) + pr = list(data_schema.validate(None, {"$type": "scalar"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10033, pr[0].code) - pr = list(data_schema.validate({}, {"type": "scalar"})) + pr = list(data_schema.validate({}, {"$type": "scalar"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10033, pr[0].code) - pr = list(data_schema.validate([], {"type": "scalar"})) + pr = list(data_schema.validate([], {"$type": "scalar"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10033, pr[0].code) - pr = list(data_schema.validate(tuple(), {"type": "scalar"})) + pr = list(data_schema.validate(tuple(), {"$type": "scalar"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10033, pr[0].code) - pr = list(data_schema.validate(set(), {"type": "scalar"})) + pr = list(data_schema.validate(set(), {"$type": "scalar"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10033, pr[0].code) - pr = list(data_schema.validate(frozenset(), {"type": "scalar"})) + pr = list(data_schema.validate(frozenset(), {"$type": "scalar"})) self.assertEqual(1, len(pr)) self.assertEqual(ERRORS.E10033, pr[0].code) pr = list(data_schema.validate( None, - {"type": { + {"$type": { "one-of": [ - {"type": "scalar"}, - {"type": None}, + {"$type": "scalar"}, + {"$type": None}, ]}})) self.assertEqual(0, len(pr))
