
    W                         S r SSKJr  SSKJr  SSKJ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.    )absolute_import)division)unicode_literalsN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   R   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}].)r2   r3   r4   r   statusPrintr5   r6   r   	Pluralizer   r7   )r   r   r9   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.r6   r   r   
deprecatedNz	{0} ({1})r   z{0}: {1})r   listkeysr   r   getattrr5   r   stater   r6   append)r#   r$   r%   r   choice_resourcer@   choice_names          r*   r   r   n   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)r5   ).0ns     r*   	<genexpr>*_PromptWithScopeChoices.<locals>.<genexpr>   s&      E'C! (..q11'Cs    z or z{0}choose {1}:)optionsr:   r   )r5   r   r>   r   r7   r   rB   prefixr6   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)r2   r3   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*   rY   rY      s<    ..6688>>""$$	r,   c                      [         R                  R                  R                  R	                  5       (       a#  [
        R                  " 5       R                  5       $ g r[   )r	   r\   r]   r^   r_   r`   ra   Zonerc   r,   r*   rW   rW      s<    ..6688>>  ""	r,   )__doc__
__future__r   r   r   r   "googlecloudsdk.command_lib.computer   r2   googlecloudsdk.corer   r	   googlecloudsdk.core.consoler
   googlecloudsdk.core.credentialsr   r`   googlecloudsdk.core.utilr   r+   r   r   r   r   r   rY   rW   rc   r,   r*   <module>rm      sQ     + &  '  E # * 2 8 )/*d=*&4$r,   