o
    ϖiC                     @   s   d dl 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 d dlmZmZmZ d dlmZmZ ed ZG dd deZG dd	 d	eZd
eee jf ded deeef fddZdeeef defddZdS )    N)AnyBinaryIODictListOptional	TypedDictUnion)LiteralNotRequiredUnpack)	NamespaceResource)base64urlc                   @   s   e Zd ZU dZeed< 	 eed< 	 eed< 	 eed< 	 eed< 	 eeef ed< 	 eeef ed< 	 eed	< 	 e	e ed
< 	 eeef ed< dS )FilezO
    A file uploaded to Replicate that can be used as an input to a model.
    idnamecontent_typesizeetag	checksumsmetadata
created_at
expires_aturlsN)
__name__
__module____qualname____doc__str__annotations__intr   r   r    r"   r"   B/home/ubuntu/.local/lib/python3.10/site-packages/replicate/file.pyr      s,   
 r   c                   @   s   e Zd ZG dd deZdeeeje	e
jf ded defddZdeeeje	e
jf ded defd	d
ZdedefddZdedefddZdee fddZdee fddZdedefddZdedefddZdS )Filesc                   @   sB   e Zd ZU dZee ed< 	 ee ed< 	 eeeef  ed< dS )Files.CreateFileParamszParameters for creating a file.filenamer   r   N)	r   r   r   r   r
   r   r    r   r   r"   r"   r"   r#   CreateFileParams4   s   
 r'   fileparamsr%   returnc                 K   s   t |ttjfr1t|}|j|d< t|d}| j|fi |W  d   S 1 s+w   Y  nt |tjt	fs=t
d| jj	dddit|fi |}t| S )	zT
        Upload a file that can be passed as an input when running a model.
        r&   rbN?Unsupported file type. Must be a file path or file-like object.POST	/v1/filestimeoutr-   r.   )
isinstancer   pathlibPathr   opencreateioIOBaser   
ValueError_client_request_create_file_params_json_to_filejsonselfr(   r)   	file_pathfrespr"   r"   r#   r5   @   s$   	

"zFiles.createc                    s   t |ttjfr5t|}|j|d< t|d}| j|fi |I dH W  d   S 1 s/w   Y  nt |tjt	fsAt
d| jj	dddit|fi |I dH }t| S )	zQUpload a file asynchronously that can be passed as an input when running a model.r&   r+   Nr,   r-   r.   r/   r0   )r1   r   r2   r3   r   r4   async_creater6   r7   r   r8   r9   _async_requestr;   r<   r=   r>   r"   r"   r#   rC   Y   s&   

"zFiles.async_createfile_idc                 C   s    | j dd| }t| S )zGet an uploaded file by its ID.GET
/v1/files/)r9   r:   r<   r=   r?   rE   rB   r"   r"   r#   getp   s   z	Files.getc                    s(   | j dd| I dH }t| S )z.Get an uploaded file by its ID asynchronously.rF   rG   N)r9   rD   r<   r=   rH   r"   r"   r#   	async_getv   s   zFiles.async_getc                 C   s(   | j dd}dd | dg D S )zList all uploaded files.rF   r.   c                 S      g | ]}t |qS r"   r<   .0objr"   r"   r#   
<listcomp>       zFiles.list.<locals>.<listcomp>results)r9   r:   r=   rI   r?   rB   r"   r"   r#   list|   s   z
Files.listc                    s0   | j ddI dH }dd | dg D S )z'List all uploaded files asynchronously.rF   r.   Nc                 S   rK   r"   rL   rM   r"   r"   r#   rP      rQ   z$Files.async_list.<locals>.<listcomp>rR   )r9   rD   r=   rI   rS   r"   r"   r#   
async_list   s   zFiles.async_listc                 C   s   | j dd| }|jdkS )z"Delete an uploaded file by its ID.DELETErG      )r9   r:   status_coderH   r"   r"   r#   delete   s   
zFiles.deletec                    s&   | j dd| I dH }|jdkS )z1Delete an uploaded file by its ID asynchronously.rV   rG   NrW   )r9   rD   rX   rH   r"   r"   r#   async_delete   s   
zFiles.async_deleteN)r   r   r   r   r'   r   r   r2   r3   r   r6   r7   r   r   r5   rC   rI   rJ   r   rT   rU   boolrY   rZ   r"   r"   r"   r#   r$   3   s,    

r$   r(   r)   r%   r*   c              	   K   s   |  d |d u ri }|dtjt| dd}|dp&t|d p&d}|d}i }|r7t	||d< d|| |fi|d	S )
Nr   r&   r   r(   r   zapplication/octet-streamr   content)filesdata)
seekrI   ospathbasenamegetattr	mimetypes
guess_typer=   dumps)r(   r)   r&   r   r   r^   r"   r"   r#   r;      s    


r;   r=   c                 C   s   t di | S )Nr"   )r   )r=   r"   r"   r#   r<      s   r<   )r6   r=   rd   r`   r2   typingr   r   r   r   r   r   r   typing_extensionsr	   r
   r   replicate.resourcer   r   FileEncodingStrategyr   r$   r7   r   r;   r<   r"   r"   r"   r#   <module>   s&    $$b

