Skip to content

Commit d5a5d7a

Browse files
committed
yield from everywhere, saving precious lines
1 parent 743dd86 commit d5a5d7a

File tree

2 files changed

+35
-64
lines changed

2 files changed

+35
-64
lines changed

jsonschema/_legacy_validators.py

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,9 @@ def dependencies_draft3(validator, dependencies, instance, schema):
2626
continue
2727

2828
if validator.is_type(dependency, "object"):
29-
for error in validator.descend(
29+
yield from validator.descend(
3030
instance, dependency, schema_path=property,
31-
):
32-
yield error
31+
)
3332
elif validator.is_type(dependency, "string"):
3433
if dependency not in instance:
3534
message = f"{dependency!r} is a dependency of {property!r}"
@@ -66,10 +65,9 @@ def dependencies_draft4_draft6_draft7(
6665
message = f"{each!r} is a dependency of {property!r}"
6766
yield ValidationError(message)
6867
else:
69-
for error in validator.descend(
70-
instance, dependency, schema_path=property,
71-
):
72-
yield error
68+
yield from validator.descend(
69+
instance, dependency, schema_path=property,
70+
)
7371

7472

7573
def disallow_draft3(validator, disallow, instance, schema):
@@ -81,12 +79,10 @@ def disallow_draft3(validator, disallow, instance, schema):
8179

8280
def extends_draft3(validator, extends, instance, schema):
8381
if validator.is_type(extends, "object"):
84-
for error in validator.descend(instance, extends):
85-
yield error
82+
yield from validator.descend(instance, extends)
8683
return
8784
for index, subschema in enumerate(extends):
88-
for error in validator.descend(instance, subschema, schema_path=index):
89-
yield error
85+
yield from validator.descend(instance, subschema, schema_path=index)
9086

9187

9288
def items_draft3_draft4(validator, items, instance, schema):
@@ -95,14 +91,12 @@ def items_draft3_draft4(validator, items, instance, schema):
9591

9692
if validator.is_type(items, "object"):
9793
for index, item in enumerate(instance):
98-
for error in validator.descend(item, items, path=index):
99-
yield error
94+
yield from validator.descend(item, items, path=index)
10095
else:
10196
for (index, item), subschema in zip(enumerate(instance), items):
102-
for error in validator.descend(
97+
yield from validator.descend(
10398
item, subschema, path=index, schema_path=index,
104-
):
105-
yield error
99+
)
106100

107101

108102
def items_draft6_draft7_draft201909(validator, items, instance, schema):
@@ -111,14 +105,12 @@ def items_draft6_draft7_draft201909(validator, items, instance, schema):
111105

112106
if validator.is_type(items, "array"):
113107
for (index, item), subschema in zip(enumerate(instance), items):
114-
for error in validator.descend(
108+
yield from validator.descend(
115109
item, subschema, path=index, schema_path=index,
116-
):
117-
yield error
110+
)
118111
else:
119112
for index, item in enumerate(instance):
120-
for error in validator.descend(item, items, path=index):
121-
yield error
113+
yield from validator.descend(item, items, path=index)
122114

123115

124116
def minimum_draft3_draft4(validator, minimum, instance, schema):
@@ -159,13 +151,12 @@ def properties_draft3(validator, properties, instance, schema):
159151

160152
for property, subschema in properties.items():
161153
if property in instance:
162-
for error in validator.descend(
154+
yield from validator.descend(
163155
instance[property],
164156
subschema,
165157
path=property,
166158
schema_path=property,
167-
):
168-
yield error
159+
)
169160
elif subschema.get("required", False):
170161
error = ValidationError(f"{property!r} is a required property")
171162
error._set(
@@ -227,5 +218,4 @@ def recursiveRef(validator, recursiveRef, instance, schema):
227218
break
228219

229220
subschema = validator.resolver.resolve_local(recursiveRef, target)
230-
for error in validator.descend(instance, subschema):
231-
yield error
221+
yield from validator.descend(instance, subschema)

jsonschema/_validators.py

Lines changed: 19 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,17 @@ def patternProperties(validator, patternProperties, instance, schema):
2222
for pattern, subschema in patternProperties.items():
2323
for k, v in instance.items():
2424
if re.search(pattern, k):
25-
for error in validator.descend(
25+
yield from validator.descend(
2626
v, subschema, path=k, schema_path=pattern,
27-
):
28-
yield error
27+
)
2928

3029

3130
def propertyNames(validator, propertyNames, instance, schema):
3231
if not validator.is_type(instance, "object"):
3332
return
3433

3534
for property in instance:
36-
for error in validator.descend(
37-
instance=property,
38-
schema=propertyNames,
39-
):
40-
yield error
35+
yield from validator.descend(instance=property, schema=propertyNames)
4136

4237

4338
def additionalProperties(validator, aP, instance, schema):
@@ -48,8 +43,7 @@ def additionalProperties(validator, aP, instance, schema):
4843

4944
if validator.is_type(aP, "object"):
5045
for extra in extras:
51-
for error in validator.descend(instance[extra], aP, path=extra):
52-
yield error
46+
yield from validator.descend(instance[extra], aP, path=extra)
5347
elif not aP and extras:
5448
if "patternProperties" in schema:
5549
if len(extras) == 1:
@@ -86,8 +80,7 @@ def items(validator, items, instance, schema):
8680
)
8781

8882
for index, item in enumerate(non_prefixed_items):
89-
for error in validator.descend(item, items, path=index):
90-
yield error
83+
yield from validator.descend(item, items, path=index)
9184

9285

9386
def additionalItems(validator, aI, instance, schema):
@@ -100,8 +93,7 @@ def additionalItems(validator, aI, instance, schema):
10093
len_items = len(schema.get("items", []))
10194
if validator.is_type(aI, "object"):
10295
for index, item in enumerate(instance[len_items:], start=len_items):
103-
for error in validator.descend(item, aI, path=index):
104-
yield error
96+
yield from validator.descend(item, aI, path=index)
10597
elif not aI and len(instance) > len(schema.get("items", [])):
10698
error = "Additional items are not allowed (%s %s unexpected)"
10799
yield ValidationError(
@@ -276,11 +268,9 @@ def dependentSchemas(validator, dependentSchemas, instance, schema):
276268
for property, dependency in dependentSchemas.items():
277269
if property not in instance:
278270
continue
279-
280-
for error in validator.descend(
271+
yield from validator.descend(
281272
instance, dependency, schema_path=property,
282-
):
283-
yield error
273+
)
284274

285275

286276
def enum(validator, enums, instance, schema):
@@ -296,15 +286,13 @@ def ref(validator, ref, instance, schema):
296286
resolve = getattr(validator.resolver, "resolve", None)
297287
if resolve is None:
298288
with validator.resolver.resolving(ref) as resolved:
299-
for error in validator.descend(instance, resolved):
300-
yield error
289+
yield from validator.descend(instance, resolved)
301290
else:
302291
scope, resolved = validator.resolver.resolve(ref)
303292
validator.resolver.push_scope(scope)
304293

305294
try:
306-
for error in validator.descend(instance, resolved):
307-
yield error
295+
yield from validator.descend(instance, resolved)
308296
finally:
309297
validator.resolver.pop_scope()
310298

@@ -318,13 +306,11 @@ def dynamicRef(validator, dynamicRef, instance, schema):
318306
with validator.resolver.resolving(lookup_url) as subschema:
319307
if ("$dynamicAnchor" in subschema
320308
and fragment == subschema["$dynamicAnchor"]):
321-
for error in validator.descend(instance, subschema):
322-
yield error
309+
yield from validator.descend(instance, subschema)
323310
break
324311
else:
325312
with validator.resolver.resolving(dynamicRef) as subschema:
326-
for error in validator.descend(instance, subschema):
327-
yield error
313+
yield from validator.descend(instance, subschema)
328314

329315

330316
def type(validator, types, instance, schema):
@@ -341,13 +327,12 @@ def properties(validator, properties, instance, schema):
341327

342328
for property, subschema in properties.items():
343329
if property in instance:
344-
for error in validator.descend(
330+
yield from validator.descend(
345331
instance[property],
346332
subschema,
347333
path=property,
348334
schema_path=property,
349-
):
350-
yield error
335+
)
351336

352337

353338
def required(validator, required, instance, schema):
@@ -372,8 +357,7 @@ def maxProperties(validator, mP, instance, schema):
372357

373358
def allOf(validator, allOf, instance, schema):
374359
for index, subschema in enumerate(allOf):
375-
for error in validator.descend(instance, subschema, schema_path=index):
376-
yield error
360+
yield from validator.descend(instance, subschema, schema_path=index)
377361

378362

379363
def anyOf(validator, anyOf, instance, schema):
@@ -423,12 +407,10 @@ def if_(validator, if_schema, instance, schema):
423407
if validator.is_valid(instance, if_schema):
424408
if "then" in schema:
425409
then = schema["then"]
426-
for error in validator.descend(instance, then, schema_path="then"):
427-
yield error
410+
yield from validator.descend(instance, then, schema_path="then")
428411
elif "else" in schema:
429412
else_ = schema["else"]
430-
for error in validator.descend(instance, else_, schema_path="else"):
431-
yield error
413+
yield from validator.descend(instance, else_, schema_path="else")
432414

433415

434416
def unevaluatedItems(validator, unevaluatedItems, instance, schema):
@@ -469,7 +451,6 @@ def prefixItems(validator, prefixItems, instance, schema):
469451
return
470452

471453
for k, v in enumerate(instance[:min(len(prefixItems), len(instance))]):
472-
for error in validator.descend(
454+
yield from validator.descend(
473455
v, prefixItems[k], schema_path="prefixItems",
474-
):
475-
yield error
456+
)

0 commit comments

Comments
 (0)