
    g                       d dl mZ d dlZd dlZd dl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mZmZmZ ddlmZmZm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y)    )annotationsN)overload)	TypeGuard   )	FileTypesFileContentRequestFilesHttpxFileTypesBase64FileInputHttpxFileContentHttpxRequestFiles)
is_tuple_tis_mapping_tis_sequence_tc                n    t        | t        j                        xs t        | t        j                        S N)
isinstanceioIOBaseosPathLikeobjs    @/var/www/openai/venv/lib/python3.12/site-packages/groq/_files.pyis_base64_file_inputr      s#    c299%EC)EE    c                    t        | t              xsH t        | t              xs6 t        | t        j                        xs t        | t
        j                        S r   )r   bytestupler   r   r   r   r   s    r   is_file_contentr       sB    3v*S%"8vJsBII<VvZdehjljujuZvr   )keyc               l    t        |       s)|d| dnd| d}t        | dt        |        d      d y )NzExpected entry at ``zExpected file input `zF to be bytes, an io.IOBase instance, PathLike or a tuple but received z	 instead.)r    RuntimeErrortype)r   r!   prefixs      r   assert_is_file_contentr'   !   s[    314&se1-H]^a]ddeFfh\]abe]f\ggpq
	  r   c                     y r    filess    r   to_httpx_filesr,   )   s    ),r   c                     y r   r)   r*   s    r   r,   r,   -   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%   r+   r!   files      r   r,   r,   1   s    }E=B[[]K]	Tod++]K L 
u	?DEu)#t#t,-uE L 5d5k]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_contentr1   r3   paths     r   r0   r0   ?   sy    tdBKK(<<%DIIt011$Q+DG4@tABx@@
Y
[[r   c                    t        | t        j                        r#t        j                  |       j                         S | S r   )r   r   r   r7   r8   r:   r3   s    r   r;   r;   M   s-    $$||D!,,..Kr   c                   K   y wr   r)   r*   s    r   async_to_httpx_filesrA   S   s	     58   c                   K   y wr   r)   r*   s    r   rA   rA   W   s	     JMrB   c                0  K   | y t        |       r6| j                         D ci c]  \  }}|t        |       d {    } }}| S t        |       r)| D cg c]  \  }}|t        |       d {   f } }}| S t	        d      7 Jc c}}w 7 c c}}w w)NzFUnexpected file type input {type(files)}, expected mapping or sequence)r   r/   _async_transform_filer   r1   r2   s      r   rA   rA   [   s     }EINWIC1$777W L 
u	KPQ5ic4#248895Q L `aa	 8W8QsJ   "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r5   )r    r   r   r   anyior8   r9   r:   r   _async_read_file_contentr1   r<   s     r   rE   rE   i   s     tdBKK(::d#DIIT__%6677$Q7Q@@L48LL
Y
[[  7
 A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   rG   r8   r:   r?   s    r   rH   rH   w   s9     $$ZZ%00222K 3s   AAA
A)r   objectreturnzTypeGuard[Base64FileInput])r   rJ   rK   zTypeGuard[FileContent])r   rJ   r!   z
str | NonerK   None)r+   rL   rK   rL   )r+   r	   rK   r   )r+   zRequestFiles | NonerK   zHttpxRequestFiles | None)r3   r   rK   r
   )r3   r   rK   r   )
__future__r   r   r   r7   typingr   typing_extensionsr   rG   _typesr   r   r	   r
   r   r   r   _utilsr   r   r   r   r    r'   r,   r0   r;   rA   rE   rH   r)   r   r   <module>rR      s    " 	 	   '    < ;F >B  
 , 
 , 
 A 
 A\ 
 8 
 8 
 M 
 M\r   