Ë
    ñEj·,  ã                  óœ  — 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 d dlZddlmZmZmZmZ ddl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#d8d„Z$	 	 	 	 	 	 d9d„Z%	 	 	 	 	 	 	 	 	 	 d:d„Z&d;d„Z'd<d„Z(d=d„Z)d>d„Z*d?d„Z+d@d„Z,dAd„Z-dBd„Z.dCd„Z/dDd„Z0dEd„Z1ddd œdFd!„Z2dGd"„Z3dHd#„Z4 e
d$«      Z5 e
d%«      Z6edId&„«       Z7edJd'„«       Z7edKd(„«       Z7dLd)„Z7dMd*„Z8dNd+„Z9dOd,„Z:dPd-„Z;dQd.„Z<dRd/„Z=dSd0„Z>dTd1„Z?dUd2„Z@dVd3„ZAdWd4„ZBd5d6œdXd7„ZCy)Yé    )ÚannotationsN)	ÚAnyÚTupleÚMappingÚTypeVarÚCallableÚIterableÚSequenceÚcastÚoverload)ÚPath)Ú	TypeGuardé   )ÚNotGivenÚ	FileTypesÚ
NotGivenOrÚHeadersLike)Ú
parse_dateÚparse_datetimeÚ_TÚ_TupleT.)ÚboundÚ	_MappingTÚ
_SequenceTÚ	CallableTc                ó@   — | D ��cg c]  }|D ]  }|‘Œ Œ c}}S c c}}w ©N© )ÚtÚsublistÚitems      úW/var/www/html/peoplehubportal/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_filesr.   %   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   Ú_filesr1   r   r   Úis_dictÚlenÚpopÚKeyErrorr)   Úis_listr#   )Úobjr-   r&   r'   r2   r1   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   )r7   r   ©r>   s    r"   Úis_givenrA   y   s   € Ü˜#œxÓ(Ð(Ð(r/   c                ó"   — t        | t        «      S r   ©r7   Útupler@   s    r"   Úis_tuplerE   ‡   ó   € Ü�cœ5Ó!Ð!r/   c                ó"   — t        | t        «      S r   rC   r@   s    r"   Ú
is_tuple_trH   ‹   rF   r/   c                ó"   — t        | t        «      S r   ©r7   r
   r@   s    r"   Úis_sequencerK   �   ó   € Ü�cœ8Ó$Ð$r/   c                ó"   — t        | t        «      S r   rJ   r@   s    r"   Úis_sequence_trN   “   rL   r/   c                ó"   — t        | t        «      S r   ©r7   r   r@   s    r"   Ú
is_mappingrQ   —   ó   € Ü�cœ7Ó#Ð#r/   c                ó"   — t        | t        «      S r   rP   r@   s    r"   Úis_mapping_trT   ›   rR   r/   c                ó"   — t        | t        «      S r   )r7   Údictr@   s    r"   r9   r9   Ÿ   ó   € Ü�cœ4Ó Ð r/   c                ó"   — t        | t        «      S r   )r7   Úlistr@   s    r"   r=   r=   £   rW   r/   c                ó"   — t        | t        «      S r   )r7   r	   r@   s    r"   Úis_iterabler[   §   rL   r/   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.
    )rQ   r   r   ÚitemsÚdeepcopy_minimalr=   )r!   ÚkÚvÚentrys       r"   r^   r^   «   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   Ú r3   r   ú éÿÿÿÿ)r:   Újoin)Úseqrc   rd   Úsizes       r"   Ú
human_joinrl   »   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Ð7r/   c                ó   — d| › d�S )zOAdd single quotation marks around the given string. Does *not* do any escaping.ú'r   )Ústrings    r"   Úquoterp   É   s   € àˆvˆh�aˆ=Ðr/   c                 ó   ‡ — dˆ fd„}|S )aL  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   )Ú.0ÚparamÚgiven_paramss     €r"   ú	<genexpr>z@required_args.<locals>.inner.<locals>.wrapper.<locals>.<genexpr>  s   øè ø€ ÒJ¸˜u¨Ô4ÑJùs   ƒr3   ú(Úand)rd   ú)z,Missing required arguments; Expected either z arguments to be givenr   zMissing required arguments: zMissing required argument: )ÚsetÚ	enumerateÚaddr6   Ú	TypeErrorÚ__name__r:   ÚkeysÚallrl   rp   rY   )ÚargsÚkwargsÚiÚ_r2   ÚvariantÚmatchesÚargÚ
variationsÚmsgÚmissingrw   ÚfuncÚ
positionalÚvariantss              @€€€r"   Úwrapperz-required_args.<locals>.inner.<locals>.wrapperó   sß  ù€ ä%(£UˆLÜ! $›ò  ‘��1ð Ø ×$Ñ$ Z°¡]Õ3ð ð —{‘{“}ò &�Ø× Ñ  Õ%ð&ð $ò %�ÜÓJÀ'ÔJÓK�ÚÙð%ô
 �x“= 1Ò$Ü!+Ømu×vÐbi˜œzÀÖ*I¸#¬5°­:Ò*IÐQVÔWÑWÐZ]Ó]Óvó"�Jð IÈÈÐTjÐk�Cô   “nÐ$ô ˜x›=¨1Ò,Ð,Ð,ô #¤3 x°¡{Ó#3°lÑ#BÓC�GÜ˜7“| aÒ'Ø <¼ZÐ_fÖHgÐX[ÌÈsÍÒ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Ú
parametersr]   ÚkindÚPOSITIONAL_ONLYÚPOSITIONAL_OR_KEYWORDÚ	functoolsÚwraps)r�   ÚparamsÚnamerv   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   ø€ õ20ðd €Lr/   Ú_KÚ_Vc                 ó   — y r   r   r@   s    r"   Ústrip_not_givenr¢      ó   € àr/   c                 ó   — y r   r   r@   s    r"   r¢   r¢   %  r£   r/   c                 ó   — y r   r   r@   s    r"   r¢   r¢   *  r£   r/   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)rQ   r]   r7   r   )r>   r2   Úvalues      r"   r¢   r¢   /  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®   :  s   € Üˆs˜ÔÐr/   c                ó   — t        | «      S r   )Úfloatr¬   s    r"   Úcoerce_floatr±   >  s   € Ü�‹:Ðr/   c                ó(   — | dk(  xs | dk(  xs | dk(  S )NÚtrueÚ1Úonr   r¬   s    r"   Úcoerce_booleanr¶   B  s   € Ø�&‰=Ò5˜C 3™JÒ5¨#°©+Ð5r/   c                ó   — | €y t        | «      S r   )r®   r¬   s    r"   Úmaybe_coerce_integerr¸   F  ó   € Ø
€{ØÜ˜#ÓÐr/   c                ó   — | €y t        | «      S r   )r±   r¬   s    r"   Úmaybe_coerce_floatr»   L  s   € Ø
€{ØÜ˜ÓÐr/   c                ó   — | €y t        | «      S r   )r¶   r¬   s    r"   Úmaybe_coerce_booleanr½   R  r¹   r/   c                óD   — | j                  |«      r| t        |«      d S | S )zXRemove a prefix from a string.

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

    Backport of `str.removesuffix` for Python < 3.9
    N)Úendswithr:   )ro   Úsuffixs     r"   ÚremovesuffixrÅ   b  s(   € ð
 ‡��vÔØ�nœ˜V›˜Ð%Ð%Ø€Mr/   c                óz   — t        | «      j                  «       }t        j                  j	                  | «      }||fS r   )r   Ú
read_bytesÚosr-   Úbasename)r-   ÚcontentsÚ	file_names      r"   Úfile_from_pathrÌ   l  s3   € Ü�D‹z×$Ñ$Ó&€HÜ—‘× Ñ  Ó&€IØ�xÐ Ð r/   c                óŽ  — |j                  «       }t        | 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 )Nr3   r   )ÚgroupÚupper)Úpats    r"   ú<lambda>z%get_required_header.<locals>.<lambda>z  s%   € ¸#¿)¹)ÀA»,ÈÏÉÐSTË×I[ÑI[ÓI]Ñ:]€ r/   zCould not find z header)Úlowerr7   r   r]   ÚstrÚreÚsubÚ
capitalizerÐ   ÚgetÚ
ValueError)ÚheadersÚheaderÚlower_headerr_   r`   Úintercaps_headerÚnormalized_headerr§   s           r"   Úget_required_headerrß   r  s½   € Ø—<‘<“>€LÜ�'œ7Ô#Ø—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Ð7r/   c                 óJ   — 	 t        j                  «       S # t        $ r Y yw xY w)NÚfalse)ÚsniffioÚcurrent_async_libraryÚ	Exceptionr   r/   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ÓÐr/   )r   zIterable[Iterable[_T]]r’   zlist[_T])r*   zMapping[str, object]r+   zSequence[Sequence[str]]r’   úlist[tuple[str, FileTypes]])
r>   r‘   r-   úSequence[str]r&   r«   r'   ú
str | Noner’   rë   )r>   zNotGivenOr[_T]r’   zTypeGuard[_T])r>   r‘   r’   zTypeGuard[tuple[object, ...]])r>   z_TupleT | objectr’   zTypeGuard[_TupleT])r>   r‘   r’   zTypeGuard[Sequence[object]])r>   z_SequenceT | objectr’   zTypeGuard[_SequenceT])r>   r‘   r’   zTypeGuard[Mapping[str, object]])r>   z_MappingT | objectr’   zTypeGuard[_MappingT])r>   r‘   r’   zTypeGuard[dict[object, object]])r>   r‘   r’   zTypeGuard[list[object]])r>   r‘   r’   zTypeGuard[Iterable[object]])r!   r   r’   r   )rj   rì   rc   rÔ   rd   rÔ   r’   rÔ   )ro   rÔ   r’   rÔ   )r�   rì   r’   ú Callable[[CallableT], CallableT])r>   ÚNoner’   rï   )r>   zMapping[_K, _V | NotGiven]r’   zdict[_K, _V])r>   r‘   r’   r‘   )r>   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)ro   rÔ   rÀ   rÔ   r’   rÔ   )ro   rÔ   rÄ   rÔ   r’   rÔ   )r-   rÔ   r’   r   )rÚ   r   rÛ   rÔ   r’   rÔ   )r’   rÔ   )rè   rñ   r’   rî   )DÚ
__future__r   rÈ   rÕ   r“   r™   Útypingr   r   r   r   r   r	   r
   r   r   Úpathlibr   Útyping_extensionsr   râ   Ú_typesr   r   r   r   Ú_compatr   r   r   r‘   r   rÔ   r   r   r   r#   r.   r)   rA   rE   rH   rK   rN   rQ   rT   r9   r=   r[   r^   rl   rp   rž   rŸ   r    r¢   r®   r±   r¶   r¸   r»   r½   rÁ   rÅ   rÌ   rß   rå   rê   r   r/   r"   ú<module>rø      sÒ  ðÝ "ã 	Û 	Û Û ÷
÷ 
õ 
õ Ý 'ã ç AÓ Aß PáˆTƒ]€Ù
�) 5¨°¨Ñ#5Ô
6€Ù�K w¨s°F¨{Ñ';Ô<€	Ù�\¨°&Ñ)9Ô:€
Ù�K x°°S°Ñ'9Ô:€	ó7ðð  ðð
 #ðð !óð&>Ø	ð>à
ð>ð ð	>ð
 ð>ð !ó>óB)ó"ó"ó%ó%ó$ó$ó!ó!ó%óð  48Àdõ 8óó
Kñ\ ˆTƒ]€ÙˆTƒ]€ð 
òó 
ðð 
òó 
ðð 
òó 
ðóYóóó6óóóóóó!ó8ó$ð (+ö r/   