ó
    °"³j5  ã                  ó0  • 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  S SKJr  S SKJrJr  S SKJrJr  S SKrSSKJr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$S?S jr%SS.       S@S jjr&SAS jr'            SBS jr(SCS jr)SDS jr*SES jr+SFS jr,SGS jr-SHS jr.SIS jr/SJS jr0SKS jr1SLS jr2S S!S".SMS# jjr3SNS$ jr4SOS% jr5\
" S&5      r6\
" S'5      r7\SPS( j5       r8\SQS) j5       r8\SRS* j5       r8SSS+ jr8\SPS, j5       r9\STS- j5       r9\SRS. j5       r9SSS/ jr9SUS0 jr:SVS1 jr;SWS2 jr<SXS3 jr=SYS4 jr>SZS5 jr?S[S6 jr@S\S7 jrAS]S8 jrBS^S9 jrCS_S: jrDS;S<.S`S= jjrESaS> jrFg)bé    )ÚannotationsN)	ÚAnyÚTupleÚMappingÚTypeVarÚCallableÚIterableÚSequenceÚcastÚoverload)ÚPath)ÚdateÚdatetime)Ú	TypeGuardÚget_argsé   )ÚOmitÚNotGivenÚ	FileTypesÚArrayFormatÚHeadersLikeÚ_TÚ_TupleT.)ÚboundÚ	_MappingTÚ
_SequenceTÚ	CallableTc                ó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      ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/anthropic/_utils/_utils.pyÚflattenr%   !   s"   € Ù !Ô6¢�W«g dŠD©g‰D¡Ò6Ð6ùÓ6s   †Úbrackets)Úarray_formatc               óR   • / nU H  nUR                  [        XSSUS95        M      U$ )a�  Recursively extract files from the given dictionary based on specified paths.

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

``array_format`` controls how ``<array>`` segments contribute to the emitted
field name. Supported values: ``"brackets"`` (``foo[]``), ``"repeat"`` and
``"comma"`` (``foo``), ``"indices"`` (``foo[0]``, ``foo[1]``).

Note: this mutates the given dictionary.
r   N©ÚindexÚflattened_keyr'   )ÚextendÚ_extract_items)ÚqueryÚpathsr'   ÚfilesÚpaths        r$   Úextract_filesr2   %   s0   € ð$ *,€EÛˆØ�‰”^ E°qÈÐ[gÑhÖiñ à€Ló    c           
     óœ   • U S:X  a  gU S:X  a  SU S3$ U S:X  d  U S:X  a  g[        S	U  S
SR                  [        [        5      5       35      e)Nr&   z[]ÚindicesÚ[Ú]ÚrepeatÚcommaÚ zUnknown array_format value: z, choose from ú, )ÚNotImplementedErrorÚjoinr   r   )r'   Úarray_indexs     r$   Ú_array_suffixr?   =   se   € Ø�zÓ!ØØ�yÓ Ø�;�-˜qÐ!Ð!Ø�xÓ <°7Ó#:ð Ü
Ø
& | n°NÀ4Ç9Á9ÌXÔVaÓMbÓCcÐBdÐeóð r3   c               ó   •  X   nUS-  n[        U 5      (       aM   [        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US9$ [	        U 5      (       aM  US	:w  a  / $ [        [        U 5       VVs/ s H#  u  pŒ[        UUUUb  UOS
[        XH5      -   US9PM%     snn5      $ / $ ! [          a¤    [        U 5      (       d  / s $ SSKJn  Uc   e[	        U 5      (       aY  / n[        U 5       HD  u  p‰[        XH5      n
U(       a  X:-   OU
nU" X›S9  UR                  U[        [        U	5      45        MF     Us $ U" XS9  U[        [        U 5      4/s $ f = f! [         a    / s $ f = fs  snnf )Nr   )Úassert_is_file_content)Úkeyé   c              3  ó*   #   • U  H	  oS :H  v •  M     g7f)ú<array>Nr    )Ú.0Úps     r$   Ú	<genexpr>Ú!_extract_items.<locals>.<genexpr>q   s   é € Ð8ª< a˜	–>ª<ùs   ‚r6   r7   r)   rE   r:   )Ú
IndexErrorÚis_givenÚ_filesrA   Úis_listÚ	enumerater?   Úappendr   r   Úis_dictÚallÚpopÚKeyErrorr-   r%   )Úobjr1   r*   r+   r'   rB   rA   r0   r>   ÚentryÚsuffixÚemitted_keyr#   s                r$   r-   r-   K   sÏ  € ð7Ø‰kˆð0 
ˆQ�J€EÜˆs‡|�|ð	ô Ñ8¨4°©<Ó8×8Ñ8Ø—w‘w˜s“|‘à‘x‘ð Ñ Ø‰Mà˜q   Q˜ZÑ'ˆMÜØØØØ'Ø%ñ
ð 	
ô 
��‰Ø�)ÓØˆIäô *3°3¬ôò *8Ñ%�Kô ØØØà*7Ñ*C™ÈÌ}Ð]iÓOwÑwà!-ôñ *8òó
ð 	
ð  €IøôI ó 7Ü˜�}‰}àŠIõ 	4ð Ñ(Ð(Ð(ä�3�<‰<Ø13ˆEÜ&/°¦nÑ"�Ü& |ÓA�Þ:G˜}Ò5ÈV�Ù& uÒ>Ø—‘˜k¬4´	¸5Ó+AÐBÖCñ	 '5ð
 ŠLá˜sÒ6Ø¤¤Y°Ó 4Ð5Ð6Ò6ð+7ûô@ ó 	ð ŠIð		üó*s;   ‚C œ*E8 ÁE8 Â*F

ÃE5Ã%A2E5ÅE5Å4E5Å8FÆFc                ód   • [        U [        5      (       + =(       a    [        U [        5      (       + $ r   )Ú
isinstancer   r   ©rT   s    r$   rK   rK   œ   s!   € Ü˜#œxÓ(Ô(×F´¸CÄÓ1FÔ-FÐFr3   c                ó"   • [        U [        5      $ r   ©rY   ÚtuplerZ   s    r$   Úis_tupler^   ª   ó   € Ü�cœ5Ó!Ð!r3   c                ó"   • [        U [        5      $ r   r\   rZ   s    r$   Ú
is_tuple_tra   ®   r_   r3   c                ó"   • [        U [        5      $ r   ©rY   r
   rZ   s    r$   Úis_sequencerd   ²   ó   € Ü�cœ8Ó$Ð$r3   c                ó"   • [        U [        5      $ r   rc   rZ   s    r$   Úis_sequence_trg   ¶   re   r3   c                ó"   • [        U [        5      $ r   ©rY   r   rZ   s    r$   Ú
is_mappingrj   º   ó   € Ü�cœ7Ó#Ð#r3   c                ó"   • [        U [        5      $ r   ri   rZ   s    r$   Úis_mapping_trm   ¾   rk   r3   c                ó"   • [        U [        5      $ r   )rY   ÚdictrZ   s    r$   rP   rP   Â   ó   € Ü�cœ4Ó Ð r3   c                ó"   • [        U [        5      $ r   )rY   ÚlistrZ   s    r$   rM   rM   Æ   rp   r3   c                ó"   • [        U [        5      $ r   )rY   r	   rZ   s    r$   Úis_iterablert   Ê   re   r3   r;   Ú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   r:   rC   r   Ú éÿÿÿÿ)Úlenr=   )Úseqrv   rw   Úsizes       r$   Ú
human_joinr~   Ï   sv   € Üˆs‹8€DØˆqƒyØàˆqƒyØ�1‰vˆàˆqƒyØ�a‘&�˜˜5˜'  3 q¡6 (Ð+Ð+à�:‰:�c˜#˜2�hÓ A e W¨A¨c°"©g¨YÐ"7Ñ7Ð7r3   c                ó   • SU  S3$ )zOAdd single quotation marks around the given string. Does *not* do any escaping.Ú'r    )Ústrings    r$   Úquoter‚   Ý   s   € àˆvˆh�aˆ=Ðr3   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    )rF   ÚparamÚgiven_paramss     €r$   rH   Ú@required_args.<locals>.inner.<locals>.wrapper.<locals>.<genexpr>  s   øé € ÐJÂ'¸¨Ö4Â'ùs   ƒrC   Ú(Úand)rw   Ú)z,Missing required arguments; Expected either z arguments to be givenr   zMissing required arguments: zMissing required argument: )ÚsetrN   ÚaddrJ   Ú	TypeErrorÚ__name__r{   ÚkeysrQ   r~   r‚   rr   )ÚargsÚkwargsÚiÚ_rB   ÚvariantÚmatchesÚargÚ
variationsÚmsgÚmissingrˆ   ÚfuncÚ
positionalÚvariantss              @€€€r$   ÚwrapperÚ-required_args.<locals>.inner.<locals>.wrapper  sÄ  ù€ ä%(£UˆLÜ! $ž‘�ð Ø ×$Ñ$ Z°¡]Ö3ñ (ð —{‘{–}�Ø× Ñ  Ö%ñ %ó $�ÜÔJÁ'ÓJÓK�ß�7Ùñ $ô
 �x“= 1Ó$Ü!+ÙmuÔvÒmuÐbi˜œzÁÓ*IÂ¸#¬5°®:ÁÑ*IÐQVÑWÑWÐZ]Ô]ÑmuÒvó"�Jð IÈÈÐTjÐk‘Cä˜x›=¨1Ó,Ð,Ð,ô #¤3 x°¡{Ó#3°lÑ#BÓC�GÜ˜7“| aÓ'Ø <¼ZÑ_fÓHgÒ_fÐX[ÌÈsÎÑ_fÑHgÓ=hÐ<iÐj™à ;¼EÀ'È!Á*Ó<MÐ;NÐO˜Ü “nÐ$Ù˜Ð( Ñ(Ð(øô9 "ó  Ü#ØŸ=™=˜/¨´3°z³?Ð2CÐCTÔUXÐY]ÓU^ÐT_Ð_jÐkóàð ð üò +JùÓvùò Ihs)   žE(ÂF,
Â.F'ÃF,
Ä%F2
Å(<F$Æ'F,
)r’   Úobjectr“   r¡   Úreturnr¡   )	ÚinspectÚ	signatureÚ
parametersÚitemsÚ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ˆð  &Ÿ|™|œ~ô
â-‘�Ø�z‰zà×%Ñ%Ø×+Ñ+ðñ÷ Ù-ò
ˆ
ô 
�Š˜Ó	÷!	)ð !	)ó 
ð!	)ðF ˆùó]
s   ·,BÁ'B)rœ   r   r¢   r   r    )rž   r®   s   ` r$   Úrequired_argsr°   â   s   ø€ ÷,0ðd €Lr3   Ú_KÚ_Vc                ó   • g r   r    rZ   s    r$   Ústrip_not_givenr´   1  s   € Ø(+r3   c                ó   • g r   r    rZ   s    r$   r´   r´   5  s   € ØFIr3   c                ó   • g r   r    rZ   s    r$   r´   r´   9  s   € Ø,/r3   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)rj   r¦   rY   r   ©rT   rB   Úvalues      r$   r´   r´   =  sE   € à
�{Øä�c�?‰?Øˆ
à),¯©¬ÔXª™:˜3¼JÀuÌh×<W‹JˆCŠJ©ÒXÐXùÓXó   ªAÁ	Ac                ó   • g r   r    rZ   s    r$   Ú
strip_omitr¼   H  s   € Ø#&r3   c                ó   • g r   r    rZ   s    r$   r¼   r¼   L  s   € Ø=@r3   c                ó   • g r   r    rZ   s    r$   r¼   r¼   P  s   € Ø'*r3   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 )zDRemove all top-level keys where their values are instances of `Omit`N)rj   r¦   rY   r   r¸   s      r$   r¼   r¼   T  sE   € à
�{Øä�c�?‰?Øˆ
à),¯©¬ÔTª™:˜3¼JÀuÌd×<S‹JˆCŠJ©ÒTÐTùÓTrº   c                ó   • [        U SS9$ )Né
   )Úbase)Úint©Úvals    r$   Úcoerce_integerrÆ   _  s   € Üˆs˜ÑÐr3   c                ó   • [        U 5      $ r   )ÚfloatrÄ   s    r$   Úcoerce_floatrÉ   c  s   € Ü�‹:Ðr3   c                ó<   • U S:H  =(       d    U S:H  =(       d    U S:H  $ )NÚtrueÚ1Úonr    rÄ   s    r$   Úcoerce_booleanrÎ   g  s   € Ø�&‰=×5˜C 3™J×5¨#°©+Ð5r3   c                ó    • U c  g [        U 5      $ r   )rÆ   rÄ   s    r$   Úmaybe_coerce_integerrÐ   k  ó   € Ø
�{ØÜ˜#ÓÐr3   c                ó    • U c  g [        U 5      $ r   )rÉ   rÄ   s    r$   Úmaybe_coerce_floatrÓ   q  s   € Ø
�{ØÜ˜ÓÐr3   c                ó    • U c  g [        U 5      $ r   )rÎ   rÄ   s    r$   Úmaybe_coerce_booleanrÕ   w  rÑ   r3   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)Ú
startswithr{   )r�   Úprefixs     r$   ÚremoveprefixrÙ   }  s+   € ð
 ×Ñ˜× Ñ Ø”c˜&“k�mÐ$Ð$Ø€Mr3   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)Úendswithr{   )r�   rV   s     r$   ÚremovesuffixrÜ   ‡  s+   € ð
 ‡��v×ÑØ�nœ˜V›˜Ð%Ð%Ø€Mr3   c                óx   • [        U 5      R                  5       n[        R                  R	                  U 5      nX!4$ r   )r   Ú
read_bytesÚosr1   Úbasename)r1   ÚcontentsÚ	file_names      r$   Úfile_from_pathrã   ‘  s1   € Ü�D‹z×$Ñ$Ó&€HÜ—‘× Ñ  Ó&€IØÐ Ð r3   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       -   $ )NrC   r   )ÚgroupÚupper)Úpats    r$   Ú<lambda>Ú%get_required_header.<locals>.<lambda>   s#   € ¸#¿)¹)ÀA»,ÈÏÉÐSTË×I[ÑI[ÓI]Ò:]r3   zCould not find z header)Úlowerrm   r¦   rY   ÚstrÚreÚsubÚ
capitalizerç   ÚgetÚ
ValueError)ÚheadersÚheaderÚlower_headerÚkÚvÚintercaps_headerÚnormalized_headerr¹   s           r$   Úget_required_headerrù   —  s²   € Ø—<‘<“>€LÜ�G×Ñà—M‘M–O‰DˆAØ�w‰w‹y˜LÕ(¬Z¸¼3×-?Ó-?Ø’ñ $ô
 —v’v˜nÑ.]Ð_e×_pÑ_pÓ_rÓsÐà$°F·L±L³NÐDTÓUÐØ—‘Ð-Ó.ˆßˆ5ØŠLñ Vô
 � v h¨gÐ6Ó
7Ð7r3   c                 óN   •  [         R                  " 5       $ ! [         a     gf = f)NÚfalse)ÚsniffioÚcurrent_async_libraryÚ	Exceptionr    r3   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ÓÐr3   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")`.
)rj   r¦   Ú	json_safert   rY   rì   ÚbytesÚ	bytearrayr   r   Ú	isoformat)ÚdatarB   r¹   r#   s       r$   r  r  »  s    € ô �$×ÑØCGÇ:Á:Ä<ÔPÂ<±Z°S”	˜#“¤	¨%Ó 0Ò0Á<ÒPÐPä�4×Ñ¤¨D´3¼¼yÐ2I×!JÑ!JÙ,0Ó1ªD D”	˜$–©DÑ1Ð1ä�$œ¤4Ð(×)Ñ)Ø�~‰~ÓÐà€Kùó Qùò 2s   ¤!CÁ=C)r!   zIterable[Iterable[_T]]r¢   zlist[_T])r.   zMapping[str, object]r/   zSequence[Sequence[str]]r'   r   r¢   úlist[tuple[str, FileTypes]])r'   r   r>   rÃ   r¢   rì   )rT   r¡   r1   úSequence[str]r*   rÃ   r+   ú
str | Noner'   r   r¢   r  )rT   z_T | NotGiven | Omitr¢   zTypeGuard[_T])rT   r¡   r¢   zTypeGuard[tuple[object, ...]])rT   z_TupleT | objectr¢   zTypeGuard[_TupleT])rT   r¡   r¢   zTypeGuard[Sequence[object]])rT   z_SequenceT | objectr¢   zTypeGuard[_SequenceT])rT   r¡   r¢   zTypeGuard[Mapping[str, object]])rT   z_MappingT | objectr¢   zTypeGuard[_MappingT])rT   r¡   r¢   zTypeGuard[dict[object, object]])rT   r¡   r¢   zTypeGuard[list[object]])rT   r¡   r¢   zTypeGuard[Iterable[object]])r|   r  rv   rì   rw   rì   r¢   rì   )r�   rì   r¢   rì   )rž   r  r¢   ú Callable[[CallableT], CallableT])rT   ÚNoner¢   r  )rT   zMapping[_K, _V | NotGiven]r¢   údict[_K, _V])rT   r¡   r¢   r¡   )rT   zobject | Noner¢   r¡   )rT   zMapping[_K, _V | Omit]r¢   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)r�   rì   rØ   rì   r¢   rì   )r�   rì   rV   rì   r¢   rì   )r1   rì   r¢   r   )rò   r   ró   rì   r¢   rì   )r¢   rì   )r  r  r¢   r  )r
  r¡   r¢   r¡   )GÚ
__future__r   rß   rí   r£   rª   Útypingr   r   r   r   r   r	   r
   r   r   Úpathlibr   r   r   Útyping_extensionsr   r   rü   Ú_typesr   r   r   r   r   r   r¡   r   rì   r   r   r   r%   r2   r?   r-   rK   r^   ra   rd   rg   rj   rm   rP   rM   rt   r~   r‚   r°   r±   r²   r´   r¼   rÆ   rÉ   rÎ   rÐ   rÓ   rÕ   rÙ   rÜ   rã   rù   rÿ   r  r  r    r3   r$   Ú<module>r     s"  ðÝ "ã 	Û 	Û Û ÷
÷ 
õ 
õ ß #ß 1ã ç HÕ HáˆTƒ]€Ù
�) 5¨°¨Ñ#5Ñ
6€Ù�K w¨s°F¨{Ñ';Ñ<€	Ù�\¨°&Ñ)9Ñ:€
Ù�K x°°S°Ñ'9Ñ:€	ô7ð !+ñð  ðð
 #ðð ðð !õô0ðNØ	ðNà
ðNð ð	Nð
 ðNð ðNð !ôNôbGô"ô"ô%ô%ô$ô$ô!ô!ô%ð
 48Àd÷ 8ôô
HñV ˆTƒ]€ÙˆTƒ]€ð 
Û +ó 
Ø +ð 
Û Ió 
Ø Ið 
Û /ó 
Ø /ôYð 
Û &ó 
Ø &ð 
Û @ó 
Ø @ð 
Û *ó 
Ø *ôUôôô6ôôôôôô!ô8ô&ð (+÷ õr3   