@@ -1432,7 +1432,6 @@ def _add_rule(self, name: str, rule: str):
14321432 return key
14331433
14341434 def visit (self , schema : Dict [str , Any ], name : str ) -> str :
1435- schema_type : Optional [str ] = schema .get ("type" ) # type: ignore
14361435 rule_name = name or "root"
14371436
14381437 if "$defs" in schema :
@@ -1458,7 +1457,19 @@ def visit(self, schema: Dict[str, Any], name: str) -> str:
14581457 rule = " | " .join ((self ._format_literal (v ) for v in schema ["enum" ]))
14591458 return self ._add_rule (rule_name , rule )
14601459
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 :
14621473 # TODO: `required` keyword
14631474 prop_order = self ._prop_order
14641475 prop_pairs = sorted (
@@ -1489,14 +1500,6 @@ def visit(self, schema: Dict[str, Any], name: str) -> str:
14891500 )
14901501 return self ._add_rule (rule_name , rule )
14911502
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-
15001503 else :
15011504 assert schema_type in PRIMITIVE_RULES , f"Unrecognized schema: { schema } "
15021505 return self ._add_rule (
0 commit comments