o
    ic^                     @   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&i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d0ejdd-d.dejd1ejeej!d2ed3ejdd-d.dejd4ejeej!ej"d5d6d7d8ejded9d.d:d*ejd;ejeej!d<ej"d5d6d7d=ejded9d.d:d*ejd>eje
ej!d?ej"d@d6d7d=ejed ej#eej$j%dAdBd.d)d*ejdCeje	dejddd d"d#d$dDd(dejdEejedejdd dFd#dGd(dejdHejed<ejeej&eej'j(dIgdJd(d:d*gZ)e*ej e+dK< ej,ee- dLe)dMZ.dNdO Z/dPdQ Z0dRdS Z1dTdU Z2dVdW Z3dXdY Z4dZd[ Z5d\d] Z6d^d_ Z7d`da Z8dbdc Z9ddde Z:dfdg Z;dhdi Z<djdk Z=dldm Z>ej?j@dndo ZAej?j@dpdq ZBdS )rz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veo_label_keygenerate_videos)number_of_videosoutput_gcs_urifpsduration_secondsseedaspect_ratio
resolutionperson_generationnegative_promptenhance_promptcompression_qualitylabels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   r6   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_methodrI   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   )modelsr   VEO_MODEL_LATESTr   GenerateVideosConfigvertexaiOUTPUT_GCS_URIdone_api_client_modetimesleep
operationsgetresultgenerated_videosr6   r5   clientrT    re   f/home/livre-enfant/venv/lib/python3.10/site-packages/google/genai/tests/models/test_generate_videos.pytest_text_to_video_poll
  s   
rg   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 )NrN   )r   r.   r&   rO   rR   rS   r   rU   r   rV   rX   	GCS_IMAGELOCAL_IMAGEr   rW   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   test_image_to_video_poll  s   
rk   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 )Nr0   rN   r   r   r.   r&   rO   rR   rS   r   rh   rc   re   re   rf   !test_text_and_image_to_video_poll,  s   
rm   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 )
Nr2   r3   r4   rN   )r   r6   r&   rO   rR   rS   r   rX   rU   r   VEO_MODEL_2r   VideorW   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   test_video_to_video_poll>  s$   

rq   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 )Nr8   r2   r3   r4   rN   r   r   r6   r&   rO   rR   rS   r   rn   rc   re   re   rf   !test_text_and_video_to_video_pollV  s&   
rs   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 )Nr8   r   r*   r%   rO   rR   rS   r   rJ   Sunrr   rX   rU   r   rV   r   rW   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   filesdownloadvideo_bytesrd   
operation1video1
operation2video2re   re   rf   #test_generated_video_extension_pollo  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 Nr8   r   r*   r%   rO   rR   rS   r   rt   ru   r9   r+   )rX   rU   r   rV   r   rW   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rw   rx   ry   GenerateVideosSourcerz   re   re   rf   /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   rv   rz   re   re   rf   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 )Nr8   )r   
last_framerl   rO   rR   rS   r   )rU   r   rV   rX   ri   LOCAL_IMAGE_MANr   rW   rY   
GCS_IMAGE2LOCAL_IMAGE_DOGrZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   ,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 forestrE   rG   r%   rO   rR   rS   r   )rU   r   rV   r   rW   rX   rY   VideoGenerationReferenceImageri   r   VideoGenerationReferenceTypeASSETrZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   #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 )Nr;   r<   r3   r4   r9   r   r=   r?   r+   rO   rR   rS   r   )rX   rU   r   VEO_MODEL_2_EXPr   r   rp   rW   rY   VideoGenerationMaskGCS_OUTPAINT_MASKVideoGenerationMaskModeOUTPAINTrZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   test_video_edit_outpaint_poll  4   
r   c              
   C   r   NzA red dune buggyr<   r3   r4   r9   r   r=   r?   r+   rO   rR   rS   r   )rX   rU   r   r   r   r   rp   rW   rY   r   GCS_REMOVE_MASKr   REMOVErZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   test_video_edit_remove_poll>  r   r   c              
   C   r   r   )rX   rU   r   r   r   r   rp   rW   rY   r   GCS_REMOVE_STATIC_MASKr   REMOVE_STATICrZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   "test_video_edit_remove_static_poll^  r   r   c              
   C   r   )NBiker<   r3   r4   r9   r   r=   r?   r+   rO   rR   rS   r   )rX   rU   r   r   r   r   rp   rW   rY   r   r   r   INSERTrZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   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   rS   rO   rR   r   )rX   r   GenerateVideosOperationr_   r`   rZ   r[   r\   r]   r^   ra   rb   r6   r5   )rd   operation_namerT   re   re   rf   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
ValueErrorrU   r   rV   r   r   )rd   re   re   rf   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 rM   )aiorU   r   rV   r   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rc   re   re   rf   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   )rX   r   rU   r   rV   r   rW   rZ   r[   r\   r]   r^   r_   r`   ra   rb   r6   r5   rw   rx   r   rz   re   re   rf   5test_generated_video_extension_from_source_poll_async  sH   




r   )C__doc__osr]   r    r   r   r   rV   ro   r   rY   Imageri   r   pathabspathjoindirname__file__IMAGE_FILE_PATH	from_filerj   r   r   r   r   r   TestTableItem_GenerateVideosParametersrW   VideoCompressionQualityLOSSLESSr   rp   r   r   r   r   r   r   rI   list__annotations__setupglobals
pytestmarkrg   rk   rm   rq   rs   r   r   r   r   r   r   r   r   r   r   r   markasyncior   r   re   re   re   rf   <module>   s  

  5+--   !	
