
    (i              
           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 d dlmZ d dlmZmZmZmZ d dlmZmZ dd	hZd
dhZdee   fdZ	 ddedeeeeeef   f      defdZ G d de      Zy)    N)	AnyCallableDictListOptionalSequenceTupleTypeUnion)urlparse)URI)CannotHandleRequest)HTTPProviderIPCProviderJSONBaseProviderLegacyWebSocketProvider)RPCEndpointRPCResponsehttphttpswswssreturnc                  p    t        t        j                  j                  dd            } | sy t	        |       S )NWEB3_PROVIDER_URI )r   osenvirongetload_provider_from_uri)
uri_strings    D/var/www/br/venv/lib/python3.12/site-packages/web3/providers/auto.pyload_provider_from_environmentr#   '   s-    RZZ^^$7<=J!*--    r!   headersc                    t        |       }|j                  dk(  rt        |j                        S |j                  t        v rt        | |      S |j                  t        v rt        |       S t        d|j                  d|       )Nfilez,Web3 does not know how to connect to scheme z in )	r   schemer   pathHTTP_SCHEMESr   
WS_SCHEMESr   NotImplementedError)r!   r%   uris      r"   r    r    /   s}     :
C
zzV388$$	|	#J00	z	!&z22!:zznD0
 	
r$   c            	       "    e Zd ZeeeefZdZ	 dde	e
eedef   ee   f         ddf fdZdededefdZd	eeeef      deee   ef   fd
ZddedefdZ	 ddedededefdZ	 dd	eeeef      dedeee   ef   fdZdede	e   fdZ xZS )AutoProviderNpotential_providers.r   c                 X    t         |           |r|| _        y| j                  | _        y)a7  
        :param iterable potential_providers: ordered series of provider classes
            to attempt with

        AutoProvider will initialize each potential provider (without arguments),
        in an attempt to find an active node. The list will default to
        :attribute:`default_providers`.
        N)super__init___potential_providersdefault_providers)selfr0   	__class__s     r"   r3   zAutoProvider.__init__I   s)     	(;D%(,(>(>D%r$   methodparamsc                 n    	 | j                  ||      S # t        $ r | j                  ||d      cY S w xY wNF	use_cache)_proxy_requestOSError)r6   r8   r9   s      r"   make_requestzAutoProvider.make_request]   sD    	H&&vv66 	H&&vv&GG	Hs    44requestsc                 j    	 | j                  |      S # t        $ r | j                  |d      cY S w xY wr;   )_proxy_batch_requestr?   )r6   rA   s     r"   make_batch_requestzAutoProvider.make_batch_requestc   s@    	H,,X66 	H,,X,GG	Hs    22show_tracebackc                 T    | j                  d      }|d uxr |j                  |      S )NTr<   )_get_active_provideris_connected)r6   rE   providers      r"   rH   zAutoProvider.is_connectedk   s0    ,,t,<t#M(=(=n(MMr$   r=   c                 p    | j                  |      }|t        d| d| d      |j                  ||      S )Nz9Could not discover provider while making request: method:z
params:
)rG   r   r@   )r6   r8   r9   r=   rI   s        r"   r>   zAutoProvider._proxy_requesto   sS     ,,Y7% 6("6 
 $$VV44r$   c                 h    | j                  |      }|t        d| d      |j                  |      S )NzACould not discover provider while making batch request: requests:rK   )rG   r   rD   )r6   rA   r=   rI   s       r"   rC   z!AutoProvider._proxy_batch_request{   sK     ,,Y7%$:R) 
 **844r$   c                     |r| j                   | j                   S | j                  D ]'  } |       }||j                         s|| _         |c S  y N)_active_providerr4   rH   )r6   r=   ProviderrI   s       r"   rG   z!AutoProvider._get_active_provider   s[    ..:(((11 	 HzH#(=(=(?(0%		  r$   rN   )F)T)__name__
__module____qualname__r#   r   r   r   r5   rO   r   r   r   r   r   r
   r3   r   r   r   r@   r   r	   rD   boolrH   r>   rC   rG   __classcell__)r7   s   @r"   r/   r/   @   sT   &	  	?%U8C)9$9:DAQ<RRST
?
 
?(H; H H HHU;#345H	tK +-	.HN4 ND N
 CG
5!
5+.
5;?
5	
5 JN
5U;#345
5BF
5	tK +-	.
5
d 
x@P7Q 
r$   r/   rN   )r   typingr   r   r   r   r   r   r	   r
   r   urllib.parser   
eth_typingr   web3.exceptionsr   web3.providersr   r   r   r   
web3.typesr   r   r*   r+   r#   strr    r/    r$   r"   <module>r^      s    	
 
 
 
  E]
.1A(B . FJ

&tCsCx,@'AB

"Q# Qr$   