
    U th                        d dl mZ d dlZd dlmZmZ d dlmZ d dlZddl	m
Z
 ddlmZmZ ddlmZmZ  ed	          Zd%dZd&dZd'dZd(dZd)dZd*d!Zd+d$ZdS ),    )annotationsN)AnyTypeVar)	TypeGuard   )	NOT_GIVEN)is_dictis_list)PYDANTIC_V2model_json_schema_Tmodel4type[pydantic.BaseModel] | pydantic.TypeAdapter[Any]returndict[str, Any]c                   t          j        |           rt          |           rt          |           }nHt          r/t          | t          j                  r|                                 }nt          d|            t          |d|          S )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)r   schemas     h/var/www/html/mycamper/aliexpress-site/backend/venv/lib/python3.11/site-packages/openai/lib/_pydantic.pyto_strict_json_schemar"      s    u ^"3E":": ^"5))	 ^E8+?@@ ^""$$\UZ\\]]]%f2FCCCC    r   objectr   tuple[str, ...]r   dict[str, object]c                  t          |           st          d|  d           |                     d          }t          |          r3|                                D ]\  }}t	          |g d|R            |                     d          }t          |          r3|                                D ]\  }}t	          |g d|R            |                     d          }	|	dk    r	d| vrd	| d<   |                     d
          }
t          |
          rEd |
                                D             | d<   fd|
                                D             | d
<   |                     d          }t          |          rt	          |g dR           | d<   |                     d          }t          |          rfdt          |          D             | d<   |                     d          }t          |          rzt          |          dk    rH| 	                    t	          |d         g ddR                      | 
                    d           nfdt          |          D             | d<   |                     dt                    | 
                    d           |                     d          }|rt          | d          rt          |t                    sJ d|             t          |          }t          |          st!          d| d|           | 	                    i ||            | 
                    d           t	          |           S | S )zkMutates 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typer$   additionalPropertiesF
propertiesc                    g | ]}|S r   r   ).0props     r!   
<listcomp>z._ensure_strict_json_schema.<locals>.<listcomp>9   s    "F"F"FD4"F"F"Fr#   requiredc                J    i | ]\  }}|t          |g d |R            S )r+   r   )r   )r-   keyprop_schemar   r   s      r!   
<dictcomp>z._ensure_strict_json_schema.<locals>.<dictcomp>:   sT     %
 %
 %
 [ +K>X>Xl>XTW>X>X_cddd%
 %
 %
r#   itemsanyOfc           	     b    g | ]+\  }}t          |g d t          |          R           ,S )r6   r   r   str)r-   ivariantr   r   s      r!   r/   z._ensure_strict_json_schema.<locals>.<listcomp>H   sV      
  
  
7 'w5Mt5MW5Mc!ff5M5MTXYYY 
  
  
r#   allOf   r   0c           	     b    g | ]+\  }}t          |g d t          |          R           ,S )r<   r   r8   )r-   r:   entryr   r   s      r!   r/   z._ensure_strict_json_schema.<locals>.<listcomp>T   sV     $ $ $Au +57O7Ow7OA7O7OVZ[[[$ $ $r#   defaultNz$refzReceived non-string $ref - )r   refzExpected `$ref: z&` to resolved to a dictionary but got )r	   r   getr5   r   keysr
   	enumeratelenupdatepopr   has_more_than_n_keysr   r9   resolve_ref
ValueError)r   r   r   defsdef_name
def_schemar(   definition_namedefinition_schematypr+   r5   any_ofall_ofrB   resolveds    ``             r!   r   r      s;    ; SQKQQ4QQRRR??7##Dt}} _$(JJLL 	_ 	_ Hj&z8R$8R8R8R8RY]^^^^^//-00K{ s2=2C2C2E2E 	s 	s.O.&'8?f?f}?fVe?f?fmqrrrrr
//&
!
!C
h1DD.3*+ ..Jz 
"F"FJOO4E4E"F"F"FJ%
 %
 %
 %
 %
$.$4$4$6$6%
 %
 %
L! OOG$$Eu~~ c9%FVFVgFVFV]abbbG __W%%Fv 
 
  
  
  
  
'// 
  
  
G __W%%Fv v;;!9&)J_DJ_RYJ_[^J_J_fjkkklllOOG$$$$$ $ $ $ $ )& 1 1$ $ $K  y),,4	""" //&
!
!C
 M#K33 M#s##HH%H3%H%HHH#Dc222x   	geee[ceefff 	6h6+6777 *+DtLLLLr#   rB   r9   c                    |                     d          st          d|d          |dd                              d          }| }|D ]+}||         }t          |          sJ d| d|             |},|S )Nz#/zUnexpected $ref format z; Does not start with #/r   /z1encountered non-dictionary entry while resolving z - )
startswithrK   splitr	   )r   rB   r   rT   r2   values         r!   rJ   rJ   v   s    >>$ TR3RRRSSSqrr7==DH  u~~eeeSVee[ceeee~Or#   rQ   r)   #TypeGuard[type[pydantic.BaseModel]]c                b    t          j        |           sdS t          | t          j                  S )NF)r   r   
issubclassr   	BaseModelrQ   s    r!   r   r      s,    ?3 uc8-...r#   boolc                "    t          | d          S )z@Returns True if the given type likely used `@pydantic.dataclass`__pydantic_config__)hasattrr^   s    r!   is_dataclass_like_typerc      s    3-...r#   objTypeGuard[dict[str, object]]c                     t          |           S )N)_is_dict)rd   s    r!   r	   r	      s     C==r#   nintc                T    d}|                                  D ]}|dz  }||k    r dS dS )Nr   r=   TF)rD   )rd   rh   r:   _s       r!   rI   rI      sA    	AXXZZ  	Qq5544 5r#   )r   r   r   r   )r   r$   r   r%   r   r&   r   r   )r   r&   rB   r9   r   r$   )rQ   r)   r   rZ   )rQ   r)   r   r_   )rd   r$   r   re   )rd   r&   rh   ri   r   r_   )
__future__r   r   typingr   r   typing_extensionsr   r   _typesr   _utilsr	   rg   r
   _compatr   r   r   r"   r   rJ   r   rc   rI   r   r#   r!   <module>rr      sA   " " " " " "          ' ' ' ' ' '        1 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4WT]]D D D DX X X Xv   / / / // / / /
        r#   