
    L                     $   S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKrSSKJ	r	  SSK
Jr  SSKJr  SSKr " S	 S
\	R                  5      r " S S\	R                  5      r " S S\	R                  5      r " S S\R&                  5      rS rS rg)z8Helpers for parsing Binary Authorization resource files.    )absolute_import)division)unicode_literalsN)
exceptions)yaml)filesc                       \ rS rSrSrSrg)ResourceFileReadError    z,Indicates a resource file could not be read. N__name__
__module____qualname____firstlineno____doc____static_attributes__r       <lib/googlecloudsdk/command_lib/container/binauthz/parsing.pyr
   r
       s    4r   r
   c                       \ rS rSrSrSrg)ResourceFileTypeError$   z5Indicates a resource file was of an unsupported type.r   Nr   r   r   r   r   r   $   s    =r   r   c                       \ rS rSrSrSrg)ResourceFileParseError(   z.Indicates a resource file could not be parsed.r   Nr   r   r   r   r   r   (   s    6r   r   c                        \ rS rSrSrSrSrSrg)ResourceFileType,   r         r   N)r   r   r   r   UNKNOWNJSONYAMLr   r   r   r   r   r   ,   s    '	
$	
$r   r   c                     [         R                  R                  U 5      u  pUS:X  a  [        R                  $ US;   a  [        R
                  $ [        R                  $ )Nz.json)z.yamlz.yml)ospathsplitextr   r"   r#   r!   )	file_name_exts      r   GetResourceFileTyper+   2   sL    77I&&!G^   
   ###r   c                     [         R                  " U 5      n[        U 5      nU[        R                  :X  a   [        R                  " U5      $ U[        R                  :X  a   [        R                  " U5      $ [#        SR%                  U 5      5      e! [         R                   a$  n[        [        R
                  " U5      5      eSnAff = f! [         a'  n[        S[        R
                  " U5      -   5      eSnAff = f! [        R                    a'  n[        S[        R
                  " U5      -   5      eSnAff = f)a~  Load an input resource file in either JSON or YAML format.

Args:
  input_fname: The name of the file to convert to parse.

Returns:
  The Python object resulting from the decode.

Raises:
  ResourceFileReadError: An error occurred attempting to read the input file.
  ResourceFileTypeError: The input file was an unsupported type.
  ResourceFileParseError: A parse error occurred.
NzError in resource file JSON: zError in resource file YAML: z(Input file [{}] not of type YAML or JSON)r   ReadFileContentsErrorr
   six	text_typer+   r   r"   jsonloads
ValueErrorr   r#   r   loadYAMLParseErrorr   format)input_fname
input_texte	file_types       r   LoadResourceFiler;   <   s   2''4J "+.)"'''5ZZ
## $)))5YYz""
  299+FH H# 
 2
a 0
112  5"#B#&==#3$4 5 55  5"#B#&==#3$4 5 55sF   B C #D C'CC
C?"C::C?D="D88D=)r   
__future__r   r   r   r1   r%   enum-googlecloudsdk.command_lib.container.binauthzr   googlecloudsdk.corer   googlecloudsdk.core.utilr   r/   r.   r
   r   r   Enumr   r+   r;   r   r   r   <module>rB      sy     ? &  '  	  D $ * 
5J,, 5>J,, >7Z-- 7tyy $"Hr   