Ë
    A²Xj73  ã                  ó¸  — d dl mZ d dlZd dlZd dlZd dlZd dl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mZ d dlmZmZ d dlZddlmZmZmZmZmZ  e
d	«      Z e
d
eedf   ¬«      Z  e
de	e!ef   ¬«      Z" e
dee   ¬«      Z# e
dedef   ¬«      Z$d;d„Z%ddœ	 	 	 	 	 	 	 d<d„Z&d=d„Z'	 	 	 	 	 	 	 	 	 	 	 	 d>d„Z(d?d„Z)d@d„Z*dAd„Z+dBd„Z,dCd„Z-dDd„Z.dEd„Z/dFd„Z0dGd„Z1dHd„Z2d d!d"œdId#„Z3dJd$„Z4dKd%„Z5 e
d&«      Z6 e
d'«      Z7edLd(„«       Z8edMd)„«       Z8edNd*„«       Z8dOd+„Z8dPd,„Z9dQd-„Z:dRd.„Z;dSd/„Z<dTd0„Z=dUd1„Z>dVd2„Z?dWd3„Z@dXd4„ZAdYd5„ZBdZd6„ZCd7d8œd[d9„ZDd\d:„ZEy)]é    )Ú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                ó@   — | D ��cg c]  }|D ]  }|‘Œ Œ c}}S c c}}w ©N© )ÚtÚsublistÚitems      ú]/var/www/html/content_generation/venv/lib/python3.12/site-packages/anthropic/_utils/_utils.pyÚflattenr%   !   s"   € Ù !Ô6¡�W«g dŠD¨gˆD Ò6Ð6ùÓ6s   †Úbrackets)Úarray_formatc          
     óV   — g }|D ]!  }|j                  t        | |dd|¬«      «       Œ# |S )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   %   s2   € ð$ *,€EÛˆØ�‰”^ E¨4°qÈÐ[gÔhÕið à€Ló    c           
     ó”   — | dk(  ry| dk(  rd|› d�S | dk(  s| dk(  ryt        d	| › d
dj                  t        t        «      «      › �«      ‚)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               óø  — 	 ||   }|dz  }t        | «      rK	 t        d„ ||d  D «       «      r| j                  |«      }n| |   }|€|}n	|d|› d�z  }t        |||||¬«      S t	        | «      rM|d	k7  rg S t        t        | «      D ��cg c]&  \  }}t        ||||�|nd
t        ||«      z   |¬«      ‘Œ( c}}«      S g S # t         $ r� t        | «      sg cY S ddlm} |€J ‚t	        | «      rYg }t        | «      D ]E  \  }}	t        ||«      }
|r||
z   n|
} ||	|¬«       |j                  |t        t        |	«      f«       ŒG |cY S  || |¬«       |t        t        | «      fgcY S w xY w# t        $ r g cY S w xY wc c}}w )Nr   )Úassert_is_file_content)Úkeyé   c              3  ó&   K  — | ]	  }|d k(  –— Œ y­w)ú<array>Nr    )Ú.0Úps     r$   Ú	<genexpr>z!_extract_items.<locals>.<genexpr>q   s   è ø€ Ð8©< a�1˜	•>©<ù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Ø�5‰kˆð0 
ˆQ�J€EÜˆs„|ð	ô Ñ8¨4°°©<Ó8Ô8Ø—w‘w˜s“|‘à˜3‘x�ð Ð Ø‰Mà˜q   Q˜ZÑ'ˆMÜØØØØ'Ø%ô
ð 	
ô 
�ŒØ�)ÒØˆIäô *3°3¬ôñ *8Ñ%�K ô ØØØà*7Ð*C™ÈÌ}Ð]iÐkvÓOwÑwà!-öð *8òó
ð 	
ð  €IøôI ò 7Ü˜Œ}àŠIõ 	4ð Ð(Ð(Ð(ä�3Œ<Ø13ˆEÜ&/°¦nÑ"�˜UÜ& |°[ÓA�Ù:G˜}¨vÒ5ÈV�Ù& u°+Õ>Ø—‘˜k¬4´	¸5Ó+AÐBÕCð	 '5ð
 ŠLá˜s¨Õ6Ø¤¤Y°Ó 4Ð5Ð6Ò6ð+7ûô@ ò 	ð ŠIð		üó*s5   ‚B< ˜,E% Â+E6
Â<E"ÃA,E"ÅE"Å!E"Å%E3Å2E3c                óJ   — t        | t        «       xr t        | t        «       S r   )Ú
isinstancer   r   ©rS   s    r$   rJ   rJ   œ   s!   € Ü˜#œxÓ(Ð(ÒF´¸CÄÓ1FÐ-FÐFr3   c                ó"   — t        | t        «      S r   ©rX   ÚtuplerY   s    r$   Úis_tupler]   ª   ó   € Ü�cœ5Ó!Ð!r3   c                ó"   — t        | t        «      S r   r[   rY   s    r$   Ú
is_tuple_tr`   ®   r^   r3   c                ó"   — t        | t        «      S r   ©rX   r
   rY   s    r$   Úis_sequencerc   ²   ó   € Ü�cœ8Ó$Ð$r3   c                ó"   — t        | t        «      S r   rb   rY   s    r$   Úis_sequence_trf   ¶   rd   r3   c                ó"   — t        | t        «      S r   ©rX   r   rY   s    r$   Ú
is_mappingri   º   ó   € Ü�cœ7Ó#Ð#r3   c                ó"   — t        | t        «      S r   rh   rY   s    r$   Úis_mapping_trl   ¾   rj   r3   c                ó"   — t        | t        «      S r   )rX   ÚdictrY   s    r$   rO   rO   Â   ó   € Ü�cœ4Ó Ð r3   c                ó"   — t        | t        «      S r   )rX   ÚlistrY   s    r$   rL   rL   Æ   ro   r3   c                ó"   — t        | t        «      S r   )rX   r	   rY   s    r$   Úis_iterablers   Ê   rd   r3   r;   Úor)ÚdelimÚfinalc               ó¢   — t        | «      }|dk(  ry|dk(  r| d   S |dk(  r| d   › d|› d| d   › �S |j                  | d d «      d|› d| d   › �z   S )Nr   r:   rC   r   Ú éÿÿÿÿ)Úlenr=   )Úseqru   rv   Ú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                ó   — d| › d�S )zOAdd single quotation marks around the given string. Does *not* do any escaping.Ú'r    )Ústrings    r$   Úquoter�   Ý   s   € àˆvˆh�aˆ=Ðr3   c                 ó   ‡ — dˆ fd„}|S )a4  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                ó$  •‡ ‡— t        j                  ‰ «      j                  }|j                  «       D ��cg c]+  \  }}|j                  |j
                  |j                  hv r|‘Œ- c}}Št        j                  ‰ «      dˆ ˆˆfd„«       }|S c c}}w )Nc                 ól  •‡— t        «       Št        | «      D ]  \  }}	 ‰j                  ‰|   «       Œ |j                  «       D ]  }‰j                  |«       Œ ‰D ]  }t        ˆfd„|D «       «      }|sŒ nç t        ‰«      dkD  rTt        ‰D ��cg c],  }dt        |D �cg c]  }t        |«      ‘Œ c}d¬«      z   d	z   ‘Œ. c}}«      }d
|› d�}	t	        |	«      ‚t        ‰«      dkD  sJ ‚t        t        ‰d   «      ‰z
  «      }
t        |
«      dkD  r0dt        |
D �cg c]  }t        |«      ‘Œ c}«      › �}	t	        |	«      ‚dt        |
d   «      › �}	t	        |	«      ‚ ‰| i |¤ŽS # t        $ r2 t	        ‰j
                  › dt        ‰«      › dt        | «      › d�«      d ‚w xY wc c}w c c}}w c c}w )Nz	() takes z argument(s) but z were givenc              3  ó&   •K  — | ]  }|‰v –— Œ
 y ­wr   r    )rF   ÚparamÚgiven_paramss     €r$   rH   z@required_args.<locals>.inner.<locals>.wrapper.<locals>.<genexpr>  s   øè ø€ ÐJÁ'¸˜u¨Ô4Á'ùs   ƒrC   Ú(Úand)rv   Ú)z,Missing required arguments; Expected either z arguments to be givenr   zMissing required arguments: zMissing required argument: )ÚsetrM   ÚaddrI   Ú	TypeErrorÚ__name__rz   ÚkeysrP   r}   r�   rq   )ÚargsÚkwargsÚiÚ_rB   ÚvariantÚmatchesÚargÚ
variationsÚmsgÚmissingr‡   ÚfuncÚ
positionalÚvariantss              @€€€r$   Úwrapperz-required_args.<locals>.inner.<locals>.wrapper  sà  ù€ ä%(£UˆLÜ! $ž‘��1ð Ø ×$Ñ$ Z°¡]Õ3ð (ð —{‘{–}�Ø× Ñ  Õ%ð %ó $�ÜÓJÁ'ÓJÓK�ÚÙð $ô
 �x“= 1Ò$Ü!+ÙmuÔvÑmuÐbi˜œzÁÓ*IÁ¸#¬5°­:ÀÑ*IÐQVÔWÑWÐZ]Ó]ÐmuÒvó"�Jð IÈÈÐTjÐk�Cô   “nÐ$ô ˜x›=¨1Ò,Ð,Ð,ô #¤3 x°¡{Ó#3°lÑ#BÓC�GÜ˜7“| aÒ'Ø <¼ZÑ_fÓHgÑ_fÐX[ÌÈsÍÐ_fÑHgÓ=hÐ<iÐj˜ô   “nÐ$ð !<¼EÀ'È!Á*Ó<MÐ;NÐO˜Ü “nÐ$Ù˜Ð( Ñ(Ð(øô9 "ò  Ü#ØŸ=™=˜/¨´3°z³?Ð2CÐCTÔUXÐY]ÓU^ÐT_Ð_jÐkóàð ð üò +JùÓvùò Ihs)   ŸE(ÂF+
Â!F&Â3F+
ÄF1
Å(;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$   Úinnerzrequired_args.<locals>.innerø   s�   ú€ Ü×"Ñ" 4Ó(×3Ñ3ˆð  &Ÿ|™|œ~ô
á-‘��eØ�z‰zà×%Ñ%Ø×+Ñ+ðñò Ø-ò
ˆ
ô 
�‰˜Ó	ö!	)ó 
ð!	)ðF ˆùó]
s   ¶0B)rš   r   rŸ   r   r    )rœ   r«   s   ` r$   Úrequired_argsr¬   â   s   ø€ õ,0ðd €Lr3   Ú_KÚ_Vc                 ó   — y r   r    rY   s    r$   Ústrip_not_givenr°   1  s   € Ø(+r3   c                 ó   — y r   r    rY   s    r$   r°   r°   5  s   € ØFIr3   c                 ó   — y r   r    rY   s    r$   r°   r°   9  s   € Ø,/r3   c                ó˜   — | €yt        | «      s| S | j                  «       D ��ci c]  \  }}t        |t        «      rŒ||“Œ c}}S c c}}w )zHRemove all top-level keys where their values are instances of `NotGiven`N)ri   r£   rX   r   )rS   rB   Úvalues      r$   r°   r°   =  sE   € à
€{Øä�cŒ?Øˆ
à),¯©¬ÔX©™:˜3 ¼JÀuÌhÕ<WˆC�‰J¨ÒXÐXùÓXs
   ¤A½Ac                ó   — t        | d¬«      S )Né
   )Úbase)Úint©Úvals    r$   Úcoerce_integerr»   H  s   € Üˆs˜ÔÐr3   c                ó   — t        | «      S r   )Úfloatr¹   s    r$   Úcoerce_floatr¾   L  s   € Ü�‹:Ðr3   c                ó(   — | dk(  xs | dk(  xs | dk(  S )NÚtrueÚ1Úonr    r¹   s    r$   Úcoerce_booleanrÃ   P  s   € Ø�&‰=Ò5˜C 3™JÒ5¨#°©+Ð5r3   c                ó   — | €y t        | «      S r   )r»   r¹   s    r$   Úmaybe_coerce_integerrÅ   T  ó   € Ø
€{ØÜ˜#ÓÐr3   c                ó   — | €y t        | «      S r   )r¾   r¹   s    r$   Úmaybe_coerce_floatrÈ   Z  s   € Ø
€{ØÜ˜ÓÐr3   c                ó   — | €y t        | «      S r   )rÃ   r¹   s    r$   Úmaybe_coerce_booleanrÊ   `  rÆ   r3   c                óD   — | j                  |«      r| t        |«      d S | S )zXRemove a prefix from a string.

    Backport of `str.removeprefix` for Python < 3.9
    N)Ú
startswithrz   )r€   Úprefixs     r$   ÚremoveprefixrÎ   f  s(   € ð
 ×Ñ˜Ô Ø”c˜&“k�mÐ$Ð$Ø€Mr3   c                óF   — | j                  |«      r| dt        |«        S | S )zXRemove a suffix from a string.

    Backport of `str.removesuffix` for Python < 3.9
    N)Úendswithrz   )r€   rU   s     r$   ÚremovesuffixrÑ   p  s(   € ð
 ‡��vÔØ�nœ˜V›˜Ð%Ð%Ø€Mr3   c                óz   — t        | «      j                  «       }t        j                  j	                  | «      }||fS r   )r   Ú
read_bytesÚosr1   Úbasename)r1   ÚcontentsÚ	file_names      r$   Úfile_from_pathrØ   z  s3   € Ü�D‹z×$Ñ$Ó&€HÜ—‘× Ñ  Ó&€IØ�xÐ Ð r3   c                ó‚  — |j                  «       }t        | «      r@| j                  «       D ]-  \  }}|j                  «       |k(  sŒt        |t        «      sŒ+|c S  t        j                  dd„ |j                  «       «      }|||j                  «       |fD ]  }| j                  |«      }|sŒ|c S  t        d|› d�«      ‚)Nz([^\w])(\w)c                ód   — | j                  d«      | j                  d«      j                  «       z   S )NrC   r   )ÚgroupÚupper)Úpats    r$   Ú<lambda>z%get_required_header.<locals>.<lambda>‰  s#   € ¸#¿)¹)ÀA»,ÈÏÉÐSTË×I[ÑI[ÓI]Ò:]r3   zCould not find z header)Úlowerrl   r£   rX   Ú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ˆqØ�w‰w‹y˜LÓ(¬Z¸¼3Õ-?Ø’ð $ô
 —v‘v˜nÑ.]Ð_e×_pÑ_pÓ_rÓsÐà$ l°F·L±L³NÐDTÓUÐØ—‘Ð-Ó.ˆÚØŠLð Vô
 � v h¨gÐ6Ó
7Ð7r3   c                 óJ   — 	 t        j                  «       S # t        $ r Y yw xY w)NÚfalse)ÚsniffioÚcurrent_async_libraryÚ	Exceptionr    r3   r$   Úget_async_libraryró   “  s(   € ðÜ×,Ñ,Ó.Ð.øÜò Ùðús   ‚ –	"¡"é€   ©Úmaxsizec                óN   — t        j                  | ¬«      }t        t        |«      S )zmA 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                óh  — t        | «      r6| j                  «       D ��ci c]  \  }}t        |«      t        |«      “Œ c}}S t        | «      r4t	        | t
        t        t        f«      s| D �cg c]  }t        |«      ‘Œ c}S t	        | t        t        f«      r| j                  «       S | S c c}}w c c}w )zvTranslates a mapping / sequence recursively in the same fashion
    as `pydantic` v2's `model_dump(mode="json")`.
    )ri   r£   Ú	json_safers   rX   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Ù,0Ó1©D D”	˜$•¨DÑ1Ð1ä�$œ¤4Ð(Ô)Ø�~‰~ÓÐà€Kùó Qùò 2s   ŸB)Á,B/)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à   )rS   rž   r1   úSequence[str]r*   r¸   r+   ú
str | Noner'   r   rŸ   rÿ   )rS   z_T | NotGiven | OmitrŸ   zTypeGuard[_T])rS   rž   rŸ   zTypeGuard[tuple[object, ...]])rS   z_TupleT | objectrŸ   zTypeGuard[_TupleT])rS   rž   rŸ   zTypeGuard[Sequence[object]])rS   z_SequenceT | objectrŸ   zTypeGuard[_SequenceT])rS   rž   rŸ   zTypeGuard[Mapping[str, object]])rS   z_MappingT | objectrŸ   zTypeGuard[_MappingT])rS   rž   rŸ   zTypeGuard[dict[object, object]])rS   rž   rŸ   zTypeGuard[list[object]])rS   rž   rŸ   zTypeGuard[Iterable[object]])r{   r   ru   rà   rv   rà   rŸ   rà   )r€   rà   rŸ   rà   )rœ   r   rŸ   ú Callable[[CallableT], CallableT])rS   ÚNonerŸ   r  )rS   zMapping[_K, _V | NotGiven]rŸ   zdict[_K, _V])rS   rž   rŸ   rž   )rS   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)r€   rà   rÍ   rà   rŸ   rà   )r€   rà   rU   rà   rŸ   rà   )r1   rà   rŸ   r   )ræ   r   rç   rà   rŸ   rà   )rŸ   rà   )rö   r  rŸ   r  )rþ   rž   rŸ   rž   )FÚ
__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-   rJ   r]   r`   rc   rf   ri   rl   rO   rL   rs   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óóó6óóóóóó!ó8ó&ð (+õ ôr3   