
    m
                         d Z ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
 d	Zd
ZdZ G d dej                        Z G d de      Z G d de      Z G d de      Zy)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                       e Zd ZdZy)Errorz%Base class for errors in this module.N__name__
__module____qualname____doc__     5lib/googlecloudsdk/command_lib/util/apis/yaml_data.pyr
   r
       s    -r   r
   c                       e Zd ZdZy)InvalidResourcePathErrorzERaised when a resources.yaml is not found by the given resource_path.Nr   r   r   r   r   r   $   s    Mr   r   c                       e Zd ZdZd Zd Zy)YAMLDataz>A general data holder object for data parsed from a YAML file.c                     || _         y N_data)selfdatas     r   __init__zYAMLData.__init__+   s	    DJr   c                     | j                   S r   r   r   s    r   GetDatazYAMLData.GetData.   s    ::r   N)r   r   r   r   r   r    r   r   r   r   r   (   s    Fr   r   c                   &    e Zd ZdZed        Zd Zy)ResourceYAMLDataz@A data holder object for data parsed from a resources.yaml file.c                 >   t        j                  t        |      }|st        dj	                  |            |j                  d      }|j                  d      }t        |z   dz   }t        j                  |t              }t        j                  |      |   } | |      S )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   FromPathzResourceYAMLData.FromPath5   s     II,m<E$
(
/
/
>@ @;;~.LKK0M %|3c9H!--h8KLMIIm,];M}r   c                 :    | j                   j                  dd       S )Nname)r   getr   s    r   
GetArgNamezResourceYAMLData.GetArgNameQ   s    ::>>&$''r   N)r   r   r   r   classmethodr6   r:   r   r   r   r"   r"   2   s    H 6(r   r"   )r   
__future__r   r   r   r'   googlecloudsdk.corer   r   googlecloudsdk.core.utilr   r.   r,   r)   r
   r   objectr   r"   r   r   r   <module>r@      si    % &  ' 	 * $ 2& 5 K .J .Nu Nv  (x  (r   