U
    Įwh                  	   @   s   d dl Z G dd deZG dd deeZG dd deeZG dd	 d	eZG d
d deZG dd deZG dd deZ	G dd deZ
G dd deZG dd deZG dd deZG dd deZeee	e
eeeedZdS )    Nc                   @   s   e Zd ZdS )YouTrackErrorN__name__
__module____qualname__ r   r   0./modules/youtrack/youtrack_client/exceptions.pyr      s   r   c                       s(   e Zd ZdZ fddZdd Z  ZS )YouTrackRequestErrorNc                    s   || _ tt| | d S )N)original_errorsuperr	   __init__)selfr
   	__class__r   r   r      s    zYouTrackRequestError.__init__c                 C   s4   dg}| dd tt| j| jD  d|S )Nz"Failed to communicate with server:c                 s   s   | ]}| d V  qdS )
N)rstrip).0liner   r   r   	<genexpr>   s   z/YouTrackRequestError.__str__.<locals>.<genexpr>r   )extend	tracebackformat_exception_onlytyper
   join)r   linesr   r   r   __str__   s    
zYouTrackRequestError.__str__)r   r   r   r
   r   r   __classcell__r   r   r   r   r	      s   r	   c                       s8   e Zd ZdZdZdZdZdZ fddZdd Z	  Z
S )YouTrackServerErrorNc                    sd   || _ |j| _|j| _z| }W n tk
r6   Y nX |d| _|d| _tt	| 
| d S )Nerrorerror_description)responsestatus_codereasonZjson	Exceptiongetr   r   r   r   r   )r   r    r   r   r   r   r   "   s    zYouTrackServerError.__init__c                 C   s   d | j| j| j| j}|S )Nz({}) {} - {}: {})formatr!   r"   r   r   )r   msgr   r   r   r   /   s    zYouTrackServerError.__str__)r   r   r   r    r!   r"   r   r   r   r   r   r   r   r   r   r      s   r   c                       s   e Zd Z fddZ  ZS )OutOfRetriesc                    s   d dtt|  fS )Nr   zOut of retries, last error was:)r   r   r'   r   )r   r   r   r   r   ;   s    zOutOfRetries.__str__)r   r   r   r   r   r   r   r   r   r'   9   s   r'   c                   @   s   e Zd ZdS )
BadRequestNr   r   r   r   r   r(   B   s   r(   c                   @   s   e Zd ZdS )UnauthorizedNr   r   r   r   r   r)   F   s   r)   c                   @   s   e Zd ZdS )	ForbiddenNr   r   r   r   r   r*   J   s   r*   c                   @   s   e Zd ZdS )NotFoundNr   r   r   r   r   r+   N   s   r+   c                   @   s   e Zd ZdS )ConflictNr   r   r   r   r   r,   R   s   r,   c                   @   s   e Zd ZdS )PreconditionFailedNr   r   r   r   r   r-   V   s   r-   c                   @   s   e Zd ZdS )UnprocessableEntityNr   r   r   r   r   r.   Z   s   r.   c                   @   s   e Zd ZdS )PreconditionRequiredNr   r   r   r   r   r/   ^   s   r/   )i  i  i  i  i  i  i  i  )r   r#   r   IOErrorr	   r   r'   r(   r)   r*   r+   r,   r-   r.   r/   ZSTATUS_CODESr   r   r   r   <module>   s*   	