Skip to content

Commit 8695165

Browse files
committed
Add a linter to ensure single quotes aren't added.
1 parent 22464af commit 8695165

File tree

8 files changed

+61
-60
lines changed

8 files changed

+61
-60
lines changed

jsonschema/_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def load_vocabulary(name):
6464
"""
6565
vocabulary = []
6666
base_path = os.path.dirname(sys.modules["jsonschema"].__file__)
67-
pathlist = Path(os.path.join(base_path, 'schemas', name)).glob('*.json')
67+
pathlist = Path(os.path.join(base_path, "schemas", name)).glob("*.json")
6868
for path in pathlist:
6969
with open(path) as data:
7070
vocabulary.append(json.load(data))

jsonschema/_validators.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -73,15 +73,15 @@ def items(validator, items, instance, schema):
7373
if not validator.is_type(instance, "array"):
7474
return
7575

76-
if validator.is_type(items, "boolean") and 'prefixItems' in schema:
76+
if validator.is_type(items, "boolean") and "prefixItems" in schema:
7777
if not items:
78-
if len(instance) > len(schema['prefixItems']):
78+
if len(instance) > len(schema["prefixItems"]):
7979
yield ValidationError(
8080
"%r has more items than defined in prefixItems" % instance,
8181
)
8282
else:
83-
non_prefixed_items = instance[len(schema['prefixItems']):] \
84-
if 'prefixItems' in schema else instance
83+
non_prefixed_items = instance[len(schema["prefixItems"]):] \
84+
if "prefixItems" in schema else instance
8585

8686
for index, item in enumerate(non_prefixed_items):
8787
for error in validator.descend(item, items, path=index):
@@ -119,11 +119,11 @@ def contains(validator, contains, instance, schema):
119119

120120
min_contains = max_contains = None
121121

122-
if 'minContains' in schema:
123-
min_contains = schema['minContains']
122+
if "minContains" in schema:
123+
min_contains = schema["minContains"]
124124

125-
if 'maxContains' in schema:
126-
max_contains = schema['maxContains']
125+
if "maxContains" in schema:
126+
max_contains = schema["maxContains"]
127127

128128
# minContains set to 0 will ignore contains
129129
if min_contains == 0:

jsonschema/exceptions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,12 @@ def absolute_schema_path(self):
112112

113113
@property
114114
def json_path(self):
115-
path = '$'
115+
path = "$"
116116
for elem in self.absolute_path:
117117
if isinstance(elem, int):
118-
path += '[' + str(elem) + ']'
118+
path += "[" + str(elem) + "]"
119119
else:
120-
path += '.' + elem
120+
path += "." + elem
121121
return path
122122

123123
def _set(self, **kwargs):

jsonschema/tests/test_cli.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ def test_successful_validation_via_explicit_base_uri(self):
699699
schema = f'{{"$ref": "{ref_path.name}#definitions/num"}}'
700700

701701
self.assertOutputs(
702-
files=dict(some_schema=schema, some_instance='1'),
702+
files=dict(some_schema=schema, some_instance="1"),
703703
argv=[
704704
"-i", "some_instance",
705705
"--base-uri", ref_path.parent.as_uri() + "/",

jsonschema/tests/test_validators.py

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -446,7 +446,7 @@ def test_anyOf(self):
446446
self.assertEqual(e.path, deque([]))
447447
self.assertEqual(e.relative_path, deque([]))
448448
self.assertEqual(e.absolute_path, deque([]))
449-
self.assertEqual(e.json_path, '$')
449+
self.assertEqual(e.json_path, "$")
450450

451451
self.assertEqual(e.schema_path, deque(["anyOf"]))
452452
self.assertEqual(e.relative_schema_path, deque(["anyOf"]))
@@ -465,7 +465,7 @@ def test_anyOf(self):
465465
self.assertEqual(e1.path, deque([]))
466466
self.assertEqual(e1.absolute_path, deque([]))
467467
self.assertEqual(e1.relative_path, deque([]))
468-
self.assertEqual(e1.json_path, '$')
468+
self.assertEqual(e1.json_path, "$")
469469

470470
self.assertEqual(e1.schema_path, deque([0, "minimum"]))
471471
self.assertEqual(e1.relative_schema_path, deque([0, "minimum"]))
@@ -484,7 +484,7 @@ def test_anyOf(self):
484484
self.assertEqual(e2.path, deque([]))
485485
self.assertEqual(e2.relative_path, deque([]))
486486
self.assertEqual(e2.absolute_path, deque([]))
487-
self.assertEqual(e2.json_path, '$')
487+
self.assertEqual(e2.json_path, "$")
488488

489489
self.assertEqual(e2.schema_path, deque([1, "type"]))
490490
self.assertEqual(e2.relative_schema_path, deque([1, "type"]))
@@ -518,7 +518,7 @@ def test_type(self):
518518
self.assertEqual(e.path, deque([]))
519519
self.assertEqual(e.relative_path, deque([]))
520520
self.assertEqual(e.absolute_path, deque([]))
521-
self.assertEqual(e.json_path, '$')
521+
self.assertEqual(e.json_path, "$")
522522

523523
self.assertEqual(e.schema_path, deque(["type"]))
524524
self.assertEqual(e.relative_schema_path, deque(["type"]))
@@ -537,7 +537,7 @@ def test_type(self):
537537
self.assertEqual(e1.path, deque([]))
538538
self.assertEqual(e1.relative_path, deque([]))
539539
self.assertEqual(e1.absolute_path, deque([]))
540-
self.assertEqual(e1.json_path, '$')
540+
self.assertEqual(e1.json_path, "$")
541541

542542
self.assertEqual(e1.schema_path, deque([0, "type"]))
543543
self.assertEqual(e1.relative_schema_path, deque([0, "type"]))
@@ -554,7 +554,7 @@ def test_type(self):
554554
self.assertEqual(e2.path, deque(["foo"]))
555555
self.assertEqual(e2.relative_path, deque(["foo"]))
556556
self.assertEqual(e2.absolute_path, deque(["foo"]))
557-
self.assertEqual(e2.json_path, '$.foo')
557+
self.assertEqual(e2.json_path, "$.foo")
558558

559559
self.assertEqual(
560560
e2.schema_path, deque([1, "properties", "foo", "enum"]),
@@ -598,10 +598,10 @@ def test_single_nesting(self):
598598
self.assertEqual(e3.absolute_path, deque(["baz"]))
599599
self.assertEqual(e4.absolute_path, deque(["foo"]))
600600

601-
self.assertEqual(e1.json_path, '$.bar')
602-
self.assertEqual(e2.json_path, '$.baz')
603-
self.assertEqual(e3.json_path, '$.baz')
604-
self.assertEqual(e4.json_path, '$.foo')
601+
self.assertEqual(e1.json_path, "$.bar")
602+
self.assertEqual(e2.json_path, "$.baz")
603+
self.assertEqual(e3.json_path, "$.baz")
604+
self.assertEqual(e4.json_path, "$.foo")
605605

606606
self.assertEqual(e1.validator, "minItems")
607607
self.assertEqual(e2.validator, "enum")
@@ -638,12 +638,12 @@ def test_multiple_nesting(self):
638638
self.assertEqual(e5.path, deque([1, "bar", "baz"]))
639639
self.assertEqual(e6.path, deque([1, "foo"]))
640640

641-
self.assertEqual(e1.json_path, '$')
642-
self.assertEqual(e2.json_path, '$[0]')
643-
self.assertEqual(e3.json_path, '$[1].bar')
644-
self.assertEqual(e4.json_path, '$[1].bar.bar')
645-
self.assertEqual(e5.json_path, '$[1].bar.baz')
646-
self.assertEqual(e6.json_path, '$[1].foo')
641+
self.assertEqual(e1.json_path, "$")
642+
self.assertEqual(e2.json_path, "$[0]")
643+
self.assertEqual(e3.json_path, "$[1].bar")
644+
self.assertEqual(e4.json_path, "$[1].bar.bar")
645+
self.assertEqual(e5.json_path, "$[1].bar.baz")
646+
self.assertEqual(e6.json_path, "$[1].foo")
647647

648648
self.assertEqual(e1.schema_path, deque(["type"]))
649649
self.assertEqual(e2.schema_path, deque(["items", "type"]))
@@ -720,7 +720,7 @@ def test_recursive(self):
720720
self.assertEqual(
721721
e.absolute_schema_path, deque(["properties", "root", "anyOf"]),
722722
)
723-
self.assertEqual(e.json_path, '$.root')
723+
self.assertEqual(e.json_path, "$.root")
724724

725725
e1, = e.context
726726
self.assertEqual(e1.absolute_path, deque(["root", "children", "a"]))
@@ -739,7 +739,7 @@ def test_recursive(self):
739739
],
740740
),
741741
)
742-
self.assertEqual(e1.json_path, '$.root.children.a')
742+
self.assertEqual(e1.json_path, "$.root.children.a")
743743

744744
e2, = e1.context
745745
self.assertEqual(
@@ -768,7 +768,7 @@ def test_recursive(self):
768768
],
769769
),
770770
)
771-
self.assertEqual(e2.json_path, '$.root.children.a.children.ab')
771+
self.assertEqual(e2.json_path, "$.root.children.a.children.ab")
772772

773773
def test_additionalProperties(self):
774774
instance = {"bar": "bar", "foo": 2}
@@ -781,8 +781,8 @@ def test_additionalProperties(self):
781781
self.assertEqual(e1.path, deque(["bar"]))
782782
self.assertEqual(e2.path, deque(["foo"]))
783783

784-
self.assertEqual(e1.json_path, '$.bar')
785-
self.assertEqual(e2.json_path, '$.foo')
784+
self.assertEqual(e1.json_path, "$.bar")
785+
self.assertEqual(e2.json_path, "$.foo")
786786

787787
self.assertEqual(e1.validator, "type")
788788
self.assertEqual(e2.validator, "minimum")
@@ -803,8 +803,8 @@ def test_patternProperties(self):
803803
self.assertEqual(e1.path, deque(["bar"]))
804804
self.assertEqual(e2.path, deque(["foo"]))
805805

806-
self.assertEqual(e1.json_path, '$.bar')
807-
self.assertEqual(e2.json_path, '$.foo')
806+
self.assertEqual(e1.json_path, "$.bar")
807+
self.assertEqual(e2.json_path, "$.foo")
808808

809809
self.assertEqual(e1.validator, "type")
810810
self.assertEqual(e2.validator, "minimum")
@@ -823,8 +823,8 @@ def test_additionalItems(self):
823823
self.assertEqual(e1.path, deque([0]))
824824
self.assertEqual(e2.path, deque([1]))
825825

826-
self.assertEqual(e1.json_path, '$[0]')
827-
self.assertEqual(e2.json_path, '$[1]')
826+
self.assertEqual(e1.json_path, "$[0]")
827+
self.assertEqual(e2.json_path, "$[1]")
828828

829829
self.assertEqual(e1.validator, "type")
830830
self.assertEqual(e2.validator, "minimum")
@@ -843,8 +843,8 @@ def test_additionalItems_with_items(self):
843843
self.assertEqual(e1.path, deque([1]))
844844
self.assertEqual(e2.path, deque([2]))
845845

846-
self.assertEqual(e1.json_path, '$[1]')
847-
self.assertEqual(e2.json_path, '$[2]')
846+
self.assertEqual(e1.json_path, "$[1]")
847+
self.assertEqual(e2.json_path, "$[2]")
848848

849849
self.assertEqual(e1.validator, "type")
850850
self.assertEqual(e2.validator, "minimum")
@@ -862,7 +862,7 @@ def test_propertyNames(self):
862862
"%r is not allowed for %r" % ({"const": "foo"}, "foo"),
863863
)
864864
self.assertEqual(error.path, deque([]))
865-
self.assertEqual(error.json_path, '$')
865+
self.assertEqual(error.json_path, "$")
866866
self.assertEqual(error.schema_path, deque(["propertyNames", "not"]))
867867

868868
def test_if_then(self):
@@ -877,7 +877,7 @@ def test_if_then(self):
877877
self.assertEqual(error.validator, "const")
878878
self.assertEqual(error.message, "13 was expected")
879879
self.assertEqual(error.path, deque([]))
880-
self.assertEqual(error.json_path, '$')
880+
self.assertEqual(error.json_path, "$")
881881
self.assertEqual(error.schema_path, deque(["then", "const"]))
882882

883883
def test_if_else(self):
@@ -892,7 +892,7 @@ def test_if_else(self):
892892
self.assertEqual(error.validator, "const")
893893
self.assertEqual(error.message, "13 was expected")
894894
self.assertEqual(error.path, deque([]))
895-
self.assertEqual(error.json_path, '$')
895+
self.assertEqual(error.json_path, "$")
896896
self.assertEqual(error.schema_path, deque(["else", "const"]))
897897

898898
def test_boolean_schema_False(self):
@@ -916,7 +916,7 @@ def test_boolean_schema_False(self):
916916
12,
917917
False,
918918
deque([]),
919-
'$',
919+
"$",
920920
),
921921
)
922922

@@ -947,7 +947,7 @@ def test_ref(self):
947947
deque(["foo"]),
948948
{"type": "integer"},
949949
deque(["additionalProperties", "type"]),
950-
'$.foo',
950+
"$.foo",
951951
),
952952
)
953953

@@ -1129,7 +1129,7 @@ def test_check_redefined_sequence(self):
11291129
Allow array to validate against another defined sequence type
11301130
"""
11311131
schema = {"type": "array", "uniqueItems": True}
1132-
MyMapping = namedtuple('MyMapping', 'a, b')
1132+
MyMapping = namedtuple("MyMapping", "a, b")
11331133
Validator = validators.extend(
11341134
self.Validator,
11351135
type_checker=self.Validator.TYPE_CHECKER.redefine_many(
@@ -1146,20 +1146,20 @@ def test_check_redefined_sequence(self):
11461146
validator = Validator(schema)
11471147

11481148
valid_instances = [
1149-
deque(['a', None, '1', '', True]),
1149+
deque(["a", None, "1", "", True]),
11501150
deque([[False], [0]]),
11511151
[deque([False]), deque([0])],
11521152
[[deque([False])], [deque([0])]],
11531153
[[[[[deque([False])]]]], [[[[deque([0])]]]]],
11541154
[deque([deque([False])]), deque([deque([0])])],
1155-
[MyMapping('a', 0), MyMapping('a', False)],
1155+
[MyMapping("a", 0), MyMapping("a", False)],
11561156
[
1157-
MyMapping('a', [deque([0])]),
1158-
MyMapping('a', [deque([False])]),
1157+
MyMapping("a", [deque([0])]),
1158+
MyMapping("a", [deque([False])]),
11591159
],
11601160
[
1161-
MyMapping('a', [MyMapping('a', deque([0]))]),
1162-
MyMapping('a', [MyMapping('a', deque([False]))]),
1161+
MyMapping("a", [MyMapping("a", deque([0]))]),
1162+
MyMapping("a", [MyMapping("a", deque([False]))]),
11631163
],
11641164
[deque(deque(deque([False]))), deque(deque(deque([0])))],
11651165
]
@@ -1168,20 +1168,20 @@ def test_check_redefined_sequence(self):
11681168
validator.validate(instance)
11691169

11701170
invalid_instances = [
1171-
deque(['a', 'b', 'a']),
1171+
deque(["a", "b", "a"]),
11721172
deque([[False], [False]]),
11731173
[deque([False]), deque([False])],
11741174
[[deque([False])], [deque([False])]],
11751175
[[[[[deque([False])]]]], [[[[deque([False])]]]]],
11761176
[deque([deque([False])]), deque([deque([False])])],
1177-
[MyMapping('a', False), MyMapping('a', False)],
1177+
[MyMapping("a", False), MyMapping("a", False)],
11781178
[
1179-
MyMapping('a', [deque([False])]),
1180-
MyMapping('a', [deque([False])]),
1179+
MyMapping("a", [deque([False])]),
1180+
MyMapping("a", [deque([False])]),
11811181
],
11821182
[
1183-
MyMapping('a', [MyMapping('a', deque([False]))]),
1184-
MyMapping('a', [MyMapping('a', deque([False]))]),
1183+
MyMapping("a", [MyMapping("a", deque([False]))]),
1184+
MyMapping("a", [MyMapping("a", deque([False]))]),
11851185
],
11861186
[deque(deque(deque([False]))), deque(deque(deque([False])))],
11871187
]

jsonschema/validators.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,7 +733,7 @@ def resolve_local(self, url, schema):
733733

734734
for subschema in self._finditem(schema, "$id"):
735735
target_uri = self._urljoin_cache(
736-
self.resolution_scope, subschema['$id'],
736+
self.resolution_scope, subschema["$id"],
737737
)
738738
if target_uri.rstrip("/") == uri.rstrip("/"):
739739
if fragment:

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ jsonschema = schemas/*.json, schemas/*/*.json
6161
universal = 1
6262

6363
[flake8]
64-
builtins = unicode
64+
inline-quotes = "
6565
exclude =
6666
jsonschema/__init__.py
6767
jsonschema/_reflect.py

tox.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ commands = {envbindir}/detect-secrets scan {toxinidir}
8484
deps =
8585
flake8
8686
flake8-commas
87+
flake8-quotes
8788
commands =
8889
{envpython} -m flake8 {posargs} {toxinidir}/jsonschema {toxinidir}/docs
8990

0 commit comments

Comments
 (0)