
    (i7                        U d dl 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 d dlmZ d dlmZmZmZmZmZmZ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% 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/ erd dl0m1Z1m2Z2m3Z3 d dl,m4Z4m5Z5m6Z6m7Z7 dede8fdZ9 G d d      Z:dZ;ejx                  jz                  e/j|                  ej~                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  dej                  jz                  diZJe
eKee/eKf   f   eLd<   deeef   de-dedeMfdZNe)j                  e)j                  e)j                  hZRe)j                  e)j                  e)j                  e)j                  e)j                  hZXe)j                  e)j                  e)j                  e)j                  e)j                  hZ^e)j                  e)j                  e)j                  hZbi eRD  ci c]  } | e c} eXD  ci c]  } | e# c} e^D  ci c]  } | e% c} ebD  ci c]  } | e$ c} Zce
e-eeee   e
e8ef   geMf   f   eLd <    edecj                               Zfdeddfd!Zgdede-dee   d"d#deMf
d$Zhd%eee-egd#f   ded&   fd'Zied(ee   e
e8ef   geeMe	eeeMf   f   f   Zji eRD  ci c]  } | e c} eXD  ci c]  } | e  c} e^D  ci c]  } | e" c} ebD  ci c]  } | e! c} Zke
e-ejf   eLd)<   deddfd*Zldede-dee   d"d#deMf
d+Zmd%eee-ege	eed#f   f   ded,e	eed#f   f   fd-Znd%eee-ege	eed.f   f   ded,e	eed.f   f   fd/Zod%ed0d.ge	eed#f   f   ded,e	eed#f   f   fd1Zpyc c} w c c} w c c} w c c} w c c} w c c} w c c} w c c} w )2    )iscoroutinefunctionN)	TYPE_CHECKINGAnyCallable	CoroutineDictListSequenceTupleUnion)ChainId)
is_booleanis_bytesis_dictis_list_likeis_null	is_numberis_textto_bytes)ASYNC_PROVIDER_TYPESYNC_PROVIDER_TYPE)UNCACHEABLE_BLOCK_IDSalways_cache_request&async_validate_from_block_id_in_params'async_validate_from_blockhash_in_params&async_validate_from_blocknum_in_result validate_from_block_id_in_params!validate_from_blockhash_in_params validate_from_blocknum_in_result)empty)RPC)Web3TypeError)RPCEndpoint)RequestCacheValidationThreshold)AsyncBaseProviderBaseProviderPersistentConnectionProvider)AsyncMakeRequestFnMakeRequestFn
RPCRequestRPCResponsevaluereturnc                 J    t               r#t        j                         j                         S t	               rt        t                     S t               st               st               rt        t                     S t               r+t         fdt         j                               D              S t               s$t         t         j"                  j$                        r!t        dj'                  d  D                    S t)        d  dt+                      )z:
    Generates a cache key for the *args and **kwargs
    )textc              3   ,   K   | ]  }||   f  y wN ).0keyr,   s     R/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/caching/caching_utils.py	<genexpr>z%generate_cache_key.<locals>.<genexpr>X   s     !T3c
"3!Ts    c              3   2   K   | ]  }t        |        y wr1   )generate_cache_key)r3   items     r5   r6   z%generate_cache_key.<locals>.<genexpr>Z   s     )Ut*<T*B)Us   z$Cannot generate cache key for value z	 of type )r   hashlibmd5	hexdigestr   r9   r   r   r   r   reprr   sortedkeysr   
isinstancecollectionsabc	Generatorjoinr"   type)r,   s   `r5   r9   r9   M   s     {{5!++--	!("677	E	gen	%0@!$u+..	!!Tvejjl?S!TTT	e	
5+//2K2K L!"'')Uu)U"UVV25'4;-P
 	
    c                   p    e Zd Z	 ddededeeeee	def   f   e	def   f   e	def   e	def   f   defdZ
y)	RequestInformationNmethodparamsresponse_formatters.subscription_idc                 J    || _         || _        || _        || _        g | _        y r1   )rJ   rK   rL   rM   middleware_response_processors)selfrJ   rK   rL   rM   s        r5   __init__zRequestInformation.__init__b   s*     #6 .HJ+rG   r1   )__name__
__module____qualname__r#   r   r   r   r   strr   rQ   r2   rG   r5   rI   rI   a   s      $KK K #$sHS#X../#s(1CCDS#XS#X 
	K KrG   rI   i  i:	    i  i,  x   <   #CHAIN_VALIDATION_THRESHOLD_DEFAULTSproviderrJ   rK   c                 f    | j                   r|| j                  v sy|t        v r|d   }|t        v ryy)NFr   T)cache_allowed_requestscacheable_requestsBLOCKNUM_IN_PARAMSr   )rZ   rJ   rK   block_ids       r5   is_cacheable_requestr`      s>    
 ++(:U:U0U	%	%!9,,rG   INTERNAL_VALIDATION_MAPc                 r   | j                   }|t        u st        |t              rm| j                  }	 d| _        | j                  t        d      g       d   }t        |d      }|t        u rt        j                  |t              | _         || _        y y # t        $ r t        | _         Y w xY w# || _        w xY wNFeth_chainIdresult   "request_cache_validation_thresholdr    rA   r$   r\   make_requestr#   intrY   getDEFAULT_VALIDATION_THRESHOLD	ExceptionrZ   current_thresholdr\   chain_id_resultchain_ids        r5   set_threshold_if_emptyrr      s     CCE!Z:& "*!@!@	E.3H+&33K4NPRSO ?B/H E)7;; "> ; /EH++&$  	W:VH7	W /EH+s$   AB B*'B- )B**B- -	B6responser+   c                     |j                  dd       }d|v st        |      ryt        |        |t        v r| j                  t        |   | ||      S yNre   errorFT)rk   r   rr   ra   rh   )rZ   rJ   rK   rs   re   s        r5   _should_cache_responserw      sY     \\(D)F(gfo8$))77C&v.xHHrG   func).r+   c                 R     dt         dt        dt        ddf fd}t        |_        |S )NrZ   rJ   rK   r-   r+   c                 \   t        | ||      r| j                  }t        t        j                          d||f       }|j                  |      }||S  | ||      }t        | |||      r)| j                  5  |j                  ||       d d d        |S |S  | ||      S # 1 sw Y   |S xY wN:)	r`   _request_cacher9   	threading	get_identget_cache_entryrw   _request_cache_lockcacherZ   rJ   rK   request_cache	cache_keycache_resultrs   rx   s          r5   wrapperz'handle_request_caching.<locals>.wrapper   s      &&9$33M*&&()FF+;*<=I )88CL'##&&9)(FFHM!55 A%++Ix@Ax&&11	As   8B!!B+)r   r#   r   handle_request_caching
_decoratorrx   r   s   ` r5   r   r      s7    2$2.92CF2	2* 0GNrG   r%   ASYNC_INTERNAL_VALIDATION_MAPc                   K   | j                   }|t        u st        |t              ru| j                  }	 d| _        | j                  t        d      g        d {   }t        |d   d      }|t        u rt        j                  |t              | _         || _        y y 7 C# t        $ r t        | _         Y !w xY w# || _        w xY wwrc   rg   rn   s        r5   async_set_threshold_if_emptyr   #  s      CCE!Z:& "*!@!@	E.3H+$,$9$9M*B% O ?84b9H E)7;; "> ; /EH++&  	W:VH7	W /EH+sF   1C%B B:B 	CB B63B9 5B66B9 9	CCc                   K   |j                  dd       }d|v st        |      ryt        |        d {    |t        v r<| j                  0t        |   }t        |      r || ||       d {   S  || ||      S y7 I7 wru   )rk   r   r   r   rh   r   )rZ   rJ   rK   rs   re   cache_validators         r5   _async_should_cache_responser   >  s      \\(D)F(gfo
&x
000//77C7? #?3 "(FF;;	
 !66:	

  1 <s!   1BA=9B-A?.B?B.c                 R     dt         dt        dt        ddf fd}t        |_        |S )NrZ   rJ   rK   r-   r+   c                   K   t        | ||      r| j                  }t        t        j                          d||f       }|j                  |      }||S  | ||       d {   }t        | |||       d {   r9| j                  4 d {    |j                  ||       d d d       d {    |S |S  | ||       d {   S 7 g7 S7 @7  # 1 d {  7  sw Y   |S xY w7 "wr{   	r`   r}   r9   r~   r   r   r   r   r   r   s          r5   r   z-async_handle_request_caching.<locals>.wrapper[  s      &&9$33M*&&()FF+;*<=I )88CL'##!%h!??5ffh    (;; A A%++Ix@A Axh777 @A A A A A7sx   A C+#C$C+9C:C+CC+C%C+0C1C+C)C+C+C+C+C&CC&!	C+)r   r#   r   async_handle_request_cachingr   r   s   ` r5   r   r   V  s7    
8%8/:8DG8	8. 6GNrG   r*   c                 R     dt         dt        dt        ddf fd}t        |_        |S )NrZ   rJ   rK   r-   r*   c                    K   t        | ||      rR| j                  }t        t        j                          d||f       }|j                  |      }|dt        d      g dS  | ||       d {   S 7 w)Nr|   r7   )idrJ   rK   )r`   r}   r9   r~   r   r   r#   )rZ   rJ   rK   r   r   cached_responserx   s         r5   r   z*async_handle_send_caching.<locals>.wrapper|  s       &&9$33M*&&()FF+;*<=I ,;;IFO* !KOrJJ(FF3333s   A-A70A51A7)r   r#   r   async_handle_send_cachingr   r   s   ` r5   r   r   v  s7    4%4/:4DG4	4  3GNrG   r'   c                 6     	 	 	 	 	 	 d fd}t         |_        |S )Nc                   K   |d   }|d   }t        | ||      r| j                  }t        t        j                          d||f       }|j                  |      }||S  | |       d {   }t        | |||       d {   r9| j                  4 d {    |j                  ||       d d d       d {    |S |S  | |       d {   S 7 f7 R7 ?7 # 1 d {  7  sw Y   |S xY w7 "w)NrJ   rK   r|   r   )	rZ   rpc_requestrJ   rK   r   r   r   rs   rx   s	           r5   r   z*async_handle_recv_caching.<locals>.wrapper  s%     X&X&&&9$33M*&&()FF+;*<=I )88CL'##!%h!<<5ffh    (;; A A%++Ix@A Axh444 =A A A A A4sx   A)C3,C-C3CC3CC3C.C39C:C3C1C3C3C3C3C.!C$"C.)	C3)rZ   r'   r   r*   r-   r+   )async_handle_recv_cachingr   r   s   ` r5   r   r     s1    505!5 
54 3GNrG   )qasyncior   rB   r;   r~   typingr   r   r   r   r   r	   r
   r   r   
eth_typingr   	eth_utilsr   r   r   r   r   r   r   r   web3._utils.cachingr   r   .web3._utils.caching.request_caching_validationr   r   r   r   r   r   r   r   web3._utils.emptyr    web3._utils.rpc_abir!   web3.exceptionsr"   
web3.typesr#   
web3.utilsr$   web3.providersr%   r&   r'   r(   r)   r*   r+   rU   r9   rI   rl   ETHr,   	FINALIZEDARB1ZKSYNCOETHMATICZKEVMBASESCRGNOAVAXBNBFTMrY   rj   __annotations__boolr`   rd   web3_clientVersionnet_versionALWAYS_CACHEeth_getBlockByNumber*eth_getRawTransactionByBlockNumberAndIndex$eth_getBlockTransactionCountByNumber!eth_getUncleByBlockNumberAndIndexeth_getUncleCountByBlockNumberr^   eth_getBlockByHasheth_getTransactionByHash'eth_getTransactionByBlockNumberAndIndex%eth_getTransactionByBlockHashAndIndex"eth_getBlockTransactionCountByHashBLOCK_IN_RESULT(eth_getRawTransactionByBlockHashAndIndexeth_getUncleByBlockHashAndIndexeth_getUncleCountByBlockHashBLOCKHASH_IN_PARAMSra   tupler@   CACHEABLE_REQUESTSrr   rw   r   ASYNC_VALIDATOR_TYPEr   r   r   r   r   r   )endpoints   0r5   <module>r      s     
 
 
	 	 		 	 	  
 
c 
c 
(K K&  '  KK6@@LL(NN'LLMMMMLL(KKwKKvLLKKvKKr $T.3	44& (');;<  
	" OOOO 22,,))&&    //--** 00''$$ 6BC(x%%CBTUhx11U CRRhx11R DWWxx22W	 	Xc]DcN;	  2779: E%7 ED E6  SM 	
 
&
&S9=H
I !<  (3-c3h8	$	#sD.)
)*, 
J6BC(x%%CJ + 	88J JY=E88J , 	99J tK1E$EF  E1D E E6! SM 	
 
0
	k3/3];R1SS c9S#}4556	@
	k3/#sL()	+
 c9S#|34454!
	'6#sM)*	,!
 c9S#}4556!m DURWn Ds0   
P!,
P&=
P+
P0
P5+
P:<
P?
Q