o
    L)j+                     @   s  U d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZmZmZmZmZmZmZmZ d dlZer[d dlmZ d dlmZ d dlmZ ejd	Z e!d
Z"ej#e$d< dd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+e,edrdd Z-ndd Z-edee.ef ed f Z/e					dId d!d"edee.ef f d#ee. d$ee. d%ee. d&eee.ef  d'eed(  d)ed*d(fd+d,Z0e					dId d!d"ee/ d#ee. d$ee. d%ee. d&eee.ef  d'eed(  d)ed*ed( fd-d,Z0					dId d!d"e/d#ee. d$ee. d%ee. d&eee.ef  d'eed(  d)ed*ed(ed( f fd.d,Z0eddd/d0d"edee.ef f d&eee.ef  d'eed(  d1d2d)ed3e1d*d(fd4d5Z2eddd/d0d"ee/ d&eee.ef  d'eed(  d1d2d)ed3e1d*ed( fd6d5Z2ddd/d0d"e/d&eee.ef  d'eed(  d1d2d)ed3e1d*ed(ed( f fd7d5Z2d8d9 Z3ed:e.d*ee.e.f fd;d<Z4edJd=d<Z4d:ee.df d*eee.e.f df fd>d<Z4ed?Z5d@dA Z6dBdC Z7dDe.d*efdEdFZ8G dGdH dHe9Z:dS )K    N)ApiMode
quote_plus)TypeTYPE_CHECKING)	TypeVarUnionoverloadDictListcastAnyOptionalMappingStripeResponseStripeObject_APIRequestor
STRIPE_LOGstripeloggerc                   C   s   dt jv odt jddv S )NAPPENGINE_RUNTIMEDevSERVER_SOFTWARE )osenvironget r    r    q/var/www/html/finance-dev.cargoinsureonline.com/_shared/backend-venv/lib/python3.10/site-packages/stripe/_util.pyis_appengine_dev'   s   r"   c                   C   s    t jdv rt jS tdv rtS d S )Ndebuginfo)r   logr   r    r    r    r!   _console_log_level-   s
   
r'   c                 K   s<   t tdd| i|}t dkrt|tjd t| d S )Nmessager$   filer    )logfmtdictr'   printsysstderrr   r$   r(   paramsmsgr    r    r!   	log_debug6      
r3   c                 K   s<   t tdd| i|}t dv rt|tjd t| d S )Nr(   r#   r)   r    )r+   r,   r'   r-   r.   r/   r   r%   r0   r    r    r!   log_info=   r4   r5   c                  C   s4   t jd u rd S tdt j} | d u rd S |  d S )Nzsk_(live|test)_r   )r   api_keyrematchgroups)r8   r    r    r!   _test_or_live_environmentD   s   
r:   c                 C   s   dj t pd| dS )Nz/https://dashboard.stripe.com/{env}/logs/{reqid}test)envreqid)formatr:   )
request_idr    r    r!   dashboard_linkM   s   
r@   c                    s(   dd  d  fddt|  D S )Nc                 S   s\   t |dr
|d}t|tst|}td|rt|}td| r't| } dj| |dS )Ndecodezutf-8z\sz{key}={val}keyval)hasattrrA   
isinstancestrr7   searchreprr>   rB   r    r    r!   fmtT   s   


zlogfmt.<locals>.fmt c                    s   g | ]	\}} ||qS r    r    ).0rC   rD   rJ   r    r!   
<listcomp>e       zlogfmt.<locals>.<listcomp>)joinsorteditems)propsr    rM   r!   r+   S   s    r+   compare_digestc                 C   s   t | |S N)hmacrT   )val1val2r    r    r!   secure_comparek   s   rY   c                 C   s   t | t |kr
dS d}t| tr*t|tr*t| |D ]
\}}|||A O }q|dkS t| |D ]\}}|ttt|ttt|A O }q/|dkS )a[  
        Returns True if the two strings are equal, False otherwise.
        The time taken is independent of the number of characters that match.
        For the sake of simplicity, this function executes in constant time
        only when the two strings have the same length. It short-circuits when
        they have different lengths.
        Fr   )lenrF   byteszipordr   rG   )rW   rX   resultxyr    r    r!   rY   p   s   "r   RespV1)api_moderespr6   stripe_versionstripe_accountr1   klass_r   rc   returnc                C      d S rU   r    rd   r6   re   rf   r1   rg   rc   r    r    r!   convert_to_stripe_object      
rk   c                C   ri   rU   r    rj   r    r    r!   rk      rl   c             	   C   s*   ddl m} t| |||j|||d|dS )Nr   r   )r6   re   rf   )rd   r1   rg   	requestorrc   )stripe._api_requestorr   _convert_to_stripe_object_global_with_options)rd   r6   re   rf   r1   rg   rc   r   r    r    r!   rk      s   
F)r1   rg   is_v2_deleted_objectrm   r   rq   c                 C   ri   rU   r    rd   r1   rg   rm   rc   rq   r    r    r!   ro         	ro   c                 C   ri   rU   r    rr   r    r    r!   ro      rs   c                    s\  d }ddl m} ddlm} t| |r| }tt|j} t| tr+ fdd| D S t| t	r| 
 } | d}	t|	trn|rIddlm}
 |
}n; dkrb|	d	krbdd
lm} | dd}||}n"ddlm} | |	}nd| v r{d| v r{tjj}n	d ur}n|}|j| | d}|d urt|drt|ddkst|ddkr||_|S td| S )Nr   r   r   c                    s"   g | ]}t td | dqS )z%Union[StripeResponse, Dict[str, Any]])rd   rm   rc   rg   )ro   r   rL   irc   rg   rm   r    r!   rN      s    z-_convert_to_stripe_object.<locals>.<listcomp>object)DeletedObjectV2zv2.core.event)get_v2_event_classtyper   )get_object_classdatanext_page_url)valueslast_responserm   rc   listsearch_resultr   )stripe._stripe_responser   stripe._stripe_objectr   rF   r   ra   r}   r   r,   copyr   rG   stripe.v2._deleted_objectrx   stripe.events._event_classesrz   stripe._object_classesr|   r   v2
ListObject_construct_fromrE   getattr_retrieve_params)rd   r1   rg   rm   rc   rq   stripe_responser   r   
klass_namerx   klassrz   
event_typer|   objr    rv   r!   ro      sT   


	




c                 C   sb   ddl m} t| trdd | D S t| |r!dd | j D S t| tr/dd |  D S | S )zConverts a StripeObject back to a regular dict.

    Nested StripeObjects are also converted back to regular dicts.

    :param obj: The StripeObject to convert.

    :returns: The StripeObject as a dict.
    r   r   c                 S   s   g | ]}t |qS r    convert_to_dictrt   r    r    r!   rN   4  s    z#convert_to_dict.<locals>.<listcomp>c                 S      i | ]	\}}|t |qS r    r   rL   kvr    r    r!   
<dictcomp>6  rO   z#convert_to_dict.<locals>.<dictcomp>c                 S   r   r    r   r   r    r    r!   r   8  rO   )r   r   rF   r   _datarR   r,   )r   r   r    r    r!   r   (  s   	


r   idempotency_keyc                 C   ri   rU   r    r   r    r    r!   populate_headers=  s   r   c                 C   ri   rU   r    r   r    r    r!   r   C  s   c                 C   s   | d urd| iS d S )NzIdempotency-Keyr    r   r    r    r!   r   G  s   Tc                 C   s   |   }|| |S rU   )r   update)r_   r`   zr    r    r!   merge_dictsR  s   
r   c                 C   s   t | }|S rU   r   )idquotedIdr    r    r!   sanitize_idX  s   r   urlc                 C   s   |  drdS dS )Nz/v2ry   rb   )
startswith)r   r    r    r!   get_api_mode]  s   
r   c                   @   sP   e Zd ZU dd ZedZeed< dedefddZdd	e	e
e  fd
dZdS )class_method_variantc                 C   s
   || _ d S rU   )class_method_name)selfr   r    r    r!   __init__g  s   
zclass_method_variant.__init__r   methodrh   c                 C   s   || _ tt| S rU   )r   r   r   )r   r   r    r    r!   __call__n  s   
zclass_method_variant.__call__Nobjtypec                    s    t j fdd}|S )Nc                     s    d urj  g| R i |S t| dkr3d ur3t| d r3j | d g| dd  R i |S tj}|| i |S )Nr      )r   rZ   rF   r   r   )argskwargsclass_methodr   r   r   r    r!   _wrappers  s   $z.class_method_variant.__get__.<locals>._wrapper)	functoolswrapsr   )r   r   r   r   r    r   r!   __get__r  s   
zclass_method_variant.__get__rU   )__name__
__module____qualname__r   r   r   r   __annotations__r   r   r   r   r    r    r    r!   r   f  s   
 r   )NNNNN)r   Nrh   N);r   rV   loggingr.   r   r7   stripe._api_moder   urllib.parser   typing_extensionsr   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   rn   r   r   r   r   	getLoggerr   Loggerr   r"   r'   r3   r5   r:   r@   r+   rE   rY   rG   ra   rk   boolro   r   r   r   r   r   r   rw   r   r    r    r    r!   <module>   sb  
 ,		


	
	
	



	
V


	