
    =                        S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \R8                  " \R:                  R<                  5      \R>                   " S S\R@                  5      5       5       r!\R8                  " \R:                  RD                  \R:                  RF                  5      \R>                   " S S\!5      5       5       r$g)z'Command to upload a model in Vertex AI.    )absolute_import)division)unicode_literals)extra_types)
operations)client)apismessages)base)
exceptions)	constants)endpoint_util)flags)models_util)operations_util)region_util)yamlc                   T   ^  \ rS rSrSrU 4S jr\S 5       rS rS r	S r
S rS	rU =r$ )
UploadV1%   a.  Upload a new model.

## EXAMPLES

To upload a model under project ``example'' in region
``us-central1'', run:

  $ {command} --container-image-uri="gcr.io/example/my-image"
  --description=example-model --display-name=my-model
  --artifact-uri='gs://bucket/path' --project=example --region=us-central1
c                 <   > [         [        U ]
  " U0 UD6  S U l        g N)superr   __init__r   selfargskwargs	__class__s      lib/surface/ai/models/upload.pyr   UploadV1.__init__4   s    	(D"D3F3DM    c                 N    [         R                  " U [        R                  5        g r   )r   AddUploadModelFlagsr   PromptForOpRegionparsers    r!   ArgsUploadV1.Args8   s    	fk&C&CDr#   c                    UR                   R                  R                  5       nUR                  5       S   n[        R
                  " [        R                  US9   [        R                  " [        R                  [        R                  [        R                     5      nUR                  U l        [        R                  " UUR                  S9R!                  UUR"                  UR$                  UR&                  UR(                  UR*                  UR,                  UR.                  UR0                  UR2                  UR4                  UR6                  UR8                  UR:                  UR<                  UR>                  UR@                  URB                  URD                  URF                  URH                  U RK                  U5      URL                  URN                  URP                  URR                  S9n[T        RV                  " [X        RZ                  " XDR                  S9U[\        R^                  " UR`                  5      S9sS S S 5        $ ! , (       d  f       g = f)NlocationsIdversionregion)r   r   )explanation_specparent_modelmodel_idversion_aliaseslabelsoperations_clientopop_ref)1CONCEPTSr/   ParseAsDictr   AiplatformEndpointOverridesr   
GA_VERSIONr	   GetClientInstanceAI_PLATFORM_API_NAMEAI_PLATFORM_API_VERSIONMESSAGES_MODULEr   r   ModelsClientr   display_namedescriptionversion_descriptionartifact_uricontainer_image_uricontainer_commandcontainer_argscontainer_env_varscontainer_portscontainer_grpc_portscontainer_predict_routecontainer_health_route$container_deployment_timeout_secondscontainer_shared_memory_size_mbcontainer_startup_probe_exec&container_startup_probe_period_seconds'container_startup_probe_timeout_secondscontainer_health_probe_exec%container_health_probe_period_seconds&container_health_probe_timeout_seconds_BuildExplanationSpecr1   r2   r3   r4   r   WaitForOpMayber   OperationsClientr   ParseModelOperationname)r   r   
region_refr/   client_instance	operations         r!   RunUploadV1.Run<   s   %%++-J /F		2	2$$V
5..

(
(

+
+I,@,@
ACo &55dm%% "2244<H&&&&$$!!%%""''**))7722//99::..8899#99$?,,}}"22[[5 5= 5" : ++&77$/N/NP00@	BG
5 
5 
5s   G)I
Ic                    SnUR                   nU(       d  gUR                  5       S:X  aK  U R                  R                  U R                  R	                  UR
                  U R                  U5      S9S9nOUR                  5       S:X  aK  U R                  R                  U R                  R                  UR
                  U R                  U5      S9S9nOfUR                  5       S:X  a;  U R                  R                  U R                  R                  UR                  S9S	9nO[        R                  " S
S5      eU R                  R                  U R                  UR                  5      US9$ )aW  Generate explanation configs if anything related to XAI is specified.

Args:
  args: argparse.Namespace. All the arguments that were provided to this
    command invocation.

Returns:
  An object of GoogleCloudAiplatformV1ExplanationSpec.

Raises:
  BadArgumentException: An error if the explanation method provided can not
    be recognized.
Nintegrated-gradients	stepCountsmoothGradConfigintegratedGradientsAttributionxraixraiAttributionsampled-shapley	pathCountsampledShapleyAttribution--explanation-methodzWExplanation method must be one of `integrated-gradients`, `xrai` and `sampled-shapley`.metadata
parameters)explanation_methodlowerr   ,GoogleCloudAiplatformV1ExplanationParameters5GoogleCloudAiplatformV1IntegratedGradientsAttributionexplanation_step_count_BuildSmoothGradConfig&GoogleCloudAiplatformV1XraiAttribution0GoogleCloudAiplatformV1SampledShapleyAttributionexplanation_path_countgcloud_exceptionsBadArgumentException&GoogleCloudAiplatformV1ExplanationSpec_ReadExplanationMetadataexplanation_metadata_filer   r   rs   methods       r!   rW   UploadV1._BuildExplanationSpech   sv    J$$F||~//
--
D
D-1]]DD 77#'#>#>t#D E F E G  
6	!
--
D
D"mm55 77#'#>#>t#D 6 F E G  
,	,
--
D
D(,?? 77 @ 9 E :  22
 *+ + ==??..t/M/MN @  r#   c                    UR                   c  UR                  c  UR                  c  gUR                   b$  UR                  b  [        R                  " SS5      eU R
                  R                  UR                   UR                  S9nUR                  nU(       aR  U R
                  R                  U Vs/ s H(  nU R
                  R                  U[        X4   5      S9PM*     snS9Ul
        U$ s  snf )ac  Generate smooth grad configs from the arguments specified.

Args:
  args: argparse.Namespace. All the arguments that were provided to this
    command invocation.

Returns:
  An object of GoogleCloudAiplatformV1SmoothGradConfig.

Raises:
  BadArgumentException: An error if both smooth-grad-noise-sigma and
    smooth-grad-noise-sigma-by-feature are set.
N--smooth-grad-noise-sigmaVOnly one of smooth-grad-noise-sigma and smooth-grad-noise-sigma-by-feature can be set.
noiseSigmanoisySampleCountr[   sigmar   )smooth_grad_noise_sigmasmooth_grad_noisy_sample_count"smooth_grad_noise_sigma_by_featurer}   r~   r   'GoogleCloudAiplatformV1SmoothGradConfig(GoogleCloudAiplatformV1FeatureNoiseSigma<GoogleCloudAiplatformV1FeatureNoiseSigmaNoiseSigmaForFeaturefloatfeatureNoiseSigmar   r   smooth_grad_configsigmasks        r!   ry   UploadV1._BuildSmoothGradConfig   s    	$$,++3//7$$0//;22
% (?@ @ 	==33!@@ 	> 	B  44F
--
@
@ <BM <Ba mmKKfi 0 L 22;AM
@  * M   4/C/c                     SnU(       d  U$ [         R                  " U5      nU(       a*  [        R                  " X0R                  R
                  5      nU$ )a  Read local explanation metadata file provided.

Args:
  explanation_metadata_file: str. A local file for explanation metadata.

Returns:
  An object of GoogleCloudAiplatformV1ExplanationMetadata.

Raises:
  BadArgumentException: An error if explanation_metadata_file is None.
N)r   	load_pathmessages_utilDictToMessageWithErrorCheckr   *GoogleCloudAiplatformV1ExplanationMetadatar   r   explanation_metadatadatas       r!   r   !UploadV1._ReadExplanationMetadata   sJ      $!!>>34D*FF
HHJr#   r
   )__name__
__module____qualname____firstlineno____doc__r   staticmethodr)   r_   rW   ry   r   __static_attributes____classcell__r    s   @r!   r   r   %   s@    
 E E*BX-^#J   r#   r   c                   Z   ^  \ rS rSrSrU 4S jr\S 5       rS rS r	S r
S rS	 rS
rU =r$ )UploadV1Beta1   a*  Upload a new model.

## EXAMPLES

To upload a model under project `example` in region
`us-central1`, run:

  $ {command} --container-image-uri="gcr.io/example/my-image"
  --description=example-model --display-name=my-model
  --artifact-uri='gs://bucket/path' --project=example --region=us-central1
c                 <   > [         [        U ]
  " U0 UD6  S U l        g r   )r   r   r   r   r   s      r!   r   UploadV1Beta1.__init__   s    	-'88DMr#   c                 z    [         R                  " U [        R                  5        [         R                  " U 5        g r   )r   r%   r   r&    AddUploadModelFlagsForSimilarityr'   s    r!   r)   UploadV1Beta1.Args   s&    	fk&C&CD	**62r#   c                 6   UR                   R                  R                  5       nUR                  5       S   n[        R
                  " [        R                  US9   [        R                  " 5       R                  U l
        [        R                  " 5       R                  UUR                  UR                  UR                  UR                  UR                   UR"                  UR$                  UR&                  UR(                  UR*                  UR,                  UR.                  UR0                  UR2                  UR4                  UR6                  UR8                  UR:                  UR<                  UR>                  U RA                  U5      URB                  URD                  URF                  URH                  S9n[J        RL                  " [N        RP                  " 5       U[R        RT                  " URV                  5      S9sS S S 5        $ ! , (       d  f       g = f)Nr,   r-   )r1   r2   r3   r4   r5   ),r9   r/   r:   r;   r   r<   r   BETA_VERSIONr   rB   r   r   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   r1   r2   r3   r4   r   rX   r   rY   r   rZ   r[   )r   r   r\   r/   r^   s        r!   r_   UploadV1Beta1.Run   s   %%++-J /F		2	2&&v
7))+44dm%%'55








"
"




"
"

 
 




!
!




#
#

&
&

%
%

3
3

.
.

+
+

5
5

6
6

*
*

4
4

5
5

$
$T
*((==..5 6 i6 ++&77900@B=
7 
7 
7s   F%H


Hc                    S nUR                   nU(       d  g UR                  5       S:X  aL  U R                  R                  U R                  R	                  UR
                  U R                  U5      S9S9nGO4UR                  5       S:X  aL  U R                  R                  U R                  R                  UR
                  U R                  U5      S9S9nGOUR                  5       S:X  a<  U R                  R                  U R                  R                  UR                  S9S9nGOUR                  5       S	:X  GaX  UR                  (       aw  U R                  R                  U R                  R                  U R                  R                  UR                  S
9UR                  U R                  UR                  5      S9S9nOU R                  R                  U R                  R                  U R                  R                  UR                  S
9UR                  U R                  R!                  U R                  R                   R#                  UR$                  5      U R                  R                   R'                  UR(                  5      S9S9S9nO[*        R,                  " SS5      eU R                  R/                  U R1                  UR2                  5      US9$ )Nrb   rc   rf   rh   ri   rk   rl   rn   examples)uris)	gcsSourceneighborCountnearestNeighborSearchConfig)r   )modalityquery)r   r   presetsrp   zcExplanation method must be one of `integrated-gradients`, `xrai`, `sampled-shapley` and `examples`.rq   )rt   ru   r   1GoogleCloudAiplatformV1beta1ExplanationParameters:GoogleCloudAiplatformV1beta1IntegratedGradientsAttributionrx   ry   +GoogleCloudAiplatformV1beta1XraiAttribution5GoogleCloudAiplatformV1beta1SampledShapleyAttributionr|   /explanation_nearest_neighbor_search_config_file$GoogleCloudAiplatformV1beta1Examples%GoogleCloudAiplatformV1beta1GcsSourcer   explanation_neighbor_count_ReadIndexMetadata#GoogleCloudAiplatformV1beta1PresetsModalityValueValuesEnumexplanation_modalityQueryValueValuesEnumexplanation_queryr}   r~   +GoogleCloudAiplatformV1beta1ExplanationSpecr   r   r   s       r!   rW   #UploadV1Beta1._BuildExplanationSpec  s   J$$F||~//
--
I
I-1]]II 77#'#>#>t#D J F J G  
6	!
--
I
I"mm:: 77#'#>#>t#D ; F J G  
,	,
--
I
I(,DD 77 E 9 J : 
 
:	%		=	=MMKKKK"mm::		:J"&"A"A040G0GLL1N	 L O L P 	 MMKKKK"mm::		:J"&"A"A MMMM!%<<001J1JK"mmOO--d.D.DE N G	 L 	H L 
I 	 22
 67 7 ==DD..t/M/MN E  r#   c                    UR                   c  UR                  c  UR                  c  g UR                   b$  UR                  b  [        R                  " SS5      eU R
                  R                  UR                   UR                  S9nUR                  nU(       aR  U R
                  R                  U Vs/ s H(  nU R
                  R                  U[        X4   5      S9PM*     snS9Ul
        U$ s  snf )Nr   r   r   r   r   )r   r   r   r}   r~   r   ,GoogleCloudAiplatformV1beta1SmoothGradConfig-GoogleCloudAiplatformV1beta1FeatureNoiseSigmaAGoogleCloudAiplatformV1beta1FeatureNoiseSigmaNoiseSigmaForFeaturer   r   r   s        r!   ry   $UploadV1Beta1._BuildSmoothGradConfigJ  s   $$,++3//7$$0//;22
% (?@ @ 	BB33!@@ 	C 	B  44F
--88 <BE <Ba mmOOfi 0 P 22;AE8  * Er   c                     S nU(       d  U$ [         R                  " U5      nU(       a*  [        R                  " X0R                  R
                  5      nU$ r   )r   r   r   r   r   /GoogleCloudAiplatformV1beta1ExplanationMetadatar   s       r!   r   &UploadV1Beta1._ReadExplanationMetadatac  sH    $!!>>34D*FF
MMOr#   c                     Sn[         R                  " U5      nU(       a%  [        R                  " U[        R
                  5      nU$ )zParse json metadata file.N)r   r   r   r   r   	JsonValue)r   index_metadata_fileindex_metadatar   s       r!   r    UploadV1Beta1._ReadIndexMetadatan  s:    N>>-.D$@@
%%'nr#   r
   )r   r   r   r   r   r   r   r)   r_   rW   ry   r   r   r   r   r   s   @r!   r   r      sB    
 3 3$BL7r2	  r#   r   N)%r   
__future__r   r   r   apitools.base.pyr   googlecloudsdk.api_lib.air    googlecloudsdk.api_lib.ai.modelsr   googlecloudsdk.api_lib.utilr	   r   r   googlecloudsdk.callioper   r   r}   googlecloudsdk.command_lib.air   r   r   r   r   r   googlecloudsdk.corer   ReleaseTracksReleaseTrackGAUniverseCompatibleCreateCommandr   ALPHABETAr    r#   r!   <module>r      s    . &  ' ( 0 3 , A ( C 3 7 / 5 9 5 $ D%%(()i t!! i   *i X D%%++T->->-C-CDaH a  Ear#   