
    	                     f    d 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
Z
y	)z9Cloud resource filter and format key reference utilities.    )absolute_import)division)unicode_literals)resource_filter)resource_keys_expr)resource_lex)resource_printerNc                    t               }|r|r0t        d      |r#t        j                  ||      }|j                  }|rO|j                  j                         D ]2  }|j                  t        j                  |j                  d             4 | rft        j                  | |t        j                               }|j                  d      D ](  }|j                  t        j                  |d             * |S )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&&}x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!   