
     hs                     r   d dl mZmZm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 d dlmZmZ e	j                            d          Z ej        d          Zg dZd Zd	 Zd
 Zd Zd Zd Zd Zd Z eed          rd Znd Zd Z 	 ddZ!d Z"d Z#d Z$d Z%d Z& G d de'          Z(dS )    )absolute_importdivisionprint_functionN)six)	parse_qsl
quote_plus
STRIPE_LOGstripe)ior   utf8log_info	log_debugdashboard_linklogfmtc                 |    t           j        r/t          | t           j                  r|                     d          S | S )Nutf-8)r   PY2
isinstance	text_typeencode)values    G/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/stripe/util.pyr   r      s6    
w :eS]33 ||G$$$    c                  b    dt           j        v o!dt           j                            dd          v S )NAPPENGINE_RUNTIMEDevSERVER_SOFTWARE )osenvironget r   r   is_appengine_devr#   %   s4    "*, "*..2; ; 2 r   c                  Z    t           j        dv rt           j        S t          dv rt          S d S )Ndebuginfo)r
   logr	   r"   r   r   _console_log_levelr)   +   s/    z&&&z	(	(	(tr   c                     t          t          dd| i|          }t                      dk    rt          |t          j                   t                              |           d S )Nmessager&   filer"   )r   dictr)   printsysstderrloggerr&   r+   paramsmsgs      r   r   r   4   s`    
00g000
1
1Cw&&c
####
LLr   c                     t          t          dd| i|          }t                      dv rt          |t          j                   t                              |           d S )Nr+   r%   r,   r"   )r   r.   r)   r/   r0   r1   r2   r'   r3   s      r   r   r   ;   sa    
00g000
1
1C000c
####
KKr   c                      t           j        d S t          j        dt           j                  } | d S |                                 d         S )Nzsk_(live|test)_r   )r
   api_keyrematchgroups)r:   s    r   _test_or_live_environmentr<   B   s@    ~H'88E}<<>>!r   c                 L    d                     t                      pd|           S )Nz/https://dashboard.stripe.com/{env}/logs/{reqid}test)envreqid)formatr<   )
request_ids    r   r   r   K   s0    <CC%''16 D   r   c                     d d                     fdt          |                                           D                       S )Nc                 ~   t           j        r%t          |d          r|                    d          }t	          |t           j                  st          j        |          }t          j        d|          rt          |          }t          j        d|           rt          |           } d
                    | |          S )Ndecoder   z\sz{key}={val}keyval)r   PY3hasattrrE   r   string_typesr   r9   searchreprrA   rF   s     r   fmtzlogfmt.<locals>.fmtR   s    7 	&wsH-- 	&**W%%C
 #s/00 	%-$$C9UC   	s))C9UC   	s))C$$#$666r    c                 .    g | ]\  }} ||          S r"   r"   ).0rG   rH   rN   s      r   
<listcomp>zlogfmt.<locals>.<listcomp>c   s'    JJJScc#smmJJJr   )joinsorteditems)propsrN   s    @r   r   r   Q   sK    7 7 7" 99JJJJF5;;==4I4IJJJKKKr   compare_digestc                 `    t          j        t          |           t          |                    S N)hmacrW   r   )val1val2s     r   secure_comparer]   i   s!    "4::tDzz:::r   c                    t          |           t          |          }} t          |           t          |          k    rdS d}t          j        rIt	          | t
                    r4t	          |t
                    rt          | |          D ]\  }}|||z  z  }n8t          | |          D ]'\  }}|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   )r   lenr   rI   r   byteszipord)r[   r\   resultxys        r   r]   r]   n   s     $ZZddt99D		!!57 	*z$.. 	*:dE3J3J 	*D$    1!a%  D$ * *1#a&&3q66/){r   c                      ddl m}  | S )Nr   OBJECT_CLASSES)stripe.object_classesrh   rg   s    r   get_object_classesrj      s    444444r   c                    d }t          | t          j        j                  r	| }|j        } t          | t
                    rfd| D             S t          | t                    rt          | t          j        j                  s| 	                                } | 
                    d          }t          |t          j                  r2t                      
                    |t          j        j                  }nt          j        j        }|                    | |          }|-t          |d          r|j        dk    s|j        dk    r||_        |S | S )Nc                 4    g | ]}t          |          S r"   )convert_to_stripe_object)rQ   ir8   stripe_accountstripe_versions     r   rR   z,convert_to_stripe_object.<locals>.<listcomp>   s>     
 
 
  %7NN 
 
 
r   object)rp   ro   last_responselistsearch_result)r   r
   stripe_responseStripeResponsedatars   r.   stripe_objectStripeObjectcopyr!   r   rK   rj   construct_fromrJ   rq   _retrieve_params)	respr8   rp   ro   r4   ru   
klass_nameklassobjs	    ```     r   rm   rm      s    O$.=>> $#$ '
 
 
 
 
 
 	
 
 
 	
 
D$		  
f"/) )   yy{{XXh''
j#"233 	6&((,,F0= EE (5E""))) # 
 
 X&& *&&CJ/,I,I#)C 
r   c                     t          | t                    rd | D             S t          | t                    rd t          j        |           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                 ,    g | ]}t          |          S r"   convert_to_dict)rQ   rn   s     r   rR   z#convert_to_dict.<locals>.<listcomp>   s     000q""000r   c                 4    i | ]\  }}|t          |          S r"   r   )rQ   kvs      r   
<dictcomp>z#convert_to_dict.<locals>.<dictcomp>   s&    EEE$!Q?1%%EEEr   )r   rs   r.   r   	iteritems)r   s    r   r   r      sa     #t 00C0000 
C		 EE#-2D2DEEEE
r   c                     | d| iS d S )NzIdempotency-Keyr"   )idempotency_keys    r   populate_headersr      s    "!?334r   c                 8    |}d }| || v r| |         }| |= ||}|S rY   r"   )r4   key_namedefault_valuer   params_values        r   read_special_variabler      s=    ELh&00h'8}Lr   c                 X    |                                  }|                    |           |S rY   )rz   update)rd   re   zs      r   merge_dictsr      s#    	AHHQKKKHr   c                 B    t          |           }t          |          }|S rY   )r   r   )idutf8idquotedIds      r   sanitize_idr      s    "XXF&!!HOr   c                   "    e Zd Zd Zd ZddZdS )class_method_variantc                     || _         d S rY   )class_method_name)selfr   s     r   __init__zclass_method_variant.__init__   s    !2r   c                     || _         | S rY   )method)r   r   s     r   __call__zclass_method_variant.__call__   s    r   Nc                 X     t          j         j                   fd            }|S )Nc                       j         g| R i |S t          |           dk    r5t          | d                   r j         | d         g| dd          R i |S t          j                  } || i |S )Nr      )r   r_   r   getattrr   )argskwargsclass_methodr   objtyper   s      r   _wrapperz.class_method_variant.__get__.<locals>._wrapper   s     #t{38888888TQ:d1gw#?#? #t{47@T!""X@@@@@@  'w0FGG#|T4V444r   )	functoolswrapsr   )r   r   r   r   s   ``` r   __get__zclass_method_variant.__get__   sF    		%	%	5 	5 	5 	5 	5 	5 
&	%	5 r   rY   )__name__
__module____qualname__r   r   r   r"   r   r   r   r      sF        3 3 3       r   r   )NNNN))
__future__r   r   r   r   rZ   r   loggingr0   r   r9   r
   r   stripe.six.moves.urllib.parser   r   r    r!   r	   	getLoggerr2   __all__r   r#   r)   r   r   r<   r   r   rJ   r]   rj   rm   r   r   r   r   r   rq   r   r"   r   r   <module>r      s-   @ @ @ @ @ @ @ @ @ @      				  



 				 				        ? ? ? ? ? ? ? ?Z^^L))
		8	$	$                L L L, 74!"" ; ; ; ;
  *   JN3 3 3 3l  (            6     r   