o
    …wÖi‡
  ã                   @   sx   d dl mZ d dlZd dlZd dlmZ ejdd„ ƒZejdd„ ƒZejdd	„ ƒZ	ddd„Z
dd„ Zdd„ Zdd„ ZdS )é    )Ú	MagicMockN©ÚHFCheckpointIOc                  C   s*   t ƒ } t ƒ | _t dt dg¡id| _| S )NÚmock_state_dictç      ð?)Úreturn_value)r   Úsave_pretrainedÚtorchÚtensorÚload_pretrained)Úmodel© r   úX/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/tests/lightning/_io/test_hf.pyÚ
mock_model   s   r   c                 C   ó   t | ddS )NF©r   Úadapter_onlyr   ©r   Útmp_pathr   r   r   Úcheckpoint_io   ó   r   c                 C   r   )NTr   r   r   r   r   r   Úadapter_checkpoint_io$   r   r   Fc              
   C   sð   zS|r|d }|j ddd |d  d¡ |  ||¡ |d  ¡ s#J ‚|  |¡}d|v s.J ‚W | ¡ D ]}| ¡ rI| ¡ D ]}| ¡  q=| ¡  q3| ¡  q3| ¡  d S | ¡ D ]}| ¡ rn| ¡ D ]}| ¡  qb| ¡  qX| ¡  qX| ¡  w )NÚ
hf_adapterT)ÚparentsÚexist_okzadapter_config.jsonz{}ú
trainer.ptÚ
state_dict)	ÚmkdirÚ
write_textÚsave_checkpointÚexistsÚload_checkpointÚiterdirÚis_dirÚunlinkÚrmdir)r   Ú
checkpointÚpathr   Úadapter_pathÚloaded_checkpointÚsubdirÚfiler   r   r   Úsave_and_load_checkpoint)   s.   



ù



r,   c                 C   s,   ddt  dg¡ii}|d }t| ||ƒ d S )Nr   zlayer.weightr   r&   ©r	   r
   r,   )r   r   r&   r'   r   r   r   Útest_save_and_load_checkpoint?   s   r.   c                 C   s0   ddt  dg¡ii}|d }t| ||dd d S )Nr   zmodel.model.lora_a.weightr   r&   T)r   r-   )r   r   r&   r'   r   r   r   Ú*test_save_and_load_checkpoint_adapter_onlyE   s   r/   c                 C   s6   |d }|  ¡  |d  ¡  |  |¡ | ¡ rJ ‚d S )Nr&   r   )r   ÚtouchÚremove_checkpointr    )r   r   r'   r   r   r   Útest_remove_checkpointK   s
   
r2   )F)Úunittest.mockr   Úpytestr	   Únemo.lightning.io.hfr   Úfixturer   r   r   r,   r.   r/   r2   r   r   r   r   Ú<module>   s   



