a
    !f                     @   s   d dl mZmZmZmZ d dl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dS )    )DictOptionalUnioncastN)ErrorObjectc                	       s   e Zd ZU ee ed< ee ed< ee ed< ee ed< eeeef  ed< ee ed< ee ed< ee	 ed< dee ee
eef  ee ee eeeef  ee d
 fddZdd Zedd Zdd Zee	 dddZ  ZS )StripeError_message	http_bodyhttp_status	json_bodyheaderscode
request_iderrorN)messager	   r
   r   r   r   c                    s   t t| | d }|rNt|drNztt|d}W n tyL   d}Y n0 || _|| _	|| _
|| _|pli | _|| _| jdd | _|  | _d S )Ndecodezutf-8zE<Could not decode body as utf-8. Please report to support@stripe.com>z
request-id)superr   __init__hasattrr   bytesr   BaseExceptionr   r	   r
   r   r   r   getr   construct_error_objectr   )selfr   r	   r
   r   r   r   body	__class__ M/var/www/html/python-backend/venv/lib/python3.9/site-packages/stripe/error.pyr      s     	
zStripeError.__init__c                 C   s*   | j pd}| jd ur"d| j|S |S d S )Nz<empty message>zRequest {0}: {1})r   r   format)r   msgr   r   r   __str__.   s    

zStripeError.__str__c                 C   s   | j S N)r   r   r   r   r   user_message9   s    zStripeError.user_messagec                 C   s   d| j j| j| j| jf S )Nz-%s(message=%r, http_status=%r, request_id=%r))r   __name__r   r
   r   r#   r   r   r   __repr__=   s    zStripeError.__repr__)returnc                 C   sH   | j d u s0t| j tr0d| j vs0t| j d ts4d S t| j d tjS )Nr   )r   
isinstancedictr   Zconstruct_fromstripeZapi_keyr#   r   r   r   r   E   s    
z"StripeError.construct_error_object)NNNNNN)r%   
__module____qualname__r   str__annotations__intobjectr   r   r   r   r   r!   propertyr$   r&   r   __classcell__r   r   r   r   r      s6   
      
r   c                   @   s   e Zd ZdS )APIErrorNr%   r+   r,   r   r   r   r   r3   S   s   r3   c                       s(   e Zd ZU eed< d fdd	Z  ZS )APIConnectionErrorshould_retryNFc                    s$   t t| |||||| || _d S r"   )r   r5   r   r6   )r   r   r	   r
   r   r   r   r6   r   r   r   r   Z   s    

zAPIConnectionError.__init__)NNNNNF)r%   r+   r,   boolr.   r   r2   r   r   r   r   r5   W   s   
      r5   c                   @   s   e Zd Zdd ZdS )StripeErrorWithParamCodec                 C   s"   d| j j| j| j| j| j| jf S )Nz@%s(message=%r, param=%r, code=%r, http_status=%r, request_id=%r))r   r%   r   paramr   r
   r   r#   r   r   r   r&   k   s    z!StripeErrorWithParamCode.__repr__N)r%   r+   r,   r&   r   r   r   r   r8   j   s   r8   c                       s   e Zd Zd fdd	Z  ZS )	CardErrorNc                    s$   t t| |||||| || _d S r"   )r   r:   r   r9   r   r   r9   r   r	   r
   r   r   r   r   r   r   {   s    

zCardError.__init__)NNNNr%   r+   r,   r   r2   r   r   r   r   r:   z   s
       r:   c                   @   s   e Zd ZdS )IdempotencyErrorNr4   r   r   r   r   r=      s   r=   c                       s   e Zd Zd fdd	Z  ZS )InvalidRequestErrorNc                    s$   t t| |||||| || _d S r"   )r   r>   r   r9   r;   r   r   r   r      s    

zInvalidRequestError.__init__)NNNNNr<   r   r   r   r   r>      s        r>   c                   @   s   e Zd ZdS )AuthenticationErrorNr4   r   r   r   r   r?      s   r?   c                   @   s   e Zd ZdS )PermissionErrorNr4   r   r   r   r   r@      s   r@   c                   @   s   e Zd ZdS )RateLimitErrorNr4   r   r   r   r   rA      s   rA   c                       s   e Zd Zd fdd	Z  ZS )SignatureVerificationErrorNc                    s   t t| || || _d S r"   )r   rB   r   
sig_header)r   r   rC   r	   r   r   r   r      s    z#SignatureVerificationError.__init__)Nr<   r   r   r   r   rB      s   rB   )typingr   r   r   r   r*   Z!stripe.api_resources.error_objectr   	Exceptionr   r3   r5   r8   r:   r=   r>   r?   r@   rA   rB   r   r   r   r   <module>   s   M