
    :                         d dl mZ d dlmZ d dl d dl d dlmZmZm	Z	 d dl
mZmZmZ 	 g dZ G d de      Z G d	 d
e      Z G d de      Zy)    )absolute_import)MarkedYAMLError)*)ScannerRoundTripScannerScannerError)utf8nprintnprintf)ParserRoundTripParserParserErrorc                       e Zd Zy)r   N)__name__
__module____qualname__     %lib/third_party/ruamel/yaml/parser.pyr   r   [   s    r   r   c                      e Zd ZdddZd Zd Zd Zed        Zed        Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd(dZd Zd Zd Zd Zd Zd Zd Zd)dZd Z d  Z!d! Z"d" Z#d)d#Z$d$ Z%d% Z&d*d'Z'y&)+r   !ztag:yaml.org,2002:)r   !!c                     || _         | j                   (t        | j                   dd       | | j                   _        | j                          y )N_parser)loadergetattrr   reset_parser)selfr   s     r   __init__zParser.__init__e   s=    ;;"wt{{It'L'T"&DKKr   c                 l    d | _         d | _        i | _        g | _        g | _        | j
                  | _        y N)current_eventyaml_versiontag_handlesstatesmarksparse_stream_startstater   s    r   r   zParser.reset_parserl   s7     " 
,,
r   c                 $    | j                          y r!   )r   r)   s    r   disposezParser.disposev   s    r   c                     t        | j                  d      r| j                  j                  S | j                  j                  S Ntyp)hasattrr   scanner_scannerr)   s    r   r0   zParser.scannerz   s2     4;;&;;&&&{{###r   c                     t        | j                  d      r| j                  j                  S | j                  j                  S r-   )r/   r   resolver	_resolverr)   s    r   r3   zParser.resolver   s2     4;;&;;'''{{$$$r   c                     | j                   !| j                  r| j                         | _         | j                   "|sy|D ]  }t        | j                   |      s y y)NTF)r"   r(   
isinstance)r   choiceschoices      r   check_eventzParser.check_event   sY     %zz%)ZZ\")!d00&9 " r   c                 t    | j                   !| j                  r| j                         | _         | j                   S r!   r"   r(   r)   s    r   
peek_eventzParser.peek_event   s1     %zz%)ZZ\"!!!r   c                     | j                   !| j                  r| j                         | _         | j                   }d | _         |S r!   r;   )r   values     r   	get_eventzParser.get_event   s=     %zz%)ZZ\"""!r   c                    | j                   j                         }|j                  | j                   j                                t	        |j
                  |j                  |j                        }| j                  | _	        |S )N)encoding)
r0   	get_tokenmove_comment
peek_tokenStreamStartEvent
start_markend_markrA   parse_implicit_document_startr(   r   tokenevents      r   r'   zParser.parse_stream_start   sa     &&(4<<2245 !1!15>>ENN[ 77
r   c                 r   | j                   j                  t        t        t              s| j
                  | _        | j                   j                         }|j                  x}}t        ||d      }| j                  j                  | j                         | j                  | _        |S | j                         S )NFexplicit)r0   check_tokenDirectiveTokenDocumentStartTokenStreamEndTokenDEFAULT_TAGSr$   rD   rF   DocumentStartEventr%   appendparse_document_endparse_block_noder(   parse_document_start)r   rJ   rF   rG   rK   s        r   rH   z$Parser.parse_implicit_document_start   s     ||''8JN[#00DLL++-E$)$4$44J&z8eLE KKt667..DJL ,,..r   c                     | j                   j                  t              r:| j                   j                          | j                   j                  t              r:| j                   j                  t              s| j                   j                         }|j                  }| j                         \  }}| j                   j                  t              sUt        d d d| j                   j                         j                  z  | j                   j                         j                        | j                   j                         }|j                  }t        ||d||      }| j                  j                  | j                         | j                   | _        |S | j                   j                         }t%        |j                  |j                  |j&                        }| j                  rJ | j(                  rJ d | _        |S )Nz)expected '<document start>', but found %rT)rN   versiontagscomment)r0   rO   DocumentEndTokenrB   rR   rD   rF   process_directivesrQ   r   idrG   rT   r%   rU   rV   parse_document_contentr(   StreamEndEventr]   r&   )r   rJ   rF   rZ   r[   rG   rK   s          r   rX   zParser.parse_document_start   s    ll&&'78LL""$ ll&&'78 ||''7LL++-E))J 335MGT<<++,>?!?$,,BYBYB[B^B^^LL++-88	  LL**,E~~H&HtW4E KKt66744DJ  LL**,E"5#3#3U^^U]][E{{"?zz!>DJr   c                 ~   | j                   j                         }|j                  x}}d}| j                   j                  t              r(| j                   j                         }|j                  }d}t        |||      }| j                  j                  dk(  r| j                  | _        |S | j                  | _        |S )NFTrM      re   )r0   rD   rF   rO   r^   rB   rG   DocumentEndEventr3   processing_versionrX   r(   rH   )r   rJ   rF   rG   rN   rK   s         r   rV   zParser.parse_document_end   s     '') % 0 00
X<<##$45LL**,E~~HH XI ==++v522DJ  ;;DJr   c                 &   | j                   j                  t        t        t        t
              rT| j                  | j                   j                         j                        }| j                  j                         | _        |S | j                         S r!   )r0   rO   rP   rQ   r^   rR   process_empty_scalarrD   rF   r%   popr(   rW   )r   rK   s     r   ra   zParser.parse_document_content   sj    <<##.0@.
 --dll.E.E.G.R.RSE*DJL((**r   c                    d | _         i | _        | j                  j                  t              r| j                  j                         }|j                  dk(  rb| j                   t        d d d|j                        |j                  \  }}|dk7  rt        d d d|j                        |j                  | _         n_|j                  dk(  rP|j                  \  }}|| j                  v r$t        d d dt        |      z  |j                        || j                  |<   | j                  j                  t              rt        | j                        r'| j                   | j                  j                         f}n| j                   d f}| j                  D ]-  }|| j                  vs| j                  |   | j                  |<   / |S )NYAMLzfound duplicate YAML directivere   z:found incompatible YAML document (version 1.* is required)TAGzduplicate tag handle %r)r#   r$   r0   rO   rP   rB   namer   rF   r>   r	   boolcopyrS   )r   rJ   majorminorhandleprefixr>   keys           r   r_   zParser.process_directives  s    ll&&~6LL**,EzzW$$$0%d$DeFVFV   %{{uA:%W((	  %*KK!v%!&T---%d$=V$LeN^N^  ,2  (- ll&&~6.   !%%t'7'7'<'<'>>E%%t+E$$C$***(,(9(9#(>  % % r   c                 &    | j                  d      S )NT)block
parse_noder)   s    r   rW   zParser.parse_block_node?  s    T**r   c                 "    | j                         S r!   rx   r)   s    r   parse_flow_nodezParser.parse_flow_nodeC  s      r   c                 (    | j                  dd      S )NT)rw   indentless_sequencerx   r)   s    r   'parse_block_node_or_indentless_sequencez.Parser.parse_block_node_or_indentless_sequenceG  s    TtDDr   c                 &    | j                   |   |z   S r!   )r$   r   rs   suffixs      r   transform_tagzParser.transform_tagK  s    '&00r   c           
      ,   | j                   j                  t              rf| j                   j                         }t	        |j
                  |j                  |j                        }| j                  j                         | _
        |S d }d }d x}x}}	| j                   j                  t              r| j                   j                         }|j                  }|j                  }|j
                  }| j                   j                  t              r| j                   j                         }|j                  }	|j                  }|j
                  }n| j                   j                  t              r| j                   j                         }|j                  x}}	|j                  }|j
                  }| j                   j                  t              r@| j                   j                         }|j                  x}}	|j                  }|j
                  }|D|\  }
}|
;|
| j                  vrt        d|dt        |
      z  |	      | j!                  |
|      }n|}|&| j                   j#                         j                  x}}d }|d u xs |dk(  }|r| j                   j                  t$              rd }| j                   j#                         }|j&                  r/|j&                  d   r |j&                  d   g g}d |j&                  d<   | j                   j#                         j                  }t)        |||||d|      }| j*                  | _
        |S | j                   j                  t,              r| j                   j                         }|j                  }|j.                  r||dk(  rd}n|d}nd	}t1        ||||j
                  |||j2                  |j&                  
      }| j                  j                         | _
        |S | j                   j                  t4              rU| j                   j#                         }|j                  }t)        |||||d|j&                        }| j6                  | _
        |S | j                   j                  t8              rU| j                   j#                         }|j                  }t;        |||||d|j&                        }| j<                  | _
        |S |r| j                   j                  t>              r| j                   j#                         j                  }| j                   j#                         }|j&                  }||d   |jA                         }t)        |||||d|      }| jB                  | _
        |S |r| j                   j                  tD              rm| j                   j#                         j                  }| j                   j#                         j&                  }t;        |||||d|      }| jF                  | _
        |S ||3t1        |||dfd||      }| j                  j                         | _
        |S |rd}nd}| j                   j#                         }t        d|z  |d|jH                  z  |j                        )Nzwhile parsing a nodezfound undefined tag handle %rr   r   F)
flow_styler]   TF)FTFF)styler]   Tre    rw   flowzwhile parsing a %s nodez'expected the node content, but found %r)%r0   rO   
AliasTokenrB   
AliasEventr>   rF   rG   r%   rj   r(   AnchorTokenTagTokenr$   r   r	   r   rD   BlockEntryTokenr]   SequenceStartEventparse_indentless_sequence_entryScalarTokenplainScalarEventr   FlowSequenceStartTokenparse_flow_sequence_first_entryFlowMappingStartTokenMappingStartEventparse_flow_mapping_first_keyBlockSequenceStartTokensplit_comment parse_block_sequence_first_entryBlockMappingStartTokenparse_block_mapping_first_keyr`   )r   rw   r}   rJ   rK   anchortagrF   rG   tag_markrs   r   implicitr]   ptnodes                   r   ry   zParser.parse_nodeO  s   <<##J/LL**,Eu{{E,<,<ennME*DJL+//
/X<<##K0LL**,E))J~~H[[F||''1..0 ++ >>kk\\%%h/LL**,E$)$4$44J~~H++C||''4..0(-(8(88
X >>? NFF!!1!11%."7$v,F 	  ((8 $(LL$;$;$=$H$HHJ$;-#+4<<#;#;O#LG((*Bzzbjjm::a="- $

1||..099H&Xz8W^E ==DJL<<##K0LL**,E~~Ht(()kk	E *DJB A \\%%&<=((*B{{H&

E ==DJh g \\%%&;<((*B{{H%

E ::DJN M t||//0GH||..0;;H ((*BjjG'!*"4**,&Xz8W^E >>DJ2 1 t||//0FG||..0;;Hll--/77G%Xz8W^E ;;DJ$ # 3?  h->JPXYE*DJ  LL++-E)D09EHHD  	 r   c                     | j                   j                         }| j                  j                  |j                         | j                         S r!   )r0   rB   r&   rU   rF   parse_block_sequence_entryr   rJ   s     r   r   z'Parser.parse_block_sequence_first_entry  s=    &&( 	

%**+..00r   c                    | j                   j                  t              r| j                   j                         }|j	                  | j                   j                                | j                   j                  t        t              s5| j                  j                  | j                         | j                         S | j                  | _        | j                  |j                        S | j                   j                  t              sL| j                   j                         }t        d| j                  d   d|j                   z  |j"                        | j                   j                         }t%        |j"                  |j                  |j&                        }| j                  j)                         | _        | j                  j)                          |S )Nz while parsing a block collection"expected <block end>, but found %rr\   )r0   rO   r   rB   rC   rD   BlockEndTokenr%   rU   r   rW   r(   ri   rG   r   r&   r`   rF   SequenceEndEventr]   rj   rI   s      r   r   z!Parser.parse_block_sequence_entry  sG   <<##O4LL**,Et||6689<<++O]K""4#B#BC,,..!<<
00@@||''6LL++-E2

24uxx?  	  &&( !1!15>>5==Y[[__&


r   c                    | j                   j                  t              r| j                   j                         }|j	                  | j                   j                                | j                   j                  t        t        t        t              s5| j                  j                  | j                         | j                         S | j                  | _        | j                  |j                        S | j                   j                         }t!        |j"                  |j"                  |j$                        }| j                  j'                         | _        |S )Nr\   )r0   rO   r   rB   rC   rD   KeyToken
ValueTokenr   r%   rU   r   rW   r(   ri   rG   r   rF   r]   rj   rI   s      r   r   z&Parser.parse_indentless_sequence_entry  s    <<##O4LL**,Et||6689<<++:} ""4#G#GH,,..!AA
00@@'') !1!153C3CU]][[[__&
r   c                     | j                   j                         }| j                  j                  |j                         | j                         S r!   )r0   rB   r&   rU   rF   parse_block_mapping_keyr   s     r   r   z$Parser.parse_block_mapping_first_key+  s;    &&(

%**+++--r   c                    | j                   j                  t              r| j                   j                         }|j	                  | j                   j                                | j                   j                  t        t        t              s5| j                  j                  | j                         | j                         S | j                  | _        | j                  |j                        S | j                  j                   dkD  rc| j                   j                  t              rD| j                  | _        | j                  | j                   j                         j"                        S | j                   j                  t              sL| j                   j                         }t%        d| j&                  d   d|j(                  z  |j"                        | j                   j                         }|j	                  | j                   j                                t+        |j"                  |j                  |j,                        }| j                  j/                         | _        | j&                  j/                          |S )Nrd   zwhile parsing a block mappingr   r   r\   )r0   rO   r   rB   rC   rD   r   r   r%   rU   parse_block_mapping_valuer~   r(   ri   rG   r3   rg   rF   r   r&   r`   MappingEndEventr]   rj   rI   s      r   r   zParser.parse_block_mapping_key1  s   <<##H-LL**,Et||6689<<++Hj-P""4#A#ABCCEE!;;
00@@==++f49Q9QR\9]77DJ,,T\\-D-D-F-Q-QRR||''6LL++-E/

24uxx?  	  &&(4<<2245 0 0%..%--X[[__&


r   c                    | j                   j                  t              r| j                   j                         }| j                   j                  t              r*|j	                  | j                   j                                nJ| j                   j                  t              s+|j	                  | j                   j                         d       | j                   j                  t        t        t              s5| j                  j                  | j                         | j                         S | j                  | _        |j                  }|;| j                   j                         }|j                  }|rd |d   g|_        |d   d g}| j                  |j                   |      S | j                  | _        | j                   j                         }| j                  |j"                        S )NT)emptyre   r   r\   )r0   rO   r   rB   rC   rD   r   r   r%   rU   r   r~   r(   r]   _commentri   rG   rF   )r   rJ   r]   s      r   r   z Parser.parse_block_mapping_valueN  si   <<##J/LL**,E||''
3""4<<#:#:#<=||//9&&t||'>'>'@&M<<++Hj-P""4#?#?@CCEE!99
--? LL335E#mmG*.
);#*1:t"4000QQ55DJLL++-E,,U-=-=>>r   c                     | j                   j                         }| j                  j                  |j                         | j                  d      S NT)first)r0   rB   r&   rU   rF   parse_flow_sequence_entryr   s     r   r   z&Parser.parse_flow_sequence_first_entryv  s@    &&(

%**+--D-99r   c                    | j                   j                  t              sM|s| j                   j                  t              r| j                   j	                          nL| j                   j                         }t        d| j                  d   d|j                  z  |j                        | j                   j                  t              rR| j                   j                         }t        d d d|j                  |j                  d      }| j                  | _        |S | j                   j                  t              s5| j                  j!                  | j"                         | j%                         S | j                   j	                         }t'        |j                  |j                  |j(                        }| j                  j+                         | _        | j                  j+                          |S )Nzwhile parsing a flow sequencer   zexpected ',' or ']', but got %rT)r   r\   )r0   rO   FlowSequenceEndTokenFlowEntryTokenrB   rD   r   r&   r`   rF   r   r   rG   %parse_flow_sequence_entry_mapping_keyr(   r%   rU   r   r{   r   r]   rj   r   r   rJ   rK   s       r   r   z Parser.parse_flow_sequence_entry|  se   ||''(<=<<++N;LL**, LL335E%7

29EHHD((	  ||''1//1)$e&6&6SW "GG
\\--.BC""4#A#AB++--&&( !1!15>>5==Y[[__&


r   c                 J   | j                   j                         }| j                   j                  t        t        t
              s5| j                  j                  | j                         | j                         S | j                  | _
        | j                  |j                        S r!   )r0   rB   rO   r   r   r   r%   rU   'parse_flow_sequence_entry_mapping_valuer{   r(   ri   rG   r   s     r   r   z,Parser.parse_flow_sequence_entry_mapping_key  st    &&(||''
NDXYKKtKKL''))EEDJ,,U^^<<r   c                 
   | j                   j                  t              r| j                   j                         }| j                   j                  t        t
              s5| j                  j                  | j                         | j                         S | j                  | _
        | j                  |j                        S | j                  | _
        | j                   j                         }| j                  |j                        S r!   )r0   rO   r   rB   r   r   r%   rU   %parse_flow_sequence_entry_mapping_endr{   r(   ri   rG   rD   rF   r   s     r   r   z.Parser.parse_flow_sequence_entry_mapping_value  s    <<##J/LL**,E<<++N<PQ""4#M#MN++--!GG
00@@CCDJLL++-E,,U-=-=>>r   c                     | j                   | _        | j                  j                         }t	        |j
                  |j
                        S r!   )r   r(   r0   rD   r   rF   r   s     r   r   z,Parser.parse_flow_sequence_entry_mapping_end  s:    33
'')u//1A1ABBr   c                     | j                   j                         }| j                  j                  |j                         | j                  d      S r   )r0   rB   r&   rU   rF   parse_flow_mapping_keyr   s     r   r   z#Parser.parse_flow_mapping_first_key  s@    &&(

%**+***66r   c                 z   | j                   j                  t              s|s| j                   j                  t              r| j                   j	                          nL| j                   j                         }t        d| j                  d   d|j                  z  |j                        | j                   j                  t              r| j                   j	                         }| j                   j                  t        t        t              s5| j                  j                  | j                         | j                         S | j                  | _        | j#                  |j$                        S | j&                  j(                  dkD  rc| j                   j                  t              rD| j                  | _        | j#                  | j                   j                         j$                        S | j                   j                  t              s5| j                  j                  | j*                         | j                         S | j                   j	                         }t-        |j                  |j$                  |j.                        }| j                  j1                         | _        | j                  j1                          |S )Nzwhile parsing a flow mappingr   zexpected ',' or '}', but got %rrd   r\   )r0   rO   FlowMappingEndTokenr   rB   rD   r   r&   r`   rF   r   r   r%   rU   parse_flow_mapping_valuer{   r(   ri   rG   r3   rg   parse_flow_mapping_empty_valuer   r]   rj   r   s       r   r   zParser.parse_flow_mapping_key  s   ||''(;<<<++N;LL**, LL335E%6

29EHHD((	  ||''1..0||//0C KK&&t'D'DE//11!%!>!>DJ44U^^DD11F:t||?W?W@ "::
001H1H1J1S1STT\\--.AB""4#F#FG++--&&( 0 0%..%--X[[__&


r   c                 
   | j                   j                  t              r| j                   j                         }| j                   j                  t        t
              s5| j                  j                  | j                         | j                         S | j                  | _
        | j                  |j                        S | j                  | _
        | j                   j                         }| j                  |j                        S r!   )r0   rO   r   rB   r   r   r%   rU   r   r{   r(   ri   rG   rD   rF   r   s     r   r   zParser.parse_flow_mapping_value  s    <<##J/LL**,E<<++N<OP""4#>#>?++--!88
00@@44DJLL++-E,,U-=-=>>r   c                     | j                   | _        | j                  | j                  j	                         j
                        S r!   )r   r(   ri   r0   rD   rF   r)   s    r   r   z%Parser.parse_flow_mapping_empty_value  s3    00
(()@)@)B)M)MNNr   Nc           	      &    t        d d dd|||      S )Nr   r   r\   )r   )r   markr]   s      r   ri   zParser.process_empty_scalar   s    4}b$gVVr   r   )Fr!   )(r   r   r   rS   r   r   r+   propertyr0   r3   r9   r<   r?   r'   rH   rX   rV   ra   r_   rW   r{   r~   r   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ri   r   r   r   r   r   _   s     '<=L- $ $ % %"
/$B(	+"h+!E1Xz1@..:?P:>=?C7$L?O
Wr   r   c                       e Zd ZdZd Zy)r   z?roundtrip is a safe loader, that wants to see the unmangled tagc                 L    |dk(  r|dv rt         j                  | ||      S ||z   S )Nr   )nullro   intfloatbinary	timestampomappairssetstrseqmap)r   r   r   s      r   r   zRoundTripParser.transform_tag  s8     T>f )
 
 ''ff==r   N)r   r   r   __doc__r   r   r   r   r   r     s
    Ir   r   N)
__future__r   ruamel.yaml.errorr   ruamel.yaml.tokensruamel.yaml.eventsruamel.yaml.scannerr   r   r   ruamel.yaml.compatr	   r
   r   typingAnyDictOptionalList__all__r   objectr   r   r   r   r   <module>r      sU    'X .     G G 4 4 7	/ 	c
WV c
WLf r   