o
    wi                     @   s   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZmZmZmZmZmZmZmZ G dd dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZdS )    N)Image)Tensor)	NEMO1NEMO2broadcast_listcast_outputndarray2imgnemo_checkpoint_versionstr_list2numpystr_ndarray2listtypedict2tensorc                   @   s2   e Zd ZG dd dZdd Zdd Zdd Zd	S )
TestTypedict2Tensorc                   @   sf   e Zd ZU eed< eed< eed< eed< ej	e ed< ej	e ed< ej	e ed< ej	e ed< d	S )
z"TestTypedict2Tensor.SampleTypedict	int_fieldfloat_field
bool_field	str_fieldint_list
float_list	bool_liststr_listN)
__name__
__module____qualname__int__annotations__floatboolstrtypingList r    r    [/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/tests/deploy/test_deploy_utils.pySampleTypedict(   s   
 r"   c                 C   s   t | j}t|dksJ tdd |D sJ tdd |D }|jtjks)J |jdks0J tdd |D }|jtj	ksAJ |jdksHJ tdd |D }|jtj
ksYJ |jdks`J tdd |D }|jtkspJ |jdkswJ d S )	N   c                 s       | ]}t |tV  qd S N)
isinstancer   .0tr    r    r!   	<genexpr>5       zATestTypedict2Tensor.test_typedict2tensor_basic.<locals>.<genexpr>c                 s       | ]
}|j d kr|V  qdS )r   Nnamer'   r    r    r!   r*   8          c                 s   r,   )r   Nr-   r'   r    r    r!   r*   =   r/   c                 s   r,   )r   Nr-   r'   r    r    r!   r*   B   r/   c                 s   r,   )r   Nr-   r'   r    r    r!   r*   G   r/   )r   r"   lenallnextdtypenpint32shapefloat32bool_bytes)selftensors
int_tensorfloat_tensorbool_tensor
str_tensorr    r    r!   test_typedict2tensor_basic2   s   
z.TestTypedict2Tensor.test_typedict2tensor_basicc                 C   s0   ddi}t | j|d}tdd |D sJ d S )NoptionalT)overwrite_kwargsc                 s   s    | ]}|j V  qd S r%   )rC   r'   r    r    r!   r*   N   s    zJTestTypedict2Tensor.test_typedict2tensor_with_overwrite.<locals>.<genexpr>)r   r"   r3   )r<   rD   r=   r    r    r!   #test_typedict2tensor_with_overwriteK   s   z7TestTypedict2Tensor.test_typedict2tensor_with_overwritec                 C   s   t | j}tdd |D }|jtjksJ |jdksJ tdd |D }|jtjks.J |jdks5J tdd |D }|jtjksFJ |jdksMJ tdd |D }|jt	ks]J |jdksdJ d S )Nc                 s   r,   )r   Nr-   r'   r    r    r!   r*   T   r/   zFTestTypedict2Tensor.test_typedict2tensor_list_types.<locals>.<genexpr>r0   c                 s   r,   )r   Nr-   r'   r    r    r!   r*   Y   r/   c                 s   r,   )r   Nr-   r'   r    r    r!   r*   ^   r/   c                 s   r,   )r   Nr-   r'   r    r    r!   r*   c   r/   )
r   r"   r4   r5   r6   r7   r8   r9   r:   r;   )r<   r=   int_list_tensorfloat_list_tensorbool_list_tensorstr_list_tensorr    r    r!   test_typedict2tensor_list_typesP   s   
z3TestTypedict2Tensor.test_typedict2tensor_list_typesN)r   r   r   r"   rB   rE   rJ   r    r    r    r!   r   '   s
    
r   c                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestNemoCheckpointVersionc                 C   sf   t  %}ttj|d ttj|d t|tks!J W d    d S 1 s,w   Y  d S )Ncontextweights)tempfileTemporaryDirectoryosmakedirspathjoinr	   r   r<   tmpdirr    r    r!   test_nemo2_checkpoint_diri   s
   
"z3TestNemoCheckpointVersion.test_nemo2_checkpoint_dirc                 C   s>   t  }t|tksJ W d    d S 1 sw   Y  d S r%   )rO   rP   r	   r   rU   r    r    r!   test_nemo1_checkpoint_dirp   s   
"z3TestNemoCheckpointVersion.test_nemo1_checkpoint_dirc              	   C   s   t  J}tj|d}t|d$}td}tj|_	|
| td}tj|_	|
| W d    n1 s9w   Y  t|tksFJ W d    d S 1 sQw   Y  d S )Ncheckpoint.tarwrM   rN   )rO   rP   rQ   rS   rT   tarfileopenTarInfoDIRTYPEtypeaddfiler	   r   )r<   rV   tar_pathtarcontext_infoweights_infor    r    r!   test_nemo2_checkpoint_taru   s   




"z3TestNemoCheckpointVersion.test_nemo2_checkpoint_tarc              	   C   sx   t  .}tj|d}t|d}W d    n1 sw   Y  t|tks*J W d    d S 1 s5w   Y  d S )NrY   rZ   )	rO   rP   rQ   rS   rT   r[   r\   r	   r   )r<   rV   ra   rb   r    r    r!   test_nemo1_checkpoint_tar   s   
"z3TestNemoCheckpointVersion.test_nemo1_checkpoint_tarN)r   r   r   rW   rX   re   rf   r    r    r    r!   rL   h   s
    rL   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestStringConversionsc                 C   sL   g d}t |}t|tjsJ |jdksJ tdd | D s$J d S )Nhelloworldtest   r1   c                 s   r$   r%   )r&   r;   )r(   xr    r    r!   r*      r+   z<TestStringConversions.test_str_list2numpy.<locals>.<genexpr>)r
   r&   r6   ndarrayr8   r3   flattenr<   
input_listresultr    r    r!   test_str_list2numpy   s
   z)TestStringConversions.test_str_list2numpyc                 C   s@   t g ddd}t|}t|tsJ |g dksJ d S )N)s   hellos   worlds   testrm   r1   rh   )r6   arrayreshaper   r&   listr<   input_arrayrs   r    r    r!   test_str_ndarray2list   s   z+TestStringConversions.test_str_ndarray2listc                 C   s(   g d}t |}t|}||ksJ d S )Nrh   )r
   r   )r<   rr   numpy_arrayoutput_listr    r    r!   test_str_conversion_roundtrip   s   z3TestStringConversions.test_str_conversion_roundtripN)r   r   r   rt   rz   r}   r    r    r    r!   rg      s    rg   c                   @   s   e Zd Zdd ZdS )TestImageConversionsc                 C   sl   t jjdddt jd}t|}t|tsJ t|dksJ tdd |D s)J tdd |D s4J d S )	Nr      )   d   r   rm   )sizer5   r   c                 s   s    | ]	}t |tjV  qd S r%   )r&   r   r(   imgr    r    r!   r*      s    z8TestImageConversions.test_ndarray2img.<locals>.<genexpr>c                 s   s    | ]}|j d kV  qdS ))r   r   N)r   r   r    r    r!   r*      r+   )	r6   randomrandintuint8r   r&   rw   r2   r3   )r<   	img_arrayrs   r    r    r!   test_ndarray2img   s   z%TestImageConversions.test_ndarray2imgN)r   r   r   r   r    r    r    r!   r~      s    r~   c                   @   rK   )
TestCastOutputc                 C   sL   t g d}t|tj}t|tjsJ |jtjksJ |jdks$J d S Nr1   r   rm   rl   )	torchtensorr   r6   r7   r&   ro   r5   r8   )r<   input_tensorrs   r    r    r!   test_cast_tensor   
   zTestCastOutput.test_cast_tensorc                 C   sL   t g d}t|t j}t|t jsJ |jt jksJ |jdks$J d S r   )r6   ru   r   r9   r&   ro   r5   r8   rx   r    r    r!   test_cast_numpy   r   zTestCastOutput.test_cast_numpyc                 C   s4   ddg}t |t}t|tjsJ |jdksJ d S )Nri   rj   )r   r1   )r   r;   r&   r6   ro   r8   rq   r    r    r!   test_cast_string   s   
zTestCastOutput.test_cast_stringc                 C   s:   t g d}t|t j}|jdksJ |jdksJ d S )Nr   r   rl   )r6   ru   r   r7   ndimr8   rx   r    r    r!   test_cast_1d_to_2d   s   z!TestCastOutput.test_cast_1d_to_2dN)r   r   r   r   r   r   r   r    r    r    r!   r      s
    r   c                   @   s   e Zd Zdd Zdd ZdS )TestBroadcastListc                 C   s>   t jtdd tdg W d    d S 1 sw   Y  d S )Nz*Distributed environment is not initialized)matchrk   )pytestraisesRuntimeErrorr   )r<   r    r    r!   "test_broadcast_list_no_distributed   s   "z4TestBroadcastList.test_broadcast_list_no_distributedc                 C   s^   | tjddd  | tjddd  d
dd}| tjd| td	g}|d	gks-J d S )Nis_initializedc                   S      dS )NTr    r    r    r    r!   <lambda>       zCTestBroadcastList.test_broadcast_list_distributed.<locals>.<lambda>get_rankc                   S   r   )Nr   r    r    r    r    r!   r      r   c                 S   s   |dkrdg| d< d S d S )Nr   rk   r    )object_listsrcgroupr    r    r!   mock_broadcast_object_list   s   zUTestBroadcastList.test_broadcast_list_distributed.<locals>.mock_broadcast_object_listbroadcast_object_listrk   r%   )setattrr   distributedr   )r<   monkeypatchr   rs   r    r    r!   test_broadcast_list_distributed   s   

z1TestBroadcastList.test_broadcast_list_distributedN)r   r   r   r   r   r    r    r    r!   r      s    r   )rQ   r[   rO   r   numpyr6   r   r   PILr   pytriton.model_configr   nemo.deploy.utilsr   r   r   r   r   r	   r
   r   r   r   rL   rg   r~   r   r   r    r    r    r!   <module>   s    ,A&