ó
    Eñi¨  ã                   ó�   • S SK rS SKrS SKrS SKrS SKJr  SrS r " S S\R                  R                  5      rS r S
S jrS	 rg)é    N)Úget_remote_module_templateÚ_remote_module_c                 óL  • [        U SS5      (       d   S5       e[        R                  R                  U 5      n[        R                  R
                  R                  nUR                  U5      nSUR                  5       ;   d   SUR                  5        35       eUR                  S5      n/ n/ nUc   eUR                   Hs  nUR                  UR                  5        UR                  5       (       a  SUR                   3nOSnUR                   SUR                   U 3n	UR                  U	5        Mu     US	S  nS
R!                  U5      n
US	S  nS
R!                  U5      n[#        UR$                  5      S	:X  d   eUR$                  S   n['        UR                  5      nX«U4$ )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                Úb/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/distributed/nn/jit/instantiator.pyÚ#get_arg_return_types_from_interfacer,      s°  € ÜÐ#Ð%AÀ5×IÑIð ØQóÐIô ×(Ñ(×8Ñ8Ð9IÓJ€NÜ	�‰×	Ñ	×	$Ñ	$€BØ×)Ñ)¨.Ó9ÐØÐ*×9Ñ9Ó;Ó;ð Ø
<Ð=O×=^Ñ=^Ó=`Ð<aÐbóÐ;ð '×0Ñ0°Ó;€Mà€LØÐØÑ$Ð$Ð$Ø!×+Ô+ˆØ×Ñ˜HŸM™MÔ*à×%Ñ%×'Ñ'Ø"% h×&<Ñ&<Ð%=Ð >Ñà "ÐØ"Ÿ-™-˜¨¨8¯=©=¨/Ð:KÐ9LÐMˆØ× Ñ  Ö.ñ ,ð    Ð#€LØ�y‰y˜Ó&€Hà)¨!¨"Ð-ÐØ—I‘IÐ/Ó0€Mäˆ}×$Ñ$Ó%¨Ó*Ð*Ð*Ø×$Ñ$ QÑ'€HÜ˜(Ÿ-™-Ó(€Oà OÐ3Ð3ó    c                   ó|   • \ rS rSrSrS\SS4S jrS\S\4S jrS	\S\4S
 jr	S\S\4S jr
S	\S\4S jrSS jrSrg)Ú_StringLoaderé6   aa  
A custom loader for dynamically generated Python source code.

Inherits from SourceLoader for API compatibility but overrides exec_module()
to avoid bytecode caching issues. The default SourceLoader.exec_module() calls
cache_from_source() which fails with IndexError when the filename doesn't
correspond to a real filesystem path with a .py extension.
ÚdataÚreturnNc                 ó   • Xl         g ©N©r1   )Úselfr1   s     r+   Ú__init__Ú_StringLoader.__init__@   s   € Ø�	r-   Úfullnamec                 ó   • U R                   $ r4   r5   ©r6   r9   s     r+   Ú
get_sourceÚ_StringLoader.get_sourceC   s   € Ø�y‰yÐr-   Úpathc                 ó8   • U R                   R                  S5      $ )Nzutf-8)r1   Úencode©r6   r>   s     r+   Úget_dataÚ_StringLoader.get_dataF   s   € Ø�y‰y×Ñ Ó(Ð(r-   c                 ó   • SU S3$ )NÚ<z>.py© r;   s     r+   Úget_filenameÚ_StringLoader.get_filenameI   s   € Ø�8�*˜DÐ!Ð!r-   c                 ó   • [        S5      e)Nz4dynamically generated module has no filesystem stats)ÚOSErrorrA   s     r+   Ú
path_statsÚ_StringLoader.path_statsL   s   € äÐLÓMÐMr-   c                 ó°   • U R                  UR                  5      nU R                  UR                  5      n[        X#SSS9n[	        XAR
                  5        g)zÒ
Execute the module by compiling and running the source directly.

This overrides SourceLoader.exec_module() to bypass the problematic
get_code() -> cache_from_source() code path that fails on dynamic modules.
ÚexecT)Údont_inheritN)r<   Ú__name__rG   ÚcompilerN   Ú__dict__)r6   ÚmoduleÚsourceÚfilenameÚcodes        r+   Úexec_moduleÚ_StringLoader.exec_moduleP   sD   € ð —‘ §¡Ó1ˆØ×$Ñ$ V§_¡_Ó5ˆÜ�v¨¸dÑCˆÜˆT—?‘?Õ#r-   r5   )r2   N)rP   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r7   r<   ÚbytesrB   rG   ÚdictrK   rW   Ú__static_attributes__rF   r-   r+   r/   r/   6   sn   † ñð˜Sð  Tô ð 3ð ¨3ô ð)˜Sð ) Uô )ð" Sð "¨Sô "ðN˜sð N tô N÷
$r-   r/   c                 óh  • U [         R                  ;   a  [         R                  U    $ [        [        U5      R                  " S0 UD65      n[
        R                  R                  XSS9nUc   e[
        R                  R                  U5      nU[         R                  U '   UR                  U5        U$ )Nz	torch-git)ÚoriginrF   )
ÚsysÚmodulesr/   r   ÚformatÚ	importlibÚutilÚspec_from_loaderÚmodule_from_specrW   )Úgenerated_module_nameÚstr_dictÚ!enable_moving_cpu_tensors_to_cudaÚloaderÚspecrS   s         r+   Ú&_do_instantiate_remote_module_templatern   ]   s¥   € ð ¤§¡Ó+Ü�{‰{Ð0Ñ1Ð1äÜ"Ð#DÓE×LÒLÑXÈxÑXó€Fô �>‰>×*Ñ*Ø¨kð +ð €Dð ÑÐÐÜ�^‰^×,Ñ,¨TÓ2€FØ)/„C‡K�KÐ%Ñ&Ø
×Ñ�vÔØ€Mr-   c           
      ó\  • [        U SS5      (       d  [        SU  S35      e[        R                  R	                  U 5      R                  SS5      n[         U 3nSU R                   SU R                   S	3n[        U 5      u  pVnS
nSU 3n	SU S3n
[        UUU	U
UUSS9n[        X;U5      $ )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_PREFIXrY   rP   r,   r^   rn   )Úmodule_interface_clsrk   Úmodule_interface_cls_nameri   Úassign_module_interface_cls_strr(   r)   r*   Ú
kwargs_strÚarrow_and_return_type_strÚ arrow_and_future_return_type_strrj   s               r+   Ú-instantiate_scriptable_remote_module_templaterƒ   p   s  € ô Ð'Ð)EÀu×MÑMÜØ#Ð$8Ð#9ð :#ð #ó
ð 	
ô !&× 3Ñ 3× CÑ CØó!ç�gˆc�3Óð ô  ,˜nÐ-FÐ,GÐHÐð Ð$×/Ñ/Ð0°Ø×(Ñ(Ð
)Ð)Að	Cð $ô 0SØó0Ñ,€H˜_ð €JØ"& Ð&7Ð 8ÐØ)4°_Ð4EÀQÐ'GÐ$äØ$CØØ7Ø%EØØØ0ñ€Hô 2ØÐ)Jóð r-   c            
      óJ   • [          S3n [        SSSSSSSS9n[        XS5      $ )	NÚnon_scriptablezmodule_interface_cls = Nonez*argsz**kwargsz*args, **kwargsr   )rs   rw   rx   rt   ru   rv   ry   T)r|   r^   rn   )ri   rj   s     r+   Ú1instantiate_non_scriptable_remote_module_templater†   ™   s?   € Ü+˜n¨NÐ;ÐÜØ$AØØØ#Ø Ø%'Øñ€Hô 2Ð2GÐSWÓXÐXr-   )T)Úimportlib.abcre   Úimportlib.utilrb   r   Ú9torch.distributed.nn.jit.templates.remote_module_templater   r|   r,   ÚabcÚSourceLoaderr/   rn   rƒ   r†   rF   r-   r+   Ú<module>rŒ      sS   ðó Û Û 
ã õð
 !€ò#4ôL$$�I—M‘M×.Ñ.ô $$òNð( =Aô&óRYr-   