
    ChJ                        S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJrJrJr  S SK J!r!J"r"J#r#J$r$J%r%J&r&  \!(       a'  S S	K'J(r(   S S
K)J*r+   S SK-J.r/  S SK-J0r1   S SK2J3r4  S SK2J5r6  S r7S\S\SS4S jr8S\S\SS4S jr9 " S S\:5      r; " S S\;5      r< " S S\;5      r= " S S\$5      r> " S S\;5      r? " S S \;5      r@ " S! S"\;5      rA " S# S$\;5      rB " S% S&\;5      rCg! \, a     Nf = f! \, a     Nf = f! \, a     Nf = f)'    )BytesION)HTTPResponse)_util)RequestMetrics)APIConnectionError)AnyDictIterableListMappingMutableMappingOptionalTupleClassVarUnioncastoverloadAsyncIterable)TYPE_CHECKINGLiteralNoReturn	TypedDict	AwaitableNever)ParseResult)Session)Timeout)Client)ClientTimeout)StreamReaderc                  V    [        [        [        R                  " 5       S-  5      5      $ )Ni  )introundtime     V/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/stripe/_http_client.py_now_msr(   ?   s    uTYY[4'())r&   argskwargsreturn
HTTPClientc                       SSK Jn  [        U 0 UD6$ ! [         a     Of = f SSKn[        U 0 UD6$ ! [         a     Of = f SSKn[        U 0 UD6$ ! [         a     Of = f[        U 0 UD6$ )a  
This method creates and returns a new HTTPClient based on what libraries are available. It uses the following precedence rules:

1. Urlfetch (this is provided by Google App Engine, so if it's present you probably want it)
2. Requests (popular library, the top priority for all environments outside Google App Engine, but not always present)
3. Pycurl (another library, not always present, not as preferred as Requests but at least it verifies SSL certs)
4. urllib with a warning (basically always present, a reasonable final default)

For performance, it only imports what it's actually going to use. But, it re-calculates every time its called, so probably save its result instead of calling it multiple times.
r   urlfetchN)	google.appengine.apir/   UrlFetchClientImportErrorrequestsRequestsClientpycurlPycurlClientUrllib2Client)r)   r*   r/   r3   r5   s        r'   new_default_http_clientr8   C   s    /1 t.v..  
/ t.v..  
- T,V,,  
 $)&))s,    
  3 
A A A 
A A c                       SSK nSSKn[        U 0 UD6$ ! [         a     Of = f SSKn[        U 0 UD6$ ! [         a     Of = f[        U 0 UD6$ )zv
Similar to `new_default_http_client` above, this returns a client that can handle async HTTP requests, if available.
r   N)httpxanyioHTTPXClientr2   aiohttpAIOHTTPClientNoImportFoundAsyncClient)r)   r*   r:   r;   r=   s        r'   new_http_client_async_fallbackr@   f   ss    
, D+F++  
. d-f--  
 $T4V44s    
""5 
AAc                      \ rS rSr% \\   \S'    " S S\5      rSr	Sr
Sr\\   \S'   \\S	'       S5S\S\\\\4      S\S    4S jjrS\\\\\\\\4      4      S\\   S\S\\   4S jr S6S\\\\\\\4   4      4S jjr S6S\S\\\\\\\4   4      S\4S jjrS\S\4S jrS\\\4   S\\\4   4S jrS r  S7SS.S\S\S\\\4   S \S\\   S!\\\      S\\\\\\4   4   4S" jjjr  S7SS.S\S\S\\\4   S!\\\      S\\\\\\4   4   4
S# jjjrSS.S\S\S\\\4   S \S$\S\\   S!\\\      S\\\\\\4   4   4S% jjr S6SS.S\S\S\\\\4      S \S!\\\      S\\\\\\4   4   4S& jjjr  S6SS.S\S\S\\\\4      S \S!\\\      S\\\\\\4   4   4S' jjjr!S( r"  S7SS.S\S\S\\\4   S\\   S!\\\      S\\\\4   4S) jjjr#  S7SS.S\S\S\\\4   S!\\\      S\\$\%   \\4   4
S* jjjr&\'SS.S\S\S\\\4   S$\(S+   S\\   S!\\\      S\\\\\\4   4   4S, jj5       r)\'SS.S\S\S\\\4   S$\(S
   S\\   S!\\\      S\\$\%   \\\\4   4   4S- jj5       r)SS.S\S\S\\\4   S$\S\\   S!\\\      S\\\\\\4   4   4S. jjr) S6S\S\S\\\4   S\\%\\\\4   4   4S/ jjr* S6S\S\S\\\4   S\\$\%   \\\\4   4   4S0 jjr+S1 r,S2\S\-S   4S3 jr.S4r/g)8r,   }   namec                   6    \ rS rSr% \\   \S'   \\   \S'   Srg)HTTPClient._Proxy   httphttpsr%   N)__name__
__module____qualname____firstlineno__r   str__annotations____static_attributes__r%   r&   r'   _ProxyrE      s    sm}r&   rP            ?<   _proxy_verify_ssl_certsTNverify_ssl_certsproxyasync_fallback_clientc                    Xl         U(       a9  [        U[        5      (       a  X"S.n[        U[        5      (       d  [	        S5      eU(       a  UR                  5       OS U l        X0l        [        R                  " 5       U l
        g )N)rG   rH   zqProxy(ies) must be specified as either a string URL or a dict() with string URL under the https and/or http keys.)rU   
isinstancerM   dict
ValueErrorcopyrT   _async_fallback_client	threadinglocal_thread_local)selfrV   rW   rX   _libs        r'   __init__HTTPClient.__init__   si     "2%%%!&7eT**   ',ejjl&;#&__.r&   responseapi_connection_errornum_retriesmax_network_retriesc                     Ub  UOSnX4:  a  gUc  Uc   eUR                   $ Uu  pVnUb  SU;   a  US   S:X  a  gUS   S:X  a  gUS:X  a  gUS:  a  gg)	Nr   Fzstripe-should-retryfalsetrueTi  i  should_retry)rb   rf   rg   rh   ri   _status_coderheaderss           r'   _should_retryHTTPClient._should_retry   s     $7#B 	 -
 (333'444#+  $9X$E-.'9-.&8 # #r&   c                 ^    Uc  g Uu    p# [        US   5      $ ! [        [        4 a     g f = f)Nzretry-after)r"   KeyErrorr\   )rb   rf   ro   rq   s       r'   _retry_after_headerHTTPClient._retry_after_header   sB     !1	x.//*% 		s    ,,r+   c                 0   [        [        R                  SUS-
  -  -  [        R                  5      nU R	                  U5      n[        [        R                  U5      nU R                  U5      =(       d    SnU[        R                  ::  a  [        XC5      nU$ )z
Apply exponential backoff with initial_network_retry_delay on the number of num_retries so far as inputs.
Do not allow the number to exceed `max_network_retry_delay`.
      r   )minr,   INITIAL_DELAY	MAX_DELAY_add_jitter_timemaxrv   MAX_RETRY_AFTER)rb   rh   rf   sleep_secondsretry_afters        r'   _sleep_time_secondsHTTPClient._sleep_time_seconds   s     $$kAo(>?  

 --m< J44mD ..x8=A*444;Mr&   r   c                 F    USS[         R                  " SS5      -   -  -  nU$ )z~
Randomize the value in `[(sleep_seconds/ 2) to (sleep_seconds)]`.
Also separated method here to isolate randomness for tests
rR   rz   r   )randomuniform)rb   r   s     r'   r~   HTTPClient._add_jitter_time   s)    
 	FNN1a$8 899r&   headersc                     [        U R                  SS 5      n[        R                  (       a?  U(       a8  SUR	                  5       0n[        U5      n[        R                  " U5      US'   U$ U$ )Nlast_request_metricszX-Stripe-Client-Telemetry)getattrra   stripeenable_telemetrypayloadr[   jsondumps)rb   r   r   	telemetryrets        r'   _add_telemetry_header HTTPClient._add_telemetry_header  sj      ' 6 
 ""';&(<(D(D(FI w-C/3zz)/DC+,Jr&   c                     Uu    pESU;   aB  [         R                  (       a,  US   n[        5       U-
  n[        XgUS9U R                  l        g g g )Nz
Request-Idusage)r   r   r(   r   ra   r   )rb   rf   request_startr   ro   rq   
request_idrequest_duration_mss           r'   _record_request_metrics"HTTPClient._record_request_metrics  sS    !18#(?(?!,/J"))m";6Du7D3 )@#r&   )_usagemethodurl	post_datar   c          
      ,    U R                  UUUUSUUS9$ NFis_streamingri   r   _request_with_retries_internalrb   r   r   r   r   ri   r   s          r'   request_with_retriesHTTPClient.request_with_retries  s1     22 3 3 
 	
r&   c          
      ,    U R                  UUUUSUUS9$ NTr   r   r   s          r'   request_stream_with_retries&HTTPClient.request_stream_with_retries-  s1     22 3 3 
 	
r&   r   c                    U R                  U5      nSn [        5       n	 U(       a  U R                  XX45      n
OU R                  XX45      n
S nU R                  XX5      (       ar  U(       a#  [        R                  " SUR                  -  5        US-  nU R                  X5      n[        R                  " SXX-4-  5        [        R                  " U5        OU
b  U R                  XUS9  U
$ Uc   eUeM  ! [         a  nUnS n
 S nANS nAff = fNr   z Encountered a retryable error %srz   zBInitiating retry %i for request %s %s after sleeping %.2f seconds.r   )r   r(   request_streamrequestr   rr   r   log_infouser_messager   r$   sleepr   rb   r   r   r   r   r   ri   r   rh   r   rf   connection_errore
sleep_times                 r'   r   )HTTPClient._request_with_retries_internalA  s7    ,,W5#IM
 #22W H  $||FLH#' 
 !!K  $NN:*778 q !55kL
1&@A 

:&'00 v 1  $O+777**U  &  #$  s   .C5 5
D?DDc                    [        S5      e)Nz.HTTPClient subclasses must implement `request`NotImplementedErrorrb   r   r   r   r   r   s         r'   r   HTTPClient.request|  s     "<
 	
r&   c                    [        S5      e)Nz5HTTPClient subclasses must implement `request_stream`r   r   s         r'   r   HTTPClient.request_stream  s     "C
 	
r&   c                     [        S5      e)Nz,HTTPClient subclasses must implement `close`r   rb   s    r'   closeHTTPClient.close  s    !:
 	
r&   c          
      H   #    U R                  UUUUSUUS9I S h  vN $  N7fr   $_request_with_retries_internal_asyncr   s          r'   request_with_retries_async%HTTPClient.request_with_retries_async  s>      >> 3 ? 
 
 	
 
   " "c          
      H   #    U R                  UUUUSUUS9I S h  vN $  N7fr   r   r   s          r'   !request_stream_with_retries_async,HTTPClient.request_stream_with_retries_async  s>      >> 3 ? 
 
 	
 
r   Fc                   #    g 7fNr%   rb   r   r   r   r   r   ri   r   s           r'   r   /HTTPClient._request_with_retries_internal_async  s
      .1   c                   #    g 7fr   r%   r   s           r'   r   r     s      ?Br   c                Z  #    U R                  U5      nSn [        5       n	 U(       a  U R                  XX45      I S h  vN n
OU R                  XX45      I S h  vN n
S nU R                  XX5      (       au  U(       a#  [        R                  " SUR                  -  5        US-  nU R                  X5      n[        R                  " SXX-4-  5        U R                  U5      I S h  vN   OU
b  U R                  XUS9  U
$ Uc   eUeM   N N! [         a  nUnS n
 S nANS nAff = f NB7fr   )r   r(   request_stream_asyncrequest_asyncr   rr   r   r   r   r   sleep_asyncr   r   s                 r'   r   r     sb     ,,W5#IM %)%>%>W&  H &*%7%7W&  H $( 
 !!K  $NN:*778 q !55kL
1&@A &&z222'00 v 1  $O+777**Y 
   &  #$  * 3s]   D+D D
D DD  BD+&D)'#D+
D D 
D&D!D+!D&&D+c                    #    U R                   b$  U R                   R                  XX45      I S h  vN $ [        S5      e N7f)Nz4HTTPClient subclasses must implement `request_async`)r^   r   r   rb   r   r   r   r   s        r'   r   HTTPClient.request_async  sM      &&244BBW   "B
 	
   -A?Ac                    #    U R                   b$  U R                   R                  XX45      I S h  vN $ [        S5      e N7f)Nz;HTTPClient subclasses must implement `request_stream_async`)r^   r   r   r   s        r'   r   HTTPClient.request_stream_async%  sM      &&244IIW   "I
 	
r   c                    #    U R                   b"  U R                   R                  5       I S h  vN $ [        S5      e N7f)Nz2HTTPClient subclasses must implement `close_async`)r^   close_asyncr   r   s    r'   r   HTTPClient.close_async0  s?     &&244@@BBB!@
 	
 Cs   +?=?secsc                 h    U R                   b  U R                   R                  U5      $ [        S5      e)Nz,HTTPClient subclasses must implement `sleep`)r^   r   r   rb   r   s     r'   r   HTTPClient.sleep_async7  s5    &&2..::4@@!:
 	
r&   )r^   rT   ra   rU   TNNNr   )NN)0rI   rJ   rK   rL   r   rM   rN   r   rP   r}   r|   r   r   boolr   rd   r   r   r"   r   r   rr   rv   floatr   r~   r   r   r   r   r   r   r   r   r   r   r   bytesr   r   r   r   r   r   r   r   r   rO   r%   r&   r'   r,   r,   }   s"   
3-  IMOV "&.28<// c6k*+/  (5	/4-5c8GCH4E+F!FGH- ''9:- 	-
 &c]-` HL
 sCc1B'B!CD
 BF 5c738+<!<=> 
	4e  sCx(	c	 -1
 '+

 
 c"	

 
 &c]
 c#
 
sCc**	+
2  
 '+

 
 c"	
 c#
 
sCc**	+
: '+9+9+ 9+ c"	9+
 9+ 9+ &c]9+ c#9+ 
sCc**	+9+@ 
 '+

 
 '#s(+,	

 
 c#
 
sCc**	+
$ 
 '+

 
 '#s(+,	

 
 c#
 
sCc**	+

 -1
 '+

 
 c"	
 &c]
 c#
 
sC}	
2  
 '+

 
 c"	
 c#
 
}U#S#-	.
(  '+
1
1 
1 c"	
1 en
1 &c]
1 c#
1 
sCc**	+
1 
1  '+
B
B 
B c"	
B dm
B &c]
B c#
B 
}U#S'#s(*;;	<
B 
B* '+;+;+ ;+ c"	;+ ;+ &c];+ c#;+ 
sCc**	+;+| LP	
	
 #	
.5c3h.?	
	uc738,,	-	
 LP	
	
 #	
.5c3h.?	
	}U#S'#s(*;;	<	


 
)D/ 
r&   c                   2  ^  \ rS rSrSr      SS\\\\\4   4   S\S   S\	S\\\
\R                  4      S	\\   4
U 4S
 jjjr SS\
S\
S\\\
\
4      S\\\\\
\
4   4   4S jjr SS\
S\
S\\\
\
4      S\\\\\
\
4   4   4S jjr\S\
S\
S\\\
\
4      S\S   S\\\\\
\
4   4   4
S j5       r\S\
S\
S\\\
\
4      S\S   S\\\\\
\
4   4   4
S j5       rS\
S\
S\\\
\
4      S\	S\\\\4   \\\
\
4   4   4
S jrS\S\4S jrS rSrU =r$ )r4   i?  r3   TtimeoutsessionRequestsSessionrV   rW   rX   c                 b   > [         [        U ]  UUUS9  X l        Xl        Uc  SS KnUnX`l        g NrV   rW   rX   r   )superr4   rd   _session_timeoutr3   )
rb   r   r   rV   rW   rX   rc   r*   r3   	__class__s
            r'   rd   RequestsClient.__init__B  s@     	nd,-"7 	- 	

  <Dr&   r   r   r   r+   c                 $    U R                  XX4SS9$ NFr   _request_internalr   s        r'   r   RequestsClient.request[  s#     %%% & 
 	
r&   c                 $    U R                  XX4SS9$ NTr   r   r   s        r'   r   RequestsClient.request_streamf  s#     %%$ & 
 	
r&   r   c                     g r   r%   rb   r   r   r   r   r   s         r'   r    RequestsClient._request_internalq       .1r&   Fc                     g r   r%   r   s         r'   r   r  {  s     03r&   c                    0 nU R                   (       a  [        R                  US'   OSUS'   U R                  (       a  U R                  US'   U(       a  SUS'   [	        U R
                  SS 5      c<  U R                  =(       d    U R                  R                  5       U R
                  l	          [        SU R
                  R                  5      R                  " UU4UUU R                  S.UD6nU(       a  UR                  n	OUR                  n	UR                   n
W	W
WR&                  4$ ! [         a  n[        S	U< 35      eS nAff = f! ["         a  nU R%                  U5         S nANPS nAff = f)
NverifyFproxiesTstreamr   r   )r   datar   a  Warning: It looks like your installed version of the "requests" library is not compatible with Stripe's usage thereof. (HINT: The most likely cause is that your "requests" library is out of date. You can fix that by running "pip install -U requests".) The underlying error was: )rU   r   ca_bundle_pathrT   r   ra   r   r3   r   r   r   r   r   	TypeErrorrawcontentrp   	Exception_handle_request_errorr   )rb   r   r   r   r   r   r*   resultr   r  rp   s              r'   r   r    sh    !!%44F8$F8;; $F9#F84%%y$7?8!6!6!8 &"	*%t'9'9'A'A' 		
 $" MM	 	(  **
 !.. ,,K V^^331   346 &  	* &&q))	*s7   /A D* /,E *
E4EEE 
E0E++E0r   c                 2   [        XR                  R                  R                  5      (       a+  Sn[	        U5      R
                  < S[        U5      < 3nSnGO[        UU R                  R                  R                  U R                  R                  R                  45      (       a*  Sn[	        U5      R
                  < S[        U5      < 3nSnO[        XR                  R                  R                  5      (       a*  Sn[	        U5      R
                  < S[        U5      < 3nSnOFSnS[	        U5      R
                  < S3n[        U5      (       a  US	[        U5      < 3-  nOUS
-  nSn[        R                  " U5      SU< S3-   n[        X$S9Ue)NCould not verify Stripe's SSL certificate.  Please make sure that your network is not intercepting certificates.  If this problem persists, let us know at support@stripe.com.: FziUnexpected error communicating with Stripe.  If this problem persists, let us know at support@stripe.com.TzUnexpected error communicating with Stripe. It looks like there's probably a configuration issue locally.  If this problem persists, let us know at support@stripe.com.A  was raisedz with error message z with no error message

(Network error: )rm   )rZ   r3   
exceptionsSSLErrortyperI   rM   r   ConnectionErrorRequestExceptiontextwrapfillr   rb   r   msgerrrn   s        r'   r  $RequestsClient._handle_request_error  s[    a11::;;&  #1g..A7C L((00((88
 
& 
 #1g..A7CL==33DDEE& 
 #1g..A7C L.  (,Aw'7'79C1vv3q6;;// LmmC #EE @aGr&   c                 ~    [        U R                  SS 5      b%  U R                  R                  R                  5         g g )Nr   )r   ra   r   r   r   s    r'   r   RequestsClient.close  s5    4%%y$7C&&,,. Dr&   )r   r   r3   )P   NTNNNr   )rI   rJ   rK   rL   rC   r   r   r   r   r   rM   r,   rP   rd   r   r   r"   r   r   r   r   r   r   r  r   r  r   rO   __classcell__r   s   @r'   r4   r4   ?  s   D 68/3!%9=6:ueE5L112 +, 	
 c:#4#4456  (
3 < 	
	
 	
 '#s(+,		
 
uc738,,	-	
  	
	
 	
 '#s(+,		
 
sCc**	+	
 11 1 '#s(+,	1 dm1 
sCc**	+1 1 33 3 '#s(+,	3 en3 
uc738,,	-3 3=4=4 =4 '#s(+,	=4 =4 
uUCZ #wsCx'88	9=4~3Hy 3HX 3Hj/ /r&   r4   c                     ^  \ rS rSrSr     SS\S\\R                     S\	S\\   4U 4S jjjr
 SS	\S
\S\\\4   S\\\	\\\4   4   4S jjr SS	\S
\S\\\4   S\\\	\\\4   4   4S jjr\S	\S
\S\\\4   S\S   S\\\	\4   4
S j5       r\S	\S
\S\\\4   S\S   S\\\	\4   4
S j5       rS	\S
\S\\\4   4S jrS\S
\S\4S jrS rSrU =r$ )r1   i  r/   TrV   rW   deadlinerX   c                    > [         [        U ]  UUUS9  U(       a  [        S5      eXl        X0l        Uc  SSKJn  UnXPl        g )Nr   zNo proxy support in urlfetch library. Set stripe.default_http_client to either RequestsClient, PycurlClient, or Urllib2Client instance to use a proxy.r   r.   )r   r1   rd   r\   rU   	_deadliner0   r/   )rb   rV   rW   r(  rX   rc   r/   r   s          r'   rd   UrlFetchClient.__init__  s[     	nd,-"7 	- 	
 J  "2 "<5Dr&   r   r   r   r+   c                 $    U R                  XX4SS9$ r   r   r   s        r'   r   UrlFetchClient.request$  #     %%% & 
 	
r&   c                 $    U R                  XX4SS9$ r   r   r   s        r'   r   UrlFetchClient.request_stream+  #     %%$ & 
 	
r&   r   c                     g r   r%   r   s         r'   r    UrlFetchClient._request_internal2       $'r&   Fc                     g r   r%   r   s         r'   r   r3  <        #r&   c           	          U R                   R                  UUUU R                  U R                  US9nU(       a=  [        R                  R                  [        R                  WR                  5      5      nOWR                  nXR                  UR                  4$ ! U R                   R                   a  nU R                  Xr5         S nANS nAff = f)N)r   r   r   validate_certificater(  r   )r/   fetchrU   r*  Errorr  r   ior   rM   encoder  rp   r   )	rb   r   r   r   r   r   r  r   r  s	            r'   r   r3  F  s    	/]](( &*%;%;! ) 
F hh&&szz&..'ABGnnG**FNN:: }}"" 	/&&q..	/s   2B C6CCr   c                 b   [        XR                  R                  5      (       a  SU< S3nOP[        XR                  R                  5      (       a  SnO)[        XR                  R                  5      (       a  SnOSn[
        R                  " U5      S-   [        U5      -   S-   n[        U5      Ue)Nz6The Stripe library attempted to fetch an invalid URL (zg). This is likely due to a bug in the Stripe Python bindings. Please let us know at support@stripe.com.z0There was a problem retrieving data from Stripe.zThere was a problem receiving all of your data from Stripe.  This is likely due to a bug in Stripe. Please let us know at support@stripe.com.hUnexpected error communicating with Stripe. If this problem persists, let us know at support@stripe.com.r  r  )	rZ   r/   InvalidURLErrorDownloadErrorResponseTooLargeErrorr  r  rM   r   )rb   r   r   r  s       r'   r  $UrlFetchClient._handle_request_errore  s    a6677
 -02  ==6677DC==>>??< G 
 mmC #99CFBSH %1,r&   c                     g r   r%   r   s    r'   r   UrlFetchClient.close~      r&   )r*  rU   r/   )TN7   NNr   )rI   rJ   rK   rL   rC   r   r   r,   rP   r"   rd   rM   r   r   r   r   r   r   r   r   r   r  r   r  r   rO   r%  r&  s   @r'   r1   r1     s   D "&-16:!! 
))*! 	!
  (
3! !H LP

 #
.5c3h.?
	sCc**	+
 LP

 #
.5c3h.?
	wWS#X..	/
 '' ' c"	' dm' 
wS 	!' ' ## # c"	# en# 
sC}	# #;; ; c"	;>-y -s -x -2 r&   r1   c                   6    \ rS rSr% \S   \S'   \S   \S'   Srg)rP   i  r   rG   rH   r%   NrI   rJ   rK   rL   r   rN   rO   r%   r&   r'   rP   rP     s    
=
!!M""r&   rP   c                     ^  \ rS rSr%  " S S\SS9rSr\\   \S'       SS	\	S
\\
R                     S\\
   4U 4S jjjrS r SS\\\4   S\\\\\\4   4   4S jjr SS\\\4   S\\\\\\4   4   4S jjr\S\S\S\\\4   S\S   S\\\\4   4
S j5       r\S\S\S\\\4   S\S   S\\\\\\4   4   4
S j5       rS\S\S\\\4   S\\\\4   \\\\4   4   4S jrS\S\4S jrS\S   4S jrS rSrU =r $ ) r6   i  c                   6    \ rS rSr% \S   \S'   \S   \S'   Srg)PycurlClient._ParsedProxyi  r   rG   rH   r%   NrH  r%   r&   r'   _ParsedProxyrK    s    }%%&&r&   rL  F)totalr5   _parsed_proxyTrV   rW   rX   c                 B  > [         [        U ]  UUUS9  Uc  SS KnUnX@l        UR	                  5       U l        0 U l        U R                  (       aO  SSKJ	n  U R                  nUR                  5        H(  u  pU" [        [        U	5      5      U R                  U'   M*     g g )Nr   r   )urlparse)r   r6   rd   r5   Curl_curlrN  rT   urllib.parserP  itemsr   rM   )rb   rV   rW   rX   rc   r5   rP  proxy_schemevaluer   s             r'   rd   PycurlClient.__init__  s     	lD*-"7 	+ 	
 <DYY[
 ;;-[[F!' .6d36F-G""6* "0	 r&   c                     SU;  a  0 $ UR                  SS5      S   n[        R                  " U5      n[        S [        U5      R	                  5        5       5      $ )Nz
rz   c              3   J   #    U  H  u  pUR                  5       U4v   M     g 7fr   lower.0kvs      r'   	<genexpr>-PycurlClient.parse_headers.<locals>.<genexpr>  s     E/DtqQWWYN/D   !#)splitemailmessage_from_stringr[   rT  )rb   r  raw_headersr   s       r'   parse_headersPycurlClient.parse_headers  sR    Ijj+A.++K8EtG}/B/B/DEEEr&   r   r+   c                 $    U R                  XX4SS9$ r   r   r   s        r'   r   PycurlClient.request  r.  r&   c                 $    U R                  XX4SS9$ r   r   r   s        r'   r   PycurlClient.request_stream  r1  r&   r   r   r   c                     g r   r%   r   s         r'   r   PycurlClient._request_internal  r4  r&   c                     g r   r%   r   s         r'   r   ro    r  r&   c           
      
   [         R                  R                  5       n[         R                  R                  5       nU R                  R	                  5         U R                  U5      nU(       Ga  UR                  (       a:  U R                  R                  U R                  R                  UR                  5        UR                  (       a:  U R                  R                  U R                  R                  UR                  5        UR                  (       d  UR                  (       aK  U R                  R                  U R                  R                  UR                  < SUR                  < 35        US:X  a1  U R                  R                  U R                  R                  S5        OUS:X  aa  U R                  R                  U R                  R                   S5        U R                  R                  U R                  R"                  U5        O>U R                  R                  U R                  R$                  UR'                  5       5        U R                  R                  U R                  R(                  U5        U R                  R                  U R                  R*                  UR,                  5        U R                  R                  U R                  R.                  UR,                  5        U R                  R                  U R                  R0                  S5        U R                  R                  U R                  R2                  S5        U R                  R                  U R                  R4                  S5        U R                  R                  U R                  R6                  [9        U5      R;                  5        V	V
s/ s H  u  pU	< SU
< 3PM     sn
n	5        U R<                  (       a?  U R                  R                  U R                  R>                  [@        RB                  5        O0U R                  R                  U R                  RD                  S5         U R                  RG                  5         U(       a  URM                  S	5        UnOURO                  5       RQ                  S
5      nU R                  RS                  U R                  RT                  5      nU RW                  URO                  5       RQ                  S
5      5      nXU4$ s  sn
n	f ! U R                  RH                   a  nU RK                  U5         S nANS nAff = f)N:getrz   post   r$  r  Fr   utf-8),r   r;  r   rR  reset
_get_proxyhostnamesetoptr5   PROXYport	PROXYPORTusernamepasswordPROXYUSERPWDHTTPGETPOST
POSTFIELDSCUSTOMREQUESTupperURLWRITEFUNCTIONwriteHEADERFUNCTIONNOSIGNALCONNECTTIMEOUTTIMEOUT
HTTPHEADERr[   rT  rU   CAINFOr   r	  SSL_VERIFYHOSTperformerrorr  seekgetvaluedecodegetinfoRESPONSE_CODErh  )rb   r   r   r   r   r   brq   rW   r_  r`  r   rcontentrcodes                 r'   r   ro    sx    HH88##% 	

$~~

!!$++"3"3U^^Dzz

!!$++"7"7D~~

!!KK,,$~~u~~>
 U?JJdkk1115vJJdkk..2JJdkk44i@JJdkk77H 	

$++//3/

$++33QWW=

$++44hnnE

$++..2

$++44b9

$++--r2

KK""+/=+>+>+@A+@41A+@A	
 !!JJdkk00&2G2GHJJdkk88%@	*JJ  FF1IHzz|**73H

""4;;#<#<=$$X%6%6%8%?%?%HI''+ B {{   	*&&q))	*s   	T'T" "U<UUr   c                    UR                   S   U R                  R                  U R                  R                  U R                  R                  4;   a  SnSnOFUR                   S   U R                  R
                  U R                  R                  4;   a  SnSnOSnSn[        R                  " U5      S-   UR                   S   -   S	-   n[        X#S
9Ue)Nr   zCould not connect to Stripe.  Please check your internet connection and try again.  If this problem persists, you should check Stripe's service status at https://twitter.com/stripestatus, or let us know at support@stripe.com.Tr  Fr>  r  rz   r  rm   )
r)   r5   E_COULDNT_CONNECTE_COULDNT_RESOLVE_HOSTE_OPERATION_TIMEOUTEDE_SSL_CACERTE_SSL_PEER_CERTIFICATEr  r  r   )rb   r   r  rn   s       r'   r  "PycurlClient._handle_request_error"  s    66!9KK))KK..KK--
 
&   LVVAYKK$$KK..
 

&  !LG  !LmmC #99AFF1IEK @aGr&   r   c                     U R                   (       aS  U R                   nU(       a  UR                  S5      S   OS nU(       a#  UR                  X2R                  USS 5      5      $ g )Nrr  r   )rN  rd  rs  )rb   r   rW   rV  s       r'   rx  PycurlClient._get_proxyE  sP    &&E*-SYYs^A&4Fyy6!B<)@AAr&   c                     g r   r%   r   s    r'   r   PycurlClient.closeM  rE  r&   )rR  rN  r5   r   r   )!rI   rJ   rK   rL   r   rL  rC   r   rN   r   r,   rP   rd   rh  r   rM   r   r"   r   r   r   r   r   r   r   r   r  r   r  rx  r   rO   r%  r&  s   @r'   r6   r6     s4   'y ' DL)) "&-16: H H 
))* H  (
3	 H  HDF BF
$+CH$5
	sCc**	+
 BF
$+CH$5
	wWS#X..	/
 '' ' c"	' dm' 
wS 	!' ' 11 1 c"	1 en1 
sCc**	+1 1F(F( F( c"	F( 
uS'\"Cc)::	;F(P!Hy !HX !HF-!8  r&   r6   c                     ^  \ rS rSrSr    SS\S\\R                     S\\   4U 4S jjjr	 SS\
S	\
S
\\
\
4   S\\
\\\
\
4   4   4S jjr SS\
S	\
S
\\
\
4   S\\\\\
\
4   4   4S jjr\S\
S	\
S
\\
\
4   S\S   S\\
\\4   4
S j5       r\S\
S	\
S
\\
\
4   S\S   S\\\\4   4
S j5       rS\
S	\
S
\\
\
4   4S jrS\S\4S jrS rSrU =r$ )r7   iR  zurllib.requestTrV   rW   rX   c                 X  > [         [        U ]  UUUS9  Uc  SS KJn  UnX@l        SS KJn  X`l        S U l	        U R                  (       aa  U R
                  R                  [        [        [        [        4   U R                  5      5      nU R
                  R                  U5      U l	        g g r   )r   r7   rd   urllib.requestr   urllibrequesturllib.errorr  urlliberror_openerrT   ProxyHandlerr   r	   rM   build_opener)	rb   rV   rW   rX   rc   r  r  proxy_handlerr   s	           r'   rd   Urllib2Client.__init__U  s     	mT+-"7 	, 	
 <2 D!*& ;; !..;;T#s(^T[[1M  --::=IDL r&   r   r   r   r+   c                 $    U R                  XX4SS9$ r   r   r   s        r'   r   Urllib2Client.requestv  r.  r&   c                 $    U R                  XX4SS9$ r   r   r   s        r'   r   Urllib2Client.request_stream}  r1  r&   r   Fc                     g r   r%   r   s         r'   r   Urllib2Client._request_internal  r6  r&   c                     g r   r%   r   s         r'   r   r    s     ),r&   c           	        ^ [        U[        5      (       a  UR                  S5      nU R                  R	                  X$[        [        [        [        4   U5      5      nTS;  a  U4S jUl         U R                  (       a  U R                  R                  U5      OU R                  R                  U5      nU(       a  UnOUR                  5       nUR                  n	[        UR                  5       5      n[        S [)        [        U5      R+                  5       5       5       5      nWW	U4$ ! U R                  R                    a?  n
U
R                  n	U
R                  5       n[        U
R                  5       5      n S n
A
NS n
A
fU R                  R"                  [$        4 a  n
U R'                  U
5         S n
A
NS n
A
ff = f)Nrv  )rs  rt  c                  $   > T R                  5       $ r   )r  )r   s   r'   <lambda>1Urllib2Client._request_internal.<locals>.<lambda>  s    V\\^r&   c              3   J   #    U  H  u  pUR                  5       U4v   M     g 7fr   r[  r]  s      r'   ra  2Urllib2Client._request_internal.<locals>.<genexpr>  s     I-HTQ1779a.-Hrc  )rZ   rM   r<  r  Requestr   r   
get_methodr  openurlopenreadcoder[   infor  	HTTPErrorURLErrorr\   r  iterrT  )rb   r   r   r   r   r   reqrf   r  r  r   lhs    `          r'   r   r    sd    i%%!((1I  ((DS!97C
 (3CN	*
 << !!#&''//4  ##==?MME8==?+G IT$w-2E2E2G-HII"" )) 	%FFEvvxH1668nG  )):6 	*&&q))	*s%   1BD. .G 5F#G %F;;G r   c                 n    Sn[         R                  " U5      S-   [        U5      -   S-   n[        U5      Ue)Nr>  r  r  )r  r  rM   r   )rb   r   r  s      r'   r  #Urllib2Client._handle_request_error  s>    K 	 mmC #99CFBSH %1,r&   c                     g r   r%   r   s    r'   r   Urllib2Client.close  rE  r&   )r  r  r  r   r   )rI   rJ   rK   rL   rC   r   r   r,   rP   rd   rM   r   r   r"   r   r   r   r   r   r   r   r  r   r  r   rO   r%  r&  s   @r'   r7   r7   R  s   D "&-16:JJ 
))*J  (
3	J JD LP

 #
.5c3h.?
	sCc**	+
 LP

 #
.5c3h.?
	|S'#s("33	4
 ## # c"	# en# 
sC}	# # ,, , c"	, dm, 
|S#%	&, ,)#)# )# c"	)#V-y -X - r&   r7   c                     ^  \ rS rSr% Sr\S   \S'      SS\\\S4      4U 4S jjjr	S r
S	\S
\S\\\4   4S jr SS	\S
\S\\\4   S\\\\\\4   4   4S jjr SS	\S
\S\\\4   S\\\\\\4   4   4S jjrS\S\4S jr SS	\S
\S\\\4   S\\\   \\\\4   4   4S jjr SS	\S
\S\\\4   S\\\   \\\\4   4   4S jjrS rS rSrU =r$ )r<   i  r:   HTTPXClientType_clientr   HTTPXTimeoutc                   > [         [        U ]
  " S0 UD6  Uc  SS KnUnX0l        SS KnX`l        0 nU R
                  (       a&  [        R                  " [        R                  S9US'   OSUS'   U R                  R                  " S0 UD6U l        S U l        U(       a!  U R                  R                  " S0 UD6U l        Xl        g )Nr   cafiler  Fr%   )r   r<   rd   r:   r;   rU   sslcreate_default_contextr   r	  AsyncClient_client_asyncr  r   r   )rb   r   allow_sync_methodsrc   r*   r:   r;   r   s          r'   rd   HTTPXClient.__init__  s     	k4)3F3<D

!!"99,, F8  %F8!ZZ33=f=::,,6v6DLr&   c                 8    U R                   R                  U5      $ r   )r;   r   r   s     r'   r   HTTPXClient.sleep_async  s    zz%%r&   r   r   r   c                     0 nU R                   (       a  U R                   US'   U R                  (       a  U R                  US'   X4X4=(       d    0 S.UE/$ )Nr  r   )r   r  )rT   r   )rb   r   r   r   r   r*   s         r'   _get_request_args_kwargs$HTTPXClient._get_request_args_kwargs  sQ     ;; $F9== $F9MbCFC
 	
r&   r+   c                 4   U R                   c  [        S5      eU R                  XX45      u  pV U R                   R                  " U0 UD6nWR                  n	UR                  n
UR                  nXU4$ ! [         a  nU R                  U5         S nANHS nAff = f)NzqStripe: HTTPXClient was initialized with allow_sync_methods=False, so it cannot be used for synchronous requests.)	r  RuntimeErrorr  r   r  r  r  rp   r   rb   r   r   r   r   r)   r*   rf   r   r  rp   response_headerss               r'   r   HTTPXClient.request  s     <<A  44
	*||++T<V<H ""**#++%555  	*&&q))	*s   A2 2
B<BBc                    #    U R                  XX45      u  pV U R                  R                  " U0 UD6I S h  vN nWR
                  n	UR                  n
UR                  nXU4$  N,! [         a  nU R	                  U5         S nANJS nAff = f7fr   )r  r  r   r  r  r  rp   r   r  s               r'   r   HTTPXClient.request_async   s      44
	*!//77HHHH ""**#++%555 I 	*&&q))	*=   BA& A$A& (B$A& &
B0BBBBr   c                     SnS[        U5      R                  < S3nSn[        R                  " U5      SU< S3-   n[	        X$S9UeNr>  r  r  Tr  r  rm   r  rI   r  r  r   r  s        r'   r  !HTTPXClient._handle_request_error4  I    C 	 $(7#3#35mmC #EE @aGr&   c                 l   U R                   c  [        S5      eU R                  XX45      u  pV U R                   R                  U R                  R
                  " U0 UD6SS9nWR                  5       n	UR                  n
UR                  nXU4$ ! [         a  nU R                  U5         S nANLS nAff = f)NztStripe: HTTPXClient was not initialized with allow_sync_methods=True, so it cannot be used for synchronous requests.Tr   r  )r  r  r  sendr  build_requestr  r  
iter_bytesrp   r   rb   r   r   r   r   r)   r*   rf   r   r  rp   s              r'   r   HTTPXClient.request_stream?  s     <<A  44
	*||((**88$I&I ) H %%'**""W,,  	*&&q))	*s   4B 
B3B..B3c                 X  #    U R                  XX45      u  pV U R                  R                  U R                  R                  " U0 UD6SS9I S h  vN nWR                  5       n	UR                  n
UR                  nXU4$  N0! [         a  nU R                  U5         S nANNS nAff = f7f)NTr  )	r  r  r  r  r  r  aiter_bytesrp   r   r  s              r'   r    HTTPXClient.request_stream_asyncW  s      44
	*!//44**88$I&I 5  H &&(**""W,,  	*&&q))	*s@   B*7B B B ,B* B 
B'B"B*"B''B*c                 T    U R                   b  U R                   R                  5         g g r   )r  r   r   s    r'   r   HTTPXClient.closej  s!    <<#LL  $r&   c                 T   #    U R                   R                  5       I S h  vN   g  N7fr   )r  acloser   s    r'   r   HTTPXClient.close_asyncn  s       '')))   (&()r  r  r   r;   r:   )r$  FNr   )rI   rJ   rK   rL   rC   r   rN   r   r   rd   r   rM   r   r  r   r   r"   r   r   r  r   r  r
   r   r   r   r   r   rO   r%  r&  s   @r'   r<   r<     s   D'(( ;= 	 %~ 567   B&

 #
.5c3h.?
( 66 6 c"	6 
uc738,,	-6< 66 6 c"	6 
uc738,,	-6(	Hy 	HX 	H LP-- #-.5c3h.?-	xWS#X%66	7-2 LP-- #-.5c3h.?-	}U#S'#s(*;;	<-&!* *r&   r<   c                   n  ^  \ rS rSrSr  SS\\\S4      4U 4S jjjr\	S 5       r
S rS\\\\\\4   4   4S	 jrS
\S\S\\\4   4S jr SS
\S\S\\\4   S\\\\\\4   4   4S jjrS\S\4S jrS\\\   \\\\4   4   4S jr SS
\S\S\\\4   S\S\\\\4   4   4S jjrS rS rSrU =r$ )r>   ir  r=   r   AIOHTTPTimeoutc                 f   > [         [        U ]
  " S0 UD6  Uc  SS KnUnX l        Xl        S U l        g )Nr   r%   )r   r>   rd   r=   r   _cached_session)rb   r   rc   r*   r=   r   s        r'   rd   AIOHTTPClient.__init__u  s6     	mT+5f5<D#r&   c                 R   U R                   c  0 nU R                  (       a?  [        R                  " [        R
                  S9nU R                  R                  US9US'   OU R                  R                  SS9US'   U R                  R                  " S0 UD6U l         U R                   $ )Nr  )r  	connectorF)
verify_sslr%   )	r   rU   r  r  r   r	  r=   TCPConnectorClientSession)rb   r*   ssl_contexts      r'   r   AIOHTTPClient._session  s    'F%%!88!00 '+ll&?&?# '@ '{# '+ll&?&?$ '@ '{# $(<<#=#=#G#GD ###r&   c                 .    [         R                  " U5      $ r   )asyncior   r   s     r'   r   AIOHTTPClient.sleep_async  s    }}T""r&   r+   c                     [        S5      eNz4AIOHTTPClient does not support synchronous requests.r   r   s    r'   r   AIOHTTPClient.request      !B
 	
r&   r   r   r   c                     X4n0 nU R                   (       a=  U R                   S   U R                   S   :w  a  [        S5      eU R                   S   US'   U R                  (       a  U R                  US'   X6S'   XFS'   XV4$ )NrG   rH   zDAIOHTTPClient does not support different proxies for HTTP and HTTPS.rW   r   r   r  )rT   r\   r   )rb   r   r   r   r   r)   r*   s          r'   r  &AIOHTTPClient._get_request_args_kwargs  s     };;{{6"dkk'&:: Z  #kk'2F7O== $F9#y"v|r&   c                 ~   #    U R                  XX4S9I S h  vN u  nnnUR                  5       I S h  vN Xg4$  N" N7f)N)r   )r   r  )rb   r   r   r   r   r  rp   r  s           r'   r   AIOHTTPClient.request_async  sR      ++ , 
 
		

 lln${DD	
 %s   =9=;==r   c                     SnS[        U5      R                  < S3nSn[        R                  " U5      SU< S3-   n[	        X$S9Uer  r  r  s        r'   r  #AIOHTTPClient._handle_request_error  r  r&   c                     [        S5      er  r   r   s    r'   r   AIOHTTPClient.request_stream  r  r&   AIOHTTPStreamReaderc                    #    U R                  XX45      u  pV U R                  R                  " U0 UD6I S h  vN nWR
                  n	UR                  n
UR                  nXU4$  N,! [         a  nU R	                  U5         S nANJS nAff = f7fr   )r  r   r   r  r  r  statusr   r  s               r'   r   "AIOHTTPClient.request_stream_async  s      44
	*!]]22DCFCCH ""oo#++%555 D 	*&&q))	*r  c                     g r   r%   r   s    r'   r   AIOHTTPClient.close  rE  r&   c                 T   #    U R                   R                  5       I S h  vN   g  N7fr   )r   r   r   s    r'   r   AIOHTTPClient.close_async  s     mm!!###r  )r   r   r=   )r$  Nr   )rI   rJ   rK   rL   rC   r   r   r   rd   propertyr   r   r   r   r"   r   rM   r   r  r   r  r   r  r
   r   r   r   r   rO   r%  r&  s   @r'   r>   r>   r  sz   D =?$%'7 789$ $$ $ $&#
uc738+<<= 

 #.5c3h.?. EE E c"	E 
uc738,,	-E"	Hy 	HX 	H
huosGCH<M&M N 
 LP66 #6.5c3h.?6	$c738+<<	=6 $ $r&   r>   c                      ^  \ rS rSrU 4S jr\S\4S j5       r SS\S\S\	\\4   S\
\\\	\\4   4   4S jjr SS\S\S\	\\4   4S	 jjrS
 rSrU =r$ )r?   i  c                 .   > [         [        U ]
  " S0 UD6  g )Nr%   )r   r?   rd   )rb   r*   r   s     r'   rd   !NoImportFoundAsyncClient.__init__  s    &6@@r&   r+   c                      [        S5      e)NzImport httpx not found. To make async http requests,You must either install httpx or define your ownasync http client by subclassing stripe.HTTPClientand setting stripe.default_http_client to an instance of it.)r2   r%   r&   r'   raise_async_client_import_error8NoImportFoundAsyncClient.raise_async_client_import_error  s    O
 	
r&   r   r   r   c                 ,   #    U R                  5         g 7fr   r%  r   s        r'   r   &NoImportFoundAsyncClient.request_async        	,,.   c                 ,   #    U R                  5         g 7fr   r(  r   s        r'   r   -NoImportFoundAsyncClient.request_stream_async  r*  r+  c                 ,   #    U R                  5         g 7fr   r(  r   s    r'   r   $NoImportFoundAsyncClient.close_async  s     ,,.r+  r%   r   )rI   rJ   rK   rL   rd   staticmethodr   r%  rM   r   r   r   r"   r   r   r   rO   r%  r&  s   @r'   r?   r?     s    A 
U 
 
 LP// #/.5c3h.?/	uc738,,	-/ LP// #/.5c3h.?/
/ /r&   r?   )Dr;  r   r  re  r$   r   r_   r   r
  r  http.clientr   r   r   stripe._request_metricsr   stripe._errorr   typingr   r	   r
   r   r   r   r   r   r   r   r   r   r   typing_extensionsr   r   r   r   r   r   rS  r   r3   r   r   r2   r:   r   r  r   r  r=   r   r  r    r  r(   r8   r@   objectr,   r4   r1   rP   r6   r7   r<   r>   r?   r%   r&   r'   <module>r7     sk           
 $   2 ,     (713;?
* *3  *#  *,  *F5# 5 5 5.
 
D|/Z |/~AZ AH#Y #
G: GVzJ zz`** `*Fx$J x$v/z /}-      s6   ?D D( D4 D%$D%(D10D14D=<D=