
    ]js                      U d dl mZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d d	l m!Z! d d
l"m#Z# d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z,m-Z- d dl+m"Z. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= d dl>m?Z?m@Z@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZH d dlImJZJmKZKmLZLmMZMmNZN eJrd dl"mOZO 	 	 	 	 	 	 dBdZPeGj                  eGj                  eGj                  eGj                  eGj                  deGj                  eGj                  eGj                  eGj                  eGj                  eGj                  di deGj                  deGj                  deGj                  deGj                  deGj                  deGj                  d eGj                  d!eGj                  d"eGj                  d#eGj                  d$eGj                  d%eGj                  d&eGj                  d'eGj                  d(eGj                  d)eGj                  d*eGj                  eGj                  eGj                  eGj                  eGj                  eGj                  eGj                  eGj                  eGj                  eGj                  d+	deGj                  ideGj                  ideGj                  ideGj                  id,Zrd-esd.<    G d/ d0ejf                        Zt G d1 d2eK      Zu G d3 d4eK      Zv e	       dCd5       ZwdDdEd6Zxevj                          h d7Zzd8esd9<   d:d;hZ{d8esd<<    e|evj                               ezz
  e{z
  d=d>evj                  hz  Z e(d?       G d@ dAe9             Zy)F    )annotationsN)defaultdict)contextmanager)	lru_cache)Path)TYPE_CHECKINGAnyCallableClassVarDefaultDictDict	GeneratorIterableIteratorListMappingOptionalSequenceSetTupleTypeUnion)ParseResult)warn)Field)InvalidClassNameError	load_yamlload_yaml_from_pathsnooper_to_methods)PythonVersion)	DataModelDataModelFieldBase)pydantic)	UNDEFINEDget_module_name)Enum)DefaultPutDictLiteralType)SPECIAL_PATH_FORMATParserSourceescape_charactersget_special_pathtitle_to_class_name)	ModelType	Referenceis_url)DataTypeDataTypeManagerEmptyDataTypeStrictTypesTypesUnionIntFloat)PYDANTIC_V2	BaseModelcached_propertyfield_validatormodel_validator)
ConfigDictc                f   |s| }nt        |      dk(  r8t        | t              r| j                  |d   i       }nV| t	        |d            }nDt        | t              rt        | |d      |dd        }nt        | t	        |d            |dd        }t        |t              r|S t        d|  d|       )N   r   z/Does not support json pointer to array. schema=z, key=)len
isinstancedictgetintget_model_by_pathNotImplementedError)schemakeysmodels      T/root/env/lib/python3.12/site-packages/datamodel_code_generator/parser/jsonschema.pyrE   rE   K   s     	Tafd#JJtAw+E3tAw<(E	FD	!!&a/48<!&T!W"6QRA%

9&vN     )int32int64default	date-timez	unix-time)floatdoubledecimalrO   timerN   rN   bytebinarydaterO   durationrS   passwordpathemailz	idn-emailuuiduuid1uuid2uuid3uuid4uuid5)	urizuri-referencehostnameipv4zipv4-networkipv6zipv6-networkrR   integer)re   numberstringbooleanobjectnullarrayzDict[str, Dict[str, Types]]json_schema_data_formatsc                      e Zd ZdZdZdZy)JSONReferenceLOCALREMOTEURLN)__name__
__module____qualname__ro   rp   rq    rK   rJ   rn   rn      s    EF
CrK   rn   c                  &    e Zd ZU ded<   dZded<   y)DiscriminatorstrpropertyNameNzOptional[Dict[str, str]]mapping)rr   rs   rt   __annotations__rz   ru   rK   rJ   rw   rw      s    (,G%,rK   rw   c                      e Zd ZU eser
edYd       ZnedYd       ZedZd       Zh dZde	d<    e
j                  d      Zd	e	d
<    ed      d[d       Z ed      d\d       ZdZde	d<   dZde	d<   dZde	d<   dZde	d<   dZde	d<   dZde	d<   dZde	d<   dZde	d<   dZde	d <   dZde	d!<   dZde	d"<   dZd#e	d$<   dZd%e	d&<   dZd%e	d'<   dZd(e	d)<   dZd*e	d+<   g Z d,e	d-<   g Z!d,e	d.<   g Z"d,e	d/<   g Z#d0e	d1<   dZ$de	d2<   dZ%de	d3<   dZ&d4e	d5<   g Z'd6e	d7<    e(dd89      Z)de	d<   d:Z*de	d;<    e(g d<9      Z+d6e	d=<   dZ,de	d><   dZ-de	d?<   dZ.de	d@<   dZ/de	dA<   dZ0de	dB<    e(ddC9      Z1de	dD<    e(ddE9      Z2de	dF<    e(ddG9      Z3de	dH<    e(ee4I      Z5de	d<   dZ6dJe	dK<   er e7dLe8fM      Z9n
 G dN dO      Z:esd] fdPZ;e8d^dQ       Z<e8d^dR       Z=e8d_dS       Z> edd      d[dT       Z?e8d^dU       Z@e8d^dV       ZAe8d`dW       ZBe8d^dX       ZC xZDS )aJsonSchemaObjectDict[str, Any]c                    | j                   S N)model_fieldsclss    rJ   
get_fieldszJsonSchemaObject.get_fields   s    '''rK   c                    | j                   S r   )
__fields__r   s    rJ   r   zJsonSchemaObject.get_fields   s    ~~%rK   c                $    | j                          y r   )update_forward_refsr   s    rJ   model_rebuildzJsonSchemaObject.model_rebuild   s    '')rK   >   maximumminimumpatternmaxItemsminItems	maxLength	minLength
multipleOfuniqueItemsexclusiveMaximumexclusiveMinimumSet[str]__constraint_fields__extrasrx   __extra_key__before)moder	   c                    t        |t              s|S |j                  d      }|j                  d      }|du r|d   |d<   |d= n|du r|d= |du r|d   |d<   |d= |S |du r|d= |S )Nr   r   Tr   Fr   )rA   rB   rC   )r   valuesexclusive_maximumexclusive_minimums       rJ   0validate_exclusive_maximum_and_exclusive_minimumzAJsonSchemaObject.validate_exclusive_maximum_and_exclusive_minimum   s    &$'M6<jjAS6T6<jjAS6T$)/	):F%&y!%')*$)/	):F%&y!  %')*rK   refc                    t        |t              rBd|v r>|j                  d      r|d d S d|v s|d   dk(  s|d   dk(  r|S |j                  dd      S |S )N##/r   )rA   rx   endswithreplace)r   values     rJ   validate_refzJsonSchemaObject.validate_ref   sa    eS!cUl~~d#Sbz!%(c/U2Y#5E==d++rK   Nz;Union[List[JsonSchemaObject], JsonSchemaObject, bool, None]itemsOptional[bool]r   zUnion[str, List[str], None]typeOptional[str]formatr   zOptional[int]r   r   zOptional[UnionIntFloat]r   r   r   r   zOptional[float]r   zUnion[float, bool, None]r   r   z#Union[JsonSchemaObject, bool, None]additionalPropertiesz%Optional[Dict[str, JsonSchemaObject]]patternPropertiesList[JsonSchemaObject]oneOfanyOfallOfz	List[Any]enum	writeOnlyreadOnlyz2Optional[Dict[str, Union[JsonSchemaObject, bool]]]
properties	List[str]required$ref)rN   aliasFnullablezx-enum-varnamesx_enum_varnamesdescriptiontitleexampleexamplesrN   $ididcustomTypePathcustom_type_pathcustomBasePathcustom_base_path)r   default_factoryzUnion[Discriminator, str, None]discriminatorT)arbitrary_types_allowedignored_typesc                      e Zd ZdZefZdZy)JsonSchemaObject.ConfigTN)rr   rs   rt   r   r:   keep_untouchedsmart_castsru   rK   rJ   Configr   	  s    &*#-/NKrK   r   c                   t        |   di | |j                         D ci c]  \  }}|t        vs|| c}}| _        d|j                  | j                  i       v r || j                     d   | j                  d<   y y c c}}w )Nconstru   )super__init__r   EXCLUDE_FIELD_KEYSr   rC   r   )selfdatakv	__class__s       rJ   r   zJsonSchemaObject.__init__  s}    G$t$,0JJLXDAqAEW<W1a4XDK$((4#5#5r::'+D,>,>'?'HG$ ; Ys
   BBc                    | j                   d uxsK | j                  dk(  xr: | j                   xr+ | j                   xr | j                   xr | j
                   S Nri   )r   r   r   r   r   r   r   s    rJ   	is_objectzJsonSchemaObject.is_object  sb     OO4' yyH$ JJJJ JJ HH	
rK   c                @    | j                   d uxs | j                  dk(  S )Nrk   )r   r   r   s    rJ   is_arrayzJsonSchemaObject.is_array!  s    zz%=g)==rK   c                @    | j                   j                  dd      d   S )N/r?   r   )r   rsplitr   s    rJ   ref_object_namez JsonSchemaObject.ref_object_name%  s    xxsA&r**rK   c                    |xs d S r   ru   )r   r   s     rJ   validate_itemszJsonSchemaObject.validate_items)  s     ~rK   c                >    d| j                   v xs d| j                  v S )NrN   r   )__fields_set__r   r   s    rJ   has_defaultzJsonSchemaObject.has_default.  s"    D///S3D3SSrK   c                F    t        | j                  | j                  z        S r   )boolr   r   r   s    rJ   has_constraintzJsonSchemaObject.has_constraint2  s    D..1D1DDEErK   c                F    | j                   rt        | j                         S y r   )r   get_ref_typer   s    rJ   ref_typezJsonSchemaObject.ref_type6  s    88))rK   c                V    t        | j                  t              xr d| j                  v S )Nrj   )rA   r   listr   s    rJ   type_has_nullzJsonSchemaObject.type_has_null<  s!    $))T*Bv/BBrK   )returnr~   r   None)r   r	   r   r	   )r   r	   r   r	   )r   r	   r   r   )r   r   )r   rx   )r   zOptional[JSONReference])Err   rs   rt   r   r8   classmethodr   r   r   r{   r)   r   r   r<   r   r;   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   r   r   r   rB   r   r   r=   r:   model_configr   r   r   r   r   r   r   r   r   r   __classcell__r   s   @rJ   r}   r}      s*   ( (
 & & * *'8  4,33H=M3=(# $$ U  JNEFM"&K&(,D
%, FM !G]!#I}##I}#'+G$+'+G$+"Hm""Hm""&J&15.515.5@D=D?C<C$&E!&$&E!&$&E!&D) $I~$#Hn#EIJBIHit6:C:$Hn$!&r9J!KOYK!%K%E=GSHcGSd%8B8&+D@P&QmQ&+D@P&QmQ"MFNM59M29!$(*,
	 	
 	I 
 
 > > + + W8, - T T F F  
 C CrK   r}   c                    | d   dk(  rt         j                  S t        |       rt         j                  S t         j                  S )Nr   r   )rn   ro   r1   rq   rp   )r   s    rJ   r   r   A  s8    
1v}"""	   rK   c                    | t         vrt        j                  S t         |    j                  |dn|      }||S t	        d|d| d       t         |    d   S )NrN   z
format of z not understood for z - using default)rl   r6   anyrC   r   )type_format__data_formatss      rJ   	_get_typer   J  sk    ,,yy$<U$C$G$G%	8%L :h\!5eY>R	RS#E*955rK   >   r   r   r   r   r   r   r   r   DEFAULT_FIELD_KEYSr   r   !EXCLUDE_FIELD_KEYS_IN_JSON_SCHEMAr   r   )max_variable_lengthc            D          e Zd ZU ddgZded<   eZded<   ej                  ej                  ej                  ej                  ddddej                  dddddddddddddddddd	ddddddddddddddddddddddddddddddddddddddddd
C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d6 fdZd7dZed8d       Zed9d       Zej(                  d:d       Zd;dZd;dZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 d<dZd=dZd>dZd?dZd?dZ	 	 	 	 	 	 d@dZ	 	 	 	 	 	 	 	 	 	 dAdZ	 	 	 	 	 	 	 	 dBdZ	 	 	 	 	 	 	 	 dBdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dCdZ 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dDdZ!	 dE	 	 	 	 	 	 	 	 	 dFdZ"	 dG	 	 	 	 	 	 	 dHdZ#	 	 dI	 	 	 	 	 	 	 	 	 	 	 dJdZ$	 	 	 	 	 	 	 	 dKd Z%	 	 dL	 	 	 	 	 	 	 	 	 	 	 dMd!Z&	 dN	 	 	 	 	 	 	 	 	 	 	 dOd"Z'	 dN	 	 	 	 	 	 	 	 	 dPd#Z(	 dG	 	 	 	 	 	 	 	 	 dQd$Z)	 	 	 	 	 	 	 	 dRd%Z*d=d&Z+	 	 dI	 	 	 	 	 	 	 	 	 	 	 dJd'Z,dSd(Z-dTd)Z.dSd*Z/dUd+Z0dVd,Z1dVd-Z2e3dWd.       Z4	 	 	 	 	 	 	 	 dXd/Z5	 	 	 	 	 	 	 	 dYd0Z6dZd1Z7d[d2Z8d[d3Z9	 	 	 	 	 	 	 	 d\d4Z:	 dG	 	 	 	 	 	 	 	 	 d]d5Z; xZ<S )^JsonSchemaParserz#/definitionsz#/$defszClassVar[List[str]]SCHEMA_PATHSz ClassVar[Type[JsonSchemaObject]]SCHEMA_OBJECT_TYPENFzutf-8)Cdata_model_typedata_model_root_typedata_type_manager_typedata_model_field_type
base_classadditional_importscustom_template_dirextra_template_datatarget_python_versiondump_resolve_reference_action
validationfield_constraintssnake_case_fieldstrip_default_nonealiasesallow_population_by_field_name(apply_default_values_for_required_fieldsallow_extra_fields"force_optional_for_required_fields
class_nameuse_standard_collections	base_pathuse_schema_descriptionuse_field_descriptionuse_default_kwargreuse_modelencodingenum_field_as_literaluse_one_literal_as_defaultset_default_enum_memberuse_subclass_enumstrict_nullableuse_generic_container_typesenable_faux_immutabilityremote_text_cachedisable_appending_item_suffixstrict_typesempty_enum_field_namecustom_class_name_generatorfield_extra_keysfield_include_all_keys!field_extra_keys_without_x_prefixwrap_string_literaluse_title_as_nameuse_operation_id_as_nameuse_unique_items_as_sethttp_headershttp_ignore_tlsuse_annotated2use_non_positive_negative_number_constrained_typesoriginal_field_name_delimiteruse_double_quotesuse_union_operatorallow_responses_without_contentcollapse_root_modelsspecial_field_name_prefix remove_special_field_name_prefixcapitalise_enum_memberskeep_model_orderknown_third_partycustom_formatterscustom_formatters_kwargsuse_pendulumhttp_query_parameterstreat_dots_as_moduleuse_exact_importsdefault_field_extrasc       C            t        E   dGi d|d|d|d|d|d|d|d|d	|	d
|
d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d|d | d!|!d"|"d#|#d$|$d%|%d&|&d'|'d(|(d)|)d*|*d+|+d,|,d-|-d.|.d/|/d0|0d1|1d2|2d3|3d4|4d5|5d6|6d7|7d8|8d9|9d:|:d;|;d<|<d=|=d>|>d?|?d@@dAAdBBdCCdDD t                _        i  _        d  _        d  _        t        t               _	        h t         j                   j                   _         j                  j                  r fdE _        y dF  _        y )HNsourcer  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  c                @    j                   j                  |       d   S )Nr   )model_resolverget_valid_field_name_and_aliaskeyr   s    rJ   <lambda>z+JsonSchemaParser.__init__.<locals>.<lambda>  s    D//NNsSTUV rK   c                    | S r   ru   )rQ  s    rJ   rR  z+JsonSchemaParser.__init__.<locals>.<lambda>  s    3 rK   ru   )r   r   r'   remote_object_cacheraw_obj_root_id_root_id_base_pathr   setreserved_refsr  r/  r1  
field_keysr  can_have_extra_keysget_field_extra_key)Fr   rL  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r!  r"  r#  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r.  r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r:  r;  r<  r=  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  r   sF   `                                                                    rJ   r   zJsonSchemaParser.__init__x  s   P 	 E	
E	
+E	
 "6E	
 $:	E	

 #8E	
 "E	
  2E	
 !4E	
 !4E	
 #8E	
 +HE	
 "E	
 0E	
 .E	
  2E	
  !E	
" ,J#E	
$  2%E	
& 6^'E	
( 0R)E	
* "+E	
, &>-E	
.  /E	
0 $:1E	
2 #83E	
4 05E	
6 $7E	
8 9E	
: #8;E	
< (B=E	
> %<?E	
@ 0AE	
B ,CE	
D )DEE	
F &>GE	
H 0IE	
J +HKE	
L &ME	
N #8OE	
P )DQE	
R .SE	
T $:UE	
V /PWE	
X !4YE	
Z 0[E	
\ &>]E	
^ %<_E	
` &aE	
b ,cE	
d (eE	
f @rgE	
h +HiE	
j 0kE	
l  2mE	
n -LoE	
p "6qE	
r '@sE	
t .NuE	
v %<wE	
x .yE	
z 0{E	
| 0}E	
~ &>E	
@ &AE	
B #8CE	
D "6EE	
F 0GE	
H "6IE	
N IWHX ')'+15@KC@P%
%
""%
 33%
 %%99V $
 (7D$rK   c           	        | j                   r\|j                  j                         D ci c]6  \  }}| j                  || j                  v r|j                  d      n|      |8 }}}ni|j                  j                         D ci c]D  \  }}|| j                  v r1| j                  || j                  v r|j                  d      n|      |F }}}| j                  r|j                  | j                         |S c c}}w c c}}w )Nzx-)	r0  r   r   r\  r1  lstriprZ  rJ  update)r   objr   r   r   s        rJ   get_field_extrasz!JsonSchemaParser.get_field_extras  s   &&
  JJ,,.	 Aq ((&'4+Q+Q&QAHHTNWXF   JJ,,.	 Aq'	 ((&'4+Q+Q&QAHHTNWXF  $$MM$334!s   ;C;A	Dc                    | j                   D cg c]$  }||j                  d      j                  d      f& c}S c c}w )Nr   r   )r  r^  split)r   ss     rJ   schema_pathszJsonSchemaParser.schema_paths.  s4    8<8I8IJ1AHHTN((-.JJJs   );c                .    | j                   j                  S r   )rN  root_idr   s    rJ   rg  zJsonSchemaParser.root_id2  s    ""***rK   c                :    | j                   j                  |       y r   )rN  set_root_id)r   r   s     rJ   rg  zJsonSchemaParser.root_id6  s    ''.rK   c                    | j                   t        j                  k(  xs7 | j                   t        j                  k(  xr t	        |j
                        dk(  S )Nr?   )r#  r(   AllOner@   r   r   r`  s     rJ   should_parse_enum_as_literalz-JsonSchemaParser.should_parse_enum_as_literal:  sB    ))[__< 
&&+//9Pc#((mq>P	
rK   c                    |j                   xsa | j                  xrS |j                  xsD |j                  xs6 |j                  xs( |j
                  xs |j                  xs |j                   S r   )r   r  r   r   r   r   r   r   rm  s     rJ   is_constraints_fieldz%JsonSchemaParser.is_constraints_field?  so    || 

""  9999 99 ==	
 88
	
rK   c               d   | j                  ||j                  |||| j                  |      r|j                         nd | j                  r|j
                  s|r|j                  nd | j                  | j                  |      | j                  | j                  | j                  ||j
                        S )N)namerN   	data_typer   r   constraintsr   r  r   r8  r  r   original_namer   )r  rN   rp  rB   r'  r   r   r  ra  r8  r  r   )r   
field_namefieldr   
field_typer   original_field_names          rJ   get_object_fieldz!JsonSchemaParser.get_object_fieldL  s     ))MM (,(A(A%(H

d##):):h ^^#66((/,,"&"<"<"44-))! * 
 	
rK   c           
         j                   _dj                  v r( j                  j                  j                  d         S  j                  j	                  t
        j                        S d fd}t        j                   t              rQ j                  j                   D cg c]  }|dk7  r ||j                  xs d        c}dj                   v       S  |j                   j                  xs d      S c c}w )Nr   c                     j                   j                  t        | |      fi j                  sj	                         S i S r   )data_type_managerget_data_typer   r  rB   )r   r   r`  r   s     rJ   _get_data_typez6JsonSchemaParser.get_data_type.<locals>._get_data_types  sK    74))77%*$($:$:#((* @B rK   rj   rN   )
data_typesis_optional)r   rx   r   rx   r   r2   )r   r   r}  get_data_type_from_valuer~  r6   r   rA   r   rs  r   )r   r`  r  ts   ``  rJ   r~  zJsonSchemaParser.get_data_typei  s    88#**$--FFJJw'  ))77		 	 chh%>> !XXF{ #1cjj&=I>
 #chh. "   chh

(?i@@s   (#Dc                \    | j                   j                  |      }| j                  |      S )N	reference)rN  add_refrs  )r   r   r  s      rJ   get_ref_data_typez"JsonSchemaParser.get_ref_data_type  s)    ''//4	~~	~22rK   c                r    t        |j                  t              r|j                  | j                  |   d<   y y )Nr   )rA   r   r   r  r   rr  r`  s      rJ   set_additional_propertiesz*JsonSchemaParser.set_additional_properties  s6    c..5(( $$T*+AB 6rK   c                V    |j                   r|j                   | j                  |   d<   y y )Nr   )r   r  r  s      rJ   	set_titlezJsonSchemaParser.set_title  s'    9969iiD$$T*73 rK   c                >   |j                         }|j                         D ]y  \  }}||v rkt        ||   t              r)t        |t              r| j	                  ||   |      ||<   Ft        ||   t
              rt        |t
              r||   |z   ||<   u|||<   { |S r   )copyr   rA   rB   _deep_merger   )r   dict1dict2resultrQ  r   s         rJ   r  zJsonSchemaParser._deep_merge  s     ++- 	 JCf}fSk40Zt5L"&"2"26#;"FF3KsT2z%7N"(+"5F3KF3K	  rK   c                v   |j                  |hdd      }g }g }t        t        ||g             D ]  \  }}	|	j                  r#|j	                  |	       |j	                  |       5|j	                  | j
                  j                  | j                  ||	j                  dd                          | j                  ||||d      }
| d}t        |
      D cg c]Q  \  }}||v rF|j                  r:| j                  ||g t        ||      t        |      dg |j                  gg       n|S c}}S c c}}w )NT)excludeexclude_unsetby_alias)r  r  Fsingular_nameCommon)ignore_duplicate_modelfieldsbase_classesr   )rB   	enumerategetattrr   appendr  	parse_objr  parse_list_itemr  _parse_object_common_partr-   rx   )r   rr  r`  rY   target_attribute_namebase_objectcombined_schemasrefsindextarget_attributeparsed_schemascommon_path_keywordids                 rJ   parse_combined_schemaz&JsonSchemaParser.parse_combined_schema  s    hh*+4$  
 46'0C.3(
 	#E#  ## ''(89E"  !''++55((',11t1T+	< -- . 
 "7 7v> ".1
 1 DyQ[[ **F"#6=Fs1vF'+kk] +  

 	
 
s   AD5c                *    | j                  |||d      S )Nr   r  r   rr  r`  rY   s       rJ   parse_any_ofzJsonSchemaParser.parse_any_of       ))$T7CCrK   c                *    | j                  |||d      S )Nr   r  r  s       rJ   parse_one_ofzJsonSchemaParser.parse_one_of  r  rK   c           
     b   |j                   r,|j                  | j                  ||t        |d                    |ry|swt	        |      dk(  ri| j
                  j                  | j
                  j                        5  | j
                  j                  |       | j                  |d         cd d d        S |rP|D ]K  }| j                  s| j                  r|j                  r(|j                  xs |j                  |v sEd|_        M |j                  r|D 	ci c]  }	|	j                  xs |	j                  |	 }
}	|j                  D ]c  }||
v r2|
|   }| j                  s| j                  r|j                  r1d|_        9|j!                  | j#                  d|t%                            e | j&                  r|j(                  r|j(                  }| j
                  j+                  ||dd      }| j-                  |j                  |       | j/                  ||||j0                  xs | j2                  | j4                  | j6                  | j8                  | j:                  r|j<                  nd       }| j>                  j!                  |       | j                  |      S # 1 sw Y   xY wc c}	w )Nr?   r   r  T)r   ru  rs  r  loaded)r  r  r  custom_base_classr  r  rY   r   ) r   extendparse_object_fieldsr%   r@   rN  current_base_path_context
_base_pathdeleters  r  r  r   ru  rr  r   r  r  r2   r3  r   addr  r  r   r  r  r  current_source_pathr  r   results)r   rr  r`  rY   r  r  r  r   rw  ffield_name_to_field	required_r  r  s                 rJ   r  z*JsonSchemaParser._parse_object_common_part  ss    >>MM((dOD$4OP "&S5F!5K$$>>##.. A ##**40~~Q~@	A A
  *::AAeFWFW''55::(B%)EN* <<IO"PA1??#<affa#?"P"P \\ 	 33/	:E>>EE!-- %)ENMM22%)hj 3  !!cii99D''++D$4PT+U	&&y~~s;..%!22Edoo $ 8 8 $ 8 8))+/+F+FD / 	
 	O,~~	~22]A A #Qs   :0J"J,J)c           
        |j                   D ]_  }|j                  r5|j                  | j                  j	                  |j                               Et        |d       }	| j                  |||	      }
|
r|j                  |
       n'|j                  r|j                  |j                         | j                  |||||||       |j                  rH| j                  j                  ||dd       |j                  d | j                  |||      D               |j                  s| j                  j                  ||dd       |j                  d | j                  |||      D               b y )NTr  c              3  L   K   | ]  }|j                   r|j                     y wr   r  .0r  s     rJ   	<genexpr>z6JsonSchemaParser._parse_all_of_item.<locals>.<genexpr>Q  #      (;; (   "$c              3  L   K   | ]  }|j                   r|j                     y wr   r  r  s     rJ   r  z6JsonSchemaParser._parse_all_of_item.<locals>.<genexpr>X  r  r  )r   r   r  rN  r  r%   r  r  r   _parse_all_of_itemr   r  r  r   r  )r   rr  r`  rY   r  r  r   union_modelsall_of_itemmodule_nameobject_fieldss              rJ   r  z#JsonSchemaParser._parse_all_of_item,  s\    99 &	K##D$7$7$?$?$PQ-dD9 $ 8 8! !MM-0"++ (<(<=''   $$''++D$4PT+U '' (!%!2!24d!K( 
 $$''++D$4PT+U '' (!%!2!24d!K( E&	rK   c                   t        |j                        dk(  r|j                  s|j                  d   }|j                  ry|j                  t
        j                  k(  r\t        | j                  |j                  dd  j                  d            j                  d      r| j                  |j                        S g }g }g }g }	| j                  |||||||	       |	s| j                  |||||||      S | j                  j                  ||dd      }
| j                  ||t!        d|      ||||      }| j#                  t%        |	      D cg c]5  \  }}| j                  ||t!        d	| |      |g ||j&                  gg       7 c}}
      }| j)                  d |d|d d       }| j+                  |
|g|j,                  xs | j.                  | j0                  | j2                  | j4                  | j6                  r|j8                  nd |j:                        }| j<                  j?                  |       | j#                  |
      S c c}}w )Nr?   r      r   r   Tr  r   zunion_model-r  rv  rw  r   rx  r   ry  r  r  r  r  r  rY   r   r   r  ) r@   r   r   r   r   rn   ro   rE   rU  rc  rC   r  r  r  rN  r  r-   rs  r  r  rz  r	  r   r  r  r  r  r  r   r   r  r  )r   rr  r`  rY   r  
single_objr  r  r   r  r  all_of_data_typer  union_modelrs  rw  data_model_roots                    rJ   parse_all_ofzJsonSchemaParser.parse_all_of^  s^    syy>Qs~~1J~~*"5"59L9L"L$T\\:>>!"3E3K3KC3PQUU  11*..AA+-(* (*#tV\8\	
 11c4!7x  ''++D$4PT+U	99Wd+"
 NN +4L*A 'E; ..$|E7%;TB* "2"<"<= # 
	 %%  $ & 
 337!22Edoo $ 8 8 $ 8 8))+/+F+FD&& 4 	
 	O,~~	~22As   
:I
c                $   |j                   i n|j                   }|j                  h dnh |j                  }g }t               }|j                         D ]7  \  }}	| j                  j                  ||      \  }
}|r| d|
 n|
}|j                  |
       t        |	t              r~|j                  | j                  |
| j                  j                  t        j                        | j                  rdn||v || j                   | j"                  | j$                  |             | j'                  ||	g ||
      }| j                  s| j(                  r|	j*                  rd}n||v }|j                  | j-                  |
|	||||             : |S )Nru   .F)rr  rs  r   r   r  r8  r  ru  r  )r   r   rX  r   rN  rO  r  rA   r   r  r  r}  r~  r6   r   r  r  r8  r  
parse_itemr  r   rz  )r   r`  rY   r  r   requiresr  exclude_field_namesry  rw  rv  r   modular_namerx  r   s                  rJ   r  z$JsonSchemaParser.parse_object_fields  s    ..(Bcnn 	 '*ll&:UrU#,,+-(+*4*:*:*< ,	& $ 3 3 R R#%8!J =Hk]!J<8ZL##J/%&..'"&"8"8"F"F!II#  BB "'0H<#+/+B+B&*&8&8.2.H.H&9 /   u>Q>Qj>QRJ66==%BSBS!&.(:MM%%)%)(; & 	G,	Z rK   c                   |s"t        | j                  j                   d       | j                  r|j                  r|j                  }| j
                  j                  ||d|d      }|j                  }| j                  ||       | j                  ||t        |d             }|st        |j                  t              s| j                  }	nm|j                  | j!                  d |j                  dd | j#                  | j%                  ||j                  g |d      gd      d              | j&                  }	| j)                  ||        |	|||j*                  xs | j,                  | j.                  | j0                  | j2                  | j4                  r|j6                  nd |j8                        }
| j:                  j                  |
       | j#                  |	      S )
Nzx.parse_object() ignore `unique` argument.An object name must be unique.This argument will be removed in a future versionT)r  r  r  Fr   r  is_dict)rv  rw  r   ry  rx  r   r  r  )r   r   rr   r3  r   rN  r  rr  r  r  r%   rA   r   r}   r  r  rz  rs  r  r	  r  r   r  r  r  r  r  r   r   r  )r   rr  r`  rY   r  uniquer  r  r  data_model_type_classr  s              rJ   parse_objectzJsonSchemaParser.parse_object  s    >>**+ ,D E
 !!cii99D''++' , 
	 ^^
z3'))#t_ZQU5VWC$<$<>NO$($8$8!MM%%#22"(,#~~ OO $ # 8 8 ?$ ?(> ?	$ !%  . 
  ! & ( %)$=$=!&&z37/!22Edoo $ 8 8 $ 8 8))+/+F+FD&&	
 	O,~~	~22rK   c                b   | j                  t        |j                               D cg c]u  \  }}| j                  | j                  ||d   t	        d| |            gd| j
                  j                  t        j                  | j                  s|d   nd             w c}}      S c c}}w )Nr?   zpatternProperties/Tr   )r   )r  r  dict_keyr  )
rs  r  r   r  r-   r}  r~  r6   rg   r  )r   rr  pattern_propertiesrY   r  kvs         rJ   parse_pattern_propertiesz)JsonSchemaParser.parse_pattern_properties  s     ~~  ''9'?'?'AB Ar  qE,/A!-EtL  !!33AA-1-C-C1 B     
 	
s   A:B+
c           
     "   | j                   r|j                  r|j                  }d}|rv|j                  sj|j                  r^|j                  s| j                  rFt        d|      }| j                  | j                  j                  ||d|      j                  ||      S |j                  r| j                  |j                        S |j                  r'| j                  j                  |j                  d      S |j                  r'| j!                  ||t        d|            j"                  S |j$                  r9|r7|j                  r+|j&                  s|j(                  r| j                  |||      S |j(                  r-| j#                  | j+                  ||t        d|                  S |j&                  r-| j#                  | j-                  ||t        d|                  S |j.                  rdt        d	|      }| j                  j1                  |      g}| j3                  | j                  j                  |||d
      j                  ||d      S |j4                  s|j6                  rt        d|      }|j8                  r| j;                  ||||      S |j6                  r| j=                  ||j6                  |      S t?        |j@                  tB              r/| j#                  | jE                  ||j@                  |      gd      S | j                  jG                  tH        jJ                        S |j                  rA| jM                  |      r| jO                  |      S | jQ                  ||t        d|      |      S | jG                  |      S )NFrk   T)r  r  is_custom_typer   r  r   r   )r  r  )r  ri   r  r  r   ))r3  r   r   r   r  r-   parse_root_typerN  r  rr  r   r  r   r}  get_data_type_from_full_pathr   parse_array_fieldsrs  r   r   r   r  r  r   resolve_refr  r   r   r   r  r  rA   r   r}   r  r~  r6   ri   rn  parse_enum_as_literal
parse_enum)	r   rr  itemrY   r  parentroot_type_pathall_of_pathobject_paths	            rJ   r  zJsonSchemaParser.parse_item8  sw    !!djj::D!MII##&&$*@*@-gt<N''##''"#"/	 ( 
 $	 	 XX))$((33""))FF%%d G   ]]**d,Wd;i tzz''dD99ZZ>>,,$ 0$ ? "  
 ZZ>>,,$ 0$ ? "  
 ZZ*7D9K..::;GHK$$##'']t ( $'+ %   ^^t55*8T:K(($= )   ''44$00+  D557GH~~d.G.GU  !	 &   ))77  YY00611$77??d,VT:- #   !!$''rK   c                    t        |      D cg c](  \  }}| j                  ||g |t        |      ||      * c}}S c c}}w )N)r  r  )r  r  rx   )r   rr  target_itemsrY   r  r  r  r  s           rJ   r  z JsonSchemaParser.parse_list_item  sZ       )6	
 t OO#$#E
#+  	
 		
 	
s   -A c                   | j                   rd}d }nW|j                  xr | j                   }| j                  r|j                  s|r|j                  nd}n|j                   xr |}d }t        |j                  t              r|j                  g}n)t        |j                  t              r|j                  }ng }| j                  | j                  |||||      d      g}|j                  r-|j                  | j                  ||t        d|                   n8|j                  r,|j                  | j!                  ||t        d|                   |j"                  r,|j                  | j%                  ||t        d|                   | j'                  | j                  |      |j(                  ||j+                         || j,                  | j/                  |      | j0                  | j2                  d |j                  	      S )
NFTr  r  is_listr   ri   r   r  rs  rN   r   rt  r   r  r   r8  r  ru  r   )r  r   r  r'  r   rA   r   r}   r   rs  r  r   r  r  r-   r   r  r   r  r  rN   rB   r  ra  r8  r  )	r   rr  r`  rY   r  r   r   r   r  s	            rJ   r  z#JsonSchemaParser.parse_array_fields  s    22"H'+H QD$Q$QH ##+.??h3<<D"||+8cii!12-0YYKE		4(IIEE NN//"/ 0    	&

 99!!$-=gt-LM ]]!!$-=h-MN 88c+;FD+IJ ))nn
n;KK
#66((-,,"&"<"< * 
 	
rK   c                   | j                   r|j                  r|j                  }| j                  j                  ||dd      }| j	                  |xs ||g ||      }||j
                  j                  D cg c]  }|j                  s|j                   c}v r| j                  | j                  | j                  |j
                  j                  dd  d      g|j
                  j                  dd        |j                  |j                  |j                  |j                  |j                  |j                  | j                   | j"                  d |j$                        }| j'                  ||g|j(                  xs | j*                  | j,                  | j.                  | j0                  | j2                  r|j4                  nd |j6                        }| j8                  j;                  |       | j                  |      S c c}w )	NTr  r  r?   r  r  r   r  r  )r3  r   rN  r  r  rs  all_data_typesr  r  r  rN   r   rt  r   r  r   r8  r  r   r	  r   r  r  r  r  r  r   r   r  r  )	r   rr  r`  rY   ru  r  rw  r  r  s	            rJ   parse_arrayzJsonSchemaParser.parse_array  s    !!cii99D''++D$tPT+U	''(=sMdMDMR!&!?!?
1;;AKK
 
 ....','A'A!"'Et '   33AB7	  )  !--#(#;#;||"00&*&@&@"!--% / E* 337!22Edoo $ 8 8 $ 8 8))+/+F+FD&& 4 	
 	O,~~	~22I
s   8H
Hc                d   d }|j                   r| j                  |j                         }n|j                  r)| j                  j	                  |j                  d      }n|j
                  r)| j                  ||t        d|            j                  }ne|j                  s|j                  r| j                  j                  ||dd      }|j                  r| j                  ||t        d|            }n| j                  ||t        d|            }t        |      dkD  r| j                  |      }n|s
t!               S |d	   }n|j"                  r| j%                  ||j"                  |      }n|j&                  r7| j)                  |      r| j+                  |      }n[| j-                  |||      }nG|j.                  r| j1                  |      }n)| j                  j1                  t2        j4                        }| j6                  rd
}n*|j8                   xr |j:                  xr | j<                   }| j>                  r|j@                  r|j@                  }|s| j                  j                  ||dd      }| jC                  ||       | jE                  ||       | jG                  || jI                  ||jJ                  || jL                  r|jO                         ni | jP                  r|j8                  nd | jR                  | jU                  |      | jV                  | jX                  d |j:                        g|jZ                  xs | j\                  | j^                  | j`                  | jb                  |jd                        }| jf                  ji                  |       | j                  |      S )NTr  rk   r  r   r   r?   r  r   Fr   )r  r  r  r  r  rY   r   r  )5r   r  r   r}  r  r   r  r-   rs  r   r   rN  r  r  r  r@   r4   r   r  r   rn  r  r  r   r~  r6   r   r  r   r   r  r3  r   r  r  r	  r  rN   r  rB   r'  r  ra  r8  r  r   r  r  r  r  r   r  r  )	r   rr  r`  rY   r  rs  r  r   r	  s	            rJ   r  z JsonSchemaParser.parse_root_type  sM    *.	77"&"8"8"AI!!..KK$$T L I \\//c+GT:i  YY#))++//d4D 0 I yy-1->->#/>.
 "..#/>
 :" NNjNA	$&&qM	""55dC<Q<QSWXIXX005 66s;	 OOD#t<	XX**3/I..<<		I 22"H<<' QD$Q$Q-H !!cii99D++//d4D 0 I 	tS!&&tS1#88**'KK%.2.D.D
"-1-A-AS\\t'+'>'>005"&"4"4*.*D*D"& # +  "22Edoo $ 8 8 $ 8 8))&&+  9  
. 	01~~	~22rK   c                f    | j                  |j                  D cg c]  }||	 c}      S c c}w )N)literals)rs  r   )r   r`  r  s      rJ   r  z&JsonSchemaParser.parse_enum_as_literalx  s)    ~~388'Maq}'M~NN'Ms   ..c                @    |s"t         j                  j                   d       g d j                  v r.j                  dk(  rd}j                  D cg c]  }||	 }}nj                  }d}t               }	t        |      D ]  \  }
}j                  dk(  st        |t              rSt        |t              rd|j                  t               dn|}j                  rj                  |
   }nlt        |      }n`|}j                  rj                  |
   }nBt        j                  t              rj                  nt	        |      j                  }| d| } j                  j                  ||	t        j                        }|	j!                  |       j#                   j%                  || j&                  j)                  t*        j,                        d j.                  j0                   j2                  d               d fd	} j4                  rj6                  rj6                  } j                  j!                  ||d|d
d      }|s ||      S  j                  j!                  g |d
|j8                   d
d|d
d      } j;                  | j%                   ||      j<                  dd j.                   j?                         j@                  j0                   j2                  d 
      gjB                  xs  jD                   jF                   jH                   jJ                  j0                  rj<                  ntL        jN                        } jP                  j#                  |        jS                  |      S c c}w )Nzv.parse_enum() ignore `unique` argument.An object name must be unique.This argument will be removed in a future versionrg   TF'_)excludes
model_type)rr  rN   rs  r   r  r   r  ru  c                   t        | j                  j                  rj                  nd j                  j
                  r:t        j                  t              r t        j                  j                        nd j                  rj                  nt              }j                  j                  |       j!                  |       S )N)r  r  rY   r   r  r   rN   r  )r&   r  r  r   r  r&  rA   r   rx   r   r   r   rN   r$   r  r  rs  )
reference_r   enum_fieldsr`  r   s     rJ   create_enumz0JsonSchemaParser.parse_enum.<locals>.create_enum  s    $"--/3/J/JCOOPT$($<$<))j3.G  #**5'*I
D LL%>>J>77rK   r&   )r  r  singular_name_suffixr  )
rs  rN   r   r   r  r   r8  r   r  ru  )r  r  r  r  r  rY   rN   r   r  )r  r0   r   r2   )*r   r   rr   r   r   rX  r  rA   rx   	translater,   r   rN  get_valid_field_namer/   ENUMr  r  r  r}  r~  r6   r   r  r   r  r3  r   rr  r	  rN   ra  r8  r   r  r  r  r  r$   r   r  rs  )r   rr  r`  rY   r  r  r   e
enum_timesr  r  	enum_partrN   rv  prefixr  r  enum_referencer	  r  s   ` `                @rJ   r  zJsonSchemaParser.parse_enum{  s    >>**+ ,D E
 13388H 4!H%(XX?!?J?JH(+%j1 '	LAyxx8#z)S'A ")S1 	++,=>?qA" 
 &&!$!4!4Q!7J!$YJ#&&!$!4!4Q!7J &chh4 !)_55 
 %+81YK!8J,,AA%8Y^^ B J  ##J/**##"44BB		 "'+'>'> #*.*D*D"& + 5'	R	8 !!cii99D''++'!' , 
	 y)),,00dOFO~~d#'!' 1 
  $88**).9KK"!'+'>'>005"&"4"4 #*.*D*D"& +  "22Edoo $ 8 8 $ 8 8))#&??CKK	&&+  9  
. 	01~~	~22] @s   NNc                \    t        |      r| j                  |      S | j                  |      S r   )r1   _get_ref_body_from_url_get_ref_body_from_remote)r   resolved_refs     rJ   _get_ref_bodyzJsonSchemaParser._get_ref_body  s,    ,..|<<--l;;rK   c                D      j                   j                  | fd      S )Nc                8    t        j                  |             S r   )r   _get_text_from_urlrP  s    rJ   rR  z9JsonSchemaParser._get_ref_body_from_url.<locals>.<lambda>  s    Yt7N7Ns7S-T rK   r   )rT  
get_or_put)r   r   s   ` rJ   r  z'JsonSchemaParser._get_ref_body_from_url  s'    ''22!T 3 
 	
rK   c                x      j                   |z   j                  j                  t               fd      S )Nc                0    t        j                        S r   )r   r"  )r
  	full_pathr   s    rJ   rR  z<JsonSchemaParser._get_ref_body_from_remote.<locals>.<lambda>  s    &9)T]]&S rK   r"  )r  rT  r#  rx   )r   r  r&  s   ` @rJ   r  z*JsonSchemaParser._get_ref_body_from_remote	  s;     NN\1	''22	NS 3 
 	
rK   c           
        | j                   j                  |      }|j                  r|S | j                   j                  |      }t	        |      t
        j                  k(  r=| j                  t        | j                   j                           j                  |       |S | j                   j                  |      rJ| j                  t        |j                  d      d   j                  d               j                  |       |S t        |      r|j                  d      \  }}|g}d }nZ| j                   j                  |      r|d d d}}n|j                  d      \  }}|j                  d      }t        | j                   }| j                   j#                  |      5  | j                   j%                  |      5  | j'                  | j)                  |      | j                   j                  |d      j*                  ||r|j                  d      nd        d d d        d d d        d|_        |S # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   r   r    Tresolved)rN  r  r  r  r   rn   ro   rY  tuplecurrent_rootr  is_after_loadrc  r1   is_external_root_refr   r  r  base_url_context_parse_filer  rr  )r   
object_refr  r   relative_pathr  relative_pathsr  s           rJ   r  zJsonSchemaParser.resolve_ref  s   ''//
;	 !!--j9
#}':'::uT%8%8%E%EFGKKCP  ..s3uSYYs^A%6%<%<S%ABCGGL#;),3&M;+_NI""77<-0"Xr{-0YYs^*{*005Nn-44I  ::
 	//>	 ""=1##++C$+?DD*5!!#&4		 	  		 	 	 	s%   H:9AH.H:.H7	3H::Ic                   |j                   r| j                  |j                          |j                  rtt        |j                  t              r| j                  |j                  |       n=t        |j                  t              r#|j                  D ]  }| j                  ||        t        |j                  t              r| j                  |j                  |       |j                  r1|j                  j                         D ]  }| j                  ||        |j                  D ]  }| j                  ||        |j                  D ]  }| j                  ||        |j                  D ]  }| j                  ||        |j                  rC|j                  j                         D ]%  }t        |t              s| j                  ||       ' y y r   )r   r  r   rA   r}   	parse_refr   r   r   r   r   r   r   r   r   r`  rY   r  r   property_values         rJ   r5  zJsonSchemaParser.parse_ref9  sp   77SWW%99#))%56syy$/cii. #		 3tT23c..0@ANN333T:  ..557 ,ud+,II 	'DNN4&	'II 	'DNN4&	'II 	'DNN4&	'>>"%.."7"7"9 9n.>?NN>489 rK   c                x   |j                   r&| j                  j                  |j                   |       |j                  rtt	        |j                  t
              r| j                  |j                  |       n=t	        |j                  t              r#|j                  D ]  }| j                  ||        t	        |j                  t
              r| j                  |j                  |       |j                  r1|j                  j                         D ]  }| j                  ||        |j                  D ]  }| j                  ||        |j                  D ]  }| j                  ||        |j                  rC|j                  j                         D ]%  }t	        |t
              s| j                  ||       ' y y r   )r   rN  add_idr   rA   r}   parse_idr   r   r   r   r   r   r   r6  s         rJ   r:  zJsonSchemaParser.parse_idS  sW   66&&svvt499#))%56cii.cii. #		 2dD12c..0@AMM#22D9  ..557 +eT*+II 	&DMM$%	&II 	&DMM$%	&>>"%.."7"7"9 8n.>?MM.$78 rK   c              #  r   K   |j                  d      }| j                  }|r|nd | _        d  || _        y w)Nr   )rC   rg  )r   root_rawrg  previous_root_ids       rJ   root_id_contextz JsonSchemaParser.root_id_contextk  s3     !)e!4*.,,")wt's   57c                \    | j                  || j                  j                  |      |       y r   )r  r  )r   rr  rawrY   s       rJ   parse_raw_objzJsonSchemaParser.parse_raw_objs  s%     	tT44>>sCTJrK   c                   |j                   r| j                  |||       n#|j                  r| j                  |||       n|j                  s|j
                  rC| j                  |||      }t        |t              r|j                  r| j                  |||       n|j                  r| j                  |||       n|j                  r| j                  |||       ng|j                  dk(  r| j                  |||       nD|j                  r%| j                  |      s| j                  |||       n| j                  |||       | j!                  ||       y r   )r   r  r   r  r   r   r  rA   r4   r   r  r   r   r   rn  r  r5  )r   rr  r`  rY   rs  s        rJ   r  zJsonSchemaParser.parse_obj{  s    <<T3-YYdC.YY#)),,T3=I)]3!!$T2^^dC.""  sD1XX!dC.XXd??DOOD#t,  sD1sD!rK   c              #    K   t        | j                  t              s4t        | j                  t              r| j                  j	                         rwt               | _        | j                  D ch c]C  }| j                  j                  |j                        j                         j                         E c}| j                  _        | j                  D ]  }t        | j                  t              r| j                  | j                        }nt        |j                  j                         }| j
                  |j                  | _        | j                  j#                  |j                  j$                        5  | j                  j'                  |      5  ||f d d d        d d d         y c c}w # 1 sw Y   xY w# 1 sw Y   xY wwr   )rA   rL  r   r   is_dirr  iter_sourcer  joinpathrY   resolveas_posixrN  after_load_filesr   get_url_path_partspartsr  r  current_root_context)r   rd  rL  
path_partss       rJ   _get_context_source_path_partsz/JsonSchemaParser._get_context_source_path_parts  sc    dkk4(t{{D)dkk.@.@.B'+vD$ ))4 ''/779BBD4D0
 && 
	)F$++{3!44T[[A
!&++"3"34
''3+1;;($$>>"" )""77
C) j(() ) )
	)4) ) ) )sD   A,G.AF.6CG8F?F3F?#G3F<8F??G	Gc                   | j                         D ]  \  }}t        |j                        | _        | j                  r| j                  j                  dd      }n| j                  r| j                  }nB| j                  j                  dd      }| j                  j                  |      st        |      }| j                  j                  |      st        |      | j                  | j                  ||        | j                          y )Nr   Model)rN  r   textrU  r.  rC   r  rN  validate_namer.   r   r0  _resolve_unparsed_json_pointer)r   rL  rM  obj_names       rJ   	parse_rawzJsonSchemaParser.parse_raw  s    "&"E"E"G 	AFJ$V[[1DL//<<++GW=??#H  $||//AH..<<XF#6x#@**88B/99T\\8Z@	A  	++-rK   c           	     6   t        | j                        }| j                  D ]2  }t        |j                  j
                        }| j                  j                  t        |            }|sJ| j                  |j                  | _	        | j                  j                  |j                  j                        5  | j                  j                  |      5  t        |      D ]a  }| j                  j                  |d      j                   r+t#        |j$                        | _        | j)                  | j&                  ||       c 	 d d d        d d d        5 |t        | j                        k7  r| j+                          y y # 1 sw Y   >xY w# 1 sw Y   vxY w)NTr)  )r@   r  rE  r   rY   rK  rY  rC   r+  r  rN  r  r  rL  sortedr  r  r   rQ  rU  parse_json_pointerrS  )r   model_countrL  rM  rY  reserved_refs         rJ   rS  z/JsonSchemaParser._resolve_unparsed_json_pointer  se   t||,&& 	TFfkk//0J ..2253DEM ''3+1;;($$>>"" T""77
CT %+=$9 TL**22<$2OVV #,V[[#9DL++DLL,
STT T T	T$ #dll++//1 ,T T T Ts%   8FA0FFFFF	c                    |j                  dd      d   }|d   dk(  r|dd  }|j                  d      }t        ||      }|d   }| j                  ||g |d|d    |dd         y )Nr   r?   r   r   r   r   )rc  rE   rA  )r   r@  r   rM  rY   object_pathsmodels
model_names           rJ   rX  z#JsonSchemaParser.parse_json_pointer  s     yya $7c>8Dzz#"35!"%
 X* X<?2C.D X|TUTVGW X	
rK   c           	        |xs g D cg c]  }|s|	 }}|rg |d|d    |dd  }n|}| j                   j                  |      5  | j                   j                  ||dd      j                  }| j	                  |      5  |j                  dd        | j                  j                  |      }| j                  ||       d }| j                  D ]  \  }	}
	 t        ||
      }|r n |i }|j                         D ]8  \  }}| j                  j                  |      }| j                  |g |	|       : |r>t        ||      }|d   }| j                  || j                  j                  |      |       n| j                  |||xs d	g       |j                         D ]J  \  }}g |	|}| j                   j                  |      }|r|j                  r8| j                  |||       L t!        |      }t#        | j$                  j                  |      xs g       }|rt'        |      D ]  }| j                   j                  |      }|r|j                  r-|j)                  dd      d   j)                  d
      }|j)                  d
      }t        ||      }|d   }| j                  || j                  j                  |      |        |}t#        | j$                  j                  |      xs g       }||k(  rn|rd d d        d d d        y c c}w # t        $ r Y Sw xY w# 1 sw Y   'xY w# 1 sw Y   y xY w)Nr   r   r?   FT)r  r  r   r   r   r   )rN  rL  r  rr  r>  popr  r  r:  re  rE   KeyErrorr   rC   r  rA  r+  rX  rY  rW  rc  )r   r@  rT  rM  r\  orY   root_objdefinitionsschema_pathsplit_schema_pathrQ  rI   r`  r]  r^  r  rY  reserved_pathprevious_reserved_refss                       rJ   r0  zJsonSchemaParser._parse_file  s{    $0#52;a;;KZK2l1o%6!7K,qr:JKDD  55jA 8	**..hu / d  %%c* 4%22<<SAh
38<6:6G6G !2K!2!&7=N&O&! '! &"$K"-"3"3"5 HJC11;;EBCMM#'F'F['F#'FGH  .sLAF!-b!1JNN"D$;$;$E$Ef$Mt NN8Xz7JcUK"-"3"3"5 =JC:Z::c:D $ 3 3 7 7 =I$I,<,<**3t<	= J' #D$6$6$:$:3$?$E2 F#)/)> 
$($7$7$;$;M$J	(I,<,<$'4':':4'CB'G'M'Mc'R,2237!23!E%1"%5
&(?(?(I(I&(QSW
 .;*$'(:(:(>(>s(C(Ir$JM-> $K4	8	 8	 <* $ ! !4 4	8	 8	s[   LL;L4AL(L&C2L(D(L(L4	L%	!L($L%	%L((L1	-L44L=)rL  z)Union[str, Path, List[Path], ParseResult]r  Type[DataModel]r	  ri  r
  zType[DataTypeManager]r  zType[DataModelFieldBase]r  r   r  Optional[List[str]]r  Optional[Path]r  z*Optional[DefaultDict[str, Dict[str, Any]]]r  r    r  z(Optional[Callable[[Iterable[str]], str]]r  r   r  r   r  r   r  r   r  zOptional[Mapping[str, str]]r  r   r  r   r  r   r  r   r  r   r  r   r  rk  r  r   r  r   r   r   r!  r   r"  rx   r#  zOptional[LiteralType]r$  r   r%  r   r&  r   r'  r   r(  r   r)  r   r*  z"Optional[DefaultPutDict[str, str]]r+  r   r,  zOptional[Sequence[StrictTypes]]r-  r   r.  zOptional[Callable[[str], str]]r/  Optional[Set[str]]r0  r   r1  rl  r2  r   r3  r   r4  r   r5  r   r6  #Optional[Sequence[Tuple[str, str]]]r7  r   r8  r   r9  r   r:  r   r;  r   r<  r   r=  r   r>  r   r?  r   r@  r   rA  r   rB  r   rC  rj  rD  rj  rE  Optional[Dict[str, Any]]rF  r   rG  rm  rH  r   rI  r   rJ  rn  r   r   )r`  r}   r   r~   )r   zList[Tuple[str, List[str]]])r   r   )r   r   r   r   )r`  r}   r   r   )rv  r   rw  r}   r   r   rx  r2   r   r   ry  r   r   r"   )r`  r}   r   r2   )r   rx   r   r2   )rr  rx   r`  r}   r   r   )r  Dict[Any, Any]r  ro  r   ro  )
rr  rx   r`  r}   rY   r   r  rx   r   List[DataType])rr  rx   r`  r}   rY   r   r   rp  )rr  rx   r`  r}   rY   r   r  r   r  List[DataModelFieldBase]r  List[Reference]r   r   r   r2   )rr  rx   r`  r}   rY   r   r  rq  r  rr  r   r   r  rr  r   r   )F)
rr  rx   r`  r}   rY   r   r  r   r   r2   r   )r`  r}   rY   r   r  r   r   rq  )FT)rr  rx   r`  r}   rY   r   r  r   r  r   r   r2   )rr  rx   r  zDict[str, JsonSchemaObject]rY   r   r   r2   )FN)rr  rx   r  r}   rY   r   r  r   r  zOptional[JsonSchemaObject]r   r2   )T)rr  rx   r  r   rY   r   r  r}   r  r   r   rp  )
rr  rx   r`  r}   rY   r   r  r   r   r"   )
rr  rx   r`  r}   rY   r   ru  r   r   r2   )rr  rx   r`  r}   rY   r   r   r2   )r  rx   r   ro  )r   rx   r   ro  )r1  rx   r   r0   )r`  r}   rY   r   r   r   )r<  r~   r   zGenerator[None, None, None])rr  rx   r@  r~   rY   r   r   r   )rr  rx   r`  r}   rY   r   r   r   )r   z"Iterator[Tuple[Source, List[str]]]r   )r@  r~   r   rx   rM  r   r   r   )
r@  r~   rT  rx   rM  r   r\  rj  r   r   )=rr   rs   rt   r  r{   r}   r  pydantic_modelr9   CustomRootTyper3   DataModelFieldr    PY_38r   ra  r:   re  propertyrg  setterrn  rp  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r5  r:  r   r>  rA  r  rN  rU  rS  rX  r0  r   r   s   @rJ   r  r  s  s	   )8)(DL%D;K8K ,:+C+C0>0M0M8F8V8V:H:W:W$(26.2JN/</B/BRV "'!&#(/3/49>#(38$().$(',&+"'!7;+0(-"' %,1).@D.38</3FJ/3',@D.2"').(-<@ %#CH7;"'#(05%*3716(-!&1515=A"EI%*"'9=M`79`7 )	`7
 .`7 !6`7  8`7 "`7 0`7 ,`7 H`7  -`7 (P`7 `7  `7  !`7" !#`7$ -%`7& )-'`7( 37)`7* !+`7, -1-`7. "/`70 #'1`72 "3`74 !%5`76  $7`78  9`7: ;`7< =`7>  5?`7@ %)A`7B "&C`7D  E`7F G`7H &*I`7J #'K`7L >M`7N (,O`7P 6Q`7R  -S`7T &DU`7V -W`7X !%Y`7Z ,>[`7\ ,]`7^  _`7` #'a`7b "&c`7d :e`7f g`7h i`7j =Ak`7l (5m`7n  o`7p !q`7r *.s`7t #u`7v $1w`7x +/y`7z "&{`7| }`7~ /`7@ /A`7B #;C`7D E`7F  CG`7H #I`7J  K`7L 7M`7N 
O`7D( K K + + ^^/ /



 "
  	

 
 
 
 +
 

:A63@#,:	?
?
 ?
 	?

  #?
 
?
BDD.D6?D	D
DD.D6?D	D
>3>3 >3 	>3
 !%>3 )>3 &>3 >3 
>3@00 0 	0
 )0 &0 0 &0 
0n (-D3D3 D3 	D3
 !%D3 
D3N TX7#7+47CP7	!7| $?3?3 ?3 	?3
 ?3 ?3 
?3B

 8
 	

 

> $-1_(_( _( 	_(
 _( +_( 
_(N #

 -
 	

 !
 
 

0 #?
?
 ?
 	?

 ?
 
?
L (,0303 03 	03
 %03 
03dW3W3 W3 	W3
 
W3rO $A3A3 A3 	A3
 A3 A3 
A3F<


$L9480 ( (KK K 	K
 
K"" " 	"
 
"4),.&20
!
(+
9B
	
& -1DD D 	D
 *D 
DrK   r  )rG   z Union[Dict[str, Any], List[Any]]rH   zUnion[List[str], List[int]]r   ro  )r   rx   r   rn   r   )r   rx   r   r   r   r6   )
__future__r   r   _enumcollectionsr   
contextlibr   	functoolsr   pathlibr   typingr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   urllib.parser   warningsr   r#   r   datamodel_code_generatorr   r   r   r   datamodel_code_generator.formatr    datamodel_code_generator.modelr!   r"   rs  #datamodel_code_generator.model.baser$   r%   #datamodel_code_generator.model.enumr&   datamodel_code_generator.parserr'   r(   $datamodel_code_generator.parser.baser)   r*   r+   r,   r-   r.   "datamodel_code_generator.referencer/   r0   r1   datamodel_code_generator.typesr2   r3   r4   r5   r6   r7   datamodel_code_generator.utilr8   r9   r:   r;   r<   r=   rE   rL   rM   re   	date_timerP   rQ   rR   rS   rf   rg   rT   rU   rV   	timedeltarX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   ipv4_networkrd   ipv6_networkrh   ri   rj   rk   rl   r{   rn   rw   r}   r   r   r   r  r  rX  r   r   r   r  ru   rK   rJ   <module>r     s   "  # %      & %   : H E J 4 G  L K   #,4O0 ==__[[ ,,==__

<<5<<

 	%,, 	

	
 	U__ 	EOO 	

 	ENN 	

 	 	U[[ 	

 	 	 	  	!" 	#$ yyNN

**

**====58 5==)%,,'

#%_09 5 0fEJJ -I -
_Cy _CD    
6       H  / !8  ##%&'( 

""	  -tv t .trK   