o
    2.a&                     @   sT  d dl Z G dd deZdd ZG dd de jj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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d"d# 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dS ),    Nc                   @   s   e Zd ZdZdS )DockerExceptionz
    A base class from which all other exceptions inherit.

    If you want to catch all errors that the Docker SDK might raise,
    catch this base exception.
    N)__name__
__module____qualname____doc__ r   r   //usr/lib/python3/dist-packages/docker/errors.pyr      s    r   c                 C   s   | j }z| d }W n ty   |jpd }Y nw t}|jdkr<|r:dt|v s7dt|v s7dt|v r:t}nt	}|| ||d)zH
    Create a suitable APIError from requests.exceptions.HTTPError.
    message i  zNo such imagez+not found: does not exist or no pull accesszrepository does not exist)responseexplanation)
r   Zjson
ValueErrorZcontentstripAPIErrorstatus_codestrImageNotFoundNotFound)er   r   clsr   r   r   $create_api_error_from_http_exception   s$   

r   c                       sR   e Zd ZdZd fdd	Z fddZedd Zd	d
 Zdd Z	dd Z
  ZS )r   z%
    An HTTP error from the API.
    Nc                    s   t  | || _|| _d S N)super__init__r   r   )selfr	   r   r   	__class__r   r   r   &   s   
zAPIError.__init__c                    sl   t   }|  rd| jj| jj| jj}n|  r(d| jj| jj| jj}| j	r4| d| j	 d}|S )Nz{} Client Error for {}: {}z{} Server Error for {}: {}z ("z"))
r   __str__is_client_errorformatr   r   Zurlreasonis_server_errorr   )r   r	   r   r   r   r   -   s   
zAPIError.__str__c                 C   s   | j d ur	| j jS d S r   )r   r   r   r   r   r   r   ?   s   
zAPIError.status_codec                 C   s   |   p|  S r   )r   r!   r"   r   r   r   is_errorD   s   zAPIError.is_errorc                 C   (   | j d u rdS d| j   kodk S   S )NFi    r   r"   r   r   r   r   G      
zAPIError.is_client_errorc                 C   r$   )NFr%   iX  r&   r"   r   r   r   r!   L   r'   zAPIError.is_server_error)NN)r   r   r   r   r   r   propertyr   r#   r   r!   __classcell__r   r   r   r   r   "   s    
r   c                   @      e Zd ZdS )r   Nr   r   r   r   r   r   r   r   R       r   c                   @   r*   )r   Nr+   r   r   r   r   r   V   r,   r   c                   @   r*   )InvalidVersionNr+   r   r   r   r   r-   Z   r,   r-   c                   @   r*   )InvalidRepositoryNr+   r   r   r   r   r.   ^   r,   r.   c                   @   r*   )InvalidConfigFileNr+   r   r   r   r   r/   b   r,   r/   c                   @   r*   )InvalidArgumentNr+   r   r   r   r   r0   f   r,   r0   c                   @   r*   )DeprecatedMethodNr+   r   r   r   r   r1   j   r,   r1   c                   @      e Zd Zdd Zdd ZdS )TLSParameterErrorc                 C   
   || _ d S r   msgr   r6   r   r   r   r   o      
zTLSParameterError.__init__c                 C   s
   | j d S )Nz. TLS configurations should map the Docker CLI client configurations. See https://docs.docker.com/engine/articles/https/ for API details.r5   r"   r   r   r   r   r   r8   zTLSParameterError.__str__Nr   r   r   r   r   r   r   r   r   r3   n       r3   c                   @   r*   )NullResourceNr+   r   r   r   r   r;   y   r,   r;   c                       s    e Zd ZdZ fddZ  ZS )ContainerErrorzK
    Represents a container that has exited with a non-zero exit code.
    c                    sT   || _ || _|| _|| _|| _|d urd| nd}d||||}t | d S )Nz: r
   z=Command '{}' in image '{}' returned non-zero exit status {}{})	containerexit_statuscommandimagestderrr   r   r   )r   r=   r>   r?   r@   rA   errr6   r   r   r   r      s   zContainerError.__init__)r   r   r   r   r   r)   r   r   r   r   r<   }   s    r<   c                   @   s   e Zd Zdd ZdS )StreamParseErrorc                 C   r4   r   r5   )r   r    r   r   r   r      r8   zStreamParseError.__init__N)r   r   r   r   r   r   r   r   rC      s    rC   c                       s   e Zd Z fddZ  ZS )
BuildErrorc                    s   t  | || _|| _d S r   )r   r   r6   	build_log)r   r    rE   r   r   r   r      s   
zBuildError.__init__)r   r   r   r   r)   r   r   r   r   rD      s    rD   c                   @   r*   )ImageLoadErrorNr+   r   r   r   r   rF      r,   rF   c                 C   s^   dd t |D }|  dg}t|dkr|d n|d |d| td|S )	Nc                 S   s   g | ]}d | d qS )'r   ).0kr   r   r   
<listcomp>   s    z2create_unexpected_kwargs_error.<locals>.<listcomp>z()    z#got an unexpected keyword argument z!got unexpected keyword arguments z, r
   )sortedlenappendjoin	TypeError)namekwargsZquoted_kwargstextr   r   r   create_unexpected_kwargs_error   s   
rT   c                   @   r2   )MissingContextParameterc                 C   r4   r   param)r   rW   r   r   r   r      r8   z MissingContextParameter.__init__c                 C   s   d| j  S )Nzmissing parameter: rV   r"   r   r   r   r      s   zMissingContextParameter.__str__Nr9   r   r   r   r   rU      r:   rU   c                   @   r2   )ContextAlreadyExistsc                 C   r4   r   rQ   r   rQ   r   r   r   r      r8   zContextAlreadyExists.__init__c                 C      d| j  dS )Nzcontext z already existsrY   r"   r   r   r   r         zContextAlreadyExists.__str__Nr9   r   r   r   r   rX      r:   rX   c                   @   r2   )ContextExceptionc                 C   r4   r   r5   r7   r   r   r   r      r8   zContextException.__init__c                 C   s   | j S r   r5   r"   r   r   r   r      s   zContextException.__str__Nr9   r   r   r   r   r]      r:   r]   c                   @   r2   )ContextNotFoundc                 C   r4   r   rY   rZ   r   r   r   r      r8   zContextNotFound.__init__c                 C   r[   )Nz	context 'z' not foundrY   r"   r   r   r   r      r\   zContextNotFound.__str__Nr9   r   r   r   r   r^      r:   r^   )Zrequests	Exceptionr   r   
exceptionsZ	HTTPErrorr   r   r   r-   r.   r/   r0   r1   r3   r   r;   r<   RuntimeErrorrC   rD   rF   rT   rU   rX   r]   r^   r   r   r   r   <module>   s,    	0