
    qi                         d dl Zd dlZd dlZd dlZd dlmZ dZd Z G d dej                  j                        Zd Z	 d
dZd	 Zy)    N)get_remote_module_template_remote_module_c                 .   t        | dd      sJ d       t        j                  j                  |       }t        j                  j
                  j                  }|j                  |      }d|j                         v sJ d|j                                 |j                  d      }g }g }|J |j                  D ]m  }|j                  |j                         |j                         rd|j                   }nd}|j                   d|j                   | }	|j                  |	       o |d	d  }d
j!                  |      }
|d	d  }d
j!                  |      }t#        |j$                        d	k(  sJ |j$                  d   }t'        |j                        }|
||fS )N__torch_script_interface__FzGExpect a TorchScript class interface decorated by @torch.jit.interface.forwardz2Expect forward in interface methods, while it has z =  z:    z, r   )getattrtorch_jit_internal_qualified_namejit_state
_python_cuget_interfacegetMethodNames	getMethod	argumentsappendnamehas_default_valuedefault_valuetypejoinlenreturnsstr)module_interfacequalified_namecumodule_interface_cmethod_schemaarg_str_listarg_type_str_listargumentdefault_value_strarg_type_strargs_strarg_types_strreturn_type_strs                k/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/distributed/nn/jit/instantiator.py#get_arg_return_types_from_interfacer,      s   #%A5I QI ((889IJN				$	$B)).9*99;; 
<=O=^=^=`<ab; '00;ML$$$!++ /HMM*%%'"%h&<&<%= > ""--8==/:K9LM  ./  #Lyy&H)!"-II/0M}$$%***$$Q'H(--(O]O33    c                   $    e Zd Zd Zd Zd Zd Zy)_StringLoaderc                     || _         y Ndata)selfr3   s     r+   __init__z_StringLoader.__init__7   s	    	r-   c                     | j                   S r1   r2   r4   fullnames     r+   
get_sourcez_StringLoader.get_source:   s    yyr-   c                 8    | j                   j                  d      S )Nzutf-8)r3   encode)r4   paths     r+   get_dataz_StringLoader.get_data=   s    yy((r-   c                     |S r1    r7   s     r+   get_filenamez_StringLoader.get_filename@   s    r-   N)__name__
__module____qualname__r5   r9   r=   r@   r?   r-   r+   r/   r/   6   s    )r-   r/   c                 j   | t         j                  v rt         j                  |    S t         t        |      j                  di |      }t
        j                  j                  | |d      }|J t
        j                  j                  |      }|t         j                  | <   |j                  |       |S )Nz	torch-git)originr?   )
sysmodulesr/   r   format	importlibutilspec_from_loadermodule_from_specexec_module)generated_module_namestr_dict!enable_moving_cpu_tensors_to_cudaloaderspecmodules         r+   &_do_instantiate_remote_module_templaterT   D   s     +{{011L"#DELLXxXF >>**vk + D ^^,,T2F)/CKK%&
vMr-   c           	      \   t        | dd      st        d|  d      t        j                  j	                  |       j                  dd      }t         | }d| j                   d| j                   d	}t        |       \  }}}d
}d| }	d| d}
t        |||	|
||d      }t        |||      S )Nr   Fzmodule_interface_cls z8 must be a type object decorated by @torch.jit.interface._zfrom z import z as module_interface_clsr   z -> z -> Future[]z@torch.jit.script)assign_module_interface_cls	arg_typesarrow_and_return_typearrow_and_future_return_typeargskwargsjit_script_decorator)r
   
ValueErrorr   r   r   replace_FILE_PREFIXrB   rA   r,   dictrT   )module_interface_clsrP   module_interface_cls_namerN   assign_module_interface_cls_strr(   r)   r*   
kwargs_strarrow_and_return_type_str arrow_and_future_return_type_strrO   s               r+   -instantiate_scriptable_remote_module_templaterj   W   s    ')EuM#$8#9 :# #
 	
 !& 3 3 C C!gc3   ,n-F,GH $//0((
))A	C $ 0S0,Hm_ J"&&7 8)4_4EQ'G$$C7%E0H 2x)J r-   c            	      R    t          d} t        ddddddd      }t        | |d      S )	Nnon_scriptablezmodule_interface_cls = Nonez*argsz**kwargsz*args, **kwargsr   )rY   r]   r^   rZ   r[   r\   r_   T)rb   rc   rT   )rN   rO   s     r+   1instantiate_non_scriptable_remote_module_templaterm      sA    +nN;$A# %'H 22GSWXXr-   )T)importlib.abcrI   importlib.utilrF   r   9torch.distributed.nn.jit.templates.remote_module_templater   rb   r,   abcSourceLoaderr/   rT   rj   rm   r?   r-   r+   <module>rs      sR      
 
 !#4LIMM.. ( =A&RYr-   