§
    $Âi�  ã                   ó4  — d Z ddlZddlZddlm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ej        d	„ ¦   «         Zej        d
„ ¦   «         Zdededefd„Zej        d„ ¦   «         Z
ej        d„ ¦   «         Zej        d„ ¦   «         Zej        d„ ¦   «         ZdS )z Conftest for google.genai tests.é    N)Úmocké   )Ú_common)Ú_replay_api_client)Úclientc                 ój   — |                       dddd¬¦  «         |                       dddd	¬¦  «         d S )
Nú--modeÚstoreÚautoae  Replay mode.
  One of:
  * auto: Replay if replay files exist, otherwise record.
  * record: Always call the API and record.
  * replay: Always replay, fail if replay files do not exist.
  * api: Always call the API and do not record.
  * tap: Always replay, fail if replay files do not exist. Also sets default values for the API key and replay directory.
)ÚactionÚdefaultÚhelpú	--privateÚ
store_trueFzRun private tests.)Ú	addoption)Úparsers    úe/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/google/genai/tests/conftest.pyÚpytest_addoptionr      sb   € Ø×ÒØØØðð	 ñ ô ð ð 	×ÒØØØØð	 ñ ô ð ð ð ó    c                  ó   — dS )NF© r   r   r   Ú
use_vertexr   5   s   € à	ˆr   c                  ó   — dS )NÚtestr   r   r   r   Úreplays_prefixr   ;   s   € à	ˆr   r   r   Úreturnc                 ó  — t           j                             d¦  «                             d¦  «        d         }|                     d¦  «        d                              d¦  «        d         dz   | rdnd	z   }d
                     ||g¦  «        S )NÚPYTEST_CURRENT_TESTz::éÿÿÿÿú r   ú[ú.ÚvertexÚmldevú/)ÚosÚenvironÚgetÚsplitÚjoin)r   r   Útest_name_endingÚ	test_names       r   Ú_get_replay_idr-   @   sŠ   € Ý”Z—^’^Ð$9Ñ:Ô:×@Ò@ÀÑFÔFÀrÔJÐà×Ò˜SÑ!Ô! !Ô$×*Ò*¨3Ñ/Ô/°Ô2ØñàÐ	,ˆˆ Wñ.ð ð
 
�Š�> 9Ð-Ñ	.Ô	.Ð.r   c              #   óú  K  — |j                              d¦  «        }|dvrt          d|z   ¦  «        ‚|j        j        }t
          j                             t
          j                             |j        ¦  «        ¦  «        d         }| 	                    |¦  «        rt          d|› d�¦  «        ‚dD ]}||v rt          d|› d	�¦  «        ‚Œt          | |¦  «        }|d
k    rìd}dt
          j        d<   t
          j                             t
          j                             t          ¦  «        d¦  «        t
          j        d<   dt
          j        d<   dt
          j        d<   t
          j                             t
          j                             t
          j                             t          ¦  «        d¦  «        ¦  «        }	|	t
          j        d<   |j                              d¦  «        }
t!          j        ||| ||
¬¦  «        }t$          j                             t*          j        d¦  «        5 }||_        t+          j        | ¬¦  «        }|V — |j                             ¦   «          d d d ¦  «         d S # 1 swxY w Y   d S )Nr	   )r   ÚrecordÚreplayÚapiÚtapzInvalid mode: r   z
      zl:
      Do not include the test filename in the test function name.
      keep the test function name short.)r$   Úml_devr#   z	
        zÈ:
        You should never ever include api types in the file name (mldev or vertex).
        All tests should run against all apis.
        Assert an exception if the test is not supported in an API.r2   r0   zdummy-api-keyÚGOOGLE_API_KEYzcredentials.jsonÚGOOGLE_APPLICATION_CREDENTIALSz
project-idÚGOOGLE_CLOUD_PROJECTÚlocationÚGOOGLE_CLOUD_LOCATIONz8../../../../../google/cloud/aiplatform/sdk/genai/replaysÚGOOGLE_GENAI_REPLAYS_DIRECTORYr   )ÚmodeÚ	replay_idÚvertexaiÚhttp_optionsÚprivateÚ_get_api_client)r<   )ÚconfigÚ	getoptionÚ
ValueErrorÚfunctionÚ__name__r&   ÚpathÚsplitextÚbasenameÚ
startswithr-   r'   r*   ÚdirnameÚ__file__Úabspathr   ÚReplayApiClientr   ÚpatchÚobjectÚgoogle_genai_client_moduleÚClientÚreturn_valueÚ_api_clientÚclose)r   r   r=   Úrequestr:   Útest_function_nameÚtest_filenameÚwordr;   Úreplays_root_directoryr>   Úreplay_clientÚpatch_methodÚgoogle_genai_clients                 r   r   r   J   sÑ  è è € à	Œ×	!Ò	! (Ñ	+Ô	+€$Ø	Ð;Ð;Ð;Ý
Ð%¨Ñ,Ñ
-Ô
-Ð-ØÔ'Ô0ÐÝ”'×"Ò"¥2¤7×#3Ò#3°G´LÑ#AÔ#AÑBÔBÀ1ÔE€-Ø×"Ò" =Ñ1Ô1ð -Ý
ð ,Øð,ð ,ð ,ñ -ô -ð -ð ,ð Hð H€dØÐ!Ð!Ð!Ýð GØ	ðGð Gð Gñ Hô Hð Hð "õ ˜Z¨Ñ8Ô8€)à	ˆU‚]€]Ø€Dð $3…B„JÐÑ Ý35´7·<²<Ý
Œ�Š�Ñ!Ô!Øñ4ô 4…B„JÐ/Ñ0ð *6…B„JÐ%Ñ&Ø*4…B„JÐ&Ñ'õ  œWŸ_š_Ý
Œ�ŠÝŒG�OŠO�HÑ%Ô%ØFñ	
ô 	
ñô Ðð 4J…B„JÐ/Ñ0àŒN×$Ò$ [Ñ1Ô1€'Ý$Ô4ØØØØØðñ ô €-õ „z×ÒÝ Ô'Ð):ñô ð 
,àØ -€LÔÝ4Ô;ÀZÐPÑPÔPÐð ÐÐÐð Ô#×)Ò)Ñ+Ô+Ð+ð
,ð 
,ð 
,ñ 
,ô 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,ð 
,øøøð 
,ð 
,ð 
,ð 
,ð 
,ð 
,s   È):I0É0I4É7I4c               #   ó’   K  — t           j                             t          dd¬¦  «        5 } | V — d d d ¦  «         d S # 1 swxY w Y   d S )NÚtimestamped_unique_nameÚ20240101000000_bd656)rQ   )r   rM   rN   r   )Úunique_name_mocks    r   Úmock_timestamped_unique_namer`   ‹   sœ   è è € å„z×ÒÝØØ)ð ñ ô ð ð Ø
ÐÐÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ª<¼A ÁA c               #   ó  K  — dd l } t          j                             t          j                             t
          ¦  «        dd¦  «        }| j                             |¦  «        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S )Nr   Údataz
google.jpg©Ú	PIL.Imager&   rE   r*   rI   rJ   ÚImageÚopen©ÚPILÚ
image_pathÚimgs      r   Ú
image_jpegrk   •   óµ   è è € àÐÐÐÝŒw�|Š|�BœGŸOšO­HÑ5Ô5°v¸|ÑLÔL€*Ø
„y‡~‚~�jÑ!Ô!ð  SØ
€I€I€Iðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ó   Á$A6Á6A:Á=A:c               #   ó  K  — dd l } t          j                             t          j                             t
          ¦  «        dd¦  «        }| j                             |¦  «        5 }|V — d d d ¦  «         d S # 1 swxY w Y   d S )Nr   rb   z
google.pngrc   rg   s      r   Ú	image_pngro   �   rl   rm   )Ú__doc__Údatetimer&   Úunittestr   ÚuuidÚpytestÚ r   r   r   rO   r   Úfixturer   r   ÚboolÚstrr-   r`   rk   ro   r   r   r   ú<module>ry      sj  ðð" 'Ð &à €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€à Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3ðð ð ð. „ðð ñ „ðð
 „ðð ñ „ðð/˜tð /°Sð /¸Sð /ð /ð /ð /ð „ð=,ð =,ñ „ð=,ð@ „ðð ñ „ðð „ðð ñ „ðð „ðð ñ „ðð ð r   