o
    i5                     @   st  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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mZ d dlZd dlZered 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r{e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 Z.dd Z/dd Z0dd Z1dd  Z2d!d" Z3e4ed#rd$d% Z5nd&d% Z5ed'ee*ef ed( f Z6e					dQd)d*d+ed'ee*ef f d,ee* d-ee* d.ee* d/eee*ef  d0eed1  d2edd1fd3d4Z7e					dQd)d*d+ee6 d,ee* d-ee* d.ee* d/eee*ef  d0eed1  d2eded1 fd5d4Z7					dQd)d*d+e6d,ee* d-ee* d.ee* d/eee*ef  d0eed1  d2eded1ed1 f fd6d4Z7eddd7d8d+ed'ee*ef f d/eee*ef  d0eed1  d9d:d2ed;e8dd1fd<d=Z9eddd7d8d+ee6 d/eee*ef  d0eed1  d9d:d2ed;e8ded1 fd>d=Z9ddd7d8d+e6d/eee*ef  d0eed1  d9d:d2ed;e8ded1ed1 f fd?d=Z9d@dA Z:edBe*dee*e*f fdCdDZ;edRdEdDZ;dBee*df deee*e*f df fdFdDZ;edGZ<dHdI Z=dJdK Z>dLe*defdMdNZ?G dOdP dPe@ZAdS )S    N)ApiMode
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/snowflake_co_dev_github/snow_flake_back_end_deploy/env/lib/python3.10/site-packages/stripe/_util.pyr%   A   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.   wrapperS   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.   	decorator9   s*   

zdeprecated.<locals>.decorator)r   )r   r   r   r9   r-   r8   r.   
deprecated3   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_deve   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_levelk   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_debugt      
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   "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   
F)rQ   r   is_v2_deleted_objectr   r   r   c                 C   r   rt   r-   r   rQ   r   r   r   r   r-   r-   r.   r         	r   c                 C   r   rt   r-   r   r-   r-   r.   r     r   c                    sf  d }ddl m} ddlm} t| |r| }tt|j} t| tr+ fdd| D S t| t	rt| |s| 
 } | d}	t|	trs|rNddlm}
 |
}n; dkrg|	d	krgdd
lm} | dd}||}n"ddlm} | |	}nd| v rd| v rt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]])r   r   r   r   )r   r   rk   ir   r   r   r-   r.   rm   (  s    z-_convert_to_stripe_object.<locals>.<listcomp>r$   )DeletedObjectV2zv2.core.event)get_v2_event_classr2   r>   )get_object_classdatanext_page_url)valueslast_responser   r   listsearch_resultr   )stripe._stripe_responser   stripe._stripe_objectr   r1   r   r   r   r   rL   copyrA   rf   stripe.v2._deleted_objectr   stripe.events._event_classesr   stripe._object_classesr   r   v2
ListObject_construct_fromre   getattr_retrieve_params)r   rQ   r   r   r   r   stripe_responser   r   
klass_namer   klassr   
event_typer   objr-   r   r.   r     sT   

	




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   p  s    z#convert_to_dict.<locals>.<listcomp>c                 S   s   i | ]	\}}|t |qS r-   r   )rk   kvr-   r-   r.   
<dictcomp>u  rn   z#convert_to_dict.<locals>.<dictcomp>)r1   r   rL   rq   )r   r-   r-   r.   r   f  s
   
	
r   idempotency_keyc                 C   r   rt   r-   r   r-   r-   r.   populate_headersz  s   r   c                 C   r   rt   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     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   urlc                 C   s   |  drdS dS )Nz/v2r   r   )
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 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)Br4   ru   loggingrN   r?   rW   r"   stripe._api_moder   urllib.parser   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   boolr   r   r   r   r   r   r   r$   r   r-   r-   r-   r.   <module>   s  
 0


2		


	
	
	



	
V


	