
    +h.                     N   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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 d dlmZ d dlZerd dlmZ ej:                  j=                  d      Z ej@                  d      Z!ejD                  e#d	<   g d
Z$ e%ed      rejL                  Z&n&es$ ed      Z'e(ddde)deee*      de+dee'ge'f   fdZ&d Z,d Z-d Z.d Z/d Z0d Z1d Z2 e%ed      rd Z3nd Z3d Z4eeee)ef   ed   f   Z5e	 	 	 	 	 d7d ee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d&fd'       Z6e	 	 	 	 	 d7d ee5   d!ee)   d"ee)   d#ee)   d$eee)ef      d%eed&      ded&   fd(       Z6	 	 	 	 	 d7d e5d!ee)   d"ee)   d#ee)   d$eee)ef      d%eed&      ded&ed&   f   fd)Z6d* Z7ed+e)dee)e)f   fd,       Z8ed8d-       Z8d+ee)df   deee)e)f   df   fd.Z8 ed/      Z9d$eee)ef      d0e)d1e9dee9   fd2Z:d3 Z;d4 Z< G d5 d6e=      Z>y)9    N)	parse_qsl
quote_plus)TypeTYPE_CHECKING)	CallableTypeVarUnionoverloadDictListcastAnyOptional)StripeResponse)StripeObject
STRIPE_LOGstripelogger)ior   log_info	log_debugdashboard_linklogfmt
deprecatedr   _T   category
stacklevel__msgr   r   returnc                4     dt         dt         f fd}|S )N__argr!   c                     	 _          S t         t              ri j                   j                  t
        j                  ut        j                        fd       }t        |       _        x _         |_          S t               r0t        j                          fd       }x _         |_         |S t        d       )Nc                     t        j                  dz          t        j                  ur | g|i |S s|s|rt	        | j
                   d       |       S )Nr   r   z() takes no arguments)warningswarnobject__new__	TypeError__name__)clsargskwargsr    r   has_initoriginal_newr   s      >/var/www/html/venv/lib/python3.12/site-packages/stripe/util.pyr)   z.deprecated.<locals>.decorator.<locals>.__new__F   sf    MMZ!^ $6>>9+CA$A&AA%46'3<<.8M(NOO+C00    c                  J    t        j                  dz           | i |S )Nr   r   )r&   r'   )r-   r.   r#   r    r   r   s     r1   wrapperz.deprecated.<locals>.decorator.<locals>.wrapperX   s,    MMZ!^ !$1&11r2   zY@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)   r4   r/   r0   r    r   r   s   `  @@r1   	decoratorzdeprecated.<locals>.decorator>   s    ',$E4($}} >>@.
1 /
1 !-W 5@EE$w'=%'2 (2 AFE$w'=005y: r2   )r   )r    r   r   r=   s   ``` r1   r   r   8   s    '	R '	B '	R r2   c                  n    dt         j                  v xr" dt         j                  j                  dd      v S )NAPPENGINE_RUNTIMEDevSERVER_SOFTWARE )osenvironget r2   r1   is_appengine_devrG   j   s3    "**, "**..2; 2 r2   c                  d    t         j                  dv rt         j                  S t        dv rt        S y )Ndebuginfo)r   logr   rF   r2   r1   _console_log_levelrM   p   s+    zz&&zz	(	(r2   c                     t        t        dd| i|      }t               dk(  rt        |t        j
                         t        j                  |       y )NmessagerJ   filerF   )r   dictrM   printsysstderrr   rJ   rO   paramsmsgs      r1   r   r   y   s>    
0g00
1Cw&c

#
LLr2   c                     t        t        dd| i|      }t               dv rt        |t        j
                         t        j                  |       y )NrO   rI   rP   rF   )r   rR   rM   rS   rT   rU   r   rK   rV   s      r1   r   r      s?    
0g00
1C00c

#
KKr2   c                      t         j                  y t        j                  dt         j                        } | y | j	                         d   S )Nzsk_(live|test)_r   )r   api_keyrematchgroups)r]   s    r1   _test_or_live_environmentr_      s=    ~~HH'8E}<<>!r2   c                 @    dj                  t               xs d|       S )Nz/https://dashboard.stripe.com/{env}/logs/{reqid}test)envreqid)formatr_   )
request_ids    r1   r   r      s(    <CC%'16 D  r2   c           
          d }dj                  t        | j                               D cg c]  \  }} |||       c}}      S c c}}w )Nc                    t        |d      r|j                  d      }t        |t              st        |      }t	        j
                  d|      rt        |      }t	        j
                  d|       rt        |       } dj                  | |      S )Ndecodezutf-8z\sz{key}={val}keyval)hasattrrh   r6   strr\   searchreprrd   ri   s     r1   fmtzlogfmt.<locals>.fmt   ss    3!**W%C
 #s#c(C99UC s)C99UC s)C###55r2    )joinsorteditems)propsrp   rj   rk   s       r1   r   r      s;    6" 886%++-3HIxsCSc]IJJIs   A
compare_digestc                 .    t        j                  | |      S N)hmacrv   )val1val2s     r1   secure_comparer|      s    ""4..r2   c           	      V   t        |       t        |      k7  ryd}t        | t              r1t        |t              r!t        | |      D ]  \  }}|||z  z  } |dk(  S t        | |      D ];  \  }}|t	        t        t        |            t	        t        t        |            z  z  }= |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   )lenr6   byteszipordr   rm   )rz   r{   resultxys        r1   r|   r|      s     t9D	!dE"z$'>D$  1!a% 
 { D$ @1#d3l+c$sA,.???@{r2   c                      ddl m}  | S )Nr   OBJECT_CLASSES)stripe.object_classesr   r   s    r1   get_object_classesr      s    4r2   Resprespr[   stripe_versionstripe_accountrW   klass_r   c                      y rx   rF   r   r[   r   r   rW   r   s         r1   convert_to_stripe_objectr           r2   c                      y rx   rF   r   s         r1   r   r      r   r2   c           
         d }t        | t        j                  j                        r| }t	        t
        |j                        } t        | t              r(| D cg c]  }t        t	        d|      ||||       c}S t        | t              rt        | t        j                  j                        s| j                         } | j                  d      }t        |t              r3t               j                  |t        j                  j                        }	n||}	nt        j                  j                  }	|	j!                  | ||||      }
|1t#        |
d      r%t%        |
d      dk(  st%        |
d      dk(  r||
_        |
S t	        d|       S c c}w )Nz%Union[StripeResponse, Dict[str, Any]])r   r(   )r   r   last_responselistsearch_resultr   )r6   r   stripe_responser   r   r   datar   r   rR   stripe_objectr   copyrE   rm   r   construct_fromrl   getattr_retrieve_params)r   r[   r   r   rW   r   r   i
klass_nameklassobjs              r1   r   r      s|    O$..==>D/../$ 	
  %<a@	
 		
 
D$	
f""//) yy{XXh'
j#&&(,,F00==E E((55E""))) # 
 X&h'61C*o= $*C 
ND))_	
s   !F	c                     t        | t              r| D cg c]  }t        |       c}S t        | t              r-| j	                         D ci c]  \  }}|t        |       c}}S | S c c}w c c}}w )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.
    )r6   r   convert_to_dictrR   rt   )r   r   kvs       r1   r   r   -  sd     #t,/0q"00 
C	25))+>$!Q?1%%>>
 1
 ?s   A)A.idempotency_keyc                      y rx   rF   r   s    r1   populate_headersr   A  s     r2   c                      y rx   rF   r   s    r1   r   r   H  s    r2   c                     | d| iS y )NzIdempotency-KeyrF   r   s    r1   r   r   M  s     "!?33r2   Tkey_namedefault_valuec                 2    |}d }| || v r| |   }| |= ||}|S rx   rF   )rW   r   r   valueparams_values        r1   read_special_variabler   X  s<     ELh&0h'8}Lr2   c                 H    | j                         }|j                  |       |S rx   )r   update)r   r   zs      r1   merge_dictsr   h  s    	AHHQKHr2   c                     t        |       }|S rx   )r   )idquotedIds     r1   sanitize_idr   n  s    "~HOr2   c                   X    e Zd ZU d Z ed      Zeed<   dedefdZd	de	e
e      fdZy)
class_method_variantc                     || _         y rx   )class_method_name)selfr   s     r1   r8   zclass_method_variant.__init__t  s
    !2r2   r   methodr!   c                 0    || _         t        t        |       S rx   )r   r   r   )r   r   s     r1   __call__zclass_method_variant.__call__{  s    At}r2   Nobjtypec                 ^     t        j                   j                         fd       }|S )Nc                       j                   g| i |S t        |       dkD  r-+t        | d         r j                   | d   g| dd  i |S t        j                        } || i |S )Nr   r   )r   r~   r6   r   r   )r-   r.   class_methodr   r   r   s      r1   _wrapperz.class_method_variant.__get__.<locals>._wrapper  s     #t{{38888D	A'tAw0
 #t{{47@T!"X@@@  'w0F0FG#T4V44r2   )r9   r:   r   )r   r   r   r   s   ``` r1   __get__zclass_method_variant.__get__  s)    		%	5 
&	5& r2   rx   )r+   
__module____qualname__r8   r   r   r   __annotations__r   r   r   r   rF   r2   r1   r   r   s  s?    3 	AKq Q HT#Y$7 r2   r   )NNNNN)r   Nr!   N)?r9   ry   r   loggingrT   rC   r\   r&   r   urllib.parser   r   typing_extensionsr   r   typingr   r   r	   r
   r   r   r   r   r   stripe.stripe_responser   stripe.stripe_objectr   rD   rE   r   	getLoggerr   Loggerr   __all__rl   r   r   DeprecationWarningrm   WarningintrG   rM   r   r   r_   r   r   r|   r   r   r   r   r   r   r   r   r   r(   r   rF   r2   r1   <module>r      s     	  
 	 	   . 1
 
 
 2 1ZZ^^L)
***84 4 l+"--J		B -?	// 4=)/ 	/
 
2$(	/dK, 4!"/
( ^T#s(^T&\9: 
 "$($('+-1
S#X.
/c] SM SM	
 T#s(^$ T.)*  
 
 "$($('+-1
t*c] SM SM	
 T#s(^$ T.)* 
. 
 "$($('+-1A*
A*c]A* SMA* SM	A*
 T#s(^$A* T.)*A* >4//0A*H( 
	#s(^ 
 
 
39%
4S>4  CLT#s(^$03DEa[ 
!6 !r2   