
    (i&              	          d dl Z d dlmZmZmZmZmZmZ d dlm	Z	 d dl
mZ er
d dlmZmZmZ h dZ edd	      Z ed
d	      Zdeeef   deddfdZdededefdZ	 	 d!dedededefdZdedee   deeef   defdZdedee   deeef   defdZdedee   deeef   defdZ	 	 d!dedededefdZdedee   deeef   defdZdedee   deeef   defdZdedee   deeef   defd Z y)"    N)TYPE_CHECKINGAnyDictSequenceTypeVarUnion)RPCEndpoint)RequestCacheValidationThreshold)AsyncBaseProviderBaseProviderPersistentConnectionProvider>   safelatestpending	finalizedASYNC_PROVIDER_TYPEr   )boundSYNC_PROVIDER_TYPEr   providerereturnc                 >    | j                   j                  d|       y )Nz1There was an exception while caching the request.)exc_info)loggererror)r   r   s     _/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/caching/request_caching_validation.py
_error_logr      s      OO;a      _args_kwargsc                       y)NT )r   r    s     r   always_cache_requestr#   '   s    r   blocknumblock_timestampc                 r   | j                   }	 | j                  }d| _         t        |t              rC| j	                  t        d      |j                  dg      d   }|t        |d   d      k  || _         S t        |t              r[|s8| j	                  t        d      t        |      dg      d   }t        |d   d      }|t        j                         |z
  k  || _         S | j                  j                  d|       	 || _         y# t        $ r}t        | |       Y d }~|| _         yd }~ww xY w# || _         w xY wNFeth_getBlockByNumberresultnumber   	timestampzvInvalid request_cache_validation_threshold value. This should not have happened. Request not cached.
    threshold: %scache_allowed_requests"request_cache_validation_threshold
isinstancer
   make_requestr	   valueinthextimer   r   	Exceptionr   r   r$   r%   r.   	thresholdthreshold_blockblockr   s           r   is_beyond_validation_thresholdr;   +   sS   
 &<<#A??	 +0'i!@A&3323ioou5MO s?8#<bAA0 +A'/ 	3'" !-- 67#h-9O #&eK&8""= #diikI&== +A' OO!!H
 
 +A'	  8Q*@'	 +A's7   AD 4A#D D 	D*D%D- %D**D- -	D6params_resultc                 J    |d   }|dk(  ryt        |d      }t        | |      S Nr   earliestTr+   )r$   )r3   r;   r   r<   r=   block_idr$   s        r    validate_from_block_id_in_paramsrC   W   s1    
 ayH:8R H)(XFFr   _paramsr)   c                    | j                   }	 d| _         d|v r]|j                  d      }| j                  t        d      |dg      d   }t	        | t        |d      t        |d   d            || _         S d|v r/t	        | t        |d   d      t        |d   d            || _         S | j                  j                  d	|       	 || _         y# t        $ r}t        | |       Y d }~|| _         yd }~ww xY w# || _         w xY w)
NFblockNumberr(   r)   r+   r,   r$   r%   r*   hCould not find block number in result. This should not have happened. Request not cached.
    result: %s)
r.   getr1   r	   r;   r3   r   r   r6   r   r   rD   r)   r.   r$   r:   r   s          r    validate_from_blocknum_in_resultrK   e   s,   
 &<<!A*/' F"zz-0H))23h5FE 2Xr* #E+$6 ;, +A'# 1VH-r2 #F;$7 <  +A' OO!!6
 
 +A'	  8Q*@'	 +A's6   A C 6+C )C 	C4C/#C7 /C44C7 7	D c                 8   | j                   }	 d| _         | j                  t        d      |d   dg      d   }t        | t	        |d   d      t	        |d   d            || _         S # t
        $ r}t        | |       Y d }~|| _         yd }~ww xY w# || _         w xY w	NFeth_getBlockByHashr   r)   r*   r+   r,   rG   )r.   r1   r	   r;   r3   r6   r   )r   r<   r=   r.   r:   r   s         r   !validate_from_blockhash_in_paramsrO      s    
 &<<A*/' %%,-q	5/A

 .x"-k 2B7
 +A'	  8Q*@'	 +A's*   AA' '	B0B<B BB 	Bc                   K   | j                   }	 | j                  }d| _         t        |t              rK| j	                  t        d      |j                  dg       d {   }|t        |d   d   d      k  || _         S t        |t              rc|s@| j	                  t        d      t        |      dg       d {   }t        |d   d   d      }|t        j                         |z
  k  || _         S | j                  j                  d|       	 || _         y7 7 ^# t        $ r}t        | |       Y d }~|| _         yd }~ww xY w# || _         w xY wwr'   r-   r7   s           r   $async_is_beyond_validation_thresholdrQ      sb    
 &<<!A??	 +0'i!@A$,$9$923ioou5M% O s?8#<X#FKK, +A'+ 	3'"&33 67#h-9O  #&eHok&BB"G #diikI&== +A' OO!!H
 
 +A'5  8Q*@'	 +A's}   EAD DD 6E>;D 9D:/D )E1D ED D 	E #D;/E 3E;E  E 	EEc                 f   K   |d   }|dk(  ryt        |d      }t        | |       d {   S 7 wr?   )r3   rQ   rA   s        r   &async_validate_from_block_id_in_paramsrS      s;     
 ayH:8R H5hRRRRs   (1/1c                 J  K   | j                   }	 d| _         d|v rm|j                  d      }| j                  t        d      |dg       d {   }t	        | t        |d      t        |d   d   d             d {   || _         S d|v r7t	        | t        |d   d      t        |d   d             d {   || _         S | j                  j                  d	|       	 || _         y7 7 m7 4# t        $ r}t        | |       Y d }~|| _         yd }~ww xY w# || _         w xY ww)
NFrF   r(   r+   r)   r,   rG   r*   rH   )
r.   rI   r1   r	   rQ   r3   r   r   r6   r   rJ   s          r   &async_validate_from_blocknum_in_resultrU      sK    
 &<<!A*/' F"zz-0H"//23h5F E >Xr* #E(OK$@" E , +A'# =VH-r2 #F;$7 <   +A' OO!!6
 
 +A'3  8Q*@'	 +A's   D#<C. C(/C. <C*=C.  D#/C. 7C,8C. ;D#C.  D#(C. *C. ,C. .	D7DD D#DD 	D  D#c                 n  K   | j                   }	 d| _         | j                  t        d      |d   dg       d {   }t        | t	        |d   d   d      t	        |d   d   d             d {   || _         S 7 A7 # t
        $ r}t        | |       Y d }~|| _         yd }~ww xY w# || _         w xY wwrM   )r.   r1   r	   rQ   r3   r6   r   )r   r<   r=   r.   responser   s         r   'async_validate_from_blockhash_in_paramsrX     s      &<<A*/' "..,-q	5/A
 
 :(+H5r: 2; ?D
 
 +A'


  8Q*@'	 +A'sb   B5*B  A<5B  0A>1B  4B5<B  >B   	B&	B!B) B5!B&&B) )	B22B5)NN)!r5   typingr   r   r   r   r   r   
web3.typesr	   
web3.utilsr
   web3.providersr   r   r   UNCACHEABLE_BLOCK_IDSr   r   r6   r   boolr#   r3   r;   strrC   rK   rO   rQ   rS   rU   rX   r"   r   r   <module>r`      s\       C 3;NO 1H ');;<AJ	    )A )A)A )A 
	)AXG GSMG #s(^G 
	G'A 'Ac]'A cN'A 
	'ATA ASMA #s(^A 
	A> 'A!'A'A 'A 
	'ATS!SSMS #s(^S 
	S'A!'Ac]'A cN'A 
	'ATA!A+3C=ACGS>A	Ar   