
    /j1                    
   S SK Jr  S SKrS SKrS SKrS SKrS SKJrJrJ	r	J
r
JrJrJrJrJrJr  S SKJr  S SKJrJr  S SKJr  S SKrSSKJrJrJrJr  \" S	5      r\" S
\	\S4   S9r\" S\
\ \4   S9r!\" S\\   S9r"\" S\S\4   S9r#\(       a  SSK$J%r%J&r&  S<S jr'      S=S jr(          S>S jr)S?S jr*S@S jr+SAS jr,SBS jr-SCS jr.SDS jr/SES jr0SFS jr1SGS jr2SHS jr3SIS jr4SS S!.SJS" jjr5SKS# jr6SLS$ jr7\" S%5      r8\" S&5      r9\SMS' j5       r:\SNS( j5       r:\SOS) j5       r:SPS* jr:SQS+ jr;SRS, jr<SSS- jr=STS. jr>SUS/ jr?SVS0 jr@SWS1 jrASXS2 jrBSYS3 jrCSZS4 jrDS[S5 jrES6S7.S\S8 jjrFS]S9 jrGS^S: jrHS_S; jrIg)`    )annotationsN)
TYPE_CHECKINGAnyTupleMappingTypeVarCallableIterableSequencecastoverload)Path)datedatetime)	TypeGuard   )OmitNotGiven	FileTypesHeadersLike_T_TupleT.)bound	_MappingT
_SequenceT	CallableT)AzureOpenAIAsyncAzureOpenAIc                H    U  VVs/ s H  o  H  o"PM     M     snn$ s  snnf N )tsublistitems      E/app/agent/.venv/lib/python3.13/site-packages/openai/_utils/_utils.pyflattenr&   %   s"     !6WgdDgD666s   c          
     P    / nU H  nUR                  [        XSSS95        M     U$ )zRecursively extract files from the given dictionary based on specified paths.

A path may look like this ['foo', 'files', '<array>', 'data'].

Note: this mutates the given dictionary.
r   Nindexflattened_key)extend_extract_items)querypathsfilespaths       r%   extract_filesr1   )   s-     *,E^EqMN L    c                   X   nUS-  n[        U 5      (       aL   [        S XS   5       5      (       a  U R                  U5      nOX   n Uc  UnO	USU S	3-  n[        UUUUS
9$ [	        U 5      (       a6  US:w  a  / $ [        U  Vs/ s H  n[        UUUUb  US-   OSS
9PM     sn5      $ / $ ! [          a    [        U 5      (       d  / s $ SSKJn  Uc   e[	        U 5      (       aE  / nU  H9  nU" Xs(       a  US-   OSS9  UR                  US-   [        [        U5      45        M;     Us $ U" XS9  U[        [        U 5      4/s $ f = f! [         a    / s $ f = fs  snf )Nr   )assert_is_file_contentz[] )key   c              3  *   #    U  H	  oS :H  v   M     g7f)<array>Nr!   ).0ps     r%   	<genexpr>!_extract_items.<locals>.<genexpr>_   s     8<a	><s   []r(   r9   )
IndexErroris_given_filesr4   is_listappendr   r   is_dictallpopKeyErrorr,   r&   )	objr0   r)   r*   r6   r4   r/   entryr$   s	            r%   r,   r,   <   s   7k, 
QJEs||	 84<888wws|x  MqQZ'M'	
 	
 
)I    D :G:S-$"6Y]	  

 
	
 I}  7}}I 	4 (((3<<13E&u--$2F]_`md2DE4JKL  Ls6Y 4566'7<  	 I		(s;   B/ *E E E/E	AE	-E	E	EEc                d    [        U [        5      (       + =(       a    [        U [        5      (       + $ r    )
isinstancer   r   rI   s    r%   rA   rA      s!    #x((FC1F-FFr2   c                "    [        U [        5      $ r    rL   tuplerM   s    r%   is_tuplerQ          c5!!r2   c                "    [        U [        5      $ r    rO   rM   s    r%   
is_tuple_trT      rR   r2   c                "    [        U [        5      $ r    rL   r   rM   s    r%   is_sequencerW          c8$$r2   c                "    [        U [        5      $ r    rV   rM   s    r%   is_sequence_trZ      rX   r2   c                "    [        U [        5      $ r    rL   r   rM   s    r%   
is_mappingr]          c7##r2   c                "    [        U [        5      $ r    r\   rM   s    r%   is_mapping_tr`      r^   r2   c                "    [        U [        5      $ r    )rL   dictrM   s    r%   rE   rE          c4  r2   c                "    [        U [        5      $ r    )rL   listrM   s    r%   rC   rC      rc   r2   c                "    [        U [        5      $ r    )rL   r
   rM   s    r%   is_iterablerg      rX   r2   c                *   [        U 5      (       a=  [        [        U R                  5        VVs0 s H  u  pU[	        U5      _M     snn5      $ [        U 5      (       a*  [        [        U  Vs/ s H  n[	        U5      PM     sn5      $ U $ s  snnf s  snf )zMinimal reimplementation of copy.deepcopy() that will only copy certain object types:

- mappings, e.g. `dict`
- list

This is done for performance reasons.
)r]   r   r   itemsdeepcopy_minimalrC   )r$   kvrJ   s       r%   rj   rj      sw     $BDJJLILDA,Q//LIJJt}}BdCdU)%0dCDDK JCs   B
,B
z, or)delimfinalc                   [        U 5      nUS:X  a  gUS:X  a  U S   $ US:X  a  U S    SU SU S    3$ UR                  U S S 5      SU SU S    3-   $ )Nr   r5   r7   r    )lenjoin)seqrn   ro   sizes       r%   
human_joinrw      sv    s8Dqyqy1vqya&5'3q6(++::c#2hAeWAc"gY"777r2   c                    SU  S3$ )zOAdd single quotation marks around the given string. Does *not* do any escaping.'r!   )strings    r%   quoter{      s    vha=r2   c                    ^  SU 4S jjnU$ )a   Decorator to enforce a given set of arguments or variants of arguments are passed to the decorated function.

Useful for enforcing runtime validation of overloaded functions.

Example usage:
```py
@overload
def foo(*, a: str) -> str: ...


@overload
def foo(*, b: bool) -> str: ...


# This enforces the same constraints that a static type checker would
# i.e. that either a or b must be passed to the function
@required_args(["a"], ["b"])
def foo(*, a: str | None = None, b: bool | None = None) -> str: ...
```
c                8  >^ ^ [         R                  " T 5      R                  nUR                  5        VVs/ s H/  u  p#UR                  UR
                  UR                  1;   d  M-  UPM1     snnm[        R                  " T 5      SU UU4S jj5       nU$ s  snnf )Nc                 n  >^ [        5       m[        U 5       H  u  p# TR                  TU   5        M     UR                  5        H  nTR                  U5        M     T H!  n[        U4S jU 5       5      nU(       d  M!    O   [        T5      S:  aM  [        T VVs/ s H-  nS[        U Vs/ s H  n[        U5      PM     snSS9-   S	-   PM/     snn5      nS
U S3n	Ot[        T5      S:  d   e[        [        TS   5      T-
  5      n
[        U
5      S:  a)  S[        U
 Vs/ s H  n[        U5      PM     sn5       3n	OS[        U
S   5       3n	[	        U	5      eT" U 0 UD6$ ! [         a2    [	        TR
                   S[        T5       S[        U 5       S35      S ef = fs  snf s  snnf s  snf )Nz	() takes z argument(s) but z were givenc              3  ,   >#    U  H	  oT;   v   M     g 7fr    r!   )r:   paramgiven_paramss     r%   r<   @required_args.<locals>.inner.<locals>.wrapper.<locals>.<genexpr>  s     J'4's   r7   (and)ro   )z,Missing required arguments; Expected either z arguments to be givenr   zMissing required arguments: zMissing required argument: )set	enumerateaddr@   	TypeError__name__rs   keysrF   rw   r{   re   )argskwargsi_r6   variantmatchesarg
variationsmsgmissingr   func
positionalvariantss              @r%   wrapper-required_args.<locals>.inner.<locals>.wrapper   s   %(UL!$  $$Z]3 ( {{}  % % $J'JK7 $
 x=1$!+muvmubiz*I#5:*IQVWWZ]]muv"J ITjkCx=1,,, #3x{#3l#BCG7|a' <Z_fHg_fX[s_fHg=h<ij ;E'!*<M;NOn$(((9 "  #==/3z?2CCTUXY]U^T__jk   +Jv Ihs)   E(F,
.F'F,
%F2
(<F$'F,
)r   objectr   r   returnr   )	inspect	signature
parametersri   kindPOSITIONAL_ONLYPOSITIONAL_OR_KEYWORD	functoolswraps)r   paramsnamer   r   r   r   s   `    @r%   innerrequired_args.<locals>.inner   s    ""4(33  &||~
-zz%%++ -

 
	!	) !	) 
!	)F ]
s   ,B'B)r   r   r   r   r!   )r   r   s   ` r%   required_argsr      s    ,0d Lr2   _K_Vc                    g r    r!   rM   s    r%   strip_not_givenr   *  s    (+r2   c                    g r    r!   rM   s    r%   r   r   .  s    FIr2   c                    g r    r!   rM   s    r%   r   r   2  s    ,/r2   c                    U c  g[        U 5      (       d  U $ U R                  5        VVs0 s H  u  p[        U[        5      (       a  M  X_M      snn$ s  snnf )zHRemove all top-level keys where their values are instances of `NotGiven`N)r]   ri   rL   r   )rI   r6   values      r%   r   r   6  sE    
{c??
),X:3Juh<WJCJXXXs   A	Ac                    [        U SS9$ )N
   )base)intvals    r%   coerce_integerr   A  s    sr2   c                    [        U 5      $ r    )floatr   s    r%   coerce_floatr   E  s    :r2   c                <    U S:H  =(       d    U S:H  =(       d    U S:H  $ )Ntrue1onr!   r   s    r%   coerce_booleanr   I  s    &=5C3J5#+5r2   c                     U c  g [        U 5      $ r    )r   r   s    r%   maybe_coerce_integerr   M      
{#r2   c                     U c  g [        U 5      $ r    )r   r   s    r%   maybe_coerce_floatr   S  s    
{r2   c                     U c  g [        U 5      $ r    )r   r   s    r%   maybe_coerce_booleanr   Y  r   r2   c                N    U R                  U5      (       a  U [        U5      S $ U $ )zPRemove a prefix from a string.

Backport of `str.removeprefix` for Python < 3.9
N)
startswithrs   )rz   prefixs     r%   removeprefixr   _  s+    
   c&km$$Mr2   c                P    U R                  U5      (       a  U S[        U5      *  $ U $ )zPRemove a suffix from a string.

Backport of `str.removesuffix` for Python < 3.9
N)endswithrs   )rz   suffixs     r%   removesuffixr   i  s+    
 vnV%%Mr2   c                x    [        U 5      R                  5       n[        R                  R	                  U 5      nX!4$ r    )r   
read_bytesosr0   basename)r0   contents	file_names      r%   file_from_pathr   s  s1    Dz$$&H  &I  r2   c                   UR                  5       n[        U 5      (       aH  U R                  5        H4  u  p4UR                  5       U:X  d  M  [        U[        5      (       d  M2  Us  $    [
        R                  " SS UR                  5       5      nXUR                  5       U4 H  nU R                  U5      nU(       d  M  Us  $    [        SU S35      e)Nz([^\w])(\w)c                d    U R                  S5      U R                  S5      R                  5       -   $ )Nr7   r   )groupupper)pats    r%   <lambda>%get_required_header.<locals>.<lambda>  s#    #))A,STI[I[I]:]r2   zCould not find z header)lowerr`   ri   rL   strresub
capitalizer   get
ValueError)headersheaderlower_headerrk   rl   intercaps_headernormalized_headerr   s           r%   get_required_headerr   y  s    <<>LGMMODAwwyL(Z3-?-? $
 vvn.]_e_p_p_rs$FLLNDTU-.5L V
 vhg6
77r2   c                 N     [         R                  " 5       $ ! [         a     gf = f)Nfalse)sniffiocurrent_async_library	Exceptionr!   r2   r%   get_async_libraryr     s(    ,,.. s    
$$   maxsizec                J    [         R                  " U S9n[        [        U5      $ )zeA version of functools.lru_cache that retains the type signature
for the wrapped function arguments.
r   )r   	lru_cacher   r   )r   r   s     r%   r   r     s&     !!G Wr2   c                   [        U 5      (       a8  U R                  5        VVs0 s H  u  p[        U5      [        U5      _M     snn$ [        U 5      (       a<  [	        U [
        [        [        45      (       d  U  Vs/ s H  n[        U5      PM     sn$ [	        U [        [        45      (       a  U R                  5       $ U $ s  snnf s  snf )znTranslates a mapping / sequence recursively in the same fashion
as `pydantic` v2's `model_dump(mode="json")`.
)r]   ri   	json_saferg   rL   r   bytes	bytearrayr   r   	isoformat)datar6   r   r$   s       r%   r   r     s     $CG::<P<ZS	#	% 00<PP4D3y2I!J!J,01DD	$D11$4())~~K Q 2s   !C=Cc                $    SSK Jn  [        X5      $ )Nr   )r   )	lib.azurer   rL   )clientr   s     r%   is_azure_clientr     s    'f**r2   c                $    SSK Jn  [        X5      $ )Nr   )r   )r   r   rL   )r   r   s     r%   is_async_azure_clientr    s    ,f//r2   )r"   zIterable[Iterable[_T]]r   zlist[_T])r-   zMapping[str, object]r.   zSequence[Sequence[str]]r   list[tuple[str, FileTypes]])
rI   r   r0   Sequence[str]r)   r   r*   
str | Noner   r  )rI   z_T | NotGiven | Omitr   zTypeGuard[_T])rI   r   r   zTypeGuard[tuple[object, ...]])rI   z_TupleT | objectr   zTypeGuard[_TupleT])rI   r   r   zTypeGuard[Sequence[object]])rI   z_SequenceT | objectr   zTypeGuard[_SequenceT])rI   r   r   zTypeGuard[Mapping[str, object]])rI   z_MappingT | objectr   zTypeGuard[_MappingT])rI   r   r   zTypeGuard[dict[object, object]])rI   r   r   zTypeGuard[list[object]])rI   r   r   zTypeGuard[Iterable[object]])r$   r   r   r   )ru   r  rn   r   ro   r   r   r   )rz   r   r   r   )r   r  r    Callable[[CallableT], CallableT])rI   Noner   r  )rI   zMapping[_K, _V | NotGiven]r   zdict[_K, _V])rI   r   r   r   )rI   zobject | Noner   r   )r   r   r   r   )r   r   r   r   )r   r   r   bool)r   r  r   
int | None)r   r  r   zfloat | None)r   r  r   zbool | None)rz   r   r   r   r   r   )rz   r   r   r   r   r   )r0   r   r   r   )r   r   r   r   r   r   )r   r   )r   r  r   r  )r   r   r   r   )r   r   r   zTypeGuard[AzureOpenAI])r   r   r   zTypeGuard[AsyncAzureOpenAI])J
__future__r   r   r   r   r   typingr   r   r   r   r   r	   r
   r   r   r   pathlibr   r   r   typing_extensionsr   r   _typesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r1   r,   rA   rQ   rT   rW   rZ   r]   r`   rE   rC   rg   rj   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r!   r2   r%   <module>r     s   " 	 	      # '  ; ;T]
)5#5
6KwsF{';<	\&)9:
KxS'9:	97  
 # !&G	G
G 	G
 G !GTG""%%$$!!%  48d 8
HV T]T] 
 + 
 + 
 I 
 I 
 / 
 /Y6!8& (+  +0r2   