
    :                         S SK Jr  S SKJr  S SK7  S SK7  S SKJrJrJ	r	  S SK
JrJrJr   / SQr " S S\5      r " S	 S
\5      r " S S\5      rg)    )absolute_import)MarkedYAMLError)*)ScannerRoundTripScannerScannerError)utf8nprintnprintf)ParserRoundTripParserParserErrorc                       \ rS rSrSrg)r   [    N)__name__
__module____qualname____firstlineno____static_attributes__r       %lib/third_party/ruamel/yaml/parser.pyr   r   [   s    r   r   c                      \ rS rSrSSS.rS rS rS r\S 5       r	\S	 5       r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS*S jrS rS rS rS rS rS rS rS+S jr S  r!S! r"S" r#S# r$S+S$ jr%S% r&S& r'S,S( jr(S)r)g')-r   _   !ztag:yaml.org,2002:)r   !!c                     Xl         U R                   b(  [        U R                   SS 5      c  X R                   l        U R                  5         g )N_parser)loadergetattrr   reset_parser)selfr   s     r   __init__Parser.__init__e   s9    ;;"wt{{It'L'T"&KKr   c                 l    S U l         S U l        0 U l        / U l        / U l        U R
                  U l        g N)current_eventyaml_versiontag_handlesstatesmarksparse_stream_startstater"   s    r   r!   Parser.reset_parserl   s7     " 
,,
r   c                 $    U R                  5         g r&   )r!   r.   s    r   disposeParser.disposev   s    r   c                     [        U R                  S5      (       a  U R                  R                  $ U R                  R                  $ Ntyp)hasattrr   scanner_scannerr.   s    r   r7   Parser.scannerz   s5     4;;&&;;&&&{{###r   c                     [        U R                  S5      (       a  U R                  R                  $ U R                  R                  $ r4   )r6   r   resolver	_resolverr.   s    r   r;   Parser.resolver   s5     4;;&&;;'''{{$$$r   c                     U R                   c&  U R                  (       a  U R                  5       U l         U R                   b.  U(       d  gU H   n[        U R                   U5      (       d  M     g   g)NTF)r'   r-   
isinstance)r"   choiceschoices      r   check_eventParser.check_event   s\     %zz%)ZZ\")!d00&99 " r   c                     U R                   c&  U R                  (       a  U R                  5       U l         U R                   $ r&   r'   r-   r.   s    r   
peek_eventParser.peek_event   s1     %zz%)ZZ\"!!!r   c                     U R                   c&  U R                  (       a  U R                  5       U l         U R                   nS U l         U$ r&   rE   )r"   values     r   	get_eventParser.get_event   s=     %zz%)ZZ\"""!r   c                     U R                   R                  5       nUR                  U R                   R                  5       5        [	        UR
                  UR                  UR                  S9nU R                  U l	        U$ )N)encoding)
r7   	get_tokenmove_comment
peek_tokenStreamStartEvent
start_markend_markrM   parse_implicit_document_startr-   r"   tokenevents      r   r,   Parser.parse_stream_start   sa     &&(4<<2245 !1!15>>ENN[ 77
r   c                 r   U R                   R                  [        [        [        5      (       dz  U R
                  U l        U R                   R                  5       nUR                  =p#[        X#SS9nU R                  R                  U R                  5        U R                  U l        U$ U R                  5       $ )NFexplicit)r7   check_tokenDirectiveTokenDocumentStartTokenStreamEndTokenDEFAULT_TAGSr)   rP   rR   DocumentStartEventr*   appendparse_document_endparse_block_noder-   parse_document_start)r"   rV   rR   rS   rW   s        r   rT   $Parser.parse_implicit_document_start   s     ||''8JN[[#00DLL++-E$)$4$44J&zeLE KKt667..DJL ,,..r   c                 ,   U R                   R                  [        5      (       a@  U R                   R                  5         U R                   R                  [        5      (       a  M@  U R                   R                  [        5      (       Gd  U R                   R                  5       nUR                  nU R                  5       u  p4U R                   R                  [        5      (       dU  [        S S SU R                   R                  5       R                  -  U R                   R                  5       R                  5      eU R                   R                  5       nUR                  n[        X%SX4S9nU R                  R                  U R                  5        U R                   U l        U$ U R                   R                  5       n[%        UR                  UR                  UR&                  S9nU R                  (       a   eU R(                  (       a   eS U l        U$ )Nz)expected '<document start>', but found %rT)r[   versiontagscomment)r7   r\   DocumentEndTokenrN   r_   rP   rR   process_directivesr^   r   idrS   ra   r*   rb   rc   parse_document_contentr-   StreamEndEventrk   r+   )r"   rV   rR   rh   ri   rS   rW   s          r   re   Parser.parse_document_start   s    ll&&'788LL""$ ll&&'788 ||''77LL++-E))J 335MG<<++,>??!?$,,BYBYB[B^B^^LL++-88	  LL**,E~~H&tWE KKt66744DJ  LL**,E"5#3#3U^^U]][E{{"?zz!>DJr   c                    U R                   R                  5       nUR                  =p#SnU R                   R                  [        5      (       a(  U R                   R                  5       nUR                  nSn[        X#US9nU R                  R                  S:X  a  U R                  U l        U$ U R                  U l        U$ )NFTrZ      rt   )r7   rP   rR   r\   rl   rN   rS   DocumentEndEventr;   processing_versionre   r-   rT   )r"   rV   rR   rS   r[   rW   s         r   rc   Parser.parse_document_end   s     '') % 0 00
<<##$455LL**,E~~HH I ==++v522DJ  ;;DJr   c                 0   U R                   R                  [        [        [        [
        5      (       aT  U R                  U R                   R                  5       R                  5      nU R                  R                  5       U l        U$ U R                  5       $ r&   )r7   r\   r]   r^   rl   r_   process_empty_scalarrP   rR   r*   popr-   rd   )r"   rW   s     r   ro   Parser.parse_document_content   so    <<##.0@.
 
 --dll.E.E.G.R.RSE*DJL((**r   c                    S U l         0 U l        U R                  R                  [        5      (       Ga  U R                  R                  5       nUR                  S:X  ac  U R                   b  [        S S SUR                  5      eUR                  u  p#US:w  a  [        S S SUR                  5      eUR                  U l         O_UR                  S:X  aO  UR                  u  pEX@R                  ;   a$  [        S S S[        U5      -  UR                  5      eXPR                  U'   U R                  R                  [        5      (       a  GM  [        U R                  5      (       a'  U R                   U R                  R                  5       4nOU R                   S 4nU R                   H0  nXpR                  ;  d  M  U R                  U   U R                  U'   M2     U$ )NYAMLzfound duplicate YAML directivert   z:found incompatible YAML document (version 1.* is required)TAGzduplicate tag handle %r)r(   r)   r7   r\   r]   rN   namer   rR   rI   r	   boolcopyr`   )r"   rV   majorminorhandleprefixrI   keys           r   rm   Parser.process_directives  s    ll&&~66LL**,EzzW$$$0%d$DeFVFV   %{{A:%W((	  %*KK!v%!&---%d$=V$LeN^N^  ,2  (- ll&&~66.   !!%%t'7'7'<'<'>>E%%t+E$$C***(,(9(9#(>  % % r   c                      U R                  SS9$ )NT)block
parse_noder.   s    r   rd   Parser.parse_block_node?  s    T**r   c                 "    U R                  5       $ r&   r   r.   s    r   parse_flow_nodeParser.parse_flow_nodeC  s      r   c                 "    U R                  SSS9$ )NT)r   indentless_sequencer   r.   s    r   'parse_block_node_or_indentless_sequence.Parser.parse_block_node_or_indentless_sequenceG  s    TtDDr   c                 &    U R                   U   U-   $ r&   )r)   r"   r   suffixs      r   transform_tagParser.transform_tagK  s    '&00r   c                    U R                   R                  [        5      (       af  U R                   R                  5       n[	        UR
                  UR                  UR                  5      nU R                  R                  5       U l
        U$ S nS nS =n=pU R                   R                  [        5      (       a  U R                   R                  5       nUR                  nUR                  nUR
                  nU R                   R                  [        5      (       a>  U R                   R                  5       nUR                  n	UR                  nUR
                  nOU R                   R                  [        5      (       a  U R                   R                  5       nUR                  =pyUR                  nUR
                  nU R                   R                  [        5      (       a?  U R                   R                  5       nUR                  =pyUR                  nUR
                  nUbD  Uu  pU
b;  XR                  ;  a  [        SUS[        U
5      -  U	5      eU R!                  X5      nOUnUc%  U R                   R#                  5       R                  =pxS nUS L =(       d    US:H  nU(       a  U R                   R                  [$        5      (       a  S nU R                   R#                  5       nUR&                  (       a4  UR&                  S   (       a   UR&                  S   / /nS UR&                  S'   U R                   R#                  5       R                  n[)        XVXUSUS9nU R*                  U l
        U$ U R                   R                  [,        5      (       a  U R                   R                  5       nUR                  nUR.                  (       a  Ub  US:X  a  SnOUc  SnOS	n[1        UUUUR
                  UUUR2                  UR&                  S
9nU R                  R                  5       U l
        U$ U R                   R                  [4        5      (       aR  U R                   R#                  5       nUR                  n[)        UUUUUSUR&                  S9nU R6                  U l
        U$ U R                   R                  [8        5      (       aR  U R                   R#                  5       nUR                  n[;        UUUUUSUR&                  S9nU R<                  U l
        U$ U(       a  U R                   R                  [>        5      (       a  U R                   R#                  5       R                  nU R                   R#                  5       nUR&                  nUb  US   c  URA                  5       n[)        XVXUSUS9nU RB                  U l
        U$ U(       a  U R                   R                  [D        5      (       ah  U R                   R#                  5       R                  nU R                   R#                  5       R&                  n[;        XVXUSUS9nU RF                  U l
        U$ Uc  Ub1  [1        XVUS4SXx5      nU R                  R                  5       U l
        U$ U(       a  SnOSnU R                   R#                  5       n[        SU-  USURH                  -  UR                  5      e)Nzwhile parsing a nodezfound undefined tag handle %rr   r   F)
flow_stylerk   TF)FTFF)stylerk   Trt    r   flowzwhile parsing a %s nodez'expected the node content, but found %r)%r7   r\   
AliasTokenrN   
AliasEventrI   rR   rS   r*   rz   r-   AnchorTokenTagTokenr)   r   r	   r   rP   BlockEntryTokenrk   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_keyrn   )r"   r   r   rV   rW   anchortagrR   rS   tag_markr   r   implicitrk   ptnodes                   r   r   Parser.parse_nodeO  s   <<##J//LL**,Eu{{E,<,<ennME*DJL+//
/X<<##K00LL**,E))J~~H[[F||''11..0 ++ >>kk\\%%h//LL**,E$)$4$44J~~H++C||''44..0(-(8(88
 >>? NF!!1!11%."7$v,F 	  ((8 $(LL$;$;$=$H$HHJ$;-#+4<<#;#;O#L#LG((*Bzzbjjm::a="- $

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

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

E ::DJN M t||//0GHH||..0;;H ((*BjjG'!*"4**,&X8W^E >>DJ2 1 t||//0FGG||..0;;Hll--/77G%X8W^E ;;DJ$ # 3?  h->JYE*DJ  LL++-E)D09EHHD  	 r   c                     U R                   R                  5       nU R                  R                  UR                  5        U R                  5       $ r&   )r7   rN   r+   rb   rR   parse_block_sequence_entryr"   rV   s     r   r   'Parser.parse_block_sequence_first_entry  s=    &&( 	

%**+..00r   c                    U R                   R                  [        5      (       a  U R                   R                  5       nUR	                  U R                   R                  5       5        U R                   R                  [        [        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l        U R                  UR                  5      $ U R                   R                  [        5      (       dL  U R                   R                  5       n[        SU R                  S   SUR                   -  UR"                  5      eU R                   R                  5       n[%        UR"                  UR                  UR&                  S9nU R                  R)                  5       U l        U R                  R)                  5         U$ )Nz while parsing a block collection"expected <block end>, but found %rrj   )r7   r\   r   rN   rO   rP   BlockEndTokenr*   rb   r   rd   r-   ry   rS   r   r+   rn   rR   SequenceEndEventrk   rz   rU   s      r   r   !Parser.parse_block_sequence_entry  sP   <<##O44LL**,Et||6689<<++O]KK""4#B#BC,,..!<<
00@@||''66LL++-E2

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

r   c                    U R                   R                  [        5      (       a  U R                   R                  5       nUR	                  U R                   R                  5       5        U R                   R                  [        [        [        [        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l        U R                  UR                  5      $ U R                   R                  5       n[!        UR"                  UR"                  UR$                  S9nU R                  R'                  5       U l        U$ )Nrj   )r7   r\   r   rN   rO   rP   KeyToken
ValueTokenr   r*   rb   r   rd   r-   ry   rS   r   rR   rk   rz   rU   s      r   r   &Parser.parse_indentless_sequence_entry  s    <<##O44LL**,Et||6689<<++:}  ""4#G#GH,,..!AA
00@@'') !1!153C3CU]][[[__&
r   c                     U R                   R                  5       nU R                  R                  UR                  5        U R                  5       $ r&   )r7   rN   r+   rb   rR   parse_block_mapping_keyr   s     r   r   $Parser.parse_block_mapping_first_key+  s;    &&(

%**+++--r   c                     U R                   R                  [        5      (       a  U R                   R                  5       nUR	                  U R                   R                  5       5        U R                   R                  [        [        [        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l        U R                  UR                  5      $ U R                  R                   S:  ah  U R                   R                  [        5      (       aD  U R                  U l        U R                  U R                   R                  5       R"                  5      $ U R                   R                  [        5      (       dL  U R                   R                  5       n[%        SU R&                  S   SUR(                  -  UR"                  5      eU R                   R                  5       nUR	                  U R                   R                  5       5        [+        UR"                  UR                  UR,                  S9nU R                  R/                  5       U l        U R&                  R/                  5         U$ )Nrs   zwhile parsing a block mappingr   r   rj   )r7   r\   r   rN   rO   rP   r   r   r*   rb   parse_block_mapping_valuer   r-   ry   rS   r;   rv   rR   r   r+   rn   MappingEndEventrk   rz   rU   s      r   r   Parser.parse_block_mapping_key1  s   <<##H--LL**,Et||6689<<++Hj-PP""4#A#ABCCEE!;;
00@@==++f49Q9QR\9]9]77DJ,,T\\-D-D-F-Q-QRR||''66LL++-E/

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

r   c                    U R                   R                  [        5      (       Ga  U R                   R                  5       nU R                   R                  [        5      (       a*  UR	                  U R                   R                  5       5        OLU R                   R                  [        5      (       d(  UR	                  U R                   R                  5       SS9  U R                   R                  [        [        [        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l        UR                  nUc@  U R                   R                  5       nUR                  nU(       a  S US   /Ul        US   S /nU R                  UR                   US9$ U R                  U l        U R                   R                  5       nU R                  UR"                  5      $ )NT)emptyrt   r   rj   )r7   r\   r   rN   rO   rP   r   r   r*   rb   r   r   r-   rk   _commentry   rS   rR   )r"   rV   rk   s      r   r    Parser.parse_block_mapping_valueN  su   <<##J//LL**,E||''
33""4<<#:#:#<=||//99&&t||'>'>'@&M<<++Hj-P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                     U R                   R                  5       nU R                  R                  UR                  5        U R                  SS9$ NT)first)r7   rN   r+   rb   rR   parse_flow_sequence_entryr   s     r   r   &Parser.parse_flow_sequence_first_entryv  s@    &&(

%**+--D-99r   c           	         U R                   R                  [        5      (       Gd^  U(       d  U R                   R                  [        5      (       a  U R                   R	                  5         OLU R                   R                  5       n[        SU R                  S   SUR                  -  UR                  5      eU R                   R                  [        5      (       aO  U R                   R                  5       n[        S S SUR                  UR                  SS9nU R                  U l        U$ U R                   R                  [        5      (       d5  U R                  R!                  U R"                  5        U R%                  5       $ U R                   R	                  5       n['        UR                  UR                  UR(                  S9nU R                  R+                  5       U l        U R                  R+                  5         U$ )Nzwhile parsing a flow sequencer   zexpected ',' or ']', but got %rT)r   rj   )r7   r\   FlowSequenceEndTokenFlowEntryTokenrN   rP   r   r+   rn   rR   r   r   rS   %parse_flow_sequence_entry_mapping_keyr-   r*   rb   r   r   r   rk   rz   r"   r   rV   rW   s       r   r    Parser.parse_flow_sequence_entry|  sq   ||''(<==<<++N;;LL**, LL335E%7

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

r   c                 T   U R                   R                  5       nU R                   R                  [        [        [
        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l
        U R                  UR                  5      $ r&   )r7   rN   r\   r   r   r   r*   rb   'parse_flow_sequence_entry_mapping_valuer   r-   ry   rS   r   s     r   r   ,Parser.parse_flow_sequence_entry_mapping_key  sw    &&(||''
NDXYYKKtKKL''))EEDJ,,U^^<<r   c                    U R                   R                  [        5      (       a  U R                   R                  5       nU R                   R                  [        [
        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l
        U R                  UR                  5      $ U R                  U l
        U R                   R                  5       nU R                  UR                  5      $ r&   )r7   r\   r   rN   r   r   r*   rb   %parse_flow_sequence_entry_mapping_endr   r-   ry   rS   rP   rR   r   s     r   r   .Parser.parse_flow_sequence_entry_mapping_value  s    <<##J//LL**,E<<++N<PQQ""4#M#MN++--!GG
00@@CCDJLL++-E,,U-=-=>>r   c                     U R                   U l        U R                  R                  5       n[	        UR
                  UR
                  5      $ r&   )r   r-   r7   rP   r   rR   r   s     r   r   ,Parser.parse_flow_sequence_entry_mapping_end  s:    33
'')u//1A1ABBr   c                     U R                   R                  5       nU R                  R                  UR                  5        U R                  SS9$ r   )r7   rN   r+   rb   rR   parse_flow_mapping_keyr   s     r   r   #Parser.parse_flow_mapping_first_key  s@    &&(

%**+***66r   c                    U R                   R                  [        5      (       Gd:  U(       d  U R                   R                  [        5      (       a  U R                   R	                  5         OLU R                   R                  5       n[        SU R                  S   SUR                  -  UR                  5      eU R                   R                  [        5      (       a  U R                   R	                  5       nU R                   R                  [        [        [        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l        U R#                  UR$                  5      $ U R&                  R(                  S:  ah  U R                   R                  [        5      (       aD  U R                  U l        U R#                  U R                   R                  5       R$                  5      $ U R                   R                  [        5      (       d5  U R                  R                  U R*                  5        U R                  5       $ U R                   R	                  5       n[-        UR                  UR$                  UR.                  S9nU R                  R1                  5       U l        U R                  R1                  5         U$ )Nzwhile parsing a flow mappingr   zexpected ',' or '}', but got %rrs   rj   )r7   r\   FlowMappingEndTokenr   rN   rP   r   r+   rn   rR   r   r   r*   rb   parse_flow_mapping_valuer   r-   ry   rS   r;   rv   parse_flow_mapping_empty_valuer   rk   rz   r   s       r   r   Parser.parse_flow_mapping_key  s   ||''(;<<<<++N;;LL**, LL335E%6

29EHHD((	  ||''1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B""4#F#FG++--&&( 0 0%..%--X[[__&


r   c                    U R                   R                  [        5      (       a  U R                   R                  5       nU R                   R                  [        [
        5      (       d5  U R                  R                  U R                  5        U R                  5       $ U R                  U l
        U R                  UR                  5      $ U R                  U l
        U R                   R                  5       nU R                  UR                  5      $ r&   )r7   r\   r   rN   r   r   r*   rb   r   r   r-   ry   rS   rP   rR   r   s     r   r   Parser.parse_flow_mapping_value  s    <<##J//LL**,E<<++N<OPP""4#>#>?++--!88
00@@44DJLL++-E,,U-=-=>>r   c                     U R                   U l        U R                  U R                  R	                  5       R
                  5      $ r&   )r   r-   ry   r7   rP   rR   r.   s    r   r   %Parser.parse_flow_mapping_empty_value  s3    00
(()@)@)B)M)MNNr   Nc           
          [        S S SSXUS9$ )Nr   r   rj   )r   )r"   markrk   s      r   ry   Parser.process_empty_scalar   s    4}b$gVVr   )r'   r   r+   r-   r*   r)   r(   r   )Fr&   )*r   r   r   r   r`   r#   r!   r1   propertyr7   r;   rB   rF   rJ   r,   rT   re   rc   ro   rm   rd   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ry   r   r   r   r   r   r   _   s     '<=L- $ $ % %"
/$B(	+"h+!E1Xz1@..:?P:>=?C7$L?O
Wr   r   c                       \ rS rSrSrS rSrg)r   i  z?roundtrip is a safe loader, that wants to see the unmangled tagc                 N    US:X  a  US;   a  [         R                  XU5      $ X-   $ )Nr   )nullr   intfloatbinary	timestampomappairssetstrseqmap)r   r   r   s      r   r   RoundTripParser.transform_tag  s4     T>f )
 
 ''f==r   r   N)r   r   r   r   __doc__r   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   