
    m
                         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	rS
rSr " S S\R                  5      r " S S\5      r " S S\5      r " S S\5      rg)zHelpers for loading YAML data.    )absolute_import)division)unicode_literalsN)
exceptions)yaml)pkg_resourceszresources.yamlzgooglecloudsdk.command_lib.z/^(?P<surface_name>\S+)\.(?P<resource_name>\w+)$c                       \ rS rSrSrSrg)Error    z%Base class for errors in this module. N__name__
__module____qualname____firstlineno____doc____static_attributes__r       5lib/googlecloudsdk/command_lib/util/apis/yaml_data.pyr
   r
       s    -r   r
   c                       \ rS rSrSrSrg)InvalidResourcePathError$   zERaised when a resources.yaml is not found by the given resource_path.r   Nr   r   r   r   r   r   $   s    Mr   r   c                   $    \ rS rSrSrS rS rSrg)YAMLData(   z>A general data holder object for data parsed from a YAML file.c                     Xl         g N_data)selfdatas     r   __init__YAMLData.__init__+   s    Jr   c                     U R                   $ r   r   r    s    r   GetDataYAMLData.GetData.   s    ::r   r   N)r   r   r   r   r   r"   r&   r   r   r   r   r   r   (   s    Fr   r   c                   .    \ rS rSrSr\S 5       rS rSrg)ResourceYAMLData2   z@A data holder object for data parsed from a resources.yaml file.c                 N   [         R                  " [        U5      nU(       d  [        SR	                  U5      5      eUR                  S5      nUR                  S5      n[        U-   S-   n[        R                  " U[        5      n[        R                  " U5      U   nU " U5      $ )a  Constructs a ResourceYAMLData from a standard resource_path.

Args:
  resource_path: string, the dotted path of the resources.yaml file, e.g.
    iot.device or compute.instance.

Returns:
  A ResourceYAMLData object.

Raises:
  InvalidResourcePathError: invalid resource_path string.
zInvalid resource_path: [{}].surface_nameresource_name.)research_RESOURCE_PATH_PATTERNr   formatgroup_RESOURCE_FILE_PREFIXr   GetResource_RESOURCE_FILE_NAMEr   load)clsresource_pathmatchr,   r-   dir_nameresource_fileresource_datas           r   FromPathResourceYAMLData.FromPath5   s     II,m<E$
(
/
/
>@ @;;~.LKK0M %|3c9H!--h8KLMIIm,];M}r   c                 :    U R                   R                  SS 5      $ )Nname)r   getr%   s    r   
GetArgNameResourceYAMLData.GetArgNameQ   s    ::>>&$''r   r   N)	r   r   r   r   r   classmethodr>   rC   r   r   r   r   r)   r)   2   s    H 6(r   r)   )r   
__future__r   r   r   r/   googlecloudsdk.corer   r   googlecloudsdk.core.utilr   r6   r4   r1   r
   r   objectr   r)   r   r   r   <module>rJ      si    % &  ' 	 * $ 2& 5 K .J .Nu Nv  (x  (r   