o
    8wi                     @   s   d dl mZ d dl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 )    )AbstractContextManager)Any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   f/home/ubuntu/sommelier/.venv/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_input0   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_output4   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   )
contextlibr   typingr   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   