
                             S r SSK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	 rS
 rS rS rS rS rS rS rg)z$Console Prompter for compute scopes.    Nscope)log)
properties)
console_io)gce)textc                 v   Un[        U5      S:X  a  US   nU(       a"  [        U5      nUb  [        XXV5      (       a  XV4$ U(       d  gU" [        U[        R
                  " S5      S9U5      n[        U5      u  p[        U	5      S:X  a   U	S   S   n
U	S   S   n[        XU
U5        X4$ [        XXxU	5      u  pX4$ )a  Prompt user to specify a scope.

Args:
  resource_name: str, human readable name of the resource.
  underspecified_names: list(str), names which lack scope context.
  scopes: list(compute_scope.ScopeEnum), scopes to query for.
  default_scope: compute_scope.ScopeEnum, force this scope to be used.
  scope_lister: func(scopes, underspecified_names)->[str->[str]], callback to
      provide possible values for each scope.
Returns:
  tuple of chosen scope_enum and scope value.
   r   NNnamekey)	len_GetSuggestedScopeValue_PromptDidYouMeanScopesortedoperator
attrgetter_FormatScopeValueChoices_PromptSuggestedScopeChoice_PromptWithScopeChoices)resource_nameunderspecified_namesscopesdefault_scopescope_listerimplicit_scopesuggested_valuescope_value_choiceschoice_nameschoice_mappingsuggested_resource_scope_enumsuggested_resourceresource_scope_enumscope_values                 8lib/googlecloudsdk/command_lib/compute/scope_prompter.pyPromptForScoper(      s     !.[AAYN-n=O"	 .
A 
A..	$V,,V45
 "::M!N,A$21$5a$8!'*1- = 24 )<<%<+>&" 
	))    c                    U[         R                  R                  :X  a-  SR                  UR                  U SR                  U5      5      nO-SR                  UR                  UU SR                  U5      5      n[        R                  " USSS9$ )z5Prompts "did you mean <scope>".  Returns str or None.z!Did you mean [{0}] for {1}: [{2}], z%Did you mean {0} [{1}] for {2}: [{3}]T)prompt_stringdefaultthrow_if_unattended)compute_scope	ScopeEnumGLOBALformat	flag_namejoinr   PromptContinue)r   r   
scope_enumr$   messages        r'   r   r   O   s     =**111188mTYY7K-LNG 6<<0tyy!568G 
	"	"$7;
= =r)   c                    U[         R                  R                  :X  ah  [        R                  R                  SR                  UR                  [        R                  " [        U5      U 5      SR                  U5      5      5        g [        R                  R                  SR                  UR                  U[        R                  " [        U5      U 5      SR                  U5      5      5        g )Nz/No scope specified. Using [{0}] for {1}: [{2}].r+   z1No {0} specified. Using {0} [{1}] for {2}: [{3}].)r/   r0   r1   r   statusPrintr2   r3   r	   	Pluralizer   r4   )r   r   r6   r$   s       r'   r   r   ]   s    =**111JJFMMs/0-@		&') *
 JJHOO0s/0-@		&') *r)   c                 2   / / p![        [        U R                  5       5      [        R                  " S5      S9 H  n[        X   [        R                  " S5      S9 H  n[        USS5      nUb'  SR                  UR                  UR                  5      nOUR                  n[        U 5      S:  a0  U(       a  SR                  UR                  U5      nOUR                  nUR                  X4R                  45        UR                  U5        M     M     X4$ )	zFFormats scope value choices for prompting and adds deprecation states.r3   r   r   
deprecatedNz	{0} ({1})r   z{0}: {1})r   listkeysr   r   getattrr2   r   stater   r3   append)r    r!   r"   r   choice_resourcer=   choice_names          r'   r   r   k   s    !#Rd.3356"--k:<e!"5"<&.&9&9&&AC?L$?j		!((  *"2"24 &**	 	!A	%"))%//;G++U$8$89:+&!C<( 
	%%r)   c           	         SR                  [        R                  " [        U5      U 5      SR	                  S [        U5       5       5      5      nSR	                  [        UR                  5        Vs/ s H  ofR                  UR                  -   PM     sn5      5      n[        R                  " USR                  XW5      S9nUc  gXH   $ s  snf )z+Queries user to choose scope and its value.zFor the following {0}:
 {1}
z
 c              3   D   #    U  H  nS R                  U5      v   M     g7f)z- [{0}]N)r2   ).0ns     r'   	<genexpr>*_PromptWithScopeChoices.<locals>.<genexpr>   s&      E'C! (..q11'Cs    z or z{0}choose {1}:)optionsr7   r   )r2   r	   r;   r   r4   r   r?   prefixr3   r   PromptChoice)	r   r   r    r!   r"   titlesflagsidxs	            r'   r   r      s     ,F4>>#&:";]K:: E'-.B'CE EF  ++.A.F.F.HI.Hhh$.HIJL% 	$4$;$;E$I	K#[ Js   2"Cc                     U [         R                  R                  :X  a
  [        5       $ U [         R                  R                  :X  a
  [        5       $ g)NT)r/   r0   ZONE_GetGCEZoneREGION_GetGCERegionr   s    r'   r   r      s=    
m%%***=
m%%,,,?	r)   c                      [         R                  R                  R                  R	                  5       (       a#  [
        R                  " 5       R                  5       $ g N)r   VALUEScorecheck_gce_metadataGetBoolc_gceMetadataRegion r)   r'   rV   rV      s<    ..6688>>""$$	r)   c                      [         R                  R                  R                  R	                  5       (       a#  [
        R                  " 5       R                  5       $ g rX   )r   rY   rZ   r[   r\   r]   r^   Zoner`   r)   r'   rT   rT      s<    ..6688>>  ""	r)   )__doc__r   "googlecloudsdk.command_lib.computer   r/   googlecloudsdk.corer   r   googlecloudsdk.core.consoler   googlecloudsdk.core.credentialsr   r]   googlecloudsdk.core.utilr	   r(   r   r   r   r   r   rV   rT   r`   r)   r'   <module>ri      sJ     +  E # * 2 8 )/*d=*&4$r)   