o
    i&^                     @   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)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.pngtest_simple_promptzMan with a dog)modelprompt)name
parameterstest_all_parameters_vertex-A neon hologram of a cat driving at top speed         16:9720pallow_adultzugly, low qualityT)number_of_videosoutput_gcs_urifpsduration_secondsseedaspect_ratio
resolutionperson_generationnegative_promptenhance_promptcompression_qualityr   r   configznot supported in Gemini API)r   r   exception_if_mldevtest_from_text_sourcer   r   r   sourcer#   test_from_image_source)imagetest_from_text_and_image_sourceLightning storm)r   r+   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 APItest_from_text_and_video_sourceRainr   r3   test_video_edit_outpaintA mountain landscape3gs://genai-sdk-tests/inputs/videos/editing_demo.mp4r+   	mask_moder   r   masktest_all_parameters_mldev)r   r   r   r   r   r    test_all_parameters_veo3_mldev1080p)r   r   r   r   test_reference_to_videor+   reference_typer   reference_images
test_tablezmodels.generate_videos)fileglobals_for_filetest_methodrF   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"   replayauto   	operationr   )modelsgenerate_videosVEO_MODEL_LATESTr   GenerateVideosConfigvertexaiOUTPUT_GCS_URIdone_api_client_modetimesleep
operationsgetresultgenerated_videosr3   r2   clientrQ    rc   b/home/ubuntu/.local/lib/python3.10/site-packages/google/genai/tests/models/test_generate_videos.pytest_text_to_video_poll	  s   
re   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 )NrK   )r   r+   r#   rL   rO   rP   r   rR   rS   rT   rV   	GCS_IMAGELOCAL_IMAGEr   rU   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   test_image_to_video_poll  s   
ri   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-   rK   r   r   r+   r#   rL   rO   rP   r   rf   ra   rc   rc   rd   !test_text_and_image_to_video_poll+  s   
rk   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/   r0   r1   rK   )r   r3   r#   rL   rO   rP   r   rV   rR   rS   VEO_MODEL_2r   VideorU   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   test_video_to_video_poll=  s$   

ro   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 )Nr5   r/   r0   r1   rK   r   r   r3   r#   rL   rO   rP   r   rl   ra   rc   rc   rd   !test_text_and_video_to_video_pollU  s&   
rq   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 )Nr5   r   r'   r"   rL   rO   rP   r   rG   Sunrp   rV   rR   rS   rT   r   rU   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   filesdownloadvideo_bytesrb   
operation1video1
operation2video2rc   rc   rd   #test_generated_video_extension_polln  sF   




r}   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 Nr5   r   r'   r"   rL   rO   rP   r   rr   rs   r6   r(   )rV   rR   rS   rT   r   rU   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ru   rv   rw   GenerateVideosSourcerx   rc   rc   rd   /test_generated_video_extension_from_source_poll  sJ   





r   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 r~   rt   rx   rc   rc   rd   4test_generated_video_extension_from_source_dict_poll  sH   





r   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 )Nr5   )r   
last_framerj   rL   rO   rP   r   )rR   rS   rT   rV   rg   LOCAL_IMAGE_MANr   rU   rW   
GCS_IMAGE2LOCAL_IMAGE_DOGrX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   ,test_image_to_video_frame_interpolation_poll  s   	
r   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 forestrB   rD   r"   rL   rO   rP   r   )rR   rS   rT   r   rU   rV   rW   VideoGenerationReferenceImagerg   r   VideoGenerationReferenceTypeASSETrX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   #test_reference_images_to_video_poll  s$   
r   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 )Nr8   r9   r0   r1   r6   r   r:   r<   r(   rL   rO   rP   r   )rV   rR   rS   VEO_MODEL_2_EXPr   r   rn   rU   rW   VideoGenerationMaskGCS_OUTPAINT_MASKVideoGenerationMaskModeOUTPAINTrX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   test_video_edit_outpaint_poll  4   
r   c              
   C   r   NzA red dune buggyr9   r0   r1   r6   r   r:   r<   r(   rL   rO   rP   r   )rV   rR   rS   r   r   r   rn   rU   rW   r   GCS_REMOVE_MASKr   REMOVErX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   test_video_edit_remove_poll=  r   r   c              
   C   r   r   )rV   rR   rS   r   r   r   rn   rU   rW   r   GCS_REMOVE_STATIC_MASKr   REMOVE_STATICrX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   "test_video_edit_remove_static_poll]  r   r   c              
   C   r   )NBiker9   r0   r1   r6   r   r:   r<   r(   rL   rO   rP   r   )rV   rR   rS   r   r   r   rn   rU   rW   r   r   r   INSERTrX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   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   rP   rL   rO   r   )rV   r   GenerateVideosOperationr]   r^   rX   rY   rZ   r[   r\   r_   r`   r3   r2   )rb   operation_namerQ   rc   rc   rd   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)   )pytestraises
ValueErrorrR   rS   rT   r   r   )rb   rc   rc   rd   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 rJ   )aiorR   rS   rT   r   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ra   rc   rc   rd   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 r~   )rV   r   rR   rS   rT   r   rU   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r3   r2   ru   rv   r   rx   rc   rc   rd   5test_generated_video_extension_from_source_poll_async  sH   




r   )C__doc__osr[   r    r   r   r   rT   rm   r   rW   Imagerg   r   pathabspathjoindirname__file__IMAGE_FILE_PATH	from_filerh   r   r   r   r   r   TestTableItem_GenerateVideosParametersrU   VideoCompressionQualityLOSSLESSr   rn   r   r   r   r   r   r   rF   list__annotations__setupglobals
pytestmarkre   ri   rk   ro   rq   r}   r   r   r   r   r   r   r   r   r   r   markasyncior   r   rc   rc   rc   rd   <module>   s  

  4+--   !	
