o
    	                     @   sh   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
dZ
d	S )z9Cloud resource filter and format key reference utilities.    )absolute_import)division)unicode_literals)resource_filter)resource_keys_expr)resource_lex)resource_printerNc                 C   s   t  }|r|rtdn|rtj||d}|j}|r-|j D ]}|tj|j	dd q| rKt
j| |t d}|dD ]}|tj|dd q>|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    r   L/tmp/google-cloud-sdk/lib/googlecloudsdk/core/resource/resource_reference.pyGetReferencedKeyNames   s$   
r   )NNNN)__doc__
__future__r   r   r   googlecloudsdk.core.resourcer   r   r   r   r   r   r   r   r   <module>   s   