
    (ig              	           d dl Z d dlmZ d dl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 erd dlmZ dedee   fd	Z	 dd
e
d   deeef   dee
d      ddfdZy)    N)UnsupportedOperation)TYPE_CHECKINGAnyDictListOptionalSequenceUnion)Web3AttributeErrorWeb3ValidationError)Module)BaseWeb3module_classreturnc                     t        t        j                  | j                        j                        }|D cg c]	  }|dvs| }}t        |      dkD  rt        d| j                   d|       |S c c}w )N)selfargskwargs   zA module class may accept a single `Web3` instance as the first argument of its __init__() method. More than one argument found for z: )listinspect	signature__init__
parameterslenr   __name__)r   init_params_rawparammodule_init_paramss       C/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/module.py)_validate_init_params_and_return_if_foundr!      s    7,,\-B-BCNNOO*e;U.U  ""S$$%R(:';=
 	
 s   	A2A2parent_module)r   r   module_definitionsw3c                    |j                         D ]  \  }}t        |t              }|r|d   n|}t        | |      rt	        d|  d| d      |"ddlm}m} t        | |      st        | |      r| }t        |      }	t        |	      dk(  rt        | | ||             nt        | | |              |st        |      dk(  r|d   }
t        | |      }t        ||
|       t        |      dk7  st        d       y )	Nr   zCannot set z module named 'z;'.  The web3 object already has an attribute with that name)	AsyncWeb3Web3r      z1Module definitions can only have 1 or 2 elements.)items
isinstancer	   hasattrr   web3r&   r'   r!   r   setattrgetattrattach_modulesr   )r"   r#   r$   module_namemodule_infomodule_info_is_list_liker   r&   r'   r   submodule_definitionsmodules               r    r/   r/   +   s   
 %7$<$<$> + [#-k8#D )A{1~{=+.$m_OK= IK K  :
 -.*]I2V"F|T!"a'
 M;R0@A M;?#;1$(3A% <v'<bA[!Q&)G S+    )N)r   ior   typingr   r   r   r   r   r	   r
   web3.exceptionsr   r   web3.moduler   	web3.mainr   strr!   r/    r5   r    <module>r=      s       "C DI & 150-.0S#X0 	+,-0 
	0r5   