
    	                     h    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
 jr
g	)z9Cloud resource filter and format key reference utilities.    )absolute_import)division)unicode_literals)resource_filter)resource_keys_expr)resource_lex)resource_printerNc                    [        5       nU(       a  U(       a  [        S5      eO'U(       a   [        R                  " XS9nUR                  nU(       aO  UR                  R                  5        H1  nUR                  [        R                  " UR                  SS95        M3     U (       ad  [        R                  " X[        R                  " 5       S9nUR                  S5       H'  nUR                  [        R                  " USS95        M)     U$ )a  Returns the set of key names referenced by filter / format expressions.

NOTICE: OnePlatform is forgiving on filter and format key reference name
spelling.  Use resource_property.GetMatchingIndex() when verifying against
resource dictionaries to handle camel and snake case spellings.

Args:
  filter_string: The resource filter expression string.
  format_string: The resource format expression string.
  printer: The parsed format_string.
  defaults: The resource format and filter default projection.

Raises:
  ValueError: If both format_string and printer are specified.

Returns:
  The set of key names referenced by filter / format expressions.
z.Cannot specify both format_string and printer.)defaultsT)omit_indices)r   backendN)set
ValueErrorr	   Printercolumn_attributesColumnsaddr   
GetKeyNamekeyr   Compiler   BackendEvaluate)filter_stringformat_stringprinterr   keyscolexprr   s           6lib/googlecloudsdk/core/resource/resource_reference.pyGetReferencedKeyNamesr       s    ( 
$ GHH &&}HG((H((002
hh|&&swwTBC 3 ""2D2L2L2NPD}}T"
hh|&&s>? # 
+    )NNNN)__doc__
__future__r   r   r   googlecloudsdk.core.resourcer   r   r   r	   r     r!   r   <module>r&      s,     @ &  ' 8 ; 5 9 DH(r!   