ó
    ÊÙ¢j
  ã                   óš   • S SK Jr  S SKJrJr  S SKJrJr  S SKrS SK	J
r
  S SKJr  S SKJr  S SKJr  S S	KJrJr  S S
KJr   " S S\5      rg)é    )Ú	Generator)ÚAbstractContextManagerÚcontextmanager)ÚAnyÚLiteralN)Úapply_to_collection)ÚTensor)ÚModule)Úoverride)Ú_convert_fp_tensorÚ_DtypeContextManager)Ú	Precisionc                   óÚ   • \ rS rSr% SrSr\S   \S'   SS\S   SS4S jjr\	S	\
S\
4S
 j5       r\	S\4S j5       r\	S\4S j5       r\	\S\S   4S j5       5       r\	S\S\4S j5       rSrg)ÚHalfPrecisioné   zšPlugin for training with half precision.

Args:
    precision: Whether to use ``torch.float16`` (``'16-true'``) or ``torch.bfloat16`` (``'bf16-true'``).

ú16-true)ú	bf16-truer   Ú	precisionÚreturnNc                 ór   • Xl         US:X  a  [        R                  U l        g [        R                  U l        g )Nr   )r   ÚtorchÚbfloat16Úfloat16Ú_desired_input_dtype)Úselfr   s     Ú¶C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\pytorch_lightning/plugins/precision/half.pyÚ__init__ÚHalfPrecision.__init__&   s(   € Ø"ŒØ6?À;Ó6N¤E§N¡NˆÕ!ÔTY×TaÑTaˆÕ!ó    Úmodulec                 ó4   • UR                  U R                  S9$ )N)Údtype)Útor   )r   r    s     r   Úconvert_moduleÚHalfPrecision.convert_module*   s   € à�y‰y˜t×8Ñ8ˆyÐ9Ð9r   c                 ó,   • [        U R                  5      $ ©N)r   r   ©r   s    r   Útensor_init_contextÚ!HalfPrecision.tensor_init_context.   s   € ä# D×$=Ñ$=Ó>Ð>r   c                 ó"   • U R                  5       $ r'   )r)   r(   s    r   Úmodule_init_contextÚ!HalfPrecision.module_init_context2   s   € à×'Ñ'Ó)Ð)r   )NNNc              #   óâ   #   • [         R                  " 5       n[         R                  " U R                  5         Sv •  [         R                  " U5        g! [         R                  " U5        f = f7f)z—A context manager to change the default tensor type when tensors get created during the module's forward.

See: :meth:`torch.set_default_tensor_type`

N)r   Úget_default_dtypeÚset_default_dtyper   )r   Údefault_dtypes     r   Úforward_contextÚHalfPrecision.forward_context6   sM   é € ô ×/Ò/Ó1ˆÜ×Ò × 9Ñ 9Ô:ð	3Ûä×#Ò# MÕ2øŒE×#Ò# MÕ2üs   ‚6A/¹A ½A/ÁA,Á,A/Údatac                 ó>   • [        U[        [        U R                  S9$ )N)Úfunctionr"   Údst_type)r   r   r	   r   )r   r4   s     r   Úconvert_inputÚHalfPrecision.convert_inputE   s   € ä" 4Ô2DÌFÐ]a×]vÑ]vÑwÐwr   )r   r   )r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__annotations__r   r   r
   r$   r   r)   r,   r   r   r2   r   r8   Ú__static_attributes__© r   r   r   r      sß   ‡ ñð 2;€IˆwÐ-Ñ.Ó:ñb 'Ð*@Ñ"Að bÐRVõ bð ð: Vð :°ó :ó ð:ð ð?Ð%;ó ?ó ð?ð ð*Ð%;ó *ó ð*ð Øð3 Ð+;Ñ!<ó 3ó ó ð3ð ðx #ð x¨#ó xó óxr   r   )Úcollections.abcr   Ú
contextlibr   r   Útypingr   r   r   Úlightning_utilitiesr   r	   Útorch.nnr
   Útyping_extensionsr   Ú(lightning_fabric.plugins.precision.utilsr   r   Ú-pytorch_lightning.plugins.precision.precisionr   r   rA   r   r   Ú<module>rJ      s3   ðõ &ß =ß ã Ý 3Ý Ý Ý &ç ]Ý Cô+x�Iõ +xr   