o
    oiu                     @   s|   d dl mZmZmZ d dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ G d	d
 d
eZdS )    )AnyContextManagerLiteralN)apply_to_collection)Tensor)Module)override)	Precision)_convert_fp_tensor_DtypeContextManagerc                   @   s   e Zd ZU dZdZed ed< ededefddZ	ede
fdd	Zede
fd
dZede
fddZededefddZededefddZdS )DoublePrecisionz>Plugin for training with double (``torch.float64``) precision.z64-true	precisionmodulereturnc                 C   s   |  S N)double)selfr    r   ]/home/ubuntu/.local/lib/python3.10/site-packages/lightning/fabric/plugins/precision/double.pyconvert_module      zDoublePrecision.convert_modulec                 C   s
   t tjS r   )r   torchr   r   r   r   r   tensor_init_context#   s   
z#DoublePrecision.tensor_init_contextc                 C      |   S r   r   r   r   r   r   module_init_context'   r   z#DoublePrecision.module_init_contextc                 C   r   r   r   r   r   r   r   forward_context+   r   zDoublePrecision.forward_contextdatac                 C   s   t |tttjdS N)functiondtypedst_type)r   r
   r   r   r   r   r   r   r   r   convert_input/   s   zDoublePrecision.convert_inputc                 C   s   t |ttt dS r   )r   r
   r   r   get_default_dtyper#   r   r   r   convert_output3   s   zDoublePrecision.convert_outputN)__name__
__module____qualname____doc__r   r   __annotations__r   r   r   r   r   r   r   r   r$   r&   r   r   r   r   r      s   
 r   )typingr   r   r   r   #lightning_utilities.core.apply_funcr   r   torch.nnr   typing_extensionsr   ,lightning.fabric.plugins.precision.precisionr	   (lightning.fabric.plugins.precision.utilsr
   r   r   r   r   r   r   <module>   s   