o
    Yi&^                     @   s  U d 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 dZd	Z	d
Z
dZejdddZejdddZejejejedZejjedZejjejejejeddZejjejejejeddZejdddZejdddZejdddZejdejedddejdejedejdedddd d!d"d#d$ejj d%d&d'd(ejd)ejeej!dd*ejdd+d,dejd-ejeej!ed.ejdd+d,dejd/ejeej!d0ed1ejdd+d,dejd2ejeej!ej"d3d4d5d6ejded7d,d8d(ejd9ejeej!d:ej"d3d4d5d;ejded7d,d8d(ejd<eje
ej!d=ej"d>d4d5d;ejed ej#eej$j%d?d@d,d'd(ejdAeje	dejddd d"d#d$dBd&dejdCejedejdd dDd#dEd&dejdFejed:ejeej&eej'j(dGgdHd&d8d(gZ)e*ej e+dI< ej,ee- dJe)dKZ.dLdM Z/dNdO Z0dPdQ Z1dRdS Z2dTdU Z3dVdW Z4dXdY Z5dZd[ Z6d\d] Z7d^d_ Z8d`da Z9dbdc Z:ddde Z;dfdg Z<dhdi Z=djdk Z>ej?j@dldm ZAej?j@dndo ZBdS )pzTests for generate_videos.    N   )_replay_api_client)types   )pytest_helperzveo-3.1-generate-previewzveo-2.0-generate-001zveo-2.0-generate-expz!gs://genai-sdk-tests/temp/videos/z;gs://cloud-samples-data/vertex-ai/llm/prompts/landmark1.pngz	image/png)Zgcs_uri	mime_typez;gs://cloud-samples-data/vertex-ai/llm/prompts/landmark2.pngz../data/bridge1.png)locationz../data/man.jpgz../data/dog.jpgz:gs://genai-sdk-tests/inputs/videos/video_outpaint_mask.pngz8gs://genai-sdk-tests/inputs/videos/video_remove_mask.pngz?gs://genai-sdk-tests/inputs/videos/video_remove_static_mask.pngZtest_simple_promptzMan with a dog)modelprompt)name
parametersZtest_all_parameters_vertex-A neon hologram of a cat driving at top speed         16:9Z720pZallow_adultzugly, low qualityT)number_of_videosoutput_gcs_uriZfpsduration_secondsseedaspect_ratio
resolutionperson_generationnegative_promptenhance_promptZcompression_qualityr	   r
   configznot supported in Gemini API)r   r   Zexception_if_mldevZtest_from_text_sourcer
   r   r	   sourcer   Ztest_from_image_source)imageZtest_from_text_and_image_sourceLightning storm)r
   r!   Ztest_from_video_source2gs://genai-sdk-tests/inputs/videos/cat_driving.mp4	video/mp4urir   )video)r   r   z7output_gcs_uri parameter is not supported in Gemini APIZtest_from_text_and_video_sourceRainr
   r'   Ztest_video_edit_outpaintA mountain landscape3gs://genai-sdk-tests/inputs/videos/editing_demo.mp4r!   Z	mask_moder   r   maskZtest_all_parameters_mldev)r   r   r   r   r   r   Ztest_all_parameters_veo3_mldevZ1080p)r   r   r   r   Ztest_reference_to_videor!   Zreference_typer   Zreference_images
test_tablezmodels.generate_videos)fileZglobals_for_fileZtest_methodr1   c                 C   sl   | j jtdtj| jrtnd dd}|js*| jj	dvr t
d | jj|d}|jr|jjd jjs4J d S Nr   r   r   Zreplayauto   	operationr   )modelsgenerate_videosVEO_MODEL_LATESTr   GenerateVideosConfigvertexaiOUTPUT_GCS_URIdone_api_client_modetimesleep
operationsgetresultgenerated_videosr'   r&   clientr9    rK   h/home/kim/smarthome/.venv/lib/python3.10/site-packages/google/genai/tests/models/test_generate_videos.pytest_text_to_video_poll	  s   
rM   c                 C   sv   | j jt| jr	tnttj| jrtnd dd}|j	s/| j
jdvr%td | jj|d}|j	r|jjd jjs9J d S )Nr4   )r	   r!   r   r5   r7   r8   r   r:   r;   r<   r>   	GCS_IMAGELOCAL_IMAGEr   r=   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   test_image_to_video_poll  s   
rQ   c                 C   sx   | j jtd| jr
tnttj| jrtnd dd}|j	s0| j
jdvr&td | jj|d}|j	r|jjd jjs:J d S )Nr"   r4   r	   r
   r!   r   r5   r7   r8   r   rN   rI   rK   rK   rL   !test_text_and_image_to_video_poll+  s   
rS   c                 C   sv   | j sd S | jjttjdddtjtdd}|js/| j	j
dvr%td | jj|d}|jr|jjd	 jjs9J d S )
Nr#   r$   r%   r4   )r	   r'   r   r5   r7   r8   r   r>   r:   r;   VEO_MODEL_2r   Videor=   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   test_video_to_video_poll=  s$   

rW   c                 C   sx   | j sd S | jjtdtjdddtjtdd}|js0| j	j
dvr&td | jj|d	}|jr|jjd
 jjs:J d S )Nr(   r#   r$   r%   r4   r	   r
   r'   r   r5   r7   r8   r   rT   rI   rK   rK   rL   !test_text_and_video_to_video_pollU  s&   
rY   c                 C   s  | j rd S | jjtdtjddd}|js*| jjdvr t	
d | jj|d}|jr|jjd j}|js6J | jj|d	 |jsBJ | jjtd
|tjddd}|jsh| jjdvr^t	
d | jj|d}|jrS|jjd j}|jstJ | jj|d	 |jsJ d S )Nr(   r   r   r   r5   r7   r8   r   r2   SunrX   r>   r:   r;   r<   r   r=   r@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   filesdownloadvideo_bytesrJ   Z
operation1Zvideo1Z
operation2Zvideo2rK   rK   rL   #test_generated_video_extension_polln  sF   




ra   c                 C   s  | j rd S | jjtdtjddd}|js*| jjdvr t	
d | jj|d}|jr|jjd j}|js6J | jj|d	 |jsBJ | jjttjd
|dtjddd}|jsl| jjdvrbt	
d | jj|d}|jrW|jjd j}|jsxJ | jj|d	 |jsJ d S Nr(   r   r   r   r5   r7   r8   r   rZ   r[   r)   r   )r>   r:   r;   r<   r   r=   r@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   r]   r^   r_   GenerateVideosSourcer`   rK   rK   rL   /test_generated_video_extension_from_source_poll  sJ   





rd   c                 C   s  | j rd S | jjtdtjddd}|js*| jjdvr t	
d | jj|d}|jr|jjd j}|js6J | jj|d	 |jsBJ | jjtd
|dtjddd}|jsj| jjdvr`t	
d | jj|d}|jrU|jjd j}|jsvJ | jj|d	 |jsJ d S rb   r\   r`   rK   rK   rL   4test_generated_video_extension_from_source_dict_poll  sH   





re   c                 C   s   | j jtd| jr
tnttj| jrtnd | jrt	nt
dd}|js6| jjdvr,td | jj|d}|jr!|jjd jjs@J d S )Nr(   )r   Z
last_framerR   r5   r7   r8   r   )r:   r;   r<   r>   rO   LOCAL_IMAGE_MANr   r=   r?   
GCS_IMAGE2LOCAL_IMAGE_DOGr@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   ,test_image_to_video_frame_interpolation_poll  s   	
ri   c              	   C   s   | j jtdtj| jrtnd tj| jrtnt	tj
jdgdd}|js8| jjdvr.td | jj|d}|jr#|jjd jjsBJ d S )	Nz#Chirping birds in a colorful forestr/   r0   r   r5   r7   r8   r   )r:   r;   r<   r   r=   r>   r?   VideoGenerationReferenceImagerO   rf   VideoGenerationReferenceTypeASSETr@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   #test_reference_images_to_video_poll  s$   
rm   c              
   C      | j sd S | jjttjdtjddddtjtdtj	t
tjjddd	}|js=| jjd
vr3td | jj|d}|jr(|jjd jjsGJ d S )Nr*   r+   r$   r%   r)   r   r,   r-   r   r5   r7   r8   r   )r>   r:   r;   VEO_MODEL_2_EXPr   rc   rV   r=   r?   VideoGenerationMaskGCS_OUTPAINT_MASKVideoGenerationMaskModeOUTPAINTr@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   test_video_edit_outpaint_poll  4   
rt   c              
   C   rn   NzA red dune buggyr+   r$   r%   r)   r   r,   r-   r   r5   r7   r8   r   )r>   r:   r;   ro   r   rc   rV   r=   r?   rp   GCS_REMOVE_MASKrr   ZREMOVEr@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   test_video_edit_remove_poll=  ru   rx   c              
   C   rn   rv   )r>   r:   r;   ro   r   rc   rV   r=   r?   rp   GCS_REMOVE_STATIC_MASKrr   ZREMOVE_STATICr@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   "test_video_edit_remove_static_poll]  ru   rz   c              
   C   rn   )NZBiker+   r$   r%   r)   r   r,   r-   r   r5   r7   r8   r   )r>   r:   r;   ro   r   rc   rV   r=   r?   rp   rw   rr   ZINSERTr@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   test_video_edit_insert_poll}  s4   
r{   c                 C   sr   | j rd}nd}tj|d}| jj|d}|js-| jjdvr#t	d | jj|d}|jr|j
jd jjs7J d S )Nzprojects/<project>/locations/<location>/publishers/google/models/veo-3.1-generate-preview/operations/9d2fc0b5-5bdf-4b5f-9a41-82970515e20bz7models/veo-3.1-generate-preview/operations/vz341u0pmdlc)r   r8   r5   r7   r   )r>   r   ZGenerateVideosOperationrE   rF   r@   rA   rB   rC   rD   rG   rH   r'   r&   )rJ   Zoperation_namer9   rK   rK   rL   test_create_operation_to_poll  s   
r|   c                 C   sJ   t t | jjtdtjddd W d    d S 1 sw   Y  d S )NzPrompt 1zPrompt 2r   )r	   r
   r    )pytestZraises
ValueErrorr:   r;   r<   r   rc   )rJ   rK   rK   rL   test_source_and_prompt_raises  s   
"r   c                    s~   | j jjtdtj| jrtnd ddI d H }|js3| j	j
dvr%td | j jj|dI d H }|jr|jjd jjs=J d S r3   )aior:   r;   r<   r   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   rI   rK   rK   rL   test_text_to_video_poll_async  s   
r   c                    s2  | j rd S | jjjtdtjdddI d H }|js3| jj	dvr%t
d | jjj|dI d H }|jr|jjd j}|js?J | jjj|d	I d H sLJ | jjjttjd
|dtjdddI d H }|js~| jj	dvrpt
d | jjj|dI d H }|jre|jjd j}|jsJ | jjj|d	I d H sJ d S rb   )r>   r   r:   r;   r<   r   r=   r@   rA   rB   rC   rD   rE   rF   rG   rH   r'   r&   r]   r^   rc   r`   rK   rK   rL   5test_generated_video_extension_from_source_poll_async  sH   




r   )C__doc__osrC   r}    r   r   r   r<   rU   ro   r?   ZImagerO   rg   pathabspathjoindirname__file__ZIMAGE_FILE_PATH	from_filerP   rf   rh   rq   rw   ry   ZTestTableItemZ_GenerateVideosParametersr=   ZVideoCompressionQualityZLOSSLESSrc   rV   rp   rr   rs   rj   rk   rl   r1   list__annotations__setupglobalsZ
pytestmarkrM   rQ   rS   rW   rY   ra   rd   re   ri   rm   rt   rx   rz   r{   r|   r   markZasyncior   r   rK   rK   rK   rL   <module>   s  

  4+--   !	
