
    (i,                         d dl mZ d dl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 d dlmZ d dlmZmZ ddZ G d	 d
e	e      ZeZy)    )ABC)TYPE_CHECKINGAnycast)AttributeDict)Web3Middleware)	AsyncWeb3Web3)PersistentConnectionProvider)RPCEndpointRPCResponsec                     d| v rt        j                  | d         | d<   | S d| v r(d| d   v r!t        j                  | d   d         | d   d<   | S )zX
    Process the RPC response by converting nested dictionaries into AttributeDict.
    resultparamsr   	recursive)responses    I/var/www/br/venv/lib/python3.12/site-packages/web3/middleware/attrdict.py_handle_async_responser      sq     8*44Xh5GH O 
X	(hx.@"@'4'>'>Xx((
8$ O    c                   8    e Zd ZdZdddddefdZdddddefdZy	)
AttributeDictMiddlewarez
    Converts any result which is a dictionary into an `AttributeDict`.

    Note: Accessing `AttributeDict` properties via attribute
        (e.g. my_attribute_dict.property1) will not preserve typing.
    methodr   r   r   returnc                 N    d|v r t        j                  |d         }i |d|i}|S )Nr   r   )selfr   r   
new_results       r   response_processorz*AttributeDictMiddleware.response_processor6   s5    x&00(1CDJ9(9Hj9Hr   c                    K   | j                   j                  j                  rBt        d| j                   j                        }|j                  j                  |t               |S t        |      S w)Nr   )_w3providerhas_persistent_connectionr   _request_processor$append_middleware_response_processorr   )r   r   r   r!   s       r   async_response_processorz0AttributeDictMiddleware.async_response_processor>   s^      8866:DHH<M<MNH''LL0 O)(33s   A.A0N)__name__
__module____qualname____doc__r   r   r%    r   r   r   r   .   s?     - TW 
4#
4/<
4	
4r   r   N)r   r   r   r   )abcr   typingr   r   r   web3.datastructuresr   web3.middleware.baser   web3r	   r
   web3.providersr   
web3.typesr   r   r   r   r*   r   r   <module>r2      sM     4nc 4: 2 r   