@@ -1432,7 +1432,6 @@ def _add_rule(self, name: str, rule: str):
1432
1432
return key
1433
1433
1434
1434
def visit (self , schema : Dict [str , Any ], name : str ) -> str :
1435
- schema_type : Optional [str ] = schema .get ("type" ) # type: ignore
1436
1435
rule_name = name or "root"
1437
1436
1438
1437
if "$defs" in schema :
@@ -1458,7 +1457,19 @@ def visit(self, schema: Dict[str, Any], name: str) -> str:
1458
1457
rule = " | " .join ((self ._format_literal (v ) for v in schema ["enum" ]))
1459
1458
return self ._add_rule (rule_name , rule )
1460
1459
1461
- elif schema_type == "object" and "properties" in schema :
1460
+ elif "$ref" in schema :
1461
+ ref = schema ["$ref" ]
1462
+ assert ref .startswith ("#/$defs/" ), f"Unrecognized schema: { schema } "
1463
+ # inline $defs
1464
+ def_name = ref [len ("#/$defs/" ) :]
1465
+ def_schema = self ._defs [def_name ]
1466
+ return self .visit (def_schema , f'{ name } { "-" if name else "" } { def_name } ' )
1467
+
1468
+
1469
+ schema_type : Optional [str ] = schema .get ("type" ) # type: ignore
1470
+ assert isinstance (schema_type , str ), f"Unrecognized schema: { schema } "
1471
+
1472
+ if schema_type == "object" and "properties" in schema :
1462
1473
# TODO: `required` keyword
1463
1474
prop_order = self ._prop_order
1464
1475
prop_pairs = sorted (
@@ -1489,14 +1500,6 @@ def visit(self, schema: Dict[str, Any], name: str) -> str:
1489
1500
)
1490
1501
return self ._add_rule (rule_name , rule )
1491
1502
1492
- elif "$ref" in schema :
1493
- ref = schema ["$ref" ]
1494
- assert ref .startswith ("#/$defs/" ), f"Unrecognized schema: { schema } "
1495
- # inline $defs
1496
- def_name = ref [len ("#/$defs/" ) :]
1497
- def_schema = self ._defs [def_name ]
1498
- return self .visit (def_schema , f'{ name } { "-" if name else "" } { def_name } ' )
1499
-
1500
1503
else :
1501
1504
assert schema_type in PRIMITIVE_RULES , f"Unrecognized schema: { schema } "
1502
1505
return self ._add_rule (
0 commit comments