o
    }oi                     @   sF   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ZdS )    N)adapter_modules)adapter_mixin_strategies)config_utilsc                   @   sn   e Zd Zejjdd Zejjdd Zejjdd Zejjej	ddd	gd
d Z
ejjdd ZdS )TestAdapterModulesc                 C   sH   dg}t jtjtj|d}|\}}}|sJ |d u sJ |d u s"J d S )N_target_)ignore_args)r    assert_dataclass_signature_matchr   LinearAdapterLinearAdapterConfig)selfIGNORED_ARGSresultsignatures_match
cls_subsetdataclass_subset r   h/home/ubuntu/.local/lib/python3.10/site-packages/tests/collections/common/mixins/test_adapter_modules.pytest_linear_adapter_config   s   

z-TestAdapterModules.test_linear_adapter_configc                 C   s   t jd t dd}tjddd}t  ? |jd j	 dks$J t
|jd dr@|jd jd ur@|jd j	 dks@J ||}|	  dksNJ W d    d S 1 sYw   Y  d S )	Nr      2      in_featuresdimbias:0yE>torchrandommanual_seedrandnr   r	   no_gradmoduleweightsumhasattrr   absr   xadapteroutr   r   r   test_linear_adapter_init&   s   
 "z+TestAdapterModules.test_linear_adapter_initc                 C   s   t jd t dd}tjdddd}t  ? |jd j	 dks%J t
|jd drA|jd jd urA|jd j	 dksAJ ||}|	  d	ksOJ W d    d S 1 sZw   Y  d S )
Nr   r   r   r   g      ?)r   r   dropoutr   r   r   r   r(   r   r   r   test_linear_adapter_dropout5   s   
 "z.TestAdapterModules.test_linear_adapter_dropoutnorm_positionprepostc                 C   s   t jd t dd}tjdd|d}t  ? |jd j	 dks%J t
|jd drA|jd jd urA|jd j	 dksAJ ||}|	  dksOJ W d    d S 1 sZw   Y  d S )	Nr   r   r   r   )r   r   r/   r   r   r   r   )r   r/   r)   r*   r+   r   r   r   !test_linear_adapter_norm_positionD   s   
 "z4TestAdapterModules.test_linear_adapter_norm_positionc                 C   s@   t jddd}t|dsJ |jd usJ t|jtjsJ d S )Nr   r   r   adapter_strategy)r   r	   r&   r3   
isinstancer   ResidualAddAdapterStrategy)r   r*   r   r   r   test_linear_adapter_strategyT   s   z/TestAdapterModules.test_linear_adapter_strategyN)__name__
__module____qualname__pytestmarkunitr   r,   r.   parametrizer2   r6   r   r   r   r   r      s    


r   )	r:   r   nemo.collections.common.partsr   nemo.core.classes.mixinsr   
nemo.utilsr   r   r   r   r   r   <module>   s   