
    _j{                        U d dl mZmZ d dlZd dlZd dl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mZmZmZmZ d dlZd dlmZmZmZ d dlZd dlmZmZmZm Z m!Z! d dl"m#Z# d dl$m%Z& d dl'm(Z( d dl)m*Z* d d	lm+Z+ d d
l,m-Z-m.Z. d dl/m0Z0m1Z1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA erd dlBmCZC d dlDmEZE ed         ZFdaGeeH         eId<   deHdeAdeJfdZK G d deL          ZMdS )    )BytesIOIOBaseN)
AnyAsyncIterableDictListMappingOptionalTupleUnioncastClassVar)TYPE_CHECKINGLiteralNoReturnUnpack)urlsplit
urlunsplitparse_qs)	log_debuglog_infodashboard_link_convert_to_stripe_objectget_api_mode)VERSION)MultipartDataGenerator)	urlencode)_api_encode_json_encode_date_callback)StripeResponseStripeStreamResponseStripeStreamResponseAsync)PERSISTENT_OPTIONS_KEYSRequestOptionsmerge_options)RequestorOptions_GlobalRequestorOptions)
HTTPClientnew_default_http_clientnew_http_client_async_fallback)BaseAddress)ApiMode)AppInfo)StripeObject)getpostdelete_default_proxymethodapi_modereturnc                     | dk    o|dk    S )Nr1   V2 )r3   r4   s     Y/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/stripe/_api_requestor.pyis_v2_delete_respr:   J   s    X2(d"22    c                      e Zd ZU dZed         ed<   	 	 d2dee         dee         fdZ	defdZ
dee         dd fd	Zed
             Zed             Zed             Zed             Zed             Zedee         dd fd            Zed             Z	 	 d2dddededeeeef                  dee         dedeee                  ddfdZ	 	 d2dddededeeeef                  dee         dedeee                  ddfdZ	 	 d2dddededeeeef                  dee         dedeee                  defdZ 	 	 d2dddededeeeef                  dee         dedeee                  de!fdZ"de#fdZ$d Z%d Z&d Z'g d Z(ed!eeef         defd"            Z)de*d#e+defd$Z,	 	 d2dddededeeeef                  dee         ded#e+deee                  fd%Z-	 	 	 d3dddededeeeef                  dee         d'e.ded#e+deee                  de/e0e1eeef         f         fd(Z2	 	 	 d3dddededeeeef                  dee         d'e.ded#e+deee                  de/e3e4         e1eeef         f         fd)Z5d*e1de.fd+Z6d,e0d*e1d-eeef         d#e+de7f
d.Z8d/e9d*e1d-eeef         d#e+def
d0Z:d/e3e4         d*e1d-eeef         d#e+de!f
d1Z;dS )4_APIRequestorNz_APIRequestor|None	_instanceoptionsclientc                 B    |t                      }|| _        || _        d S N)r&   _options_client)selfr?   r@   s      r9   __init__z_APIRequestor.__init__Q   s&    
 ?&((Gr;   r5   c           	      P   | j         }|t          j        sHt          j        t          j        d}t          ddt          di |i|t          _        t          j        an.t          j        t          k    rdd l}|	                    d           t          j        J t          j        S |S )N)verify_ssl_certsproxyasync_fallback_clientr   zstripe.proxy was updated after sending a request - this is a no-op. To use a different proxy, set stripe.default_http_client to a new client configured with the proxy.r8   )
rD   stripedefault_http_clientrH   rI   r)   r*   r2   warningswarn)rE   r@   kwargsrM   s       r9   _get_http_clientz_APIRequestor._get_http_client_   s    > - (.(?#\  .E . .*H + + + +. 	. .* "(//1   -999--r;   c                     |pi }| j                                         }t          D ]}||v r||         ||         ||<   t          t	          di || j                  S )z
        Returns a new _APIRequestor instance with the same HTTP client but a (potentially) updated set of options. Useful for ensuring the original isn't modified, but any options the original had are still used.
        Nr?   r@   r8   )rC   to_dictr#   r=   r&   rD   )rE   r?   new_optionskeys       r9   _new_requestor_with_optionsz)_APIRequestor._new_requestor_with_options   s|     -Rm++--* 	0 	0Cg~~'#,":#*3<C $33{33DL
 
 
 	
r;   c                     | j         j        S rB   )rC   api_keyrE   s    r9   rX   z_APIRequestor.api_key   s    }$$r;   c                     | j         j        S rB   )rC   stripe_accountrY   s    r9   r[   z_APIRequestor.stripe_account       }++r;   c                     | j         j        S rB   )rC   stripe_versionrY   s    r9   r^   z_APIRequestor.stripe_version   r\   r;   c                     | j         j        S rB   )rC   base_addressesrY   s    r9   r`   z_APIRequestor.base_addresses   r\   r;   c                 Z    | j          | t                      d          | _         | j         S )z
        Returns the singleton instance of _APIRequestor, to be used when
        calling a static method such as stripe.Customer.create(...)
        NrR   )r>   r'   )clss    r9   _global_instancez_APIRequestor._global_instance   s1     = C(?(A(A$OOOCM}r;   paramsc                  Z    t                                                               |           S rB   )r=   rc   rV   )rd   s    r9   _global_with_optionsz"_APIRequestor._global_with_options   s+     --//KK
 
 	
r;   c                 p    |d         }|d         r|d|d         z  }|d         r|d|d         dz  }|S )Nnameversion/urlz ()r8   )rb   infostrs      r9   _format_app_infoz_APIRequestor._format_app_info   sT    6l	? 	.CDOO--C; 	,Cd5kkk++C
r;   )usager3   rk   base_addressrp   r.   c          
      (   t          |          }|                     |          }|                    |                                ||d||||          \  }	}
}|                    |	|
||          }t          ||||t          ||                    }|S NFis_streamingr4   rq   r?   rp   )resprd   	requestorr4   is_v2_deleted_object)r   rV   request_rawlower_interpret_responser   r:   rE   r3   rk   rd   r?   rq   rp   r4   rw   rbodyrcoderheadersrv   objs                 r9   requestz_APIRequestor.request   s      $$44W==	!*!6!6LLNN% "7 	"
 	"
uh ,,UE8XNN'!268!D!D
 
 
 
r;   c          
      8  K   t          |          }|                     |          }|                    |                                ||d||||           d {V \  }	}
}|                    |	|
||          }t          ||||t          ||                    }|S rs   )r   rV   request_raw_asyncrz   r{   r   r:   r|   s                 r9   request_asyncz_APIRequestor.request_async   s        $$44W==	'0'B'BLLNN% (C 	(
 	(
 	"
 	"
 	"
 	"
 	"
 	"
uh ,,UE8XNN'!268!D!D
 
 
 
r;   c          
          t          |          }|                     |                                ||d||||          \  }}	}
|                     t	          t
          |          |	|
|          }|S NTrt   )r   ry   rz   _interpret_streaming_responser   r   rE   r3   rk   rd   r?   rq   rp   r4   streamr~   r   rv   s               r9   request_streamz_APIRequestor.request_stream  s      $$"&"2"2LLNN% #3 	#
 	#
x 11   
 
 r;   c          
         K   t          |          }|                     |                                ||d||||           d {V \  }}	}
|                     ||	|
|           d {V }|S r   )r   r   rz   #_interpret_streaming_response_asyncr   s               r9   request_stream_asyncz"_APIRequestor.request_stream_async   s        $$(,(>(>LLNN% )? 	)
 	)
 	#
 	#
 	#
 	#
 	#
 	#
x ==	
 
 
 
 
 
 
 
 r;   c                 P   	 |d         }n1# t           t          f$ r t          j        d||fz  |||          w xY wd }t	          |t
                    r|                     |||||          }|8|dk    r|                     |||||          n|                     |||||          }|)Nerrorz@Invalid response object from API: %r (HTTP response code was %d)r7   )	KeyError	TypeErrorr   APIError
isinstancern   specific_oauth_errorspecific_v2_api_errorspecific_v1_api_error)rE   r}   r~   rv   r   r4   
error_dataerrs           r9   handle_error_responsez#_APIRequestor.handle_error_response=  s    		gJJ)$ 	 	 	."EN+  	 
 j#&& 	++udHj C ;
 t## **5$*   //5$*   	s    .9c           	         |                     d          }|                     d          }|                     d          }||||||d}	t          d||                     d          ||                     d                     |dk    rt          j        ||||||          S |d	k    rt          j        d
i |	S |                     |||||          S )Ntypecodemessage)r   	http_bodyhttp_status	json_bodyheadersr   zStripe v2 API error receivedparam
error_code
error_typeerror_messageerror_paramidempotency_errortemporary_session_expiredr8   )r/   r   r   IdempotencyErrorTemporarySessionExpiredErrorr   )
rE   r}   r~   rv   r   r   r   r   r   
error_argss
             r9   r   z#_APIRequestor.specific_v2_api_errorb  s   ~~f%%~~f%%..++ 
 

 	*!~~f--!"w//	
 	
 	
 	
 &&&)   0005CC
CCC ))5$*
 
 	
r;   c           	      d   t          d|                    d          |                    d          |                    d          |                    d                     |dk    s|dk    rD|                    d          d	k    r+t          j        |                    d          ||||          S |d
v r|                    d          dk    r+t          j        |                    d          ||||          S t          j        |                    d          |                    d          |                    d          ||||          S |dk    r+t          j        |                    d          ||||          S |dk    rSt          j        |                    d          |                    d          |                    d          ||||          S |dk    r+t          j        |                    d          ||||          S t          j	        |                    d          ||||          S )NzStripe v1 API error receivedr   r   r   r   r   i    
rate_limit)r   i  r   i  i  i  )
r   r/   r   RateLimitErrorr   InvalidRequestErrorAuthenticationError	CardErrorPermissionErrorr   )rE   r}   r~   rv   r   r   s         r9   r   z#_APIRequestor.specific_v1_api_error  sB   *!~~f--!~~f--$..33"w//	
 	
 	
 	
 C<<SLLZ^^F33|CC'y))5%x   j  ~~f%%)<<<-NN9--ueT8   0NN9--NN7++NN6**   c\\,y))5%x   c\\?y))w''v&&   c\\(y))5%x   >y))5%x  r;   c                 V   |                     d|          }t          d||           ||||||g}|dk    rt          j        | S |dk    rt          j        | S |dk    rt          j        | S |dk    rt          j        | S |dk    rt          j        | S |d	k    rt          j        | S d S )
Nerror_descriptionzStripe OAuth error received)r   r   invalid_clientinvalid_grantinvalid_requestinvalid_scopeunsupported_grant_typeunsupported_response_type)	r/   r   oauth_errorInvalidClientErrorInvalidGrantErrorr   InvalidScopeErrorUnsupportedGrantTypeErrorUnsupportedResponseTypeError)rE   r}   r~   rv   r   r   descriptionargss           r9   r   z"_APIRequestor.specific_oauth_error  s    hh2J??)!)	
 	
 	
 	
 KtXF)))1488?**0$77,,,2D99?**0$773338$??666;TBBtr;   )
)ANTIGRAVITY_CLI_ALIASantigravity)
CLAUDECODEclaude_code)CLINE_ACTIVEcline)CODEX_SANDBOX	codex_cli)CODEX_THREAD_IDr   )CODEX_SANDBOX_NETWORK_DISABLEDr   )CODEX_CIr   )CURSOR_AGENTcursor)
GEMINI_CLI
gemini_cli)OPENCODE	open_codeenvironc                 \    t           j        D ]\  }}|                     |          r|c S dS )N )r=   	AI_AGENTSr/   )r   env_var
agent_names      r9   _detect_ai_agentz_APIRequestor._detect_ai_agent  sC    #0#: 	" 	"GZ{{7## "!!!!"rr;   r4   c                 B   d|                                 dt          }t          j        r%|d|                     t          j                  z   z  }|                     t          j                  }|r|d|z   z  }t          dd|                                 j	        d}dt          j        gd	t          j
        gd
d gfD ](\  }}	  |            }	n# t          $ r d}	Y nw xY w|	||<   )t          j        rt          j        |d<   |r||d<   t          j        |          |d|                    d          d}
|                    d          }|r||
d<   |                    d          }|r!t!          |          rt!          |          |
d<   |                    d          }|r||
d<   |dk    s|dk    r:|dk    r4|
                    dt!          t%          j                                         |dk    r|dk    rd|
d<   nd|
d<   |                    d          }|r||
d<   |
S ) NzStripe/z PythonBindings/ z	 AIAgent/pythonrK   )bindings_versionlang	publisherhttpliblang_versionplatformunamec                  N    d                     t          j                              S )Nr   )joinr   r   r8   r;   r9   <lambda>z/_APIRequestor.request_headers.<locals>.<lambda>  s    chhx~'7'788 r;   z
(disabled)applicationai_agentzBearer rX   )zX-Stripe-Client-User-Agentz
User-AgentAuthorizationr[   zStripe-Accountstripe_contextzStripe-Contextidempotency_keyzIdempotency-Keyr0   r7   r1   zapplication/jsonContent-Typez!application/x-www-form-urlencodedr^   zStripe-Version)rz   r   rK   app_inforo   r   osr   rP   rh   r   python_version	Exceptionjsondumpsr/   rn   
setdefaultuuiduuid4)rE   r3   r4   r?   
user_agentagentuaattrfuncvalr   r[   r   r   r^   s                  r9   request_headersz_APIRequestor.request_headers  s     NNG

 ? 	G# 5 5fo F FFFJ%%bj11 	.+--J !(!,,..3	0
 0
 X45*+889
 		 		JD$
#dff # # #"#BtHH? 	0 &B} 	#"BzN +/*R..$*,3KK	,B,B,BD#
 #
 !%566 	7(6G$% %566 	<c.11 	<(+N(;(;G$%!++&788 	9)8G%& VD 0 0Vx5G5G0#djll2C2CDDDV4*<''*M' %566 	7(6G$%s   
CCCc          
      @   t          | j        |          }|rd|v r|d         |d         |d<   |                    d          t          j        d          | j        j                            |          |}	|pi }|r|dk    s|dk    ri }
t          t          |          j                  	                                D ]H\  }}|
                    d          r||
|dd         <   (t          |          d	k    r|d
         n||
|<   Id|
v r3d|v r/t          t          g |
d         |d                             |d<   i |
|}t          t          t          |pi                               }|                    dd                              dd          }|dk    rt#          j        |pi t&                    }n|}d}d|v r|d         t)          |d                   }|                     t-          t.          |          ||          }|dk    s|dk    r.|r)t          |	          \  }}}}}t1          |||||f          }	d}n|dk    re|`|                    d          dk    rGt3                      }|                    |pi            |                                }d|j        |d<   n|}nt          j        d|d          ||	                                D ]
\  }}|||<   |                    d          }||	||||||                    d          fS )z`
        Mechanism for issuing an API call.  Used by request_raw and request_raw_async.
        r^   NrX   zNo API key provided. (HINT: set your API key using "stripe.api_key = <API-KEY>"). You can generate API keys from the Stripe web interface.  See https://stripe.com/api for details, or email support@stripe.com if you have any questions.r/   r1   z[]   r   expandz%5B[z%5D]r7   )defaultr   r0   content_typezmultipart/form-datazmultipart/form-data; boundary=r   zUnrecognized HTTP method ze.  This may indicate a bug in the Stripe bindings.  Please contact support@stripe.com for assistance.max_network_retries)r%   rC   r/   r   r   r`   r   r   queryitemsendswithlenlistsetr   r   replacer   r   r   dictr   r   HttpVerbr   r   
add_paramsget_post_databoundaryAPIConnectionError)rE   r3   rk   rd   r?   rq   r4   rp   request_optionsabs_urlexisting_paramskvencoded_paramsencoded_bodysupplied_headersr   schemenetlocpath_fragment	post_data	generatorrU   valuer  s                              r9   _args_for_request_with_retriesz,_APIRequestor._args_for_request_with_retries4  s    (w?? 	J G++)*6 188H0IO,-y))1+   M(,,\:::C

 2 	v&H*<*< !O #!455;;== D D1::d## D./OAcrcF++ 25Q11!OA&&
 ?**x6/A/A#'G/(3GfX6FGHH$ $x ! F #4FLb(A(A#B#BCC
 (//s;;CCE3OOt:"&@  LL *L((	*6#OI$>??&&6""	
 
 U??f00  5=W4E4E1a$VT>8D  IIv#KK//3HHH244	$$V\r222%3355		:C:L:LN '' )		** "(*   '.4466 % %
U$-112GHH  011
 	
r;   Fru   c          	         |                      |||||||          \  }}	}
}}}}}t          d||	           t          d||           |r2|                                                     ||	|
|||          \  }}}n1|                                                     ||	|
|||          \  }}}t          d|	|           t          d	|
           d|v r&|d         }t          dt          |                     |||fS )Nrq   r4   rp   Request to Stripe apir3   rk   Post detailsr#  api_versionr  _usageStripe API responser   response_codeAPI response bodybody
Request-IdDashboard link for requestlink)r&  r   r   rP   request_stream_with_retriesrequest_with_retriesr   rE   r3   rk   rd   r?   ru   rq   r4   rp   r  r   r#  r  r  r-  rcontentr~   r   
request_ids                      r9   ry   z_APIRequestor.request_raw  s   * //% 0 
 
		
 	(WEEEEn+	
 	
 	
 	
  	
 %%''CC$7 D  	 %%''<<$7 =  	 	&WEJJJJ%H55558##!,/J,#J//   
 ((r;   c          	      2  K   |pg }|dgz   }|                      |||||||          \  }}	}
}}}}}t          d||	           t          d||           |r8|                                                     ||	|
|||           d{V \  }}}n7|                                                     ||	|
|||           d{V \  }}}t          d	|	|
           t          d|           d|v r&|d         }t          dt          |                     |||fS )z3
        Mechanism for issuing an API call
        asyncr(  r)  r*  r+  r,  r.  Nr0  r1  r3  r4  r6  r7  r8  )r&  r   r   rP   !request_stream_with_retries_asyncrequest_with_retries_asyncr   r<  s                      r9   r   z_APIRequestor.request_raw_async  s       	! //% 0 
 
		
 	(WEEEE$#	
 	
 	
 	
  	
 ++--OO$7 P        	 ++--HH$7 I        	 	&WEJJJJ%H55558##!,/J,#J//   
 ((r;   r~   c                 $    d|cxk    odk     nc  S )N   i,  r8   )rE   r~   s     r9   _should_handle_code_as_errorz*_APIRequestor._should_handle_code_as_errord  s'    %%%%%#%%%%%%r;   r}   r   c                    	 t          |d          r(t          t          |                              d          }t	          t          t
          |          ||          }n=# t          $ r0 t          j        d||fz  t          t          |          ||          w xY w| 	                    |          r| 
                    |||j        ||           |S )Ndecodezutf-8z>Invalid response body from API: %s (HTTP response code was %d))hasattrr   bytesrG  r    rn   r   r   r   rE  r   data)rE   r}   r~   r   r4   rv   s         r9   r{   z!_APIRequestor._interpret_responseg  s    	uh'' ; UE**11'::!S%   DD
  	 	 	..16?UE""  	 ,,U33 	&&udi8   s   AA :Br   c                    |                      |          rt          |d          r(t          t          |                                          }nNt          |d          r|                                }n)t          d|                                 j        z            | 	                    ||||           t          d          t          |||          S )Ngetvaluereadz`HTTP client %s does not return an IOBase object which can be consumed when streaming a response./_interpret_response should have raised an error)rE  rH  r   r   rL  rM  NotImplementedErrorrP   rh   r{   RuntimeErrorr!   rE   r   r~   r   r4   json_contents         r9   r   z+_APIRequestor._interpret_streaming_response  s     ,,U33 	Avz** 	#GV44==??(( %{{}})A++--23   $$\5(HMMMA   (x@@@r;   c                    K   |                      |          rLd                    d |2              d {V           }|                     ||||           t          d          t	          |||          S )Nr;   c                 "   K   g | 3 d {V }|
6 S rB   r8   ).0chunks     r9   
<listcomp>zE_APIRequestor._interpret_streaming_response_async.<locals>.<listcomp>  s.      $E$E$E$E$E$E$E$EUU$E$E$E$Es   rN  )rE  r   r{   rP  r"   rQ  s         r9   r   z1_APIRequestor._interpret_streaming_response_async  s       ,,U33 	F88$E$Ef$E$E$E$E$E$E$E$E$EFFL$$\5(HMMMA   -VUHEEEr;   )NN)NNF)<__name__
__module____qualname__r>   r   __annotations__r
   r&   r(   rF   rP   r$   rV   propertyrX   r[   r^   r`   classmethodrc   staticmethodr   rf   ro   rn   r	   r   r+   r   r   r   r!   r   r"   r   r   r   r   r   r   r   r   r  r,   r   r&  boolr   objectintry   r   rI  r   rE  r    r{   r   r   r   r8   r;   r9   r=   r=   N   s        04Ix,-444 /3'+ *+ $    *        D
/
	
 
 
 
 % % X% , , X, , , X, , , X, 	 	 [	 
(
	
 
 
 \
   [ /3,0  &*         c*+	 
 .)  "  S	"  
       L /3,0  &*         c*+	 
 .)  "  S	"  
       L /3,0 &*    c*+	
 .) " S	" 
   F /3,0 &*    c*+	
 .) " S	" 
#   :#	# # # #J%
 %
 %
N4 4 4l  4  I '#s("3     \CC*1C<JC C C CR /3,0O
 &*O
 O
 O
O
 O
 c*+	O

 .)O
 "O
 O
 S	"O
 O
 O
 O
j /3,0"I) &*I) I) I)I) I) c*+	I)
 .)I) I) "I) I) S	"I) 
vsGCH--	.I) I) I) I)^ /3,0"R) &*R) R) R)R) R) c*+	R)
 .)R) R) "R) R) S	"R) 
}U#S'#s(*;;	<R) R) R) R)h&# &$ & & & &  #s(#	
  
   >AA A #s(#	A
 A 
A A A A>Fe$F F #s(#	F
 F 
#F F F F F Fr;   r=   )Nior   r   r   r   r   typingr   r   r   r   r	   r
   r   r   r   r   typing_extensionsr   r   r   r   r   urllib.parser   r   r   rK   stripe._utilr   r   r   r   r   stripe._versionr   stripe._error_errorr   stripe.oauth_errorr    stripe._multipart_data_generatorr   r   stripe._encoder   r   stripe._stripe_responser    r!   r"   stripe._request_optionsr#   r$   r%   stripe._requestor_optionsr&   r'   stripe._http_clientr(   r)   r*   stripe._base_addressr+   stripe._api_moder,   stripe._app_infor-   stripe._stripe_objectr.   r  r2   rn   r[  r_  r:   r`  r=   r8   r;   r9   <module>ru     s             				                                     7 7 7 7 7 7 7 7 7 7               $ # # # # #       ( ( ( ( ( ( C C C C C C " " " " " " B B B B B B B B         
         
                 - , , , , , $ $ $ $ $ $ 3((((((222222*+ !% $ $ $3c 3W 3 3 3 3 3fF fF fF fF fFF fF fF fF fF fFr;   