o
    Bi@2                     @   sd  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Zd dlZd dlm	Z	 d dl
mZ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mZ d dlZd dlZerkd 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< erej)Z)nedZ*e+ddde,deee-  de.dee*ge*f fddZ)dd Z/dd Z0dd Z1dd Z2dd Z3dd  Z4d!d" Z5e6ed#rd$d% Z7nd&d% Z7d'd( Z8ed)ee,ef ed* f Z9e					dNd+d,d-ed)ee,ef f d.ee, d/ee, d0ee, d1eee,ef  d2eed3  d4e	dd3fd5d6Z:e					dNd+d,d-ee9 d.ee, d/ee, d0ee, d1eee,ef  d2eed3  d4e	ded3 fd7d6Z:					dNd+d,d-e9d.ee, d/ee, d0ee, d1eee,ef  d2eed3  d4e	ded3ed3 f fd8d6Z:eddd9d-ed)ee,ef f d1eee,ef  d2eed3  d:d;d4e	dd3fd<d=Z;eddd9d-ee9 d1eee,ef  d2eed3  d:d;d4e	ded3 fd>d=Z;ddd9d-e9d1eee,ef  d2eed3  d:d;d4e	ded3ed3 f fd?d=Z;d@dA Z<edBe,dee,e,f fdCdDZ=edOdEdDZ=dBee,df deee,e,f df fdFdDZ=edGZ>dHdI Z?dJdK Z@G dLdM dMeAZBdS )P    N)ApiMode)	parse_qsl
quote_plus)TypeTYPE_CHECKING)
CallableTypeVarUnionoverloadDictListcastAnyOptionalMappingStripeResponseStripeObject_APIRequestor
STRIPE_LOGstripelogger_T   category
stacklevel__msgr   r   returnc                   s   dt dt f fdd}|S )N__argr    c                    s   d u r	 _  S t tr3 j jtjutfdd}t| _  _ |_  S t	 rMt  fdd}  _ |_ |S t
d )Nc                    sX   t j d d tjur| g|R i |S s(|s |r(t| j d| S )Nr   r   z() takes no arguments)warningswarnobject__new__	TypeError__name__)clsargskwargs)r   r   has_initoriginal_newr    L/var/www/html/Trade-python/venv/lib/python3.10/site-packages/stripe/_util.pyr%   B   s   

z.deprecated.<locals>.decorator.<locals>.__new__c                     s"   t jd d  | i |S )Nr   r   )r"   r#   )r)   r*   )r!   r   r   r   r-   r.   wrapperT   s   
z.deprecated.<locals>.decorator.<locals>.wrapperzY@deprecated decorator with non-None category must be applied to a class or callable, not )__deprecated__
isinstancetyper%   __init__r$   	functoolswrapsstaticmethodcallabler&   )r!   r%   r/   r   r   r   )r!   r+   r,   r.   	decorator:   s*   

zdeprecated.<locals>.decorator)r   )r   r   r   r9   r-   r8   r.   
deprecated4   s   )r:   c                   C   s   dt jv odt jddv S )NAPPENGINE_RUNTIMEDevSERVER_SOFTWARE )osenvirongetr-   r-   r-   r.   is_appengine_devf   s   rB   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_levell   s
   
rG   c                 K   s<   t tdd| i|}t dkrt|tjd t| d S )NmessagerD   filer-   )logfmtdictrG   printsysstderrr   rD   rH   paramsmsgr-   r-   r.   	log_debugu      
rS   c                 K   s<   t tdd| i|}t dv rt|tjd t| d S )NrH   rC   rI   r-   )rK   rL   rG   rM   rN   rO   r   rE   rP   r-   r-   r.   log_info|   rT   rU   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)rX   r-   r-   r.   _test_or_live_environment   s   
rZ   c                 C   s   dj t pd| dS )Nz/https://dashboard.stripe.com/{env}/logs/{reqid}test)envreqid)formatrZ   )
request_idr-   r-   r.   dashboard_link   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   r1   strrW   searchreprr^   rb   r-   r-   r.   fmt   s   


zlogfmt.<locals>.fmt c                    s   g | ]	\}} ||qS r-   r-   ).0rc   rd   ri   r-   r.   
<listcomp>       zlogfmt.<locals>.<listcomp>)joinsorteditems)propsr-   rl   r.   rK      s    rK   compare_digestc                 C   s   t | |S N)hmacrs   )val1val2r-   r-   r.   secure_compare   s   rx   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   )lenr1   byteszipordr   rf   )rv   rw   resultxyr-   r-   r.   rx      s   "c                  C   s   ddl m}  | S )Nr   OBJECT_CLASSES)stripe._object_classesr   r   r-   r-   r.   get_object_classes   s   r   r   RespV1)api_moderesprV   stripe_versionstripe_accountrQ   klass_r   r   c                C      d S rt   r-   r   rV   r   r   rQ   r   r   r-   r-   r.   convert_to_stripe_object      
r   c                C   r   rt   r-   r   r-   r-   r.   r      r   c             	   C   s*   ddl m} t| |||j|||d|dS )Nr   r   )rV   r   r   r   rQ   r   	requestorr   )stripe._api_requestorr   _convert_to_stripe_object_global_with_options)r   rV   r   r   rQ   r   r   r   r-   r-   r.   r      s   
)rQ   r   r   r   c                 C   r   rt   r-   r   r-   r-   r.   r         r   c                 C   r   rt   r-   r   r-   r-   r.   r     r   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	ryt| |sy| 
 } | d}t|trKt ||}	n	d urR}	n|}	|	j| | d}
|d urwt|
drwt|
ddkstt|
dd	krw||
_|
S td
| S )Nr   r   r   c                    s"   g | ]}t td | dqS )z%Union[StripeResponse, Dict[str, Any]])r   r   r   r   )r   r   rk   ir   r   r   r-   r.   rm   ,  s    z-_convert_to_stripe_object.<locals>.<listcomp>r$   )valueslast_responser   r   listsearch_resultr   )stripe._stripe_responser   stripe._stripe_objectr   r1   r   r   datar   rL   copyrA   rf   r   _construct_fromre   getattr_retrieve_params)r   rQ   r   r   r   stripe_responser   r   
klass_nameklassobjr-   r   r.   r     s@   

	


c                 C   s8   t | trdd | 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.
    c                 S   s   g | ]}t |qS r-   convert_to_dictr   r-   r-   r.   rm   b  s    z#convert_to_dict.<locals>.<listcomp>c                 S   s   i | ]	\}}|t |qS r-   r   )rk   kvr-   r-   r.   
<dictcomp>g  rn   z#convert_to_dict.<locals>.<dictcomp>)r1   r   rL   rq   )r   r-   r-   r.   r   X  s
   
	
r   idempotency_keyc                 C   r   rt   r-   r   r-   r-   r.   populate_headersl  s   r   c                 C   r   rt   r-   r   r-   r-   r.   r   r  s   c                 C   s   | d urd| iS d S )NzIdempotency-Keyr-   r   r-   r-   r.   r   v  s   Tc                 C   s   |   }|| |S rt   )r   update)r~   r   zr-   r-   r.   merge_dicts  s   
r   c                 C   s   t | }|S rt   )r   )idquotedIdr-   r-   r.   sanitize_id  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 rt   )class_method_name)selfr   r-   r-   r.   r3     s   
zclass_method_variant.__init__r   methodr    c                 C   s   || _ tt| S rt   )r   r   r   )r   r   r-   r-   r.   __call__  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   )r   ry   r1   r   r   )r)   r*   class_methodr   r   r   r-   r.   _wrapper  s   $z.class_method_variant.__get__.<locals>._wrapper)r4   r5   r   )r   r   r   r   r-   r   r.   __get__  s   
zclass_method_variant.__get__rt   )r'   
__module____qualname__r3   r   r   r   __annotations__r   r   r   r   r-   r-   r-   r.   r     s   
 r   )NNNNN)r   Nr    N)Cr4   ru   iologgingrN   r?   rW   r"   stripe._api_moder   urllib.parser   r   typing_extensionsr   r   typingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r@   rA   r   	getLoggerr   Loggerr   r:   r   DeprecationWarningrf   WarningintrB   rG   rS   rU   rZ   r`   rK   re   rx   r   r   r   r   r   r   r   r   r   r$   r   r-   r-   r-   r.   <module>   sr  
 0


2		


	
	
	





B


