o
    xi                  
   @  s   d Z ddlmZ ddlmZmZ ddlZddlmZ zddl	Z	ddl
mZ W n ey; Z z	dZejededZ[ww dddZ	ddddZ	ddddZdS ) zLSupport for PyTorch datatypes.

May raise MissingDependencyError on import.
    )annotations)AnyTypeIsN   )errorszW`torch` (PyTorch) not installed >> @wandb_log(models=True) may not auto log your model!)warningdatar   returnTypeIs[nn.Module]c                 C  s   t | tjS )z0Returns whether the data is a PyTorch nn.Module.)
isinstancennModule)r    r   [/home/ubuntu/.local/lib/python3.10/site-packages/wandb/integration/metaflow/data_pytorch.pyis_nn_module   s   r   Fnamestrrunwandb.Run | Nonetestingbool
str | Nonec                 C  s6   |rdS |sJ t d|  d ||  d dS )zLog a dependency on a PyTorch model input.

    Args:
        name: Name of the input.
        run: The run to update.
        testing: True in unit tests.
    modelszUsing artifact:  (PyTorch nn.Module)z:latestN)wandbtermloguse_artifact)r   r   r   r   r   r   use_nn_module   s   r   	nn.Modulec                 C  s|   |rdS |sJ t j| dd}||  dd}t|| W d   n1 s)w   Y  t d|  d || dS )	zLog a PyTorch model output as an artifact.

    Args:
        name: The output's name.
        data: The output's value.
        run: The run to update.
        testing: True in unit tests.
    r   model)typez.pklwbNzLogging artifact: r   )r   Artifactnew_filetorchsaver   log_artifact)r   r   r   r   artifactfr   r   r   track_nn_module3   s   
r)   )r   r   r	   r
   )F)r   r   r   r   r   r   r	   r   )
r   r   r   r   r   r   r   r   r	   r   )__doc__
__future__r   typing_extensionsr   r   r    r   r$   torch.nnr   ImportErrorer   MissingDependencyErrorr   r   r)   r   r   r   r   <module>   s&    
