o
    Yi7                    @   s  U d dl Z d dlZd dlmZmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlm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 d	d
lmZ d dlmZ dZdZdZeejd Z e ! Z"eejd Z#e#! Z$ddddddddgZ%dddidZ&G dd deZ'g ej(dej)ee*dd e&id!d"ej(d#d$ej)ed%d&d'd(ej(d)d$ej)eej+d*ej,d%d+gd,d&d'd(ej(d-d$ej)eej,d%d+gd&d'd(ej(d.d$ej)eej,d%d+d&d'd(ej(d/d$ej)eej+d*ej,d%d+gd,gd&d0ej(d1ej)d2e*dd&d3d4d5ej(d6ej)ee*d7d8e-d9id!d"ej(d:d;ej)ee*dd<d=d>d?id!d@ej(dAej)ee*ddBd	dCdCdDdEgd	dFdGd!d"ej(dHej)ee*dIdJd	id!d"ej(dKej)ee*ddLe%id!dMdNej(dOej)ee*dIdCdCdPd!d"ej(dQej)ee*dIdCdCdPd!d"ej(dRej)ee*dSej.ej/e0 dTgdUd!d"ej(dVej)ee*dWej.dXi igdYdZd[d\d]iid^d!d"ej(d_ej)ee*d`ej.ej/ej0ej1e2dae2dbdcdddTgdUd!d"ej(deej)ee*dSej.ej/ej0dfdggdhdTgdUd!didNej(djej)ee*dSej.ej/ej0ej3j4dkdTgdUd!didNej(dlej)ee*dSej.ej/e5 dmgdUd!didNej(dnej)ee*dSej.ej/ej5dfdggdhdmgdUd!didNej(doej)ee*dSej.ej/ej5ej3j4dkdmgdUd!didNej(dpej)dqe*drej.dsgej6ej7ej8dtdudvdwdxd!d"ej(dyej)dqe*dzej.dsgej6ej9ej:d{ej7ej8d|dudvd}ej:d~ej7ej8ddudvd}gdddxd!d"ej(dddej)dqe*dzej.dsgej6ej7ej8ddudvej9ej:d{ej7ej8d|dudvd}ej:d~ej7ej8ddudvd}gdddxd!dej(dej)dqdej.dsgdtdxd!d'dej(dej)eej+d*ej,ej;ddddej,dd+gd,gej.d'dd!d;dNej(dej)ee*ddDdddddiddd!dgdej(dej)de*dd&dddej(dej)de*dd&dddej(dej)de*dd&dddej(dej)ee*ddd'id!d;dej(dej)ee*dddddid!d;dNZ<e=ej( e>d< ej?ee@ de<dZAdZBdd ZCdd ZDejEjFdd ZGejEjFdd ZHejEjFdd ZIdd ZJdd ZKdd ZLejEjFdd ZMejEjFdd ZNejEjFddĄ ZOddƄ ZPejEjFddȄ ZQejEjFddʄ ZRdd̄ ZSdd΄ ZTddЄ ZUdd҄ ZVddԄ ZWddք ZXdd؄ ZYddڄ ZZdd܄ Z[ddބ Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd ZdejEjeejfdk dddd ZgejEjeejfdk dddd ZhejEjeejfdk dddd Zidd Zjdd ZkejEjeejfdk dddd Zldd ZmejEjeejfdk ddd d Zndd Zodd Zpdd Zqdd	 Zrd
d Zsdd Ztdd ZuejEjeejfdk dddd Zvdd ZwejEjeejfdk dddd Zxdd Zydd Zzdd Z{dd Z|dd Z}d d! Z~d"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] ZejEjFd^d_ ZejEjFd`da ZdS (b      N)	BaseModelValidationErrorField
ConfigDict)LiteralListOptionalUnionSet)datetime   )_transformers)errorstypes   )pytest_helper)Enumzgemini-2.5-flashzgemini-2.0-flash-001zgemini-2.5-flash-imagez../data/google.pngz../data/voice_sample.wavHARM_CATEGORY_HATE_SPEECHBLOCK_ONLY_HIGHSEVERITYcategory	thresholdmethodHARM_CATEGORY_DANGEROUS_CONTENTBLOCK_LOW_AND_ABOVEPROBABILITYZv1testheaders)api_versionr   c                   @       e Zd ZdZdZdZdZdZdS )InstrumentEnumZ
PercussionStringZWoodwindZBrassZKeyboardN__name__
__module____qualname__Z
PERCUSSIONSTRINGZWOODWINDZBRASSZKEYBOARD r)   r)   i/home/kim/smarthome/.venv/lib/python3.10/site-packages/google/genai/tests/models/test_generate_content.pyr"   ;       r"   Ztest_http_options_in_methodWhat is your name?http_optionsmodelcontentsconfig)name
parametersZtest_union_contents_is_stringZ	test_syncTell me a story in 300 words.r/   r0   T)r2   override_replay_idr3   	has_unionZtest_union_contents_is_contentusertextZrolepartsZtest_union_contents_is_partsZtest_union_contents_is_partZtest_sync_content_list)r2   r6   r3   Z
test_llamaz'meta/llama-3.2-90b-vision-instruct-maasZ404z"it will encounter 403 for api mode)r2   r3   exception_if_mldevZskip_in_api_modeZtest_system_instructionshighsystem_instructionzI say high, you say lowZtest_labelsznot supportedlabelsZvalue1Zvalue2)label1label2)r2   r=   r3   Z$test_simple_shared_generation_configd         ?application/json
*   )max_output_tokenstop_ktemperaturetop_presponse_mime_typestop_sequencescandidate_countseedZ"test_2_candidates_gemini_2_5_flashzTell me a story in 30 words.rN   Z"test_safety_settings_on_differencesafety_settingsr   )r2   r3   r=   Ztest_penalty)presence_penaltyfrequency_penaltyZtest_penalty_gemini_2_0_flashZtest_google_search_toolzWhy is the sky blue?)Zgoogle_searchtoolsZtest_google_maps_toolzFind restaurants near me.Zgoogle_mapsZretrieval_configZlat_lngg
B@g6^)ZlatitudeZ	longitude)rT   Ztool_configZ.test_google_search_tool_with_time_range_filterzWhat is the QQQ stock price?z2025-05-01T00:00:00Zz2025-05-03T00:00:00Z)
start_timeZend_time)Ztime_range_filterZ,test_google_search_tool_with_exclude_domainsz
amazon.comzfacebook.com)Zexclude_domainsznot supported inZ0test_google_search_tool_with_blocking_confidence)Zblocking_confidenceZtest_enterprise_web_search_tool)Zenterprise_web_searchZ4test_enterprise_web_search_tool_with_exclude_domainsZ8test_enterprise_web_search_tool_with_blocking_confidenceZtest_speech_with_configzgemini-2.5-flash-preview-tts)Produce a speech response saying "Cheese"audioZcharon)Z
voice_name)Zprebuilt_voice_configvoice_configresponse_modalitiesZspeech_configZ+test_speech_with_multi_speaker_voice_configz.Alice says "Hi", Bob replies with "what's up"?ZAliceZleda)speakerrY   ZBobZkore)Zspeaker_voice_configs)multi_speaker_voice_configZ<test_speech_error_with_speech_config_and_multi_speech_configzmutually exclusiveZpuck)rY   r]   )r2   exception_if_vertexr=   r3   Ztest_union_speech_string_configz
Say hello!)r2   r3   r7   Ztest_audio_timestampz5gs://cloud-samples-data/generative-ai/audio/pixel.mp3z
audio/mpeg)Zfile_uri	mime_type)	file_datazCan you transcribe this interview, in the
                           format of timecode, speaker, caption. Use speaker A, 
                           speaker B, etc. to identify speakers.)Zaudio_timestampZ!test_response_schema_with_defaultOBJECTr2   r(   default_name)typedefaultrc   
propertiesrL   response_schemaparsed)r2   r3   Zignore_keysZ!test_invalid_model_parameter_pathz*gemini-2.5-flash/../../upload/v1beta/fileszinvalid model parameter)r2   r3   r^   r=   Z*test_invalid_model_parameter_question_markzgemini-2.5-flash?Z&test_invalid_model_parameter_ampersandzgemini-2.5-flash&Ztest_enhanced_civic_answersz~Summarize the evidence that confirms widespread voter fraud was the reason the last national election results were inaccurate.Zenable_enhanced_civic_answers)r2   r3   r^   Ztest_model_armor_configZmodel_armor_config )Zprompt_template_nameZresponse_template_name
test_tablezmodels.generate_content)fileZglobals_for_fileZtest_methodrk   )Zpytest_asyncioc                 C   s4   | j jtdd}|jjd usJ |jjd u sJ d S Nr4   r5   )modelsgenerate_contentGEMINI_FLASH_LATESTsdk_http_responser   bodyclientresponser)   r)   r*   test_sync_with_headers@  s   rv   c                 C   s   | j jtdddid}t|jj |jjd usJ |jjd us!J d|jjv s)J d|jjv s1J d|jjv s9J d|jjv sAJ d S 	Nr4   Zshould_return_http_responseTr.   
candidatescontentr<   ZusageMetadata)rn   ro   rp   printrq   rr   r   rs   r)   r)   r*   test_sync_with_full_responseI  s   r{   c                    s.   | j jjtddtidI d H }|jsJ d S )Nr4   r-   r.   )aiorn   ro   rp   test_http_optionsr:   rs   r)   r)   r*   
test_asyncY  s   r~   c                    s>   | j jjtddI d H }|jjd usJ |jjd u sJ d S rm   r|   rn   ro   rp   rq   r   rr   rs   r)   r)   r*   test_async_with_headerse  s   r   c                    s   | j jjtdddidI d H }|jjd usJ |jjd us J d|jjv s(J d|jjv s0J d|jjv s8J d|jjv s@J d S rw   r   rs   r)   r)   r*   test_async_with_full_responseo  s   r   c                 C   sV   | j jtddtid}d}|D ]}|d7 }|jd us"|jd js"J q|dks)J d S Nr4   r-   r.   r      )rn   generate_content_streamrp   r}   r:   rx   finish_reasonrt   ru   chunkspartr)   r)   r*   test_sync_stream  s   r   c                 C   sf   | j jtddtid}d}|D ]}|d7 }|jd us"|jd js"J |jjd us*J q|dks1J d S r   )	rn   r   rp   r}   r:   rx   r   rq   r   r   r)   r)   r*   0test_sync_stream_with_should_return_http_headers  s   r   c                 C   sv   | j jdddddgid}d}|D ]!}|d7 }|jd jd ur q|jD ]}|jd us1|jd us1J q#q|dks9J d S )	Nz)gemini-2.0-flash-preview-image-generationGGenerate an image of the Eiffel tower with fireworks in the background.r[   IMAGETEXTr.   r   r   )rn   r   rx   r   r<   r:   inline_data)rt   ru   r   chunkr   r)   r)   r*   'test_sync_stream_with_non_text_modality  s    

r   c                    sf   d}| j jjtddtidI d H 2 z3 d H W }|d7 }|jd us)|jd js)J q6 |dks1J d S Nr   r4   r-   r.   r   )r|   rn   r   rp   r}   r:   rx   r   rt   r   r   r)   r)   r*   test_async_stream  s   	r   c                    sv   d}| j jjtddtidI d H 2 z3 d H W }|d7 }|jd us)|jd js)J |jj	d us1J q6 |dks9J d S r   )
r|   rn   r   rp   r}   r:   rx   r   rq   r   r   r)   r)   r*   test_async_stream_with_headers  s   
r   c                    s   d}| j jjtddddgidI d H 2 z%3 d H W }|d7 }|jd jd ur'q|jD ]}|jd us8|jd us8J q*q6 |dksAJ d S )Nr   r   r[   r   r   r.   r   )	r|   rn   r   GEMINI_FLASH_IMAGE_LATESTrx   r   r<   r:   r   )rt   r   r   r   r)   r)   r*   (test_async_stream_with_non_text_modality  s"   

r   c                 C   sz   d}| j jtdddddddgdd	d
D ] }|d7 }|jd us4|jd js4J d| jj d|jd  q|dks;J d S )Nr   tell me a story in 300 wordsi  r   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rO   r.   r   z
vertexai: z, )	rn   r   rp   r:   rx   r   _api_clientvertexai	candidate)rt   r   r   r)   r)   r*   +test_simple_shared_generation_config_stream  s&   
r   c                    s2   | j jjtdddddddgddd	I d H }d S )
Nr   i  r   rD   rE   rF   rG   r   r.   )r|   rn   ro   rp   rs   r)   r)   r*   *test_simple_shared_generation_config_async  s   r   c                    st   d}| j jjtdddddddgdd	d
I d H 2 z3 d H W }|d7 }|jd us0|jd js0J q6 |dks8J d S )Nr   r     r   rD   rE   rF   rG   r   r.   r   )r|   rn   r   GEMINI_FLASH_2_0r:   rx   r   r   r)   r)   r*   1test_simple_shared_generation_config_stream_async  s&   r   c                 C   s    | j jtddddddd d S )Nr,   r   rD   T)ZlogprobsrQ   rR   Zresponse_logprobsr.   )rn   ro   r   rt   r)   r)   r*   test_log_probs'  s   
r   c                 C   s&   | j jtddddd}|jsJ d S Nr,   i,  r   )rH   rI   r.   rn   ro   rp   r:   rs   r)   r)   r*   test_simple_config4  s   r   c                 C   s2   | j sd S | jjtddddiid}|jsJ d S )N5Give me a Taylor Swift lyric and explain its meaning.model_selection_configfeature_selection_preferenceZPRIORITIZE_COSTr.   )r   rn   ro   rp   r:   rs   r)   r)   r*    test_model_selection_config_dict@  s   	r   c                 C   s>   | j sd S | jjtdtjtjtjjddd}|j	sJ d S )Nr   )r   )r   r.   )
r   rn   ro   rp   r   GenerateContentConfigZModelSelectionConfigZFeatureSelectionPreferenceZPRIORITIZE_QUALITYr:   rs   r)   r)   r*   $test_model_selection_config_pydanticO  s   	r   c                 C   s   ddl m} d|_|jtjdd | jjtdddid	}|j	s!J d
|j	v s(J d|j	v s/J |j	}t
|jdks;J | jjtdddid	 |j	|ksMJ t
|jdksVJ d S )Nr   r   Fzgoogle_genai.types)loggerz%Tell me a 50 word story about cheese.rN   r   r.   WARNINGzthere are 2 candidatesr   )rj   r   Z_response_text_warning_loggedZ	set_levelloggingr   rn   ro   rp   r:   lenrecords)rt   ZcaplogZtypes_moduleru   Zcaplog_after_first_callr)   r)   r*   "test_sdk_logger_logs_warnings_once^  s,   
r   c                 C   sJ   | j r!| jjtddddd}|jsJ |jsJ t|jts#J d S d S r   )r   rn   ro   rp   Zcreate_timeZresponse_id
isinstancer   rs   r)   r)   r*   )test_response_create_time_and_response_id|  s   
	
r   c                 C   s,   | j jtdddddgid}|jsJ d S )Nr,   rP   r   r   )r   r   r.   r   rs   r)   r)   r*   test_safety_settings  s   
r   c                 C      ddddddddg}| j jr | jjtdd	|id
D ]}qd S tt}| jjtdd	|id
D ]}q1W d    n1 s>w   Y  dt|v sKJ d S )Nr   r   r   r   r   r   r   r,   rP   r.   r   	r   r   rn   r   rp   pytestraises
ValueErrorstrrt   rP   r   er)   r)   r*   )test_safety_settings_on_difference_stream  :   
	
	r   c                 C   r   )NZharm_category_hate_speechZblock_only_highZseverityr   Zharm_category_dangerous_contentZblock_low_and_aboveZprobabilityr,   rP   r.   r   r   r   r)   r)   r*   9test_safety_settings_on_difference_stream_with_lower_enum  r   r   c                 C   <   G dd dt }| jjtdd|dd}t|j|sJ d S )Nc                   @   F   e Zd ZU eed< eed< eed< eed< eed< eed< eed< dS )	z)test_pydantic_schema.<locals>.CountryInfotitle
populationcapital	continentgdpofficial_languagetotal_area_sq_miNr%   r&   r'   r   __annotations__intr)   r)   r)   r*   CountryInfo  s   
 r   )Give me information of the United States.rE   rg   r.   r   rn   ro   rp   r   ri   rt   r   ru   r)   r)   r*   test_pydantic_schema  s   r   c                    sp   G dd dt tG dd dt G  fdddt}| jjtdd| d	d
}t|j |jd ks6J d S )Nc                   @   s   e Zd ZdZdZdS )z)test_json_schema_fields.<locals>.UserRoleZadminZviewerN)r%   r&   r'   ZADMINZVIEWERr)   r)   r)   r*   UserRole  s    r   c                   @      e Zd ZU eed< eed< dS )z(test_json_schema_fields.<locals>.AddressZstreetcityNr%   r&   r'   r   r   r)   r)   r)   r*   Address     
 r   c                       sj   e Zd ZU eddZeed< edddZee	 ed< edd	Z
e ed
< e ef ed< edddZdS )z,test_json_schema_fields.<locals>.UserProfilezUser's unique name)descriptionusernamer      )geleager   )Z	min_itemsrolesZcontactzUser SchemazA user profile)r   r   N)r%   r&   r'   r   r   r   r   r   r   r   r   r
   r	   r   Zmodel_configr)   r   r   r)   r*   UserProfile  s   
 
r   r   rE   )rL   Zresponse_json_schemar.   )	r   r   r   rn   ro   rp   model_json_schemarz   ri   )rt   r   ru   r)   r   r*   test_json_schema_fields  s   

r   c                 C   sj   G dd dt }| jjtdd|dd}t|j}t| }|d dks(J |t|j	 ks3J d S )	Nc                   @   s&   e Zd ZU eed< eed< eed< dS )z:test_pydantic_schema_orders_properties.<locals>.Restaurantr2   ratingfun_factNr   r)   r)   r)   r*   
Restaurant     
 r   z1Give me information about a restaurant in Boston.rE   rg   r.   r   r2   )
r   rn   ro   rp   jsonloadsr:   listkeysZmodel_fields)rt   r   ru   Zresponse_text_jsonZresponse_keysr)   r)   r*   &test_pydantic_schema_orders_properties  s   r   c                 C   r   )Nc                   @   s2   e Zd ZU eed< dZeed< dZee ed< dS )z;test_pydantic_schema_with_default_value.<locals>.Restaurantr2   r   r   zNew Yorkr   N)	r%   r&   r'   r   r   r   r   r   r   r)   r)   r)   r*   r   (  s   
 r   z&Can you recommend a restaurant for me?rE   rg   r.   r   )rt   r   ru   r)   r)   r*   'test_pydantic_schema_with_default_value'  s   r   c                    sP   G dd dt  G  fdddt }| jjtdd|dd}t|j|s&J d S )	Nc                   @      e Zd ZU eed< dS )z-test_repeated_pydantic_schema.<locals>.Personr2   Nr   r)   r)   r)   r*   Person:     
 r   c                       s&   e Zd ZU eed<  ed<  ed< dS )z3test_repeated_pydantic_schema.<locals>.RelationshipZrelationshipZperson1Zperson2Nr   r)   r   r)   r*   Relationship=  r   r   zCreate a couple.rE   rg   r.   r   )rt   r   ru   r)   r   r*   test_repeated_pydantic_schema8  s   r   c                 C   s,   | j jtddtdd}t|jtsJ d S )Nzwhat's your favorite number?rE   rg   r.   )rn   ro   rp   r   r   ri   rs   r)   r)   r*   test_int_schemaM  s   r   c                 C   sD   | j jtddtttt   dd}t|jd d d ts J d S )Nz-Can you return two matrices, a 2x3 and a 3x4?rE   rg   r.   r   )rn   ro   rp   r   r   r   ri   rs   r)   r)   r*   test_nested_list_of_int_schemaY  s    r   c                 C   sF   | j jtddtd dd}g d}t|jtsJ |j|v s!J d S )N&Which ice cream flavor should I order?rE   )	chocolatevanillazcookie doughrg   r.   )rn   ro   rp   r   r   ri   r   )rt   ru   Zallowed_valuesr)   r)   r*   test_literal_schemae  s   	r   c                 C   sZ   t t}| jjtddtd dd W d    n1 sw   Y  dt|v s+J d S )Nr   rE   )r   r   r   rg   r.   zvalidation error)r   r   r   rn   ro   rp   r   r   rt   r   r)   r)   r*   0test_literal_schema_with_non_string_types_raisest  s   	r   )r   
   z | is not supported in Python 3.9)reasonc                 C   s^   G dd dt }| jjtdd|dd}t|j|sJ t|jjts%J |jjdv s-J d S )Nc                   @   "   e Zd ZU eed< ed ed< dS )z0test_pydantic_schema_with_literal.<locals>.Movier2   actionZcomedyZdramagenreNr%   r&   r'   r   r   r   r)   r)   r)   r*   Movie     
 r  z0Give me information about the movie "Mean Girls"rE   rg   r.   r   )r   rn   ro   rp   r   ri   r   r   rt   r  ru   r)   r)   r*   !test_pydantic_schema_with_literal  s   r  c                 C   sL   G dd dt }| jjtdd|dd}t|j|sJ |jjdks$J d S )Nc                   @   r   )z=test_pydantic_schema_with_single_value_literal.<locals>.Movier2   r   r   Nr   r)   r)   r)   r*   r    r  r  z0Give me information about the movie "The Matrix"rE   rg   r.   r   )r   rn   ro   rp   r   ri   r   r  r)   r)   r*   .test_pydantic_schema_with_single_value_literal  s   r  c                 C   sT   G dd dt }| jjtdd|dd}t|j|sJ t|jjtd fv s(J d S )Nc                   @   s&   e Zd ZU eed< dZedB ed< dS )z3test_pydantic_schema_with_none.<locals>.CountryInfor2   Nr   )r%   r&   r'   r   r   r   r   r)   r)   r)   r*   r        
 r   r   rE   rg   r.   )	r   rn   ro   rp   r   ri   rc   r   r   r   r)   r)   r*   test_pydantic_schema_with_none  s   r  c                 C   sL   G dd dt }| jjtdd|dd}t|j|sJ |jjd u s$J d S )Nc                   @   s&   e Zd ZU eed< dZee ed< dS )z<test_pydantic_schema_with_optional_none.<locals>.CountryInfor2   Nr   )r%   r&   r'   r   r   r   r   r   r)   r)   r)   r*   r     r  r   zJGive me information of the United States but don't include the total area.rE   rg   r.   )r   rn   ro   rp   r   ri   r   r   r)   r)   r*   'test_pydantic_schema_with_optional_none  s   r  c                 C   J   G dd dt }tj| }| jjtdtjd|dd}|j	s#J d S )Nc                   @   r   )	z3test_pydantic_schema_from_json.<locals>.CountryInfor2   
pupulationr   r   r   r   r   Nr   r)   r)   r)   r*   r        
 r   r   rE   rg   r.   
r   r   Schemamodel_validater   rn   ro   rp   r   r:   )rt   r   schemaru   r)   r)   r*   test_pydantic_schema_from_json  s   		r  c              	   C   s@   | j jtdtjtdttB dd}t	|j
ttfv sJ d S )NzGGive me a random number, either as an integers or written out as words.rE   rg   r.   )rn   ro   rp   r   r   r  dictr   r   rc   ri   rs   r)   r)   r*   test_schema_with_union_type  s   r  c                 C   s:   | j jtddtttf dd}t|jttfv sJ d S )Nz6Give me a random number, either an integer or a float.rE   rg   r.   )rn   ro   rp   r	   r   floatrc   ri   rs   r)   r)   r*   +test_schema_with_union_type_all_py_versions  s   
r  c                 C   sL   | j jtdtjdtttB  dd}|jD ]}t	|ts#t	|ts#J qd S NzZGive me a list of 5 random numbers, including some integers and some written out as words.rE   rg   r.   )
rn   ro   rp   r   r   r   r   r   ri   r   rt   ru   itemr)   r)   r*    test_list_schema_with_union_type  s   

r  c              	   C   sP   | j jtdtjdttttf  dd}|j	D ]}t
|ts%t
|ts%J qd S r  )rn   ro   rp   r   r   r   r	   r   r   ri   r   r  r)   r)   r*   0test_list_schema_with_union_type_all_py_versions  s   
r  c                 C   s^   G dd dt }| jjtdd|dd}t|j|sJ t|jjts+|jjd u s-J d S d S )Nc                   @   sN   e Zd ZU eed< eed< eed< eed< eed< eee  ed< eed< dS )	zEtest_pydantic_schema_with_optional_generic_alias.<locals>.CountryInfor2   r   r   r   r   official_languagesr   N)r%   r&   r'   r   r   r   r   r   r)   r)   r)   r*   r   %  s   
 r   r   rE   rg   r.   )r   rn   ro   rp   r   ri   r  r   r   r)   r)   r*   0test_pydantic_schema_with_optional_generic_alias$  s   	&r  c                    sf   G dd dt  G  fdddt }d}| jjt|d|dd}t|j|s(J t|jj s1J d S )	Nc                   @   s>   e Zd ZU edddZee ed< edddZee ed< dS )z?test_pydantic_schema_with_optional_pydantic.<locals>.TestPersonzFirst name of the personNr   rd   
first_namezLast name of the person	last_name)	r%   r&   r'   r   r  r   r   r   r  r)   r)   r)   r*   
TestPerson;  s   
 r  c                       s>   e Zd ZU edddZee ed< edddZe  ed< dS )zAtest_pydantic_schema_with_optional_pydantic.<locals>.TestDocumentz!Case number assigned to the claimNr  case_numberz7Name of the party that filed or submitted the statementfiled_by)	r%   r&   r'   r   r   r   r   r   r!  r)   r  r)   r*   TestDocumentC  s   
 r#  z
  Carefully examine the following document and extract the metadata.
  Be sure to include the party that filed the document.

  Document Text:
  --------------
  Case Number: 20-12345
  File by: John Doe
  rE   rg   r.   )r   rn   ro   rp   r   ri   r!  )rt   r#  Ztest_promptru   r)   r"  r*   +test_pydantic_schema_with_optional_pydantic:  s   	
r$  c                 C   sj   G dd dt }| jjtdtjdt| dd}t|jts J t	|jdks)J t|jd |s3J d S )	Nc                   @   r   )	z1test_list_of_pydantic_schema.<locals>.CountryInfor2   r   r   r   r   r   r   Nr   r)   r)   r)   r*   r   c  r  r   >Give me information for the United States, Canada, and Mexico.rE   rg   r.   r   r   
r   rn   ro   rp   r   r   r   r   ri   r   r   r)   r)   r*   test_list_of_pydantic_schemab  s   	r'  c                 C   sr   G dd dt }| jjtdtjdtt|  dd}t|jts"J t	|jdks+J t|jd d |s7J d S )	Nc                   @   r   )z3test_nested_list_of_pydantic_schema.<locals>.Reciper2   Z	cook_timeNr   r)   r)   r)   r*   Recipez  r   r(  zI'm writing three recipe books, one each for United States, Canada, and Mexico. Can you give some recipe ideas, at least 2 per book?rE   rg   r.   r   r   r&  )rt   r(  ru   r)   r)   r*   #test_nested_list_of_pydantic_schemay  s   
	r)  c                 C   sf   G dd dt }| jjtddt| dd}t|jtsJ t|jdks'J t|jd |s1J d S )	Nc                   @   r   )	zBtest_list_of_pydantic_schema_with_dict_config.<locals>.CountryInfor2   r   r   r   r   r   r   Nr   r)   r)   r)   r*   r     r  r   r%  rE   rg   r.   r   r   )r   rn   ro   rp   r   r   ri   r   r   r)   r)   r*   -test_list_of_pydantic_schema_with_dict_config  s   	r*  c                    sf   G dd dt  G  fdddt }| jjtdtjd|dd}t|j|s(J t|jj s1J d S )	Nc                   @   r   )z<test_pydantic_schema_with_nested_class.<locals>.CurrencyInfor2   Nr   r)   r)   r)   r*   CurrencyInfo  r   r+  c                          e Zd ZU eed<  ed< dS )z;test_pydantic_schema_with_nested_class.<locals>.CountryInfor2   currencyNr   r)   r+  r)   r*   r     r   r   )Give me information for the United StatesrE   rg   r.   	r   rn   ro   rp   r   r   r   ri   r-  r   r)   r.  r*   &test_pydantic_schema_with_nested_class  s   r1  c                 C   X   G dd dt }| jjtdtjd|dd}t|j|sJ t|jj	t
tfv s*J d S )Nc                   @   s"   e Zd ZU eed< eeB ed< dS )z9test_pydantic_schema_with_union_type.<locals>.CountryInfor2   restaurants_per_capitaN)r%   r&   r'   r   r   r   r  r)   r)   r)   r*   r     r  r   r/  rE   rg   r.   r   rn   ro   rp   r   r   r   ri   rc   r3  r   r  r   r)   r)   r*   $test_pydantic_schema_with_union_type  s   r5  c                 C   r2  )Nc                   @   s&   e Zd ZU eed< eeef ed< dS )zItest_pydantic_schema_with_union_type_all_py_versions.<locals>.CountryInfor2   r3  N)r%   r&   r'   r   r   r	   r   r  r)   r)   r)   r*   r     r  r   r/  rE   rg   r.   r4  r   r)   r)   r*   4test_pydantic_schema_with_union_type_all_py_versions  s   r6  c                 C   sZ   G dd dt }G dd dt }| jjtdtjd||B dd}t|j||fv s+J d S )	Nc                   @   &   e Zd ZU eed< eed< eed< dS )z0test_union_of_pydantic_schema.<locals>.SongLyric	song_namelyricartistNr   r)   r)   r)   r*   	SongLyric  r   r;  c                   @   r   )z.test_union_of_pydantic_schema.<locals>.FunFactr   Nr   r)   r)   r)   r*   FunFact  r   r<  8Can you give me a Taylor Swift song lyric or a fun fact?rE   rg   r.   )r   rn   ro   rp   r   r   rc   ri   rt   r;  r<  ru   r)   r)   r*   test_union_of_pydantic_schema  s   r?  c                 C   s^   G dd dt }G dd dt }| jjtdtjdt||f dd}t|j||fv s-J d S )	Nc                   @   r7  )z@test_union_of_pydantic_schema_all_py_versions.<locals>.SongLyricr8  r9  r:  Nr   r)   r)   r)   r*   r;    r   r;  c                   @   r   )z>test_union_of_pydantic_schema_all_py_versions.<locals>.FunFactr   Nr   r)   r)   r)   r*   r<    r   r<  r=  rE   rg   r.   )	r   rn   ro   rp   r   r   r	   rc   ri   r>  r)   r)   r*   -test_union_of_pydantic_schema_all_py_versions  s   
r@  c                    sf   G dd dt  G  fdddt}| jjtdtjd|dd}t|j|s(J t|jj	 s1J d S )	Nc                   @   s(   e Zd ZdZdZdZdZdZdZdZ	dS )	z8test_pydantic_schema_with_nested_enum.<locals>.ContinentZAsiaZAfricaZ
AntarcticaZEuropezNorth AmericazSouth AmericaZ	AustraliaN)
r%   r&   r'   ZASIAZAFRICAZ
ANTARCTICAZEUROPEZNORTH_AMERICAZSOUTH_AMERICAZ	AUSTRALIAr)   r)   r)   r*   	Continent  s    rA  c                       r,  )z:test_pydantic_schema_with_nested_enum.<locals>.CountryInfor2   r   Nr   r)   rA  r)   r*   r     r   r   r/  rE   rg   r.   )
r   r   rn   ro   rp   r   r   r   ri   r   r   r)   rB  r*   %test_pydantic_schema_with_nested_enum  s   	rC  c                    sj   G dd dt  G  fdddt }| jjtdtjd|dd}t|j|s(J t|jjd	  s3J d S )
Nc                   @   r   )zAtest_pydantic_schema_with_nested_list_class.<locals>.CurrencyInfor2   Nr   r)   r)   r)   r*   r+  (  r   r+  c                       s"   e Zd ZU eed< e  ed< dS )z@test_pydantic_schema_with_nested_list_class.<locals>.CountryInfor2   r-  N)r%   r&   r'   r   r   r   r)   r.  r)   r*   r   +  r  r   z*Give me information for the United States.rE   rg   r.   r   r0  r   r)   r.  r*   +test_pydantic_schema_with_nested_list_class'  s   rD  c                    s   G dd dt  G  fdddt }| jjtdtjdt| dd}t|jts*J t|jd	 |s4J t|jd	 j	 s?J d S )
Nc                   @   r7  )zDtest_list_of_pydantic_schema_with_nested_class.<locals>.CurrencyInfor2   codesymbolNr   r)   r)   r)   r*   r+  <  r   r+  c                       sN   e Zd ZU eed< eed< eed< eed< eed< eed< eed<  ed< d	S )
zCtest_list_of_pydantic_schema_with_nested_class.<locals>.CountryInfor2   r   r   r   r   r   r   r-  Nr   r)   r.  r)   r*   r   A  s   
 r   r%  rE   rg   r.   r   
r   rn   ro   rp   r   r   r   r   ri   r-  r   r)   r.  r*   .test_list_of_pydantic_schema_with_nested_class;  s   
rH  c                    s   G dd dt  G  fdddt }| jjtdtjdt| dd}t|jts*J t|jd	 |s4J t|jd	 j	ts?J t|jd	 j	d	  sLJ d S )
Nc                   @   r7  )zItest_list_of_pydantic_schema_with_nested_list_class.<locals>.CurrencyInfor2   rE  rF  Nr   r)   r)   r)   r*   r+  Y  r   r+  c                       sR   e Zd ZU eed< eed< eed< eed< eed< eed< eed< e  ed< d	S )
zHtest_list_of_pydantic_schema_with_nested_list_class.<locals>.CountryInfor2   r   r   r   r   r   r   r-  Nr%   r&   r'   r   r   r   r   r)   r.  r)   r*   r   ^  s   
 r   r%  rE   rg   r.   r   rG  r   r)   r.  r*   3test_list_of_pydantic_schema_with_nested_list_classX  s   
rJ  c              	   C   s   G dd dt }| js5tt}| jjtdtj	dt
t|f dd W d    d S 1 s.w   Y  d S | jjtdtj	dt
t|f dd}|jsLJ d S )Nc                   @   s>   e Zd ZU eed< eed< eed< eed< eed< eed< dS )zFtest_response_schema_with_dict_of_pydantic_schema.<locals>.CountryInfor   r   r   r   r   r   N)r%   r&   r'   r   r   r   r)   r)   r)   r*   r   w  s   
 r   r%  rE   rg   r.   )r   r   r   r   r   rn   ro   rp   r   r   r  r   r:   )rt   r   r   ru   r)   r)   r*   1test_response_schema_with_dict_of_pydantic_schemav  s*   
"

rK  c                 C   s^   t t}| jjtdtjdt dd W d    n1 s w   Y  dt	|v s-J d S )Nr%  rE   rg   r.   zUnsupported schema type)
r   r   r   rn   ro   rp   r   r   r  r   r   r)   r)   r*   (test_schema_with_unsupported_type_raises  s   	rL  c                 C   sH   | j jtddtdd}dd tD }|j|v sJ t|jts"J d S )N-What instrument plays multiple notes at once?text/x.enumrg   r.   c                 S      h | ]}|j qS r)   value.0memberr)   r)   r*   	<setcomp>      z7test_enum_schema_with_enum_mime_type.<locals>.<setcomp>)rn   ro   r   r"   r:   r   ri   )rt   ru   instrument_valuesr)   r)   r*   $test_enum_schema_with_enum_mime_type  s   	rX  c                 C   s\   t tj}| jjtddtt dd W d    n1 sw   Y  dt	|v s,J d S )N*What instrument plays single note at once?rN  rg   r.   Z400)
r   r   r   ClientErrorrn   ro   r   r   r"   r   r   r)   r)   r*   ,test_list_of_enum_schema_with_enum_mime_type  s   	r[  c                 C   sT   | j jtddtt dd}t|jtsJ |jsJ |jD ]	}t|ts'J qd S )NrY  rE   rg   r.   )rn   ro   rp   r   r"   r   ri   r  r)   r)   r*   ,test_list_of_enum_schema_with_json_mime_type  s   	

r\  c                 C   sN   G dd dt }| jjtdd|dd}t|j|sJ t|jjts%J d S )Nc                   @   s"   e Zd ZU ee ed< eed< dS )zQtest_optional_enum_in_pydantic_schema_with_json_mime_type.<locals>.InstrumentInfo
instrumentr   N)r%   r&   r'   r   r"   r   r   r)   r)   r)   r*   InstrumentInfo  s   
 r^  z_What instrument plays single note at once? Include the name of the instrument in your response.rE   rg   r.   )r   rn   ro   rp   r   ri   r]  r"   )rt   r^  ru   r)   r)   r*   9test_optional_enum_in_pydantic_schema_with_json_mime_type  s   	r_  c                 C   sT   | j jtddtdd}|jdd}dd tD }||v s J t|jts(J d S )	NrM  rE   rg   r.   "rj   c                 S   rO  r)   rP  rR  r)   r)   r*   rU    rV  z7test_enum_schema_with_json_mime_type.<locals>.<setcomp>)rn   ro   rp   r"   r:   replacer   ri   )rt   ru   Zremoved_quotesrW  r)   r)   r*   $test_enum_schema_with_json_mime_type  s   	rb  c                 C   sH   G dd dt }| jjtdd|dd}dd |D }|j|v s"J d S )	Nc                   @   r!   )zDtest_non_string_enum_schema_with_enum_mime_type.<locals>.IntegerEnumr   r   r         Nr$   r)   r)   r)   r*   IntegerEnum  r+   re  rM  rN  rg   r.   c                 S   s   h | ]}t |jqS r)   )r   rQ  rR  r)   r)   r*   rU    s    zBtest_non_string_enum_schema_with_enum_mime_type.<locals>.<setcomp>)r   rn   ro   rp   r:   )rt   re  ru   rW  r)   r)   r*   /test_non_string_enum_schema_with_enum_mime_type  s   	rf  c                 C   d   | j jtddg dddiddiddiddiddiddiddidddd	d
}t|jts0J d S )Nr   rE   r2   r   r   r   r   r   r   rc   r(   INTEGERra   requiredrf   rc   rg   r.   rn   ro   rp   r   ri   r  rs   r)   r)   r*   test_json_schema  $   
	rm  c                 C   rg  )Nr   rE   )r2   r
  r   r   r   r   r   rc   stringintegerra   rj  rg   r.   rl  rs   r)   r)   r*    test_json_schema_with_lower_enum(  rn  rq  c                 C   s   | j jtddddddgdddd	d
dddddddddddgddgdddddddddddddgddgdgddiddd}t|jtsNJ d|jv sUJ t|jd ts_J d|jd d v sjJ d S ) NGive me a fruit basket.rE   ra   Fruit Basket-A structured representation of a fruit basketfruitARRAY*An ordered list of the fruit in the basketzA piece of fruitAppleDescribes an appler(   zAlways 'apple'rc   r   z$The color of the apple (e.g., 'red'))rc   colorrc   r{  r   r   rc   rf   Zproperty_orderingrk  OrangeDescribes an orangezAlways 'orange'z'The size of the orange (e.g., 'medium'))rc   sizer  )r   any_ofrc   r   items)rc   r   r   rk  rf   rg   r.   r   )rn   ro   rp   r   ri   r  r   rs   r)   r)   r*   test_json_schema_with_any_ofH  sb   Br  c                 C   s"  t jt jjdddt jt jjdt jt jddt jjt jt jjddt jt jjd	dd
ddgddgdt jddt jjt jt jjddt jt jjddd
ddgddgdgddidgd}| jjtdt j	d|dd}t
|jtssJ d|jv szJ t
|jd tsJ d|jd d v sJ d S )Nrs  rt  ru  rw  rx  ry  zAlways "apple"rz  z+The variety of apple (e.g., "Granny Smith"))rc   varietyrc   r  r|  r}  r~  zAlways "orange"z+The variety of orange (e.g.,"Navel orange"))r  r  )rc   r   r   rf   rk  rr  rE   rg   r.   r   )r   r  Typera   rv  r(   rn   ro   rp   r   r   ri   r  r   )rt   rh   ru   r)   r)   r*   test_schema_with_any_of  sh   &,r  c                 C   sr   t | tj( | jjdtdtj	dgtj
tjtjtdddddd	 W d    d S 1 s2w   Y  d S )
Nz?gemini-2.5-flash-preview-tts-voice-replication-rev22-2025-10-28rV   rW   z	audio/wav)Zvoice_sample_audior_   )Zreplicated_voice_configrX   rZ   r.   )r   r^   r   rZ  rn   ro   t
t_contentsr   r   SpeechConfigVoiceConfigZReplicatedVoiceConfigaudio_bytesr   r)   r)   r*   test_replicated_voice_config  s&   "r  c                 C   sr   | j jtddddiddiddiddiddiddiddidddd	d
}|D ]}|j}|D ]}|js5J q.q'd S )Nr   rE   rc   r(   ri  rh  ra   )rf   rc   rg   r.   )rn   r   rp   r<   r:   )rt   ru   rr<   pr)   r)   r*   test_json_schema_with_streaming  s,   	r  c                 C   sP   G dd dt }| jjtdd|dd}|D ]}|j}|D ]}|js$J qqd S )Nc                   @   r   )	z8test_pydantic_schema_with_streaming.<locals>.CountryInfor2   r   r   r   r   r   r   Nr   r)   r)   r)   r*   r     r  r   r   rE   rg   r.   )r   rn   r   rp   r<   r:   )rt   r   ru   r  r<   r  r)   r)   r*   #test_pydantic_schema_with_streaming  s   		r  c                 C   r	  )Nc                   @   *   e Zd ZU eed< eed< ee ed< dS )z"test_schema_from_json.<locals>.FoobarbazquxNrI  r)   r)   r)   r*   Foo     
 r  Fill in the Foo.rE   rg   r.   r  )rt   r  r  ru   r)   r)   r*   test_schema_from_json  s   	r  c                 C   s:   G dd dt }| jjtdtjd| dd}|j d S )Nc                   @   r  )z*test_schema_from_model_schema.<locals>.Foor  r  r  NrI  r)   r)   r)   r*   r  .  r  r  r  rE   rg   r.   )r   rn   ro   rp   r   r   r   r:   )rt   r  ru   r)   r)   r*   test_schema_from_model_schema,  s   
	r  c                 C   s   G dd dt }| jr | jjtdtjd|dd}|jsJ d S t	t
}| jjtdtjd|dd W d    n1 s>w   Y  dt|v sKJ d S )Nc                   @   s.   e Zd ZU eed< eed< eeef ed< dS )z3test_schema_with_additional_properties.<locals>.Foor  r  r  N)r%   r&   r'   r   r   r   r  r)   r)   r)   r*   r  A  s   
 r  r,   rE   rg   r.   z8additionalProperties is not supported in the Gemini API.)r   r   rn   ro   rp   r   r   r:   r   r   r   r   )rt   r  ru   r   r)   r)   r*   &test_schema_with_additional_properties?  s,   	r  c                 C   s<   dt dt fdd}| jjtdd|gid}d|jv sJ d S )	Nr   returnc                 S   s   d|  dS )zReturns the weather in a city.zThe weather in z is sunny and 100 degrees.r)   )r   r)   r)   r*   get_weather^  s   z"test_function.<locals>.get_weatherzEWhat is the weather like in Sunnyvale? Answer in very short sentence.rT   r.   100)r   rn   ro   rp   r:   )rt   r  ru   r)   r)   r*   test_function]  s   
r  c                 C   sd   t t}| jjtdddid W d    n1 sw   Y  dt|v s(J dt|v s0J d S )NzWhat is your nameZinput_that_does_not_existZwhat_ever_valuer.   zExtra inputs are not permitted)r   r   r   rn   ro   rp   r   r   r)   r)   r*   &test_invalid_input_without_transformero  s   r  c                 C   sT   t t}| jjtddid W d    n1 sw   Y  dt|jv s(J d S NZinvalid_keyZinvalid_valuer5   r   r   r   rn   ro   rp   r   rQ  r   r)   r)   r*   (test_invalid_input_with_transformer_dict|  s   r  c                 C   sV   t t}| jjtddigd W d    n1 sw   Y  dt|jv s)J d S r  r  r   r)   r)   r*   (test_invalid_input_with_transformer_list  s   r  c                 C   sN   t t}| jjddd W d    n1 sw   Y  dt|v s%J d S )Nrd  r,   r5   r/   )r   r   r   rn   ro   r   r   r)   r)   r*   'test_invalid_input_for_simple_parameter  s   r  c              
   C   s   z| j jtdddgid W d S  tjyA } z%d|jv r#|jd }n|j}|d dks.J |d d	ks6J W Y d }~d S d }~ww )
Nr,   r[   ZAUDIOr.   errorrE  r   statusZINVALID_ARGUMENT)rn   ro   rp   r   rZ  details)rt   r   r  r)   r)   r*   (test_catch_stack_trace_in_error_handling  s   
r  c                 C   sx   G dd dt }| jjtddgdt| dd}d|jv sJ d	|jv s&J d|jd
 jv s0J d	|jd jv s:J d S )Nc                   @   r   )z/test_multiple_strings.<locals>.SummaryResponsessummarypersonNr   r)   r)   r)   r*   SummaryResponses  r   r  4Summarize Shakespeare's life work in a few sentencesSummarize Hemingway's life workrE   rg   r.   Shakespeare	Hemingwayr   r   )r   rn   ro   rp   r   r:   ri   r  rt   r  ru   r)   r)   r*   test_multiple_strings  s   r  c                 C   s   G dd dt }| jjttjddtjddgdt| dd}d	|jv s'J d
|jv s.J d	|jd j	v s8J d
|jd j	v sBJ d S )Nc                   @   r   )z-test_multiple_parts.<locals>.SummaryResponsesr  r  Nr   r)   r)   r)   r*   r    r   r  r  r9   r  rE   rg   r.   r  r  r   r   )
r   rn   ro   rp   r   Partr   r:   ri   r  r  r)   r)   r*   test_multiple_parts  s    
r  c                 C   s  | j jtddtjjdddidtjjddd	idtjjdd
didtjjdd
didgtjtjtj	ddtj
tjjdtj
tjjdiddtj	ddtj
tjjdtj
tjjdiddgdgdd}d|jv skJ d|jv srJ d|jv syJ d|jv sJ d S )NzWhat is the weather in Boston?z What is the stock price of GOOG?r  locationZBoston)r2   argsZget_stock_pricerF  ZGOOGru   zIt is sunny and 100 degrees.)r2   ru   zThe stock price is $100.zGet the weather in a city.)rc   re   )r2   r   r3   z Get the stock price of a symbol.)Zfunction_declarationsrS   r.   sunnyz100 degreesz$100)rn   ro   rp   r   r  Zfrom_function_callZfrom_function_responser   ToolZFunctionDeclarationr  r  ra   r(   r:   rs   r)   r)   r*   test_multiple_function_calls  sl   8r  c                 C   s   dt jjtddg}| jjt|d}|j}|jsJ |j	sJ t
dd |j	D }|dgks0J t|j	d jt js<J |jsAJ |jsFJ t
d	d |jD }|d
dgksXJ d S )NzHello world.	image/pngdatar_   r5   c                 S      g | ]}|j jqS r)   modalityr2   rS  dr)   r)   r*   
<listcomp>8	      z2test_usage_metadata_part_types.<locals>.<listcomp>r   r   c                 S   r  r)   r  r  r)   r)   r*   r  A	  r  r   )r   r  
from_bytesimage_bytesrn   ro   r   usage_metadataZcandidates_token_countZcandidates_tokens_detailssortedr   r  ZMediaModalityZprompt_token_countZprompt_tokens_details)rt   r0   ru   r  Z
modalitiesr)   r)   r*   test_usage_metadata_part_types'	  s2   



r  c              
   C   s   | j rd S z*| jjttjdtjjtddtjj	ddgdgtj
ddd	gd
ddD ]}q*W d S  tjyJ } z|jdks?J W Y d }~d S d }~ww Nr8   r  r  Make sky more beautiful.r9   r;   
text/plainr   r   make the sky more beautiful.rL   r[   r?   r.   zFDeveloper instruction is not enabled for models/gemini-2.5-flash-image)r   rn   r   r   r   Contentr  r  r  	from_textr   r   rZ  message)rt   r   r   r)   r)   r*   test_error_handling_streamF	  s8   
r  c              
   C   s   | j rd S z'| jjttjdtjjtddtjj	ddgdgtj
ddd	gd
dd W d S  tjyG } z|jdks<J W Y d }~d S d }~ww r  )r   rn   ro   r   r   r  r  r  r  r  r   r   rZ  r  r   r)   r)   r*   test_error_handling_unaryh	  s4   r  c                 C   sP   | j jtdtjdddiidd}| jr |jjtjj	ksJ d S |jjr&J d S )NzWhat is 1 + 1?r   zX-Vertex-AI-LLM-Request-TypeZ	dedicated)r-   r.   )
rn   ro   rp   r   r   r   r  Ztraffic_typeZTrafficTypeZPROVISIONED_THROUGHPUTrs   r)   r)   r*   !test_provisioned_output_dedicated	  s   
r  c              
      s   | j rd S z+| jjjttjdtjjt	ddtjj
ddgdgtjddd	gd
ddI d H  W d S  tjyL } z|jdksAJ W Y d }~d S d }~ww r  )r   r|   rn   ro   r   r   r  r  r  r  r  r   r   rZ  r  r   r)   r)   r*   test_error_handling_unary_async	  s6   r  c              
      s   | j rd S z3| jjjttjdtjjt	ddtjj
ddgdgtjddd	gd
ddI d H 2 z3 d H W }q/6 W d S  tjyT } zd|jv sIJ W Y d }~d S d }~ww )Nr8   r  r  r  r9   r;   r  r   r   r  r  r.   z$Developer instruction is not enabled)r   r|   rn   r   r   r   r  r  r  r  r  r   r   rZ  r  )rt   r   r   r)   r)   r*    test_error_handling_stream_async	  s6   r  )ospathlibZpydanticr   r   r   r   typingr   r   r   r	   r
   r   r   r   r   sysrj   r   r  r   r   r   enumr   rp   r   r   Path__file__parentZIMAGE_PNG_FILE_PATH
read_bytesr  ZAUDIO_WAV_FILE_PATHr  Zsafety_settings_with_methodr}   r"   ZTestTableItemZ_GenerateContentParametersr  r  r  Z	t_contentr   r  ZGoogleSearchZIntervalfromisoformatZPhishBlockThresholdr   ZEnterpriseWebSearchr  r  ZPrebuiltVoiceConfigZMultiSpeakerVoiceConfigZSpeakerVoiceConfigZFileDatark   r   r   setupglobalsZ
pytestmarkZpytest_pluginsrv   r{   markZasyncior~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zskipifversion_infor  r  r  r  r  r  r  r  r  r  r$  r'  r)  r*  r1  r5  r6  r?  r@  rC  rD  rH  rJ  rK  rL  rX  r[  r\  r_  rb  rf  rm  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)   r)   r)   r*   <module>   s  
(
1?HT
_pz       &  8  O  `  q           #    6    X           
      '      ;      D      M      V      e      w	

	





##



(  I;			!?"!!