
    &Vji                     R   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZd dl	m
Z
  ej        e          ZdZ ej                    Zej        Z e j        ej                   e                    de           ej                            e           d Zd Zd Z	 dd
Zd ZdS )    N)Optional)get_remote_module_template_remote_module_z#Created a temporary directory at %sc                 F   t          | dd          s
J d            t          j                            |           }t          j        j        j        }|                    |          }d|                                v sJ d|                                             |	                    d          }g }g }|J |j
        D ]e}|                    |j                   |                                rd|j         }nd}|j         d|j         | }	|                    |	           f|d	d          }d
                    |          }
|d	d          }d
                    |          }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                _/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/distributed/nn/jit/instantiator.py#get_arg_return_types_from_interfacer-      s   #%A5II  Q I (889IJJN			$B)).99*99;;;;;b=O=^=^=`=`bb <;; '00;;ML$$$!+ / /HM***%%'' 	# >h&< > > ""-MM8=M:KMM  ....#Lyy&&H)!""-II/00M}$%%****$Q'H(-((O]O33    c                    	 t          |           5 }|                                }d d d            n# 1 swxY w Y   n# t          $ r d }Y nw xY w||k    r[t          | d          5 }t                              d|            |                    |           d d d            d S # 1 swxY w Y   d S t                              d|            d S )Nwz
Writing %szSkipped writing %s)openreadOSErrorloggerinfowrite)out_pathtextfold_texts       r,   _writer;   B   sS   (^^ 	 qvvxxH	  	  	  	  	  	  	  	  	  	  	  	  	  	  	    4(C   	AKKh///GGDMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	((33333s9   > 2> 6> 6> AA&1B$$B(+B(c                      t          |          j        di |}t          j                            t
          |  d          }t          ||           t          j                     t          j	        |            }|S )Nz.py )
r   formatospathr   INSTANTIATED_TEMPLATE_DIR_PATHr;   	importlibinvalidate_cachesimport_module)generated_module_namestr_dict!enable_moving_cpu_tensors_to_cudagenerated_code_textr7   generated_modules         r,   &_do_instantiate_remote_module_templaterJ   Q   s    4)    w||&+@(E(E(E H 8())) !!! .2G/IJJr.   Tc           	      z   t          | dd          st          d|  d          t          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_PREFIX
__module____name__r-   dictrJ   )module_interface_clsrG   module_interface_cls_namerE   assign_module_interface_cls_strr)   r*   r+   
kwargs_strarrow_and_return_type_str arrow_and_future_return_type_strrF   s               r,   -instantiate_scriptable_remote_module_templaterb   f   sB    ')EuMM 
#$8 # # #
 
 	
 !& 3 C C! !gc3   ,H-FHH	C$/ 	C 	C(	C 	C 	C $ 0S0 0,Hm_ J 8 8 8'G_'G'G'G$$C7%E0  H 2x)J  r.   c            	      d    t            d} t          ddddddd          }t          | |d          S )	Nnon_scriptablezmodule_interface_cls = Nonez*argsz**kwargsz*args, **kwargsr	   )rO   rS   rT   rP   rQ   rR   rU   T)rX   r[   rJ   )rE   rF   s     r,   1instantiate_non_scriptable_remote_module_templatere      sP    +;;;$A# %'  H 22GSWXXXr.   )T)atexitrB   loggingr?   systempfiletypingr   r   9torch.distributed.nn.jit.templates.remote_module_templater   	getLoggerrZ   r4   rX   TemporaryDirectory	_TEMP_DIRr   rA   registercleanupr5   r@   r   r-   r;   rJ   rb   re   r=   r.   r,   <module>rq      sS         				 



             
 
	8	$	$ !'H'))	!*  	! " " " 13Q R R R . / / /#4 #4 #4L4 4 4  , =A& & & &RY Y Y Y Yr.   