
    sgS                     *   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%                  de       ej&                  j)                  e       d Zd Zd Z	 dd	Zd
 Zy)    N)Optional)get_remote_module_template_remote_module_z#Created a temporary directory at %sc                 .   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                X/var/www/html/venv/lib/python3.12/site-packages/torch/distributed/nn/jit/instantiator.py#get_arg_return_types_from_interfacer-      s   6 QPQ  ((889IJN				$	$B)).9'6688b	;<N<]<]<_;`ab8&00;ML$$$!++ /HMM*%%'"%h&<&<%= > ""--8==/:K9LM  ./  #Lyy&H)!"-II/0M}$$%***$$Q'H(--(O]O33    c                 P   	 t        |       5 }|j                         }d d d        |k7  r=t        | d      5 }t        j	                  d|        |j                  |       d d d        y t        j	                  d|        y # 1 sw Y   bxY w# t        $ r d }Y rw xY w# 1 sw Y   y xY w)Nwz
Writing %szSkipped writing %s)openreadOSErrorloggerinfowrite)out_pathtextfold_texts       r,   _writer;   @   s    (^ 	 qvvxH	  4(C  	AKKh/GGDM	 	 	((3	  	  	 	s2   B A?B (B?BB BBB%c                      t        |      j                  di |}t        j                  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   O   s    4)f ww||&+@*A(EH 8() ! ..2G1HJr.   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_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   d   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	   )rO   rS   rT   rP   rQ   rR   rU   T)rX   r[   rJ   )rE   rF   s     r,   1instantiate_non_scriptable_remote_module_templatere      sA    +nN;$A# %'H 22GSWXXr.   )T)rB   loggingr?   systempfiletypingr   r   9torch.distributed.nn.jit.templates.remote_module_templater   	getLoggerrZ   r4   rX   TemporaryDirectory	_TEMP_DIRr   rA   r5   r@   r   r-   r;   rJ   rb   re   r=   r.   r,   <module>rn      s      	 
   
 
		8	$ !'H'')	!*  13Q R . /#4L4, =A&RYr.   