Ë
    ,Œ:jç-  ã                  óÎ  — 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mZmZmZ ddlmZmZmZmZmZ ddlmZ  dd	lm!Z! dd
l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„Z+	 	 	 	 	 	 	 	 	 	 d=d„Z,d>d„Z-d?d„Z.d@d„Z/dAd„Z0dBd„Z1dCd„Z2dDd„Z3dEd„Z4dFd„Z5dGd„Z6dGd„Z7dGd „Z8dGd!„Z9dHd"„Z:dId#„Z;dJd$„Z<d%d&d'œdKd(„Z=dLd)„Z>dMd*„Z? e
d+«      Z@ e
d,«      ZAedNd-„«       ZBedOd.„«       ZBedPd/„«       ZBdQd0„ZBdRd1„ZCdSd2„ZDdTd3„ZEdUd4„ZFdVd5„ZGdWd6„ZHdXd7„ZIdYd8„ZJdZd9„ZKd[d:„ZLy)\é    )ÚannotationsN)	ÚAnyÚTupleÚMappingÚTypeVarÚCallableÚIterableÚSequenceÚcastÚoverload)ÚPath)ÚRequiredÚ	AnnotatedÚ	TypeGuardÚget_argsÚ
get_originé   )ÚHeadersÚNotGivenÚ	FileTypesÚ
NotGivenOrÚHeadersLike)Úis_union)Ú
parse_date)Úparse_datetimeÚ_TÚ_TupleT.)ÚboundÚ	_MappingTÚ
_SequenceTÚ	CallableTc                ó@   — | D ��cg c]  }|D ]  }|‘Œ Œ c}}S c c}}w ©N© )ÚtÚsublistÚitems      úV/var/www/html/tokenscope/api/venv/lib/python3.12/site-packages/openai/_utils/_utils.pyÚflattenr)   !   s"   € Ø !×6�W¨gÒ6 dŠDÐ6ˆDÓ6Ð6ùÓ6s   †c          	     óT   — g }|D ]   }|j                  t        | |dd¬«      «       Œ" |S )zÄRecursively 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_filesr4   %   s6   € ð *,€EØò OˆØ�‰”^ E¨4°qÈÔMÕNðOà€Ló    c               óö  — 	 ||   }|dz  }t        | «      rC	 t        |«      |k(  r| j                  |«      }n| |   }|€|}n	|d|› d�z  }t        ||||¬«      S t        | «      r4|dk7  rg S t        | D �cg c]  }t        ||||�|d	z   nd	¬«      ‘Œ c}«      S g S # t         $ r> t        | t        «      rg cY S ddlm}  || |¬«       |€J ‚|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é   ú[ú]r+   z<array>z[])Ú
IndexErrorÚ
isinstancer   Ú_filesr7   r   r   Úis_dictÚlenÚpopÚKeyErrorr/   Úis_listr)   )Úobjr3   r,   r-   r8   r7   r'   s          r(   r/   r/   8   sQ  € ð7Ø�5‰kˆð 
ˆQ�J€EÜˆs„|ð
	ä�D“	˜eÒ#Ø—w‘w˜s“|‘à˜3‘x�ð Ð Ø‰Mà˜q   Q˜ZÑ'ˆMÜØØØØ'ô	
ð 	
ô 
�ŒØ�)ÒØˆIäð  öð ô ØØØØ:GÐ:S -°$Ò"6ÐY]ö	òó

ð 
	
ð €Iøôk ò 7Ü�cœ8Ô$àŠIõ 	4ñ 	˜s¨Õ6ØÐ(Ð(Ð(Ø¤¤Y°Ó 4Ð5Ð6Ò6ð7ûô* ò 	ð ŠIð		üò(s.   ‚B ˜%C% Á5C6ÂC"Â8'C"Ã!C"Ã%C3Ã2C3c                ó$   — t        | t        «       S r#   )r=   r   ©rD   s    r(   Úis_givenrG   y   s   € Ü˜#œxÓ(Ð(Ð(r5   c                ó"   — t        | t        «      S r#   ©r=   ÚtuplerF   s    r(   Úis_tuplerK   ‡   ó   € Ü�cœ5Ó!Ð!r5   c                ó"   — t        | t        «      S r#   rI   rF   s    r(   Ú
is_tuple_trN   ‹   rL   r5   c                ó"   — t        | t        «      S r#   ©r=   r
   rF   s    r(   Úis_sequencerQ   �   ó   € Ü�cœ8Ó$Ð$r5   c                ó"   — t        | t        «      S r#   rP   rF   s    r(   Úis_sequence_trT   “   rR   r5   c                ó"   — t        | t        «      S r#   ©r=   r   rF   s    r(   Ú
is_mappingrW   —   ó   € Ü�cœ7Ó#Ð#r5   c                ó"   — t        | t        «      S r#   rV   rF   s    r(   Úis_mapping_trZ   ›   rX   r5   c                ó"   — t        | t        «      S r#   )r=   ÚdictrF   s    r(   r?   r?   Ÿ   ó   € Ü�cœ4Ó Ð r5   c                ó"   — t        | t        «      S r#   )r=   ÚlistrF   s    r(   rC   rC   £   r]   r5   c                ó&   — t        | «      t        k(  S r#   )r   r   ©Útyps    r(   Úis_annotated_typerc   §   s   € Ü�c‹?œiÑ'Ð'r5   c                ó.   — t        | «      xs | t        k(  S r#   )r   r_   ra   s    r(   Úis_list_typere   «   s   € Ü�s‹OÒ"˜s¤tÑ+Ð+r5   c                ó*   — t        t        | «      «      S r#   )Ú	_is_unionr   ra   s    r(   Úis_union_typerh   ¯   s   € Ü”Z “_Ó%Ð%r5   c                ó&   — t        | «      t        k(  S r#   )r   r   ra   s    r(   Úis_required_typerj   ³   s   € Ü�c‹?œhÑ&Ð&r5   c                ó|   — t        | «      st        | «      r%t        t        t        t        | «      d   «      «      S | S )Nr   )rj   rc   Ústrip_annotated_typer   Útyper   ra   s    r(   rl   rl   ¸   s2   € Ü˜ÔÔ 1°#Ô 6Ü#¤D¬¬x¸«}¸QÑ/?Ó$@ÓAÐAà€Jr5   c                ó~   — t        | «      }	 t        t        ||   «      S # t        $ r t	        d| › d|› d�«      ‚w xY w)NzExpected type z" to have a type argument at index z but it did not)r   r   rm   r<   ÚRuntimeError)rb   r,   Úargss      r(   Úextract_type_argrq   ¿   sQ   € Ü�C‹=€DðkÜ”D˜$˜u™+Ó&Ð&øÜò kÜ˜^¨C¨5Ð0RÐSXÐRYÐYhÐiÓjÐjðkús   �   <c                ó  — t        | «      r;t        t        | j                  «       D ��ci c]  \  }}|t	        |«      “Œ c}}«      S t        | «      r't        t        | D �cg c]  }t	        |«      ‘Œ c}«      S | S c c}}w c c}w )z­Minimal reimplementation of copy.deepcopy() that will only copy certain object types:

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

    This is done for performance reasons.
    )rW   r   r   ÚitemsÚdeepcopy_minimalrC   )r'   ÚkÚvÚentrys       r(   rt   rt   Ç   sl   € ô �$ÔÜ”B¸D¿J¹J»L×I±D°A°q˜Ô,¨QÓ/Ñ/ÓIÓJÐJÜˆt„}Ü”B¸dÖC°UÔ)¨%Õ0ÒCÓDÐDØ€Kùó JùâCs   ©A;Á B
z, Ú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   Ú r9   r   ú éÿÿÿÿ)r@   Újoin)Úseqry   rz   Ú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Ð7r5   c                ó   — d| z   dz   S )zOAdd single quotation marks around the given string. Does *not* do any escaping.ú'r$   )Ústrings    r(   Úquoter†   å   s   € à�‰<˜#ÑÐr5   c                 ó   ‡ — dˆ fd„}|S )aJ  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                 óJ  •‡— 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        t        ‰d   «      ‰z
  «      }
t        |
«      dkD  r0dt        |
D �cg c]  }t        |«      ‘Œ c}«      › �}	t	        |	«      ‚dt        |
d   «      › �}	t	        |	«      ‚ ‰| i |¤ŽS # t        $ r1 t	        ‰j
                  › dt        ‰«      › dt        | «      › 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$   )Ú.0ÚparamÚgiven_paramss     €r(   ú	<genexpr>z@required_args.<locals>.inner.<locals>.wrapper.<locals>.<genexpr>  s   øè ø€ ÒJ¸˜u¨Ô4ÑJùs   ƒr9   ú(Úand)rz   ú)z,Missing required arguments; Expected either z arguments to be givenr   zMissing required arguments: zMissing required argument: )ÚsetÚ	enumerateÚaddr<   Ú	TypeErrorÚ__name__r@   ÚkeysÚallr‚   r†   r_   )rp   ÚkwargsÚiÚ_r8   ÚvariantÚmatchesÚargÚ
variationsÚmsgÚmissingr�   ÚfuncÚ
positionalÚvariantss              @€€€r(   Úwrapperz-required_args.<locals>.inner.<locals>.wrapper  sÈ  ù€ ä%(£UˆLÜ! $›ò y‘��1ðyØ ×$Ñ$ Z°¡]Õ3ðyð —{‘{“}ò &�Ø× Ñ  Õ%ð&ð $ò %�ÜÓJÀ'ÔJÓK�ÚÙð%ô
 �x“= 1Ò$Ü!+Ømu×vÐbi˜œzÀÖ*I¸#¬5°­:Ò*IÐQVÔWÑWÐZ]Ó]Óvó"�Jð IÈÈÐTjÐk�Cô   “nÐ$ô #¤3 x°¡{Ó#3°lÑ#BÓC�GÜ˜7“| aÒ'Ø <¼ZÐ_fÖHgÐX[ÌÈsÍÒHgÓ=hÐ<iÐj˜ô   “nÐ$ð !<¼EÀ'È!Á*Ó<MÐ;NÐO˜Ü “nÐ$Ù˜Ð( Ñ(Ð(øô1 "ò yÜ# t§}¡} o°Y¼sÀ:»Ð>OÐO`ÔadÐeiÓajÐ`kÐkvÐ$wÓxÐxðyüò +JùÓvùò Ihs)   ŸEÂF
Â!FÂ3F
ÄF 
Å:FÆF
)rp   Úobjectr™   r¦   Úreturnr¦   )	ÚinspectÚ	signatureÚ
parametersrs   Ú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à×%Ñ%Ø×+Ñ+ðñò ó
ˆ
ô 
�‰˜Ó	ö	)ó 
ð	)ð> ˆùóU
s   ¶0B)r¢   r!   r§   r!   r$   )r¤   r²   s   ` r(   Úrequired_argsr³   ê   s   ø€ õ.,ð\ €Lr5   Ú_KÚ_Vc                 ó   — y r#   r$   rF   s    r(   Ústrip_not_givenr·   6  ó   € àr5   c                 ó   — y r#   r$   rF   s    r(   r·   r·   ;  r¸   r5   c                 ó   — y r#   r$   rF   s    r(   r·   r·   @  r¸   r5   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)rW   rs   r=   r   )rD   r8   Úvalues      r(   r·   r·   E  sA   € à
€{Øä�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Ã   P  s   € Üˆs˜ÔÐr5   c                ó   — t        | «      S r#   )ÚfloatrÁ   s    r(   Úcoerce_floatrÆ   T  s   € Ü�‹:Ðr5   c                ó(   — | dk(  xs | dk(  xs | dk(  S )NÚtrueÚ1Úonr$   rÁ   s    r(   Úcoerce_booleanrË   X  s   € Ø�&‰=Ò5˜C 3™JÒ5¨#°©+Ð5r5   c                ó   — | €y t        | «      S r#   )rÃ   rÁ   s    r(   Úmaybe_coerce_integerrÍ   \  ó   € Ø
€{ØÜ˜#ÓÐr5   c                ó   — | €y t        | «      S r#   )rÆ   rÁ   s    r(   Úmaybe_coerce_floatrÐ   b  s   € Ø
€{ØÜ˜ÓÐr5   c                ó   — | €y t        | «      S r#   )rË   rÁ   s    r(   Úmaybe_coerce_booleanrÒ   h  rÎ   r5   c                óD   — | j                  |«      r| t        |«      d S | S )zXRemove a prefix from a string.

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

    Backport of `str.removesuffix` for Python < 3.9
    N)Úendswithr@   )r…   Úsuffixs     r(   ÚremovesuffixrÚ   x  s(   € ð
 ‡��vÔØ�nœ˜V›˜Ð%Ð%Ø€Mr5   c                óz   — t        | «      j                  «       }t        j                  j	                  | «      }||fS r#   )r   Ú
read_bytesÚosr3   Úbasename)r3   ÚcontentsÚ	file_names      r(   Úfile_from_pathrá   ‚  s3   € Ü�D‹z×$Ñ$Ó&€HÜ—‘× Ñ  Ó&€IØ�xÐ Ð r5   c                ó®  — |j                  «       }t        | t        «      rPt        t        | «      } | 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 )Nr9   r   )ÚgroupÚupper)Úpats    r(   ú<lambda>z%get_required_header.<locals>.<lambda>‘  s%   € ¸#¿)¹)ÀA»,ÈÏÉÐSTË×I[ÑI[ÓI]Ñ:]€ r5   zCould not find z header)Úlowerr=   r   r   r   rs   ÚstrÚreÚsubÚ
capitalizerå   ÚgetÚ
ValueError)ÚheadersÚheaderÚlower_headerru   rv   Úintercaps_headerÚnormalized_headerr¼   s           r(   Úget_required_headerrô   ˆ  sÉ   € Ø—<‘<“>€LÜ�'œ7Ô#Ü”w Ó(ˆØ—M‘M“Oò 	‰DˆAˆqØ�w‰w‹y˜LÓ(¬Z¸¼3Õ-?Ø’ð	ð QÜ—v‘v˜nÑ.]Ð_e×_pÑ_pÓ_rÓsÐà$ l°F·L±L³NÐDTÐUò ÐØ—‘Ð-Ó.ˆÚØŠLðô
 � v h¨gÐ6Ó
7Ð7r5   )r%   zIterable[Iterable[_T]]r§   zlist[_T])r0   zMapping[str, object]r1   zSequence[Sequence[str]]r§   úlist[tuple[str, FileTypes]])
rD   r¦   r3   úSequence[str]r,   rÀ   r-   ú
str | Noner§   rõ   )rD   zNotGivenOr[_T]r§   zTypeGuard[_T])rD   r¦   r§   zTypeGuard[tuple[object, ...]])rD   z_TupleT | objectr§   zTypeGuard[_TupleT])rD   r¦   r§   zTypeGuard[Sequence[object]])rD   z_SequenceT | objectr§   zTypeGuard[_SequenceT])rD   r¦   r§   zTypeGuard[Mapping[str, object]])rD   z_MappingT | objectr§   zTypeGuard[_MappingT])rD   r¦   r§   zTypeGuard[dict[object, object]])rD   r¦   r§   zTypeGuard[list[object]])rb   rm   r§   Úbool)rb   rm   r§   rm   )rb   rm   r,   rÀ   r§   rm   )r'   r   r§   r   )r€   rö   ry   ré   rz   ré   r§   ré   )r…   ré   r§   ré   )r¤   rö   r§   z Callable[[CallableT], CallableT])rD   ÚNoner§   rù   )rD   zMapping[_K, _V | NotGiven]r§   zdict[_K, _V])rD   r¦   r§   r¦   )rD   zobject | Noner§   r¦   )rÂ   ré   r§   rÀ   )rÂ   ré   r§   rÅ   )rÂ   ré   r§   rø   )rÂ   r÷   r§   z
int | None)rÂ   r÷   r§   zfloat | None)rÂ   r÷   r§   zbool | None)r…   ré   rÕ   ré   r§   ré   )r…   ré   rÙ   ré   r§   ré   )r3   ré   r§   r   )rï   r   rð   ré   r§   ré   )MÚ
__future__r   rÝ   rê   r¨   r®   Útypingr   r   r   r   r   r	   r
   r   r   Úpathlibr   Útyping_extensionsr   r   r   r   r   Ú_typesr   r   r   r   r   Ú_compatr   rg   r   r   r   r¦   r   ré   r   r    r!   r)   r4   r/   rG   rK   rN   rQ   rT   rW   rZ   r?   rC   rc   re   rh   rj   rl   rq   rt   r‚   r†   r³   r´   rµ   r·   rÃ   rÆ   rË   rÍ   rÐ   rÒ   rÖ   rÚ   rá   rô   r$   r5   r(   ú<module>r      sã  ðÝ "ã 	Û 	Û Û ÷
÷ 
õ 
õ ß RÕ Rç JÕ JÝ +Ý .Ý 6áˆTƒ]€Ù
�) 5¨°¨Ñ#5Ô
6€Ù�K w¨s°F¨{Ñ';Ô<€	Ù�\¨°&Ñ)9Ô:€
Ù�K x°°S°Ñ'9Ô:€	ó7ðð  ðð
 #ðð !óð&>Ø	ð>à
ð>ð ð	>ð
 ð>ð !ó>óB)ó"ó"ó%ó%ó$ó$ó!ó!ó(ó,ó&ó'ó
ókóð  48Àdõ 8óó
EñP ˆTƒ]€ÙˆTƒ]€ð 
òó 
ðð 
òó 
ðð 
òó 
ðóYóóó6óóóóóó!ô8r5   