o
    ȷeE                     @   s  d Z ddlZddlZddlZddlmZ ddlmZmZ ddl	m
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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G d*d+ d+eZG d,d- d-eZG d.d/ d/eZ G d0d1 d1eZ!G d2d3 d3eZ"G d4d5 d5eZ#G d6d7 d7eZ$G d8d9 d9eZ%G d:d; d;eZ&G d<d= d=e&Z'G d>d? d?e&Z(G d@dA dAe)Z*G dBdC dCe)Z+G dDdE dEe)Z,G dFdG dGe)Z-G dHdI dIe)Z.G dJdK dKe)Z/G dLdM dMeZ0G dNdO dOe)Z1G dPdQ dQe)Z2G dRdS dSe)Z3G dTdU dUe)Z4G dVdW dWe)Z5dS )XzI
Exception classes - Subclassing allows you to check for specific errors
    N)handler)jsonStandardError)	ResultSetc                       0   e Zd ZdZ fddZdd Zdd Z  ZS )BotoClientErrorz9
    General Boto Client error (error accessing AWS)
    c                    s"   t t| j|g|R   || _d S N)superr   __init__reason)selfr   args	__class__ E/var/www/ideatree/venv/lib/python3.10/site-packages/boto/exception.pyr
   )   s   
zBotoClientError.__init__c                 C   
   d| j  S NzBotoClientError: %sr   r   r   r   r   __repr__-      
zBotoClientError.__repr__c                 C   r   r   r   r   r   r   r   __str__0   r   zBotoClientError.__str____name__
__module____qualname____doc__r
   r   r   __classcell__r   r   r   r   r   %   
    r   c                   @      e Zd ZdS )SDBPersistenceErrorNr   r   r   r   r   r   r   r!   4       r!   c                   @      e Zd ZdZdS )StoragePermissionsErrorzP
    Permissions error when accessing a bucket or key on a storage service.
    Nr   r   r   r   r   r   r   r   r%   8       r%   c                   @   r$   )S3PermissionsErrorzA
    Permissions error when accessing a bucket or key on S3.
    Nr&   r   r   r   r   r(   ?   r'   r(   c                   @   r$   )GSPermissionsErrorzA
    Permissions error when accessing a bucket or key on GS.
    Nr&   r   r   r   r   r)   F   r'   r)   c                       sZ   e Zd Zd fdd	Zdd Z fddZdd	 Zd
d Zdd Zdd Z	dd Z
  ZS )BotoServerErrorNc                    s  t t| j|||g|R   || _|| _|pd| _d | _d | _d | _d| _	d | _
t| jtrGz	| jd| _W n tyF   tjd Y nw | jrt| jdr~| jdd | _d| jv rt| jdi }|dd | _|dd | _	d S | jd	d | _	d S zt| | }|| j W d S  ttjjfy   z9t| j}d|v r|d | _d|v rd|d v r|d d | _d|d v r|d d | _	W Y d S W Y d S W Y d S  ttfy   | j| _	d | _Y Y d S w w d S )
N zutf-8z!Unable to decode body from bytes!items	RequestIdErrorCodeMessagemessage)r	   r*   r
   statusr   body
request_id
error_code_error_messager1   	box_usage
isinstancebytesdecodeUnicodeDecodeErrorbotologdebughasattrgetr   XmlHandlerWrapperparseString	TypeErrorxmlsaxSAXParseExceptionr   loads
ValueError)r   r2   r   r3   r   errorhparsedr   r   r   r
   N   sX   


zBotoServerError.__init__c                 C   s    |dkr| j S |dkr| jS t)Nerror_messagecode)r1   r5   AttributeError)r   namer   r   r   __getattr__   s
   zBotoServerError.__getattr__c                    s(   |dkr	|| _ d S tt| || d S )NrL   )r1   r	   r*   __setattr__)r   rO   valuer   r   r   rQ      s   
zBotoServerError.__setattr__c                 C      d| j j| j| j| jf S Nz%s: %s %s
%sr   r   r2   r   r3   r   r   r   r   r         zBotoServerError.__repr__c                 C   rS   rT   rU   r   r   r   r   r      rV   zBotoServerError.__str__c                 C      d S r   r   r   rO   attrs
connectionr   r   r   startElement      zBotoServerError.startElementc                 C   sH   |dv r	|| _ d S |dkr|| _d S |dkr|| _d S |dkr"|| _d S )N)r-   	RequestIDr/   r0   BoxUsager4   r5   r1   r7   r   rO   rR   rZ   r   r   r   
endElement   s   zBotoServerError.endElementc                 C   s   d | _ d | _d | _d | _d S r   r_   r   r   r   r   _cleanupParsedProperties   s   
z(BotoServerError._cleanupParsedPropertiesr   )r   r   r   r
   rP   rQ   r   r   r[   ra   rb   r   r   r   r   r   r*   M   s    ;r*   c                   @   &   e Zd ZdddZdd Zdd ZdS )	ConsoleOutputNc                 C   s"   || _ d | _d | _d | _d | _d S r   )parentinstance_id	timestampcommentoutput)r   re   r   r   r   r
      s
   
zConsoleOutput.__init__c                 C   rW   r   r   rX   r   r   r   r[      r\   zConsoleOutput.startElementc                 C   s:   |dkr	|| _ d S |dkrt|| _d S t| || d S )N
instanceIdri   )rf   base64	b64decoderi   setattrr`   r   r   r   ra      s
   
zConsoleOutput.endElementr   r   r   r   r
   r[   ra   r   r   r   r   rd      s    
rd   c                       s.   e Zd ZdZd fdd	Z fddZ  ZS )StorageCreateErrorz>
    Error creating a bucket or key on a storage service.
    Nc                       d | _ tt| ||| d S r   )bucketr	   ro   r
   r   r2   r   r3   r   r   r   r
         zStorageCreateError.__init__c                    &   |dkr	|| _ d S tt| |||S )N
BucketName)rq   r	   ro   ra   r`   r   r   r   ra      s   
zStorageCreateError.endElementr   )r   r   r   r   r
   ra   r   r   r   r   r   ro      s    ro   c                   @   r$   )S3CreateErrorz/
    Error creating a bucket or key on S3.
    Nr&   r   r   r   r   rv      r'   rv   c                   @   r$   )GSCreateErrorz/
    Error creating a bucket or key on GS.
    Nr&   r   r   r   r   rw      r'   rw   c                   @   r$   )StorageCopyErrorz3
    Error copying a key on a storage service.
    Nr&   r   r   r   r   rx      r'   rx   c                   @   r$   )S3CopyErrorz$
    Error copying a key on S3.
    Nr&   r   r   r   r   ry      r'   ry   c                   @   r$   )GSCopyErrorz$
    Error copying a key on GS.
    Nr&   r   r   r   r   rz      r'   rz   c                       F   e Zd ZdZd fdd	Z fddZ fddZ fd	d
Z  ZS )SQSErrorz0
    General Error on Simple Queue Service.
    Nc                    s$   d | _ d | _tt| ||| d S r   )detailtyper	   r|   r
   rr   r   r   r   r
      s   zSQSError.__init__c                       t t| |||S r   )r	   r|   r[   rX   r   r   r   r[     s   zSQSError.startElementc                    s8   |dkr	|| _ d S |dkr|| _d S tt| |||S )NDetailType)r}   r~   r	   r|   ra   r`   r   r   r   ra     s
   

zSQSError.endElementc                    (   t t|   dD ]}t| |d  q	d S )N)r}   r~   )r	   r|   rb   rm   r   pr   r   r   rb        z!SQSError._cleanupParsedPropertiesr   	r   r   r   r   r
   r[   ra   rb   r   r   r   r   r   r|      s    r|   c                       r   )SQSDecodeErrorz-
    Error when decoding an SQS message.
    c                    s   t t| || || _d S r   )r	   r   r
   r1   )r   r   r1   r   r   r   r
     s   
zSQSDecodeError.__init__c                 C   r   NzSQSDecodeError: %sr   r   r   r   r   r     r   zSQSDecodeError.__repr__c                 C   r   r   r   r   r   r   r   r     r   zSQSDecodeError.__str__r   r   r   r   r   r     r   r   c                       r{   )StorageResponseErrorz3
    Error in response from a storage service.
    Nc                    rp   r   )resourcer	   r   r
   rr   r   r   r   r
   &  rs   zStorageResponseError.__init__c                    r   r   )r	   r   r[   rX   r   r   r   r[   *  s   
z!StorageResponseError.startElementc                    rt   )NResource)r   r	   r   ra   r`   r   r   r   ra   .  s
   

zStorageResponseError.endElementc                    r   )Nr   )r	   r   rb   rm   r   r   r   r   rb   5  r   z-StorageResponseError._cleanupParsedPropertiesr   r   r   r   r   r   r   "  s    r   c                   @   r$   )S3ResponseErrorz$
    Error in response from S3.
    Nr&   r   r   r   r   r   ;  r'   r   c                   @   r$   )GSResponseErrorz$
    Error in response from GS.
    Nr&   r   r   r   r   r   B  r'   r   c                       s>   e Zd ZdZd fdd	Zdd Zdd Z fd	d
Z  ZS )EC2ResponseErrorz%
    Error in response from EC2.
    Nc                    sV   d | _ g | _tt| ||| dd | jD | _ t| j r)| j d \| _| _d S d S )Nc                 S   s   g | ]}|j |jfqS r   r5   rL   ).0er   r   r   
<listcomp>Q  s    z-EC2ResponseError.__init__.<locals>.<listcomp>r   )errors_errorResultSetr	   r   r
   lenr5   rL   rr   r   r   r   r
   M  s   
zEC2ResponseError.__init__c                 C   s"   |dkrt dtfg| _| jS d S )NErrorsr.   )r   	_EC2Errorr   rX   r   r   r   r[   V  s   zEC2ResponseError.startElementc                 C   s   |dkr	|| _ d S d S )Nr]   )r4   r`   r   r   r   ra   ]  s   
zEC2ResponseError.endElementc                    s.   t t|   g | _dD ]}t| |d  qd S )Nr   )r	   r   rb   r   rm   r   r   r   r   rb   c  s
   z)EC2ResponseError._cleanupParsedPropertiesr   r   r   r   r   r   r   I  s    	r   c                   @   s   e Zd ZdZdddZdS )JSONResponseErrora  
    This exception expects the fully parsed and decoded JSON response
    body to be passed as the body parameter.

    :ivar status: The HTTP status code.
    :ivar reason: The HTTP reason message.
    :ivar body: The Python dict that represents the decoded JSON
        response body.
    :ivar error_message: The full description of the AWS error encountered.
    :ivar error_code: A short string that identifies the AWS error
        (e.g. ConditionalCheckFailedException)
    Nc                 G   s\   || _ || _|| _| jr*| jdd | _| jdd | _| jr,| jdd | _d S d S d S )Nr1   __type#)r2   r   r3   r@   rL   r5   split)r   r2   r   r3   r   r   r   r   r
   w  s   zJSONResponseError.__init__r   )r   r   r   r   r
   r   r   r   r   r   j  s    r   c                   @   r    )DynamoDBResponseErrorNr"   r   r   r   r   r     r#   r   c                   @   r    )SWFResponseErrorNr"   r   r   r   r   r     r#   r   c                   @   r$   )EmrResponseErrorz$
    Error in response from EMR
    Nr&   r   r   r   r   r     r'   r   c                   @   rc   )	r   Nc                 C   s   || _ d | _d | _d S r   )rZ   r5   rL   )r   rZ   r   r   r   r
     s   
z_EC2Error.__init__c                 C   rW   r   r   rX   r   r   r   r[     r\   z_EC2Error.startElementc                 C   s(   |dkr	|| _ d S |dkr|| _d S d S )Nr/   r0   r   r`   r   r   r   ra     s
   

z_EC2Error.endElementr   rn   r   r   r   r   r     s    
r   c                   @   r$   )SDBResponseErrorz&
    Error in responses from SDB.
    Nr&   r   r   r   r   r     r'   r   c                   @   r$   )AWSConnectionErrorz:
    General error connecting to Amazon Web Services.
    Nr&   r   r   r   r   r     r'   r   c                   @   r$   )StorageDataErrorz6
    Error receiving data from a storage service.
    Nr&   r   r   r   r   r     r'   r   c                   @   r$   )S3DataErrorz'
    Error receiving data from S3.
    Nr&   r   r   r   r   r     r'   r   c                   @   r$   )GSDataErrorz'
    Error receiving data from GS.
    Nr&   r   r   r   r   r     r'   r   c                           e Zd ZdZ fddZ  ZS )InvalidUriErrorz%Exception raised when URI is invalid.c                       t t| | || _d S r   )r	   r   r
   r1   r   r1   r   r   r   r
        
zInvalidUriError.__init__r   r   r   r   r
   r   r   r   r   r   r         r   c                       r   )InvalidAclErrorz)Exception raised when ACL XML is invalid.c                    r   r   )r	   r   r
   r1   r   r   r   r   r
     r   zInvalidAclError.__init__r   r   r   r   r   r     r   r   c                       r   )InvalidCorsErrorz*Exception raised when CORS XML is invalid.c                    r   r   )r	   r   r
   r1   r   r   r   r   r
     r   zInvalidCorsError.__init__r   r   r   r   r   r     r   r   c                       r   )InvalidEncryptionConfigErrorzBException raised when GCS encryption configuration XML is invalid.c                    r   r   )r	   r   r
   r1   r   r   r   r   r
     r   z%InvalidEncryptionConfigError.__init__r   r   r   r   r   r     r   r   c                       r   )InvalidLifecycleConfigErrorzAException raised when GCS lifecycle configuration XML is invalid.c                    r   r   )r	   r   r
   r1   r   r   r   r   r
     r   z$InvalidLifecycleConfigError.__init__r   r   r   r   r   r     r   r   c                   @   r$   )NoAuthHandlerFoundzAIs raised when no auth handlers were found ready to authenticate.Nr&   r   r   r   r   r     s    r   c                   @   s   e Zd ZdZdZdZdZdS )ResumableTransferDisposition
START_OVERWAIT_BEFORE_RETRYABORT_CUR_PROCESSABORTN)r   r   r   r   r   r   r   r   r   r   r   r     s
    r   c                       (   e Zd ZdZ fddZdd Z  ZS )ResumableUploadExceptionz
    Exception raised for various resumable upload problems.

    self.disposition is of type ResumableTransferDisposition.
    c                    "   t t| || || _|| _d S r   )r	   r   r
   r1   dispositionr   r1   r   r   r   r   r
        
z!ResumableUploadException.__init__c                 C      d| j | jf S )Nz"ResumableUploadException("%s", %s)r1   r   r   r   r   r   r        z!ResumableUploadException.__repr__r   r   r   r   r
   r   r   r   r   r   r   r         r   c                       r   )ResumableDownloadExceptionz
    Exception raised for various resumable download problems.

    self.disposition is of type ResumableTransferDisposition.
    c                    r   r   )r	   r   r
   r1   r   r   r   r   r   r
   $  r   z#ResumableDownloadException.__init__c                 C   r   )Nz$ResumableDownloadException("%s", %s)r   r   r   r   r   r   )  r   z#ResumableDownloadException.__repr__r   r   r   r   r   r     r   r   c                       r   )TooManyRecordsExceptionzd
    Exception raised when a search of Route53 records returns more
    records than requested.
    c                    r   r   )r	   r   r
   r1   r   r   r   r   r
   4  r   z TooManyRecordsException.__init__r   r   r   r   r   r   .  s    r   c                   @   s"   e Zd ZdZdddZdd ZdS )PleaseRetryExceptionz0
    Indicates a request should be retried.
    Nc                 C   s   || _ || _d S r   r1   response)r   r1   r   r   r   r   r
   =  s   
zPleaseRetryException.__init__c                 C   r   )NzPleaseRetryException("%s", %s)r   r   r   r   r   r   A  s   zPleaseRetryException.__repr__r   )r   r   r   r   r
   r   r   r   r   r   r   9  s    
r   c                       r   )InvalidInstanceMetadataErrorzYou can set the 'metadata_service_num_attempts' in your boto config file to increase the number of times boto will attempt to retrieve credentials from the instance metadata service.c                    s"   |d | j  }tt| | d S )N
)MSGr	   r   r
   )r   msg	final_msgr   r   r   r
   O  s   z%InvalidInstanceMetadataError.__init__)r   r   r   r   r
   r   r   r   r   r   r   H  s    r   )6r   rk   xml.saxrD   r<   r   boto.compatr   r   boto.resultsetr   r   r!   r%   r(   r)   r*   objectrd   ro   rv   rw   rx   ry   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	Exceptionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s`   f!