o
    ϖi                     @   s\   d dl mZmZ d dlZerd dlmZ G dd deZG dd deZG dd	 d	eZ	dS )
    )TYPE_CHECKINGOptionalN)
Predictionc                   @   s   e Zd ZdZdS )ReplicateExceptionz*A base class for all Replicate exceptions.N)__name__
__module____qualname____doc__ r
   r
   H/home/ubuntu/.local/lib/python3.10/site-packages/replicate/exceptions.pyr   	   s    r   c                       s,   e Zd ZU dZded< d fddZ  ZS )	
ModelErrorz%An error from user's code in a model.r   
predictionreturnNc                    s   || _ t |j d S N)r   super__init__error)selfr   	__class__r
   r   r      s   zModelError.__init__)r   r   r   N)r   r   r   r	   __annotations__r   __classcell__r
   r
   r   r   r      s   
 r   c                   @   s   e Zd ZU dZee ed< 	 ee ed< 	 ee ed< 	 ee ed< 	 ee ed< 	 					ddee dee dee dee dee ddfd	d
Ze	de
jdd fddZdefddZdefddZdefddZdS )ReplicateErrorzv
    An error from Replicate's API.

    This class represents a problem details response as defined in RFC 7807.
    typetitlestatusdetailinstanceNr   c                 C   s"   || _ || _|| _|| _|| _d S r   r   r   r   r   r   )r   r   r   r   r   r   r
   r
   r   r   -   s
   
zReplicateError.__init__responsec                 C   sP   z|  }W n ty   i }Y nw | |d|d|d|j|ddS )z.Create a ReplicateError from an HTTP response.r   r   r   r   )r   r   r   r   r   )json
ValueErrorgetstatus_code)clsr   datar
   r
   r   from_response;   s   zReplicateError.from_responsec                 C   s(   dd | j | j| j| j| jd D S )z-Get a dictionary representation of the error.c                 S   s   i | ]\}}|d ur||qS r   r
   .0keyvaluer
   r
   r   
<dictcomp>O   s
    z*ReplicateError.to_dict.<locals>.<dictcomp>r   )r   r   r   r   r   itemsr   r
   r
   r   to_dictL   s   zReplicateError.to_dictc                 C   s    dd dd |   D  S )NzReplicateError Details:

c                 S   s   g | ]\}}| d | qS )z: r
   r'   r
   r
   r   
<listcomp>]   s    z*ReplicateError.__str__.<locals>.<listcomp>)joinr.   r,   r-   r
   r
   r   __str__[   s   zReplicateError.__str__c              	   C   sh   | j j}ddt| j dt| j dt| j dt| j dt| j g}| d| dS )	Nz, ztype=ztitle=zstatus=zdetail=z	instance=())	r   r   r1   reprr   r   r   r   r   )r   
class_nameparamsr
   r
   r   __repr__`   s   	zReplicateError.__repr__)NNNNN)r   r   r   r	   r   strr   intr   classmethodhttpxResponser&   dictr.   r2   r8   r
   r
   r
   r   r      sF   
 
r   )
typingr   r   r<   replicate.predictionr   	Exceptionr   r   r   r
   r
   r
   r   <module>   s    
