
    (i
                         d dl 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mZ d dlmZmZ d dlmZmZ erd dlmZmZ dZd	ed
edefdZ G d de      Zy)    N)TYPE_CHECKINGAnyCallable
CollectionDictOptionalUnioncast)curry)StaleBlockchainWeb3ValueError)Web3MiddlewareWeb3MiddlewareBuilder)	BlockDataRPCEndpoint)	AsyncWeb3Web3)eth_getBlockByNumberblockallowable_delayreturnc                 D    | rt        j                          | d   z
  |k  ryy)N	timestampTF)time)r   r   s     K/var/www/br/venv/lib/python3.12/site-packages/web3/middleware/stalecheck.py	_is_freshr   '   s"    $))+k 22oE    c                       e Zd ZU eed<   ee   ed<   eeee	   f   ed<   e
eefdeded   dee   defd              Zdd	d
edefdZdd	d
edefdZy)StalecheckMiddlewareBuilderr   skip_stalecheck_for_methodscachew3)r   AsyncWeb3[Any]r   c                 j    | dk  rt        d      t        |      }| |_        ||_        dd i|_        |S )Nr   zFYou must set a positive allowable_delay in seconds for this middlewarelatest)r   r   r   r    r!   )r   r"   r    
middlewares       r   buildz!StalecheckMiddlewareBuilder.build2   sK     a X  14
%4
"1L
.$d+
r   methodr   paramsc                 L   || j                   vrt        | j                  d   | j                        spt	        d| j
                        }|j                  j                  d      }t        || j                        r|| j                  d<   ||fS t        || j                        ||fS )Nr%   r   	r    r   r!   r   r
   _w3eth	get_blockr   selfr(   r)   r"   r%   s        r   request_processorz-StalecheckMiddlewareBuilder.request_processorC   s    999TZZ143G3GH&$((+))(3VT%9%9:+1DJJx( v~ *&$2F2FGGv~r   c                 h  K   || j                   vrt        | j                  d   | j                        sxt	        d| j
                        }|j                  j                  d       d {   }t        || j                        r|| j                  d<   ||fS t        || j                        ||fS 7 Gw)Nr%   r#   r+   r/   s        r   async_request_processorz3StalecheckMiddlewareBuilder.async_request_processorR   s     999TZZ143G3GH*DHH5!vv//99VT%9%9:+1DJJx( v~ *&$2F2FGGv~ :s   A&B2(B0)AB2N)__name__
__module____qualname__int__annotations__r   strr   r   r   staticmethodr   SKIP_STALECHECK_FOR_METHODSr	   r   r'   r   r1   r3    r   r   r   r   -   s    !+C0Xi(())
 8S*+ &0_ 
	   s s M 3 SV r   r   )r   typingr   r   r   r   r   r   r	   r
   toolzr   web3.exceptionsr   r   web3.middleware.baser   r   
web3.typesr   r   web3r   r   r;   r7   boolr   r   r<   r   r   <module>rD      sd    	 	 	
 
 8 Y   0"7 0r   