Ë
    Fü´j~  ã                  óJ  — d dl mZ d dlZd dlZd dlZd dlmZ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mZmZ ddlmZmZmZmZmZ  e
d«      Zdd	„Zdd
„Zddœdd„Zedd„«       Zedd„«       Zdd„Zdd„Z d d„Z!edd„«       Z"edd„«       Z"dd„Z"dd„Z#d d„Z$d!d„Z%d"d„Z&y)#é    )ÚannotationsN)ÚSequenceÚcastÚoverload)ÚTypeVarÚ	TypeGuardé   )Ú	FileTypesÚFileContentÚRequestFilesÚHttpxFileTypesÚBase64FileInputÚHttpxFileContentÚHttpxRequestFiles)Úis_listÚ
is_mappingÚ
is_tuple_tÚis_mapping_tÚis_sequence_tÚ_Tc                ón   — t        | t        j                  «      xs t        | t        j                  «      S ©N)Ú
isinstanceÚioÚIOBaseÚosÚPathLike©Úobjs    úK/root/workspace/ytshorts/venv/lib/python3.12/site-packages/openai/_files.pyÚis_base64_file_inputr!      s#   € Ü�cœ2Ÿ9™9Ó%ÒE¬°C¼¿¹Ó)EÐEó    c                ó’   — t        | t        «      xs6 t        | t        j                  «      xs t        | t        j
                  «      S r   )r   Úbytesr   r   r   r   r   s    r    Úis_file_contentr%      s2   € Ü�cœ5Ó!Ò_¤Z°´R·Y±YÓ%?Ò_Ä:ÈcÔSU×S^ÑS^ÓC_Ð_r"   )Úkeyc               ó„   — t        | «      s5t        | «      s)|�d|› d�nd| ›d�}t        |› dt        | «      › d�«      d ‚y y )NzExpected entry at `ú`zExpected file input `zF to be bytes, an io.IOBase instance, PathLike or a tuple but received zL instead. See https://github.com/openai/openai-python/tree/main#file-uploads)r%   r   ÚRuntimeErrorÚtype)r   r&   Úprefixs      r    Úassert_is_file_contentr,   !   sk   € Ü˜3Ô¬
°3¬Ø14°Ð& s e¨1Ñ-ÐH]Ð^aÐ]dÐdeÐFfˆÜØˆhÐ\Ô]aÐbeÓ]fÐ\gð  htð  uó
àð	ð )8Ðr"   c                 ó   — y r   © ©Úfiless    r    Úto_httpx_filesr1   )   s   € Ø),r"   c                 ó   — y r   r.   r/   s    r    r1   r1   -   s   € Ø>Ar"   c                ó  — | €y t        | «      r.| j                  «       D ��ci c]  \  }}|t        |«      “Œ } }}| S t        | «      r!| D ��cg c]  \  }}|t        |«      f‘Œ } }}| S t	        dt        | «      › d�«      ‚c c}}w c c}}w ©NzUnexpected file type input z, expected mapping or sequence)r   ÚitemsÚ_transform_filer   Ú	TypeErrorr*   ©r0   r&   Úfiles      r    r1   r1   1   s—   € Ø€}Øä�EÔØ=B¿[¹[»]×K±	°°T�”o dÓ+Ñ+ÐKˆÑKð €Lô 
�uÔ	Ø?D×E±)°#°t�#” tÓ,Ò-ÐEˆÑEð €Lô Ð5´d¸5³k°]ÐB`ÐaÓbÐbùó	 LùãEs   ¢BÁBc                ó  — t        | «      rMt        | t        j                  «      r1t	        j
                  | «      }|j                  |j                  «       fS | S t        | «      r| d   t        | d   «      g| dd  ¢­S t        d«      ‚©Nr   r	   é   zCExpected file types input to be a FileContent type or to be a tuple)r%   r   r   r   ÚpathlibÚPathÚnameÚ
read_bytesr   Úread_file_contentr7   ©r9   Úpaths     r    r6   r6   ?   sy   € Ü�tÔÜ�dœBŸK™KÔ(Ü—<‘< Ó%ˆDØ—I‘I˜tŸ™Ó0Ð1Ð1àˆä�$ÔØ�Q‘Ô*¨4°©7Ó3Ð?°d¸1¸2°hÑ?Ð?ä
ÐYÓ
[Ð[r"   c                ó€   — t        | t        j                  «      r#t        j                  | «      j                  «       S | S r   )r   r   r   r=   r>   r@   ©r9   s    r    rA   rA   M   s-   € Ü�$œŸ™Ô$Ü�|‰|˜DÓ!×,Ñ,Ó.Ð.Ø€Kr"   c              ƒ  ó   K  — y ­wr   r.   r/   s    r    Úasync_to_httpx_filesrG   S   s	   è ø€ Ø58ùó   ‚c              ƒ  ó   K  — y ­wr   r.   r/   s    r    rG   rG   W   s	   è ø€ ØJMùrH   c              ƒ  óJ  K  — | €y t        | «      r6| j                  «       D ��ci c]  \  }}|t        |«      ƒ d {  –—† “Œ } }}| S t        | «      r)| D ��cg c]  \  }}|t        |«      ƒ d {  –—† f‘Œ } }}| S t	        dt        | «      › d�«      ‚7 ŒWc c}}w 7 Œ,c c}}w ­wr4   )r   r5   Ú_async_transform_filer   r7   r*   r8   s      r    rG   rG   [   s¨   è ø€ Ø€}Øä�EÔØINÏÉË×W¹I¸CÀ�Ô1°$Ó7×7Ñ7ÐWˆÑWð €Lô 
�uÔ	ØKP×Q¹i¸cÀ4�#Ô2°4Ó8×8Ò9ÐQˆÑQð €Lô Ð5´d¸5³k°]ÐB`ÐaÓbÐbð	 8úÓWà8úÓQùsJ   ‚"B#¤B»B¼BÁB#ÁBÁ.BÁ/BÁ6B#ÂBÂB#ÂBÂB#c              ƒ  ó@  K  — t        | «      rUt        | t        j                  «      r9t	        j
                  | «      }|j                  |j                  «       ƒ d {  –—† fS | S t        | «      r!| d   t        | d   «      ƒ d {  –—† g| dd  ¢­S t        d«      ‚7 Œ>7 Œ­wr;   )r%   r   r   r   Úanyior>   r?   r@   r   Úasync_read_file_contentr7   rB   s     r    rK   rK   i   s�   è ø€ Ü�tÔÜ�dœBŸK™KÔ(Ü—:‘:˜dÓ#ˆDØ—I‘I T§_¡_Ó%6×6Ð7Ð7àˆä�$ÔØ�Q‘Ô6°t¸A±wÓ?×?ÐKÀ$ÀqÀrÀ(ÑKÐKä
ÐYÓ
[Ð[ð  7øð
 @ús$   ‚ABÁBÁ'BÂBÂBÂBc              ƒ  óœ   K  — t        | t        j                  «      r+t        j                  | «      j                  «       ƒ d {  –—† S | S 7 Œ­wr   )r   r   r   rM   r>   r@   rE   s    r    rN   rN   w   s9   è ø€ Ü�$œŸ™Ô$Ü—Z‘Z Ó%×0Ñ0Ó2×2Ð2à€Kð 3ús   ‚AAÁA
ÁAc                ó   — t        | |d«      S )aP  Copy only the containers along the given paths.

    Used to guard against mutation by extract_files without copying the entire structure.
    Only dicts and lists that lie on a path are copied; everything else
    is returned by reference.

    For example, given paths=[["foo", "files", "file"]] and the structure:
        {
            "foo": {
                "bar": {"baz": {}},
                "files": {"file": <content>}
            }
        }
    The root dict, "foo", and "files" are copied (they lie on the path).
    "bar" and "baz" are returned by reference (off the path).
    r   )Ú_deepcopy_with_paths)ÚitemÚpathss     r    Údeepcopy_with_pathsrT   ~   s   € ô"    e¨QÓ/Ð/r"   c                ó4  — |s| S t        | «      rŽi }|D ]5  }|t        |«      k  sŒ|j                  ||   g «      j                  |«       Œ7 |s| S t	        | «      }|j                  «       D ]   \  }}||v sŒt        ||   ||dz   «      ||<   Œ" t        t        |«      S t        | «      re|D �cg c]  }|t        |«      k  sŒ||   dk(  sŒ|‘Œ }}|st        t        | «      S t        t        | D �	cg c]  }	t        |	||dz   «      ‘Œ c}	«      S | S c c}w c c}	w )Nr	   z<array>)
r   ÚlenÚ
setdefaultÚappendÚdictr5   rQ   r   r   r   )
rR   rS   ÚindexÚkey_to_pathsrC   Úresultr&   ÚsubpathsÚarray_pathsÚentrys
             r    rQ   rQ   ’   s0  € ÙØˆÜ�$ÔØ79ˆØò 	FˆDØ”s˜4“yÓ Ø×'Ñ'¨¨U©°RÓ8×?Ñ?ÀÕEð	Fñ
 ØˆKä�d“ˆØ)×/Ñ/Ó1ò 	U‰MˆC�Ø�fŠ}Ü2°6¸#±;ÀÈ%ÐRSÉ)ÓT��s’ð	Uô ”B˜ÓÐÜˆt„}Ø(-Ö` °¼¸T»Ó1BÀtÈEÁ{ÐV_ÓG_’tÐ`ˆÐ`ñ Üœ˜D“>Ð!Ü”BÐZ^Ö_ÐQVÔ-¨e°[À%È!Á)ÕLÒ_Ó`Ð`Ø€Kùò aùò
 `s   Â-DÃDÃ
DÃ0D
)r   ÚobjectÚreturnzTypeGuard[Base64FileInput])r   r`   ra   zTypeGuard[FileContent])r   r`   r&   z
str | Nonera   ÚNone)r0   rb   ra   rb   )r0   r   ra   r   )r0   zRequestFiles | Nonera   zHttpxRequestFiles | None)r9   r
   ra   r   )r9   r   ra   r   )rR   r   rS   úSequence[Sequence[str]]ra   r   )rR   r   rS   rc   rZ   Úintra   r   )'Ú
__future__r   r   r   r=   Útypingr   r   r   Útyping_extensionsr   r   rM   Ú_typesr
   r   r   r   r   r   r   Ú_utilsr   r   r   r   r   r   r!   r%   r,   r1   r6   rA   rG   rK   rN   rT   rQ   r.   r"   r    ú<module>rj      s¿   ðÝ "ã 	Û 	Û ß +Ñ +ß 0ã ÷÷ ñ ÷ QÕ PáˆTƒ]€óFó`ð >Bõ ð 
Ú ,ó 
Ø ,ð 
Ú Aó 
Ø Aóó\óð 
Ú 8ó 
Ø 8ð 
Ú Mó 
Ø Móó\óó0ô(r"   