@@ -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