o
    }oi4                     @   s   d dl mZ d dlmZ d dlZd dlZd dlmZ d dl	m
Z
 d dlmZ G dd dejZejdd	 Zejd
d Zejdd Zejdd Zdd Zdd Zdd ZdS )    MockNSGD)LRSchedulerModulePytorchOptimizerModulec                       s$   e Zd Z fddZdd Z  ZS )
DummyModelc                    s   t    tjdd| _d S )N
      )super__init__torchnnLinearlayer)self	__class__ U/home/ubuntu/.local/lib/python3.10/site-packages/tests/lightning/pytorch/pth_optim.pyr      s   
zDummyModel.__init__c                 C   s
   |  |S N)r   )r   xr   r   r   forward   s   
zDummyModel.forward)__name__
__module____qualname__r   r   __classcell__r   r   r   r   r	      s    r	   c                   C   s   t  S r   )r	   r   r   r   r   dummy_model#   s   r   c                   C   s   t dd dS )Nc                 S   s   t | dddS )Ng{Gz?g?)lrweight_decayr   )paramsr   r   r   <lambda>*   s    zoptimizer_fn.<locals>.<lambda>)side_effectr   r   r   r   r   optimizer_fn(   s   r$   c                   C   s
   t tdS )N)spec)r   r   r   r   r   r   lr_scheduler-      
r&   c                 C   s
   t | |S r   r   )r$   r&   r   r   r   optimizer_module2   r'   r(   c                 C   s<   | j |ksJ | j|ksJ t| jsJ | jdksJ d S )Ng      ?)r$   r&   callableno_weight_decay_condlr_mult)r(   r$   r&   r   r   r   $test_optimizer_module_initialization7   s   r,   c                 C   sB   | | }t|tsJ t|dksJ t|d tjjsJ d S )Nr   )
optimizers
isinstancelistlenr   optim	Optimizer)r   r(   	optimizerr   r   r   test_optimizer_creation>   s   
r4   c                 C   s   | |  d S r   )connect)r   r(   r   r   r   test_connect_methodE   s   r6   )unittest.mockr   lightning.pytorchpytorchplpytestr   torch.optimr   !nemo.lightning.pytorch.optim.baser   $nemo.lightning.pytorch.optim.pytorchr   LightningModuler	   fixturer   r$   r&   r(   r,   r4   r6   r   r   r   r   <module>   s&   	



