@@ -495,7 +495,9 @@ def is_schema(v: tuple[str, "SchemaType"]) -> bool:
495495 for byid in map (lambda x : x .definitions , documents ):
496496 assert byid is not None and isinstance (byid , dict )
497497 for name , schema in filter (is_schema , byid .items ()):
498- byname [schema ._get_identity (name = name )] = schema
498+ n = schema ._get_identity (name = name )
499+ # assert byname.get(n, None) in [None, schema]
500+ byname [n ] = schema
499501
500502 # PathItems
501503 for path , obj in (self .paths or dict ()).items ():
@@ -508,6 +510,7 @@ def is_schema(v: tuple[str, "SchemaType"]) -> bool:
508510 if isinstance (response , (v20 .paths .Response )):
509511 if isinstance (response .schema_ , (v20 .Schema , v31 .Schema )):
510512 name = response .schema_ ._get_identity ("PI" , f"{ path } .{ m } .{ r } " )
513+ # assert byname.get(name, None) in [None, response.schema_]
511514 byname [name ] = response .schema_
512515 else :
513516 raise TypeError (f"{ type (response )} at { path } " )
@@ -517,7 +520,9 @@ def is_schema(v: tuple[str, "SchemaType"]) -> bool:
517520 assert byid is not None and isinstance (byid , dict )
518521 for name , response in filter (is_schema , byid .items ()):
519522 assert response .schema_
520- byname [response .schema_ ._get_identity (name = name )] = response .schema_
523+ n = response .schema_ ._get_identity (name = name )
524+ # assert byname.get(name, None) in [None, response.schema_]
525+ byname [n ] = response .schema_
521526
522527 elif isinstance (self ._root , (v30 .Root , v31 .Root )):
523528 # Schema
@@ -528,7 +533,9 @@ def is_schema(v: tuple[str, "SchemaType"]) -> bool:
528533 for byid in map (lambda x : x .schemas , components ):
529534 assert byid is not None and isinstance (byid , dict )
530535 for name , schema in filter (is_schema , byid .items ()):
531- byname [schema ._get_identity (name = name )] = schema
536+ n = schema ._get_identity (name = name )
537+ # assert byname.get(n, None) in [None, schema]
538+ byname [n ] = schema
532539
533540 # PathItems
534541 for path , obj in (self .paths or dict ()).items ():
@@ -541,24 +548,28 @@ def is_schema(v: tuple[str, "SchemaType"]) -> bool:
541548 schema = parameter .schema_ ._target
542549 else :
543550 schema = parameter .schema_
544- assert schema is not None
551+ # assert schema is not None
545552 name = schema ._get_identity ("I2" , f"{ path } .{ m } .{ parameter .name } " )
553+ # assert byname.get(name, None) in [None, schema]
546554 byname [name ] = schema
547555 else :
548556 for key , mto in parameter .content .items ():
549557 if isinstance (mto .schema_ , ReferenceBase ):
550558 schema = mto .schema_ ._target
551559 else :
552560 schema = mto .schema_
553- assert schema is not None
561+ # assert schema is not None
554562 name = schema ._get_identity ("I2" , f"{ path } .{ m } .{ parameter .name } .{ key } " )
563+ # assert byname.get(name, None) in [None, schema]
555564 byname [name ] = schema
556565
557566 if op .requestBody :
558567 for mt , mto in op .requestBody .content .items ():
559568 if mto .schema_ is None :
560569 continue
561- byname [mto .schema_ ._get_identity ("B" )] = mto .schema_
570+ n = mto .schema_ ._get_identity ("B" )
571+ # assert byname.get(n, None) in [None, getattr(mto.schema_, "_target", mto.schema_)]
572+ byname [n ] = mto .schema_
562573
563574 for r , response in op .responses .items ():
564575 if isinstance (response , ReferenceBase ):
@@ -569,6 +580,9 @@ def is_schema(v: tuple[str, "SchemaType"]) -> bool:
569580 if mto .schema_ is None :
570581 continue
571582 name = mto .schema_ ._get_identity ("I2" , f"{ path } .{ m } .{ r } .{ mt } " )
583+ # assert (v := byname.get(name, None)) in [None, mto.schema_] or type(v) != type(
584+ # mto.schema_
585+ # ), (name, v, mto.schema_)
572586 byname [name ] = mto .schema_
573587 else :
574588 raise TypeError (f"{ type (response )} at { path } " )
@@ -581,7 +595,9 @@ def is_schema(v: tuple[str, "SchemaType"]) -> bool:
581595 for mt , mto in response .content .items ():
582596 if mto .schema_ is None :
583597 continue
584- byname [mto .schema_ ._get_identity ("R" )] = mto .schema_
598+ n = mto .schema_ ._get_identity ("R" )
599+ # assert byname.get(n, None) in [None, mto.schema_]
600+ byname [n ] = mto .schema_
585601
586602 byname = self .plugins .init .schemas (initialized = self ._root , schemas = byname ).schemas
587603 return byname
@@ -605,9 +621,11 @@ def _init_schema_types(self, only_required: bool) -> None:
605621 for i in todo | data :
606622 b = byid [i ]
607623 name = b ._get_identity ("X" )
608- types [name ] = b .get_type ()
609- for idx , j in enumerate (b ._model_types ):
610- types [f"{ name } .c{ idx } " ] = j
624+ t = b .get_type ()
625+ # assert (v := byname.get(name, None)) in [None, b], (name, b, v)
626+ types [name ] = t
627+ for j in b ._model_types :
628+ types [j .__name__ ] = j
611629
612630 # print(f"{len(types)}")
613631 for name , schema in types .items ():
0 commit comments