@@ -509,15 +509,21 @@ def get_ref_type(ref: str) -> JSONReference:
509509 return JSONReference .REMOTE
510510
511511
512- def _get_type (type_ : str , format__ : str | None = None ) -> Types :
512+ def _get_type (
513+ type_ : str ,
514+ format__ : str | None = None ,
515+ data_formats : dict [str , dict [str , Types ]] | None = None ,
516+ ) -> Types :
513517 """Get the appropriate Types enum for a given JSON Schema type and format."""
514- if type_ not in json_schema_data_formats :
518+ if data_formats is None :
519+ data_formats = json_schema_data_formats
520+ if type_ not in data_formats :
515521 return Types .any
516- if (data_formats := json_schema_data_formats [type_ ].get ("default" if format__ is None else format__ )) is not None :
517- return data_formats
522+ if (type_format := data_formats [type_ ].get ("default" if format__ is None else format__ )) is not None :
523+ return type_format
518524
519525 warn (f"format of { format__ !r} not understood for { type_ !r} - using default" , stacklevel = 2 )
520- return json_schema_data_formats [type_ ]["default" ]
526+ return data_formats [type_ ]["default" ]
521527
522528
523529JsonSchemaObject .model_rebuild ()
@@ -732,21 +738,31 @@ def get_field_extras(self, obj: JsonSchemaObject) -> dict[str, Any]:
732738 extras .update (self .default_field_extras )
733739 return extras
734740
741+ @cached_property
742+ def _data_formats (self ) -> dict [str , dict [str , Types ]]:
743+ """Get data format mappings for this parser type.
744+
745+ Returns all formats for backward compatibility.
746+ OpenAPI-specific formats will be separated in Strict mode (future).
747+ """
748+ return json_schema_data_formats
749+
735750 def _get_type_with_mappings (self , type_ : str , format_ : str | None = None ) -> Types :
736751 """Get the Types enum for a given type and format, applying custom type mappings.
737752
738753 Custom mappings from --type-mappings are checked first, then falls back to
739- the default json_schema_data_formats mappings.
754+ the parser's data format mappings.
740755 """
756+ data_formats = self ._data_formats
741757 if self .type_mappings and format_ is not None and (type_ , format_ ) in self .type_mappings :
742758 target_format = self .type_mappings [type_ , format_ ]
743- for type_formats in json_schema_data_formats .values ():
759+ for type_formats in data_formats .values ():
744760 if target_format in type_formats :
745761 return type_formats [target_format ]
746- if target_format in json_schema_data_formats :
747- return json_schema_data_formats [target_format ]["default" ]
762+ if target_format in data_formats :
763+ return data_formats [target_format ]["default" ]
748764
749- return _get_type (type_ , format_ )
765+ return _get_type (type_ , format_ , data_formats )
750766
751767 @cached_property
752768 def schema_paths (self ) -> list [tuple [str , list [str ]]]:
0 commit comments