
    `i,              	          d dl Z d dlmZmZm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d	lmZ dd
l	mZ ddl	mZ ddlmZmZ  e j,                  d      Z	 d/dedeeef   dee   defdZ	 d/dedeeef   dee   defdZ	 d/dedeeef   dee   defdZ	 d/dedeeef   dee   defdZ	 d/dedeeef   dee   defdZ	 d/dedeeef   dee   defdZ	 d/dedeeef   dee   defdZ 	 d/dedeeef   dee   defdZ!	 d/dedeeef   dee   defdZ"	 d/dedeeef   dee   defdZ#	 d/dedeeef   dee   defdZ$	 d/dedeeef   dee   defdZ%	 d/dedeeef   dee   defdZ&	 d/dedeeef   dee   defdZ'	 d/dedeeef   dee   defd Z(	 d/dedeeef   dee   defd!Z)	 d/dedeeef   dee   defd"Z*	 d/dedeeef   dee   defd#Z+	 d/dedeeef   dee   defd$Z,	 d/dedeeef   dee   defd%Z-	 d/dedeeef   dee   defd&Z.	 d/dedeeef   dee   defd'Z/	 d/dedeeef   dee   defd(Z0 G d) d*ejb                        Z2 G d+ d,ejb                        Z3 G d- d.      Z4y)0    N)AnyOptionalUnion)	urlencode   )_api_module)_common)_transformers)types)BaseApiClient)get_value_by_path)set_value_by_path)
AsyncPagerPagerzgoogle_genai.tunings
api_clientfrom_objectparent_objectreturnc                     i }t        |dg      t        |ddgt        |dg             t        |dg      t        |dgt        |dg             |S Nname_urlconfiggetvsetvr   r   r   	to_objects       Y/var/www/html/ts-aiml.yecor.com/venv/lib/python3.12/site-packages/google/genai/tunings.py _GetTuningJobParameters_to_mldevr    !   ^    
 !)	+x ,VV$d;&AB	+z".XJ[8* =>	    c                     i }t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             |S N	page_size_querypageSize
page_token	pageTokenfilterr   r   s       r   _ListTuningJobsConfig_to_mldevr+   0       
 !)	+}%1*-tK+/O 
+~&2	;[<.) 
+z".8,d;
.KL	r"   c                 l    i }t        |dg      $t        |dgt        | t        |dg      |             |S Nr   )r   r   r+   r   s       r   "_ListTuningJobsParameters_to_mldevr/   I   sH    
 !)	+z".	
&[8*5y	
 
r"   c                     i }t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             |S )N
text_input	textInputoutputr   r   s       r   _TuningExample_to_mldevr4   [   s[    
 !)	+~&2[M4l^#DE	+z".XJ[8* =>	r"   c                     i }t        |dg      t        d      t        |dg      3t        |ddgt        |dg      D cg c]  }t        | ||       c}       |S c c}w )Ngcs_uri1gcs_uri parameter is not supported in Gemini API.examples)r   
ValueErrorr   r4   r   r   r   r   items        r   _TuningDataset_to_mldevr<   j   s}    
 !)	+	{#/
H
II	+
|$0	Z  [:,7	
 $Ji@	
 
	
s    Ac                 :    i }t        |dg      t        d      |S )Nr6   r7   r   r9   r   s       r   !_TuningValidationDataset_to_mldevr?      s*    
 !)	+	{#/
H
II	r"   c                    i }t        |dg      t        d      t        |dg      t        |dgt        |dg             t        |dg      t        d      t        |dg      t        |g dt        |dg             t        |d	g      t        |g d
t        |d	g             t        |dg      t        d      t        |dg      t        |g dt        |dg             t        |dg      t        |g dt        |dg             |S )Nvalidation_datasetz<validation_dataset parameter is not supported in Gemini API.tuned_model_display_namedisplayNamedescriptionz5description parameter is not supported in Gemini API.epoch_count)
tuningTaskhyperparameters
epochCountlearning_rate_multiplier)rF   rG   learningRateMultiplieradapter_sizez6adapter_size parameter is not supported in Gemini API.
batch_size)rF   rG   	batchSizelearning_rate)rF   rG   learningRate)r   r9   r   r   s       r   _CreateTuningJobConfig_to_mldevrP      sL   
 !)	+,-.:
F  
+234@	[567 
+'3
L
MM	+'37[=/* 
+234@C[567 
+'(4
M
NN	+~&26[<.) 
+()59[?+, 
r"   c                    i }t        |dg      t        |dgt        |dg             t        |dg      %t        |ddgt        | t        |dg      |             t        |dg      $t        |dgt        | t        |dg      |             |S )N
base_model	baseModeltraining_datasetrF   trainingDatar   )r   r   r<   rP   r   s       r   #_CreateTuningJobParameters_to_mldevrV      s    
 !)	+~&2[M4l^#DE	+*+,8	~&[+=*>?	
 
+z".	
'[8*5y	
 
r"   c                     i }t        |dg      t        |ddgt        |dg             t        |dg      t        |dgt        |dg             |S r   r   r   s       r   !_GetTuningJobParameters_to_vertexrX      r!   r"   c                     i }t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             t        |dg      t        |ddgt        |dg             |S r$   r   r   s       r   _ListTuningJobsConfig_to_vertexrZ      r,   r"   c                 l    i }t        |dg      $t        |dgt        | t        |dg      |             |S r.   )r   r   rZ   r   s       r   #_ListTuningJobsParameters_to_vertexr\   
  sH    
 !)	+z".	
'[8*5y	
 
r"   c                 j    i }t        |dg      t        d      t        |dg      t        d      |S )Nr1   z3text_input parameter is not supported in Vertex AI.r3   z/output parameter is not supported in Vertex AI.r>   r   s       r   _TuningExample_to_vertexr^     sE    
 !)	+~&2
J
KK	+z".
F
GG	r"   c                     i }t        |dg      t        |ddgt        |dg             t        |dg      t        d      |S )Nr6   supervisedTuningSpectrainingDatasetUrir8   z1examples parameter is not supported in Vertex AI.)r   r   r9   r   s       r   _TuningDataset_to_vertexrb   +  s[    
 !)	+	{#/	!56[9+& 
+
|$0
H
II	r"   c                 V    i }t        |dg      t        |dgt        |dg             |S )Nr6   validationDatasetUrir   r   s       r   "_TuningValidationDataset_to_vertexre   >  s7    
 !)	+	{#/+,d;.LM	r"   c                 N   i }t        |dg      $t        |dgt        | t        |dg      |             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |g dt        |dg             t        |dg      t        |g d	t        |dg             t        |d
g      t        |g dt        |d
g             t        |dg      t        d      t        |dg      t        d      |S )NrA   r`   rB   tunedModelDisplayNamerD   rE   )r`   hyperParametersrH   rI   )r`   rh   rJ   rK   )r`   rh   adapterSizerL   z3batch_size parameter is not supported in Vertex AI.rN   z6learning_rate parameter is not supported in Vertex AI.)r   r   re   r9   r   s       r    _CreateTuningJobConfig_to_vertexrj   J  sc   
 !)	+,-.:	 *[+?*@A9	
 
+234@	 ![567 
+'3kM?)KL	+'3A[=/* 
+234@M[567 
+'(4B[>*+ 
+~&2
J
KK	+()5
M
NN	r"   c                    i }t        |dg      t        |dgt        |dg             t        |dg      %t        |ddgt        | t        |dg      |             t        |dg      $t        |dgt        | t        |dg      |             |S )NrR   rS   rT   r`   ra   r   )r   r   rb   rj   r   s       r   $_CreateTuningJobParameters_to_vertexrl     s    
 !)	+~&2[M4l^#DE	+*+,8	!56 [+=*>?	
 
+z".	
([8*5y	
 
r"   c                     i }t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             |S )Nr   modelendpointr   r   s       r   _TunedModel_from_mldevrp     s[    
 !)	+x ,WItK&:;	+x ,ZL${VH"=>	r"   c                 x   i }t        |dg      t        |dgt        |dg             t        |dg      -t        |dgt        j                  | t        |dg                   t        |dg      t        |dgt        |dg             t        |ddg      t        |dgt        |ddg             t        |ddg      t        |d	gt        |ddg             t        |d
g      t        |dgt        |d
g             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      $t        |dgt	        | t        |dg      |             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             |S )Nr   state
createTimecreate_timerF   	startTime
start_timecompleteTimeend_time
updateTimeupdate_timerD   rS   rR   _selftuned_modeldistillationSpecdistillation_spec
experimentlabelspipelineJobpipeline_jobrg   rB   )r   r   tt_tuning_job_statusrp   r   s       r   _TuningJob_from_mldevr     s}   
 !)	+x ,VHd;9:	+y!-			j${WI*FG 
+~&2]OT+~%FG	+k23?	[<56 
+n56B	[<89 
+~&2]OT+~%FG	+'3]OT+%GH	+}%1\ND{m$DE	+y!-	[7)4i	
 
+*+,8	[-./ 
+~&2\ND|n$EF	+z".XJ[8* =>	+'3^$d;&HI	+/01=	#$[234 
r"   c                     i }t        |dg      t        |dgt        |dg             t        |dg      2t        |dgt        |dg      D cg c]  }t        | ||       c}       |S c c}w )NnextPageTokennext_page_tokentunedModelstuning_jobs)r   r   r   r:   s        r   "_ListTuningJobsResponse_from_mldevr     s    
 !)	+()5&'kO;L)MN	+'3	 [=/:	
 "*dI>	
 
	
   A*c                 :   i }t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             |S )Nr   metadatadoneerrorr   r   s       r   _Operation_from_mldevr     s    
 !)	+x ,VHd;9:	+
|$0ZL${ZL"AB	+x ,VHd;9:	+y!-WItK';<	r"   c                     i }t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             |S )Nrn   ro   r   r   s       r   _TunedModel_from_vertexr   '  s[    
 !)	+y!-WItK';<	+
|$0ZL${ZL"AB	r"   c                    i }t        |dg      t        |dgt        |dg             t        |dg      -t        |dgt        j                  | t        |dg                   t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |d	g      t        |d
gt        |d	g             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      $t        |dgt	        | t        |dg      |             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |dgt        |dg             t        |dg      t        |d gt        |dg             |S )!Nr   rr   rs   rt   ru   rv   endTimerx   ry   rz   r   rD   rS   rR   
tunedModelr|   r`   supervised_tuning_spectuningDataStatstuning_data_statsencryptionSpecencryption_specpartnerModelTuningSpecpartner_model_tuning_specr}   r~   r   r   r   r   rg   rB   )r   r   r   r   r   r   s       r   _TuningJob_from_vertexr   6  sJ   
 !)	+x ,VHd;9:	+y!-			j${WI*FG 
+~&2]OT+~%FG	+}%1\ND{m$DE	+	{#/ZL${YK"@A	+~&2]OT+~%FG	+y!-WItK';<	+'3]OT+%GH	+}%1\ND{m$DE	+~&2	[<.99	
 
+./0<	!"[123 
+)*+7'(${=N<O*P 
+()*6&'k<L;M)NO	+012>	$%[345 
+*+,8	[-./ 
+~&2\ND|n$EF	+z".XJ[8* =>	+'3^$d;&HI	+/01=	#$[234 
r"   c                     i }t        |dg      t        |dgt        |dg             t        |dg      2t        |dgt        |dg      D cg c]  }t        | ||       c}       |S c c}w )Nr   r   
tuningJobsr   )r   r   r   r:   s        r   #_ListTuningJobsResponse_from_vertexr     s    
 !)	+()5&'kO;L)MN	+~&2	 [<.9	
 #:tY?	
 
	
r   c            
       t   e Zd Zdddedeej                     dej                  fdZdddeej                     dej                  fdZddded	ej                  deej                     dej                  fd
Zddded	ej                  deej                     dej                  fdZdddeej                     deej                     fdZdddedeej                     dej                  fdZ ej*                  d      ddded	ej                  deej                     dej                  fd       Zy)TuningsNr   r   r   r   c                   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||      }	| j                  j                  rt!        | j                  |	      }	nt#        | j                  |	      }	t         j$                  j'                  |	|j)                         	      }
| j                  j+                  |
       |
S 
zzGets a TuningJob.

    Args:
      name: The resource name of the tuning job.

    Returns:
      A TuningJob object.
    r   r   r   z{name}r&   ?r   Ngetresponsekwargs)r   _GetTuningJobParameters_api_clientvertexairX   r   
format_mapr    r   popr   http_optionsr	   convert_to_dictencode_unserializable_typesrequestr   r   	TuningJob_from_response
model_dump_verify_responseselfr   r   parameter_modelrequest_dictrequest_url_dictpathquery_paramsr   response_dictreturn_values              r   _getzTunings._get  s    33O   6


Ol &))&1	""#345


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL$$,,t\<M   ,T-=-=}Mm ,D,<,<mLm??11'A'A'C 2 L 	%%l3r"   c                   t        j                  |      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||      }| j                  j                  rt!        | j                  |      }nt#        | j                  |      }t         j$                  j'                  ||j)                         
      }	| j                  j+                  |	       |	S zLists `TuningJob` objects.

    Args:
      config: The configuration for the list request.

    Returns:
      A list of `TuningJob` objects.
    r   r   r   r   r&   r   r   Nr   r   )r   _ListTuningJobsParametersr   r   r\   r   r   r/   r   r   r   r   r	   r   r   r   r   r   ListTuningJobsResponser   r   r   
r   r   r   r   r   r   r   r   r   r   s
             r   _listzTunings._list  s    55O   8


Ol &))&1	&&'787


Ol &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL$$,,t\<M   9


Mm
 9


Mm //>>'A'A'C ? L 	%%l3r"   rR   rT   c                L   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}	|j                  ,|j                  j                  |j                  j                  }	t        j                  |      }t        j                  |      }| j                  j                  d	|||	      }
| j                  j                  rt!        | j                  |
      }
t         j"                  j%                  |
|j'                         
      }| j                  j)                  |       |S a  Creates a supervised fine-tuning job and returns the TuningJob object.

    Args:
      base_model: The name of the model to tune.
      training_dataset: The training dataset to use.
      config: The configuration to use for the tuning job.

    Returns:
      A TuningJob object.
    rR   rT   r   z6This method is only supported in the Vertex AI client.r   r   r&   r   r   Npostr   )r   _CreateTuningJobParametersr   r   r9   rl   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   rR   rT   r   r   r   r   r   r   r   r   r   s               r   _tunezTunings._tune<  s   $ 66)O $$OPP9


Ol &))&1	&&'78##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL$$,,lLM   ,T-=-=}Mm??11'A'A'C 2 L 	%%l3r"   c                L   t        j                  |||      }| j                  j                  rt	        d      t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}	|j                  ,|j                  j                  |j                  j                  }	t        j                  |      }t        j                  |      }| j                  j                  d	|||	      }
| j                  j                  st!        | j                  |
      }
t         j"                  j%                  |
|j'                         
      }| j                  j)                  |       |S a"  Creates a supervised fine-tuning job and returns the TuningJob object.

    Args:
      base_model: The name of the model to tune.
      training_dataset: The training dataset to use.
      config: The configuration to use for the tuning job.

    Returns:
      A TuningJob operation.
    r   z=This method is only supported in the Gemini Developer client.r   r   r&   r   r   Nr   r   )r   r   r   r   r9   rV   r   r   r   r   r   r   r	   r   r   r   r   	Operationr   r   r   r   s               r   _tune_mldevzTunings._tune_mldev~  s   $ 66)O   
I  9


Ol &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL$$,,lLM $$+D,<,<mLm??11'A'A'C 2 L 	%%l3r"   c                R    t        d| j                  | j                  |      |      S Nr   r   )r   r   r   r   s     r   listzTunings.list  s,     



&
!	 r"   c                   | j                  ||      }|j                  ra| j                  j                  rK| j                  j                  5t
        j                  |j                  | j                  j                         |S Nr   )r   projectr   r   r   r   r   _IpythonUtilsdisplay_experiment_buttonr   r   r   jobs       r   r   zTunings.get  sn     ))f)
-C%%$$0--^^""** .  Jr"   SThe SDK's tuning implementation is experimental, and may change in future versions.c                $   | j                   j                  r| j                  |||      }n| j                  |||      }|j                  d|j                  v r|j                  d   }n5|j
                  t        d      |j
                  j                  d      d   }t        j                  |t        j                  j                        }|j
                  r6| j                   j                  r t        j                  |j
                         |S Nr   r   zOperation name is required.z/operations/r   )r   rr   )tuning_job_resourcer   r   r   r   r   r   r9   	partitionr   r   JobStateJOB_STATE_QUEUEDr   display_model_tuning_buttonr   rR   rT   r   
tuning_job	operationtuned_model_names          r   tunezTunings.tune  s      ::+  j ""+ # i
 
			'LI<N<N,N$--l;>>!89
9$>>33NCAF??//j 4++44//(oo 0  r"   )__name__
__module____qualname__strr   r   GetTuningJobConfigOrDictr   r   ListTuningJobsConfigOrDictr   r   TuningDatasetOrDictCreateTuningJobConfigOrDictr   r   r   r   r   r   r	   experimental_warningr    r"   r   r   r     s    :>	F F u556	F
 FR EIF @ @AF##FZ =A@ @ 11	@
 u889@ @N =AB B 11	B
 u889B BJ EI @ @AU__ :>	  u556	
 $  7+ =A! ! 11	!
 u889! !	!r"   r   c            
       t   e Zd Zdddedeej                     dej                  fdZdddeej                     dej                  fdZddded	ej                  deej                     dej                  fd
Zddded	ej                  deej                     dej                  fdZdddeej                     deej                     fdZdddedeej                     dej                  fdZ ej*                  d      ddded	ej                  deej                     dej                  fd       Zy)AsyncTuningsNr   r   r   r   c                  K   t        j                  ||      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d|||       d{   }	| j                  j                  rt!        | j                  |	      }	nt#        | j                  |	      }	t         j$                  j'                  |	|j)                         	      }
| j                  j+                  |
       |
S 7 wr   )r   r   r   r   rX   r   r   r    r   r   r   r   r	   r   r   async_requestr   r   r   r   r   r   r   s              r   r   zAsyncTunings._get  s     33O   6


Ol &))&1	""#345


Ol &))&1	""#34##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL**88t\< M   ,T-=-=}Mm ,D,<,<mLm??11'A'A'C 2 L 	%%l3s   E#G;%G9&BG;c                  K   t        j                  |      }| j                  j                  r>t	        | j                  |      }|j                  d      }|rdj                  |      }n@d}n=t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}|j                  ,|j                  j                  |j                  j                  }t        j                  |      }t        j                  |      }| j                  j                  d	|||       d{   }| j                  j                  rt!        | j                  |      }nt#        | j                  |      }t         j$                  j'                  ||j)                         
      }	| j                  j+                  |	       |	S 7 wr   )r   r   r   r   r\   r   r   r/   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   r   s
             r   r   zAsyncTunings._listP  s     55O   8


Ol &))&1	&&'787


Ol &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL**88t\< M   9


Mm
 9


Mm //>>'A'A'C ? L 	%%l3%s   E"G:$G8%BG:rR   rT   c                h  K   t        j                  |||      }| j                  j                  st	        d      t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}	|j                  ,|j                  j                  |j                  j                  }	t        j                  |      }t        j                  |      }| j                  j                  d	|||	       d{   }
| j                  j                  rt!        | j                  |
      }
t         j"                  j%                  |
|j'                         
      }| j                  j)                  |       |S 7 |wr   )r   r   r   r   r9   rl   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   s               r   r   zAsyncTunings._tune  s    $ 66)O $$OPP9


Ol &))&1	&&'78##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL**88lL M   ,T-=-=}Mm??11'A'A'C 2 L 	%%l3   D1F23F04A=F2c                h  K   t        j                  |||      }| j                  j                  rt	        d      t        | j                  |      }|j                  d      }|rdj                  |      }nd}|j                  d      }|r| dt        |       }|j                  dd       d}	|j                  ,|j                  j                  |j                  j                  }	t        j                  |      }t        j                  |      }| j                  j                  d	|||	       d{   }
| j                  j                  st!        | j                  |
      }
t         j"                  j%                  |
|j'                         
      }| j                  j)                  |       |S 7 |wr   )r   r   r   r   r9   rV   r   r   r   r   r   r   r	   r   r   r   r   r   r   r   r   r   s               r   r   zAsyncTunings._tune_mldev  s    $ 66)O   
I  9


Ol &))&1	''(89##H-LvQy./0dXt$04L*""//;$++88l**<8L66|DL**88lL M $$+D,<,<mLm??11'A'A'C 2 L 	%%l3r   c                n   K   t        d| j                  | j                  |       d {   |      S 7 	wr   )r   r   r   s     r   r   zAsyncTunings.list  s8      

jjj''	  	(s   '53
5c                "  K   | j                  ||       d {   }|j                  ra| j                  j                  rK| j                  j                  5t
        j                  |j                  | j                  j                         |S 7 swr   r   r   s       r   r   zAsyncTunings.get(  sz      		tF	3
3C%%$$0--^^""** .  J 4s   BBA4Br   c                T  K   | j                   j                  r| j                  |||       d {   }n| j                  |||       d {   }|j                  d|j                  v r|j                  d   }n5|j
                  t        d      |j
                  j                  d      d   }t        j                  |t        j                  j                        }|j
                  r6| j                   j                  r t        j                  |j
                         |S 7 7 حwr   r   r   s          r   r   zAsyncTunings.tune:  s       + $  j ((+ )  i
 
			'LI<N<N,N$--l;>>!89
9$>>33NCAF??//j 4++44//(oo 0  3s"   .D(D$D(D&CD(&D()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     s    :>	F F u556	F
 FR EIF @ @AF##FZ =A@ @ 11	@
 u889@ @N =AB B 11	B
 u889B BJ EI @ @A%//" :>	  u556	
 $  7+ =A! ! 11	!
 u889! !	!r"   r   c            
           e Zd ZU dZ e       Zee   ed<   edefd       Z	ede
fd       Zedefd       Zededee   defd	       Ze	 dd
ededee   ddfd       Zedededdfd       Zededdfd       Zy)r   z6Temporary class to hold the IPython related functions.displayed_experimentsr   c                  j    dd l } d| j                  v r!ddlm}  |       j                  j
                  S y)Nr   IPython)get_ipython )sysmodulesr  r  	__class__r   )r
  r  s     r   _get_ipython_shell_namez%_IpythonUtils._get_ipython_shell_nameg  s+    CKK%]$$---r"   c                  <    t        t        j                               S N)boolr   r  r   r"   r   is_ipython_availablez"_IpythonUtils.is_ipython_availableq  s    55788r"   c                       y)z8Returns the HTML style markup to support custom buttons.a  
    <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <style>
      .view-vertex-resource,
      .view-vertex-resource:hover,
      .view-vertex-resource:visited {
        position: relative;
        display: inline-flex;
        flex-direction: row;
        height: 32px;
        padding: 0 12px;
          margin: 4px 18px;
        gap: 4px;
        border-radius: 4px;

        align-items: center;
        justify-content: center;
        background-color: rgb(255, 255, 255);
        color: rgb(51, 103, 214);

        font-family: Roboto,"Helvetica Neue",sans-serif;
        font-size: 13px;
        font-weight: 500;
        text-transform: uppercase;
        text-decoration: none !important;

        transition: box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1) 0s;
        box-shadow: 0px 3px 1px -2px rgba(0,0,0,0.2), 0px 2px 2px 0px rgba(0,0,0,0.14), 0px 1px 5px 0px rgba(0,0,0,0.12);
      }
      .view-vertex-resource:active {
        box-shadow: 0px 5px 5px -3px rgba(0,0,0,0.2),0px 8px 10px 1px rgba(0,0,0,0.14),0px 3px 14px 2px rgba(0,0,0,0.12);
      }
      .view-vertex-resource:active .view-vertex-ripple::before {
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        border-radius: 4px;
        pointer-events: none;

        content: '';
        background-color: rgb(51, 103, 214);
        opacity: 0.12;
      }
      .view-vertex-icon {
        font-size: 18px;
      }
    </style>
  r   r   r"   r   _get_stylesz_IpythonUtils._get_stylesu  s    1r"   markerresource_partsc                 ~    t        t        |            D ]&  }||   | k(  s|dz   t        |      k  s||dz      c S  y)z,Returns the part after the marker text part.r   r	  )rangelen)r  r  is      r   _parse_resource_namez"_IpythonUtils._parse_resource_name  sN     3~&' %		f	$Q^1D)Da!e$$% r"   texturliconNc                 "   d}|j                  |      st        d| d      ddl}dt        |j	                                }dt
        j                          d| d	| d
| d|  d}|d| d| d| dz  }ddlm} ddl	m
}  | ||             y)a&  Creates and displays the link to open the Vertex resource.

    Args:
      text: The text displayed on the clickable button.
      url: The url that the button will lead to. Only cloud console URIs are
        allowed.
      icon: The icon name on the button (from material-icons library)
    z https://console.cloud.google.comzOnly urls starting with z are allowed.r   Nzview-vertex-resource-z	
        z-
        <a class="view-vertex-resource" id="z" href="#view-z;">
          <span class="material-icons view-vertex-icon">z</span>
          <span>z</span>
        </a>
        z]
        <script>
          (function () {
            const link = document.getElementById('z');
            link.addEventListener('click', (e) => {
              if (window.google?.colab?.openUrl) {
                window.google.colab.openUrl('z8');
              } else {
                window.open('z', '_blank');
              }
              e.stopPropagation();
              e.preventDefault();
            });
          })();
        </script>
    )display)HTML)
startswithr9   uuidr   uuid4r   r  IPython.core.displayr  IPython.displayr   )	r  r  r  CLOUD_UI_URLr"  	button_idhtmlr  r   s	            r   _display_linkz_IpythonUtils._display_link  s     6L>>,'1,}MNN'DJJL(9':;I			"	"	$% &--6K~i[ Q99= ? 		D 	 3 4=+ >. /2U 3!U # D" -$DJr"   r   r   c                    t         j                         r| t         j                  v ry| j                  d      }|d   }|d   }d| d| dz   d| z   }t         j	                  d|d	       t         j                  j                  |        y)
a  Function to generate a link bound to the Vertex experiment.

    Args:
      experiment: The Vertex experiment name. Example format:
        projects/{project_id}/locations/{location}/metadataStores/default/contexts/{experiment_name}
      project: The project (alphanumeric) name.
    N/   zAhttps://console.cloud.google.com/vertex-ai/experiments/locations/z/experiments/zruns?project=zView Experimentscience)r   r  r  splitr)  add)r   r   r  locationexperiment_nameuris         r   r   z'_IpythonUtils.display_experiment_button  s     ..0<<<  %%c*Na H$R(O 	LJmO#4A
6	7'
#	$ 
  13	B ''++J7r"   r   c                     t         j                         sy| j                  d      }|d   }|d   }|d   }dd| d| z   d	| z   }t         j                  d
|d       y)zFunction to generate a link bound to the Vertex model tuning job.

    Args:
      tuning_job_resource: The Vertex tuning job name. Example format:
        projects/{project_id}/locations/{location}/tuningJobs/{tuning_job_id}
    Nr+  r   r,  r-  z?https://console.cloud.google.com/vertex-ai/generative/language/z
locations/z/tuning/tuningJob/z	?project=zView Tuning Jobr   )r   r  r/  r)  )r   r  r   r1  tuning_job_idr3  s         r   r   z)_IpythonUtils.display_model_tuning_button  s     --/(..s3NQGa H"2&M 	Jxj 2=/
B	CgY
	  
  13?r"   )open_in_new)r   r   r   __doc__setr  r   __annotations__staticmethodr  r  r  r  r   r  r   r)  r   r   r   r"   r   r   r   b  s   >$'ES)3   9 9 9 3s 3 3j 3 S	 c   1>111!)#11 1f 8C 8# 8$ 8 8: @s @t @ @r"   r   r  )5loggingtypingr   r   r   urllib.parser   r	  r   r	   r
   r   r   r   r   r   r   r   r   pagersr   r   	getLoggerloggerdictobjectr    r+   r/   r4   r<   r?   rP   rV   rX   rZ   r\   r^   rb   re   rj   rl   rp   r   r   r   r   r   r   
BaseModuler   r   r   r   r"   r   <module>rD     s  $  ' ' "      & . . %			1	2 %)tV|$ D> 
	$ %)tV|$ D> 
	8 %)tV|$ D> 
	* %)tV|$ D> 
	$ %)tV|$ D> 
	2 %)		tV|$	 D>	 
		 %)55tV|$5 D>5 
	5v %)tV|$ D> 
	B %)tV|$ D> 
	$ %)tV|$ D> 
	8 %)tV|$ D> 
	* %)tV|$ D> 
	$ %)tV|$ D> 
	, %)		tV|$	 D>	 
		 %)55tV|$5 D>5 
	5v %)tV|$ D> 
	B %)tV|$ D> 
	$ %)JJtV|$J D>J 
	J` %)tV|$ D> 
	2 %)tV|$ D> 
	0 %)tV|$ D> 
	$ %)[[tV|$[ D>[ 
	[B %)tV|$ D> 
	,Yk$$ Yx
Y;)) Yx
x@ x@r"   