§
    ž²Åja  ã                   ó|  — d dl Z d dlZd dlmZmZmZmZmZmZ d dl	m
Z
 d dlZd dlmc mZ 	 d dlZn# e$ r dZY nw xY wer e
de¬¦  «        defd„¦   «         Zndefd„Zd	ed
ef         ded
ef         fd„Zded
eej                 f         dededej        fd„Zded
ef         ded
ef         fd„Z G d„ d¦  «        Zdej        j        j        deej                 dedeej        eej        d
f         f         fd„Zdej        de fd„Z! G d„ d¦  «        Z"dedede#dedef
d„Z$dedededed e#d!e#defd"„Z%dS )#é    N)ÚAnyÚCallableÚListÚOptionalÚTYPE_CHECKINGÚUnion)Ú
deprecatedze`torch._dynamo.external_utils.is_compiling` is deprecated. Use `torch.compiler.is_compiling` instead.)ÚcategoryÚreturnc                  ó>   — t           j                             ¦   «         S ©N©ÚtorchÚcompilerÚis_compiling© ó    úMC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/external_utils.pyr   r      s   € õ
 Œ~×*Ò*Ñ,Ô,Ð,r   c                  ó>   — t           j                             ¦   «         S )zd
        Indicates whether we are tracing/compiling with torch.compile() or torch.export().
        r   r   r   r   r   r      s   € õ Œ~×*Ò*Ñ,Ô,Ð,r   Úfn.c                 ór   ‡ — t          j        ‰ ¦  «        dt          dt          dt          fˆ fd„¦   «         }|S )zC
    Create an extra frame around fn that is not in skipfiles.
    ÚargsÚkwargsr   c                  ó   •—  ‰| i |¤ŽS r   r   )r   r   r   s     €r   Úinnerzwrap_inline.<locals>.inner+   s   ø€ àˆr�4Ð"˜6Ð"Ð"Ð"r   )Ú	functoolsÚwrapsr   )r   r   s   ` r   Úwrap_inliner   &   sT   ø€ õ
 „_�RÑÔð#•Sð #¥Cð #­Cð #ð #ð #ð #ð #ñ Ôð#ð €Lr   Úhookr   r   c                 ót   —  | |Ž }|€|d         S |                      d¦  «        dk    rt          d¦  «        ‚|S )zB
    Used by compiled autograd to handle hook returning None.
    Nr   Ú	hook_typeÚpost_acc_grad_hookz5Tensor post accumulate grad hooks should return None.)ÚgetÚRuntimeError)r   r   r   Úresults       r   Ú	call_hookr&   2   sI   € ð ˆT�4ˆ[€FØ€~Ø�AŒwˆØ	�Š�KÑ	 Ô	 Ð$8Ò	8Ð	8ÝÐRÑSÔSÐSØ€Mr   Úfc                 ó„   ‡ — t           s‰ S t          j        ‰ ¦  «        dt          dt          dt          fˆ fd„¦   «         }|S )z�Decorator that turns a function from ``np.ndarray``s to ``np.ndarray``s into a function
    from ``torch.Tensor``s to ``torch.Tensor``s.
    r   r   r   c                  ó¢   •— t          j        t          j        d„ | |f¦  «        \  } } ‰| i |¤Ž}t          j        t          j        d„ |¦  «        S )Nc                 ó*   — |                       ¦   «         S r   )Únumpy©Úxs    r   ú<lambda>z*wrap_numpy.<locals>.wrap.<locals>.<lambda>J   s   €  A§G¢G¡I¤I€ r   c                 ó*   — t          j        | ¦  «        S r   )r   Ú	as_tensorr,   s    r   r.   z*wrap_numpy.<locals>.wrap.<locals>.<lambda>M   s   € ½%¼/È!Ñ:LÔ:L€ r   )ÚpytreeÚtree_map_onlyr   ÚTensorÚnpÚndarray)r   r   Úoutr'   s      €r   Úwrapzwrap_numpy.<locals>.wrapG   s[   ø€ åÔ+ÝŒLÐ-Ð-°°f¨~ñ
ô 
‰ˆˆfð ˆa�Ð ˜Ð Ð ˆÝÔ#¥B¤JÐ0LÐ0LÈcÑRÔRÐRr   )r4   r   r   r   )r'   r7   s   ` r   Ú
wrap_numpyr8   @   sj   ø€ õ ð Øˆå„_�QÑÔðS•Cð S¥3ð S­3ð Sð Sð Sð Sð Sñ ÔðSð €Kr   c                   óf   — e Zd Zdej        j        j        deej                 ddfd„Z	de
defd„ZdS )ÚFakeBackwardCFunctionÚrealÚsaved_tensorsr   Nc                 ó"   — || _         || _        d S r   )r;   r<   )Úselfr;   r<   s      r   Ú__init__zFakeBackwardCFunction.__init__S   s   € ð
 ˆŒ	Ø*ˆÔÐÐr   Únamec                 óz   — |dk    r!t          j        dt          ¦  «         | j        S t	          | j        |¦  «        S )NÚsaved_variablesz4'saved_variables' is deprecated; use 'saved_tensors')ÚwarningsÚwarnÚDeprecationWarningr<   Úgetattrr;   )r>   r@   s     r   Ú__getattr__z!FakeBackwardCFunction.__getattr__[   sE   € ØÐ$Ò$Ð$ÝŒMØFÝ"ñô ð ð Ô%Ð%å�t”y $Ñ'Ô'Ð'r   )Ú__name__Ú
__module__Ú__qualname__r   ÚautogradÚfunctionÚBackwardCFunctionr   r3   r?   Ústrr   rG   r   r   r   r:   r:   R   su   € € € € € ð+àŒnÔ%Ô7ð+ð ˜EœLÔ)ð+ð 
ð	+ð +ð +ð +ð( ð (¨ð (ð (ð (ð (ð (ð (r   r:   Úbackward_c_functionr<   c                 ó|   — t          | |¦  «        } |j        j        |g|¢R Ž }t          |t          ¦  «        s|f}|S r   )r:   Ú_forward_clsÚbackwardÚ
isinstanceÚtuple)rO   r<   r   ÚfakeÚgradss        r   Úcall_backwardrW   f   sO   € õ
 !Ð!4°mÑDÔD€DØ&ˆDÔÔ& tÐ3¨dÐ3Ð3Ð3€Eå�e�UÑ#Ô#ð Ø�ˆà€Lr   r-   c                 óN   — |                       ¦   «                              ¦   «         S r   )Úuntyped_storageÚsizer,   s    r   Úuntyped_storage_sizer[   t   s    € Ø×ÒÑÔ×#Ò#Ñ%Ô%Ð%r   c                   ó²   — e Zd Zedeeg df                  deg df         ddfd„¦   «         Zedeeg df                  ddfd„¦   «         Zedd„¦   «         ZdS )	ÚFakeCompiledAutogradEngineÚfinal_callbacksNÚcbr   c                 ó0   — |                       |¦  «         d S r   )Úappend)r^   r_   s     r   Úqueue_callbackz)FakeCompiledAutogradEngine.queue_callbacky   s   € ð 	×Ò˜rÑ"Ô"Ð"Ð"Ð"r   c                 ó¬   — d}|t          | ¦  «        k     r*| |         } |¦   «          |dz  }|t          | ¦  «        k     °*|                      ¦   «          d S )Nr   é   )ÚlenÚclear)r^   Úir_   s      r   Úexec_final_callbacksz/FakeCompiledAutogradEngine.exec_final_callbacks   sg   € àˆØ•#�oÑ&Ô&Ò&Ð&Ø  Ô#ˆBØˆB‰DŒDˆDØ�‰FˆAð •#�oÑ&Ô&Ò&Ð&ð 	×ÒÑÔÐÐÐr   c                  ó   — d S r   r   r   r   r   Ú_exec_final_callbacks_stubz5FakeCompiledAutogradEngine._exec_final_callbacks_stubˆ   s   € àˆr   )r   N)	rH   rI   rJ   Ústaticmethodr   r   rb   rh   rj   r   r   r   r]   r]   x   s½   € € € € € Øð#Ø˜h r¨4 xÔ0Ô1ð#Ø7?ÀÀDÀÔ7Ið#à	ð#ð #ð #ñ „\ð#ð
 ð ¨d°8¸BÀ¸HÔ3EÔ.Fð  È4ð  ð  ð  ñ „\ð ð ðð ð ñ „\ðð ð r   r]   Úbw_stateÚ	hook_namec                 ó.   —  t          | |¦  «        |i |¤ŽS r   ©rF   )rl   rm   r   r   s       r   Úcall_hook_from_backward_staterp   �   s#   € ð (�7�8˜YÑ'Ô'¨Ð8°Ð8Ð8Ð8r   Ú_r%   Ú
hooks_nameÚmodule_namec                ól   — t          ||¦  «        }t          ||¦  «        }|D ]} |||g|¢R Ž }	|	�|	}Œ|S r   ro   )
rq   r%   rl   rr   rs   r   ÚmoduleÚhooksr   Ú
new_results
             r   Ú%call_module_hooks_from_backward_staterx   “   s[   € õ �X˜{Ñ+Ô+€FÝ�H˜jÑ)Ô)€EØð  ð  ˆØ�T˜& &Ð0¨4Ð0Ð0Ð0ˆ
ØÐ!ØˆFøØ€Mr   )&r   rC   Útypingr   r   r   r   r   r   Útyping_extensionsr	   r   Útorch.utils._pytreeÚutilsÚ_pytreer1   r+   r4   ÚModuleNotFoundErrorÚFutureWarningÚboolr   r   r3   r&   r8   r:   rK   rL   rM   rT   rW   Úintr[   r]   rN   rp   rx   r   r   r   ú<module>r‚      s9  ðð Ð Ð Ð Ø €€€Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ (Ð (Ð (Ð (Ð (Ð (à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $ðØÐÐÐÐøØð ð ð Ø	€B€B€Bðøøøð ð -ð €ZØoØðñ ô ð-˜$ð -ð -ð -ñ	ô ð-ð -ð
-˜$ð -ð -ð -ð -ð	�H˜S #˜XÔ&ð 	¨8°C¸°HÔ+=ð 	ð 	ð 	ð 	ðØ
�3˜ ¤Ô.Ð.Ô
/ðØ8;ðØGJðà
„\ðð ð ð ð�(˜3 ˜8Ô$ð ¨°#°s°(Ô);ð ð ð ð ð$(ð (ð (ð (ð (ñ (ô (ð (ð(ØœÔ0ÔBðà˜œÔ%ðð ðð ˆ5Œ<˜˜uœ|¨SÐ0Ô1Ð1Ô2ð	ð ð ð ð&˜EœLð &¨Sð &ð &ð &ð &ðð ð ð ð ñ ô ð ð*9Øð9Øð9Ø*-ð9Ø9<ð9àð9ð 9ð 9ð 9ð	Ø
ð	Øð	Ø #ð	Ø/2ð	Ø@Cð	ØRUð	àð	ð 	ð 	ð 	ð 	ð 	s   ­2 ²<»<