o
    ϖi                     @   s   d dl Z d dlmZmZmZmZmZ er d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ G dd deZG d	d
 d
eZdeeef defddZdS )    N)TYPE_CHECKINGAnyDictTupleUnion)ClientModel)Page)	NamespaceResourcec                   @   s:   e Zd ZU dZeed< 	 ejed< 	 eed< 	 eed< dS )Versionz
    A version of a model.
    id
created_atcog_versionopenapi_schemaN)__name__
__module____qualname____doc__str__annotations__datetimedict r   r   E/home/ubuntu/.local/lib/python3.10/site-packages/replicate/version.pyr      s   
 
r   c                       s   e Zd ZU dZeeef ed< dddeeeeef df ddf 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  ZS )Versionsz=
    Namespace for operations related to model versions.
    modelclientr   r	   returnNc                    sh   t  j|d ddlm} t||r|j|jf| _d S t|tr/|	dd\}}||f| _d S || _d S )N)r   r   r   /   )
super__init__replicate.modelr	   
isinstanceownernamer   r   split)selfr   r   r	   r&   r'   	__class__r   r   r#   %   s   


zVersions.__init__r   c              	   C   s8   | j dd| jd  d| jd  d| }t| S )
        Get a specific model version.

        Args:
            id: The version ID.
        Returns:
            The model version.
        GET/v1/models/r   r    r!   
/versions/)_client_requestr   _json_to_versionjsonr)   r   respr   r   r   get4   s   
"zVersions.getc              	      s@   | j dd| jd  d| jd  d| I dH }t| S )r,   r-   r.   r   r    r!   r/   N)r0   _async_requestr   r2   r3   r4   r   r   r   	async_getD   s
   
"
zVersions.async_getc                 C   sX   | j dd| jd  d| jd  d}| }dd |d	 D |d	< tt di |S )
        Return a list of all versions for a model.

        Returns:
            List[Version]: A list of version objects.
        r-   r.   r   r    r!   	/versionsc                 S      g | ]}t |qS r   r2   .0resultr   r   r   
<listcomp>`       z!Versions.list.<locals>.<listcomp>resultsNr   )r0   r1   r   r3   r
   r   r)   r5   objr   r   r   listT   s   zVersions.listc                    s`   | j dd| jd  d| jd  dI dH }| }dd	 |d
 D |d
< tt di |S )r9   r-   r.   r   r    r!   r:   Nc                 S   r;   r   r<   r=   r   r   r   r@   p   rA   z'Versions.async_list.<locals>.<listcomp>rB   r   )r0   r7   r   r3   r
   r   rC   r   r   r   
async_listd   s   
zVersions.async_listc              	   C   s6   | j dd| jd  d| jd  d| }|jdkS )  
        Delete a model version and all associated predictions, including all output files.

        Model version deletion has some restrictions:

        * You can only delete versions from models you own.
        * You can only delete versions from private models.
        * You cannot delete a version if someone other than you
          has run predictions with it.

        Args:
            id: The version ID.
        DELETEr.   r   r    r!   r/      )r0   r1   r   status_coder4   r   r   r   deletet   s   "
zVersions.deletec              	      s>   | j dd| jd  d| jd  d| I dH }|jdkS )	rG   rH   r.   r   r    r!   r/   NrI   )r0   r7   r   rJ   r4   r   r   r   async_delete   s
   "

zVersions.async_delete)r   r   r   r   r   r   r   r   r#   r   r6   r8   r
   rE   rF   boolrK   rL   __classcell__r   r   r*   r   r      s    
 r   r3   r   c                 C   s   t di | S )Nr   )r   )r3   r   r   r   r2      s   r2   )r   typingr   r   r   r   r   replicate.clientr   r$   r	   replicate.paginationr
   replicate.resourcer   r   r   r   r   r2   r   r   r   r   <module>   s    