
    	                         S 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.    N)
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)ResourceYAMLData/   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.FromPath2   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.GetArgNameN   s    ::>>&$''r   r	   N)	r   r   r   r   r   classmethodr;   r@   r   r	   r   r   r&   r&   /   s    H 6(r   r&   )r   r,   googlecloudsdk.corer   r   googlecloudsdk.core.utilr   r3   r1   r.   r   r   objectr   r&   r	   r   r   <module>rF      sb    % 
 * $ 2& 5 K .J .Nu Nv  (x  (r   