
    2h                        S SK Jr  S SKrS SKJrJr  S SKJr  S SKrSSK	J
r
  SSKJrJr  SSKJrJr  \" S	5      rSS
 jr        SS jrSS jrSS jrSS jrSS jrSS jrg)    )annotationsN)AnyTypeVar)	TypeGuard   )	NOT_GIVEN)is_dictis_list)PYDANTIC_V2model_json_schema_Tc                   [         R                  " U 5      (       a  [        U 5      (       a  [        U 5      nOI[        (       a0  [        U [        R                  5      (       a  U R                  5       nO[        SU  35      e[        USUS9$ )Nz:Non BaseModel types are only supported with Pydantic v2 -  pathroot)inspectisclassis_basemodel_typer   r   
isinstancepydanticTypeAdapterjson_schema	TypeError_ensure_strict_json_schema)modelschemas     L/var/www/auris/envauris/lib/python3.13/site-packages/openai/lib/_pydantic.pyto_strict_json_schemar      so    u"3E":":"5)	E8+?+?@@""$TUZT[\]]%f2FCC    c                  [        U 5      (       d  [        SU  SU 35      eU R                  S5      n[        U5      (       a+  UR                  5        H  u  pE[	        U/ UQSPUP7US9  M     U R                  S5      n[        U5      (       a+  UR                  5        H  u  px[	        U/ UQSPUP7US9  M     U R                  S5      n	U	S:X  a  SU ;  a  S	U S'   U R                  S
5      n
[        U
5      (       a\  U
R                  5        Vs/ s H  oPM     snU S'   U
R                  5        VVs0 s H  u  pU[	        U/ UQS
PUP7US9_M     snnU S
'   U R                  S5      n[        U5      (       a  [	        U/ UQSP7US9U S'   U R                  S5      n[        U5      (       a=  [        U5       VVs/ s H!  u  nn[	        U/ UQSP[        U5      P7US9PM#     snnU S'   U R                  S5      n[        U5      (       a  [        U5      S:X  a6  U R                  [	        US   / UQSPSP7US95        U R                  S5        O=[        U5       VVs/ s H!  u  nn[	        U/ UQSP[        U5      P7US9PM#     snnU S'   U R                  S[        5      c  U R                  S5        U R                  S5      nU(       a  [        U S5      (       az  [        U[        5      (       d
   SU 35       e[        UUS9n[        U5      (       d  [!        SU SU 35      eU R                  0 UEU E5        U R                  S5        [	        XUS9$ U $ s  snf s  snnf s  snnf s  snnf )zcMutates the given JSON schema to ensure it conforms to the `strict` standard
that the API expects.
z	Expected z to be a dictionary; path=z$defsr   definitionstypeobjectadditionalPropertiesF
propertiesrequireditemsanyOfallOf   r   0defaultz$refzReceived non-string $ref - )r   refzExpected `$ref: z&` to resolved to a dictionary but got )r	   r   getr(   r   keysr
   	enumeratestrlenupdatepopr   has_more_than_n_keysr   resolve_ref
ValueError)r   r   r   defsdef_name
def_schemar"   definition_namedefinition_schematypr&   propkeyprop_schemar(   any_ofivariantall_ofentryr.   resolveds                         r   r   r      s    ;)K=0J4&QRR??7#Dt}}$(JJL H&z8R$8R8R8RY]^ %1 //-0K{2=2C2C2E.O&'8?f?f}?fVe?fmqr 3F //&
!C
h1D.3*+ .Jz4>OO4E"F4ED44E"FJ %/$4$4$6%
$6  +K>X>Xl>XTW>X_cdd$6%
L! OOG$Eu~~9%FVFVgFV]abG __W%Fv (/ 
/
7 'w5Mt5MW5Mc!f5MTXY/ 
G __W%Fvv;!9&)J_DJ_RYJ_[^J_fjklOOG$ !*& 1$ 1HAu +57O7Ow7OA7OVZ[ 1$K  y),4	" //&
!C
#K33#s##H'B3%%HH#Dc2x  /u4Z[cZdeff 	6h6+67 *+tLLu #G%
 
$s   M3M <(M&(M,c                    UR                  S5      (       d  [        SU< S35      eUSS  R                  S5      nU nU H&  nX4   n[        U5      (       d   SU SU 35       eUnM(     U$ )Nz#/zUnexpected $ref format z; Does not start with #/r   /z1encountered non-dictionary entry while resolving z - )
startswithr8   splitr	   )r   r.   r   rG   r@   values         r   r7   r7   v   s    >>$23'9QRSSqr7==DHu~~e!RSVRWWZ[cZdee~ 
 Or    c                n    [         R                  " U 5      (       d  g[        U [        R                  5      $ )NF)r   r   
issubclassr   	BaseModelr>   s    r   r   r      s'    ??3c8--..r    c                    [        U S5      $ )z@Returns True if the given type likely used `@pydantic.dataclass`__pydantic_config__)hasattrrP   s    r   is_dataclass_like_typerT      s    3-..r    c                    [        U 5      $ )N)_is_dict)objs    r   r	   r	      s     C=r    c                N    SnU R                  5        H  nUS-  nX!:  d  M    g   g)Nr   r+   TF)r0   )rW   nrC   _s       r   r6   r6      s-    	AXXZ	Q5  r    )r   z4type[pydantic.BaseModel] | pydantic.TypeAdapter[Any]returndict[str, Any])r   r$   r   ztuple[str, ...]r   dict[str, object]r[   r\   )r   r]   r.   r2   r[   r$   )r>   r#   r[   z#TypeGuard[type[pydantic.BaseModel]])r>   r#   r[   bool)rW   r$   r[   zTypeGuard[dict[str, object]])rW   r]   rY   intr[   r^   )
__future__r   r   typingr   r   typing_extensionsr   r   _typesr   _utilsr	   rV   r
   _compatr   r   r   r   r   r7   r   rT   r6   r   r    r   <module>rf      sv    "   '   1 4T]DXX X 	X
 Xv//
r    