
    zPj\                   V   d dl mZ d dlmZ d dlmc mZ d dlmZ d dl	m
Z
mZmZmZ 	 g dZdZdZd	Zed k7  rdd
Z G d de      Z G d d      Z G d d      Z G d de      Zd Zd Z  G d d      Z! G d de!      Z" G d de!      Z# G d de!      Z$ G d d      Z% G d de      Z&y)     )annotations)MarkedYAMLErrorN)Version)check_anchorname_char_debugnprintnprintf)ScannerRoundTripScannerScannerErroru   
   u    
 	   	c                     t        | i |S N)r	   )argskws     K/root/$HERMES_HOME/venv/lib/python3.12/site-packages/ruamel/yaml/scanner.pyxprintfr   1   s    ###    c                      e Zd Zy)r   N)__name__
__module____qualname__ r   r   r   r   5   s    r   r   c                  0    e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)	SimpleKeyc                X    || _         || _        || _        || _        || _        || _        y r   )token_numberrequiredindexlinecolumnmark)selfr   r   r   r    r!   r"   s          r   __init__zSimpleKey.__init__<   s/     ) 
		r   N)r   Anyr   r%   r   intr    r&   r!   r&   r"   r%   returnNone)r   r   r   r$   r   r   r   r   r   9   s?    +.7:BEORZ]	r   r   c                     e Zd ZdpdqdZedrd       ZdsdZedtd       Zedtd       ZdudZ	dtdZ
dtd	Zdvd
ZdwdZdtdZdtdZdsdZdsdZdsdZdxdZdydZdsdZdsdZdsdZdsdZdsdZdzdZdsdZdsdZd{dZdsdZdsdZdzdZ dsdZ!dsd Z"dsd!Z#dsd"Z$dsd#Z%dsd$Z&dsd%Z'dsd&Z(dsd'Z)d|d(Z*dsd)Z+dsd*Z,d|d+Z-dsd,Z.dtd-Z/dtd.Z0dtd/Z1dtd0Z2dtd1Z3dtd2Z4dtd3Z5dtd4Z6dtd5Z7d}d6Z8d}d7Z9d}d8Z:d}d9Z;d}d:Z<d}d;Z=d~d<Z>dd=Z?dtd>Z@ddd?ZAd}d@ZBd}dAZCdtdBZDddCZEddDZFi dEdFdGdHdIdJdKdLdLdLdMdNdOdPdQdRdSdTdUdVdWdWdXdXdYdYdZdZd[d\d]d^d_d`dadbiZGdcdddedfZHddgZIddhZJddiZKdtdjZLddkZMddlZNddmZOddnZPdtdoZQy)r
   Nc                    || _         | j                   (t        | j                   dd      | | j                   _        | j                          d| _        y)zInitialize the scanner.N_scannerF)loadergetattrr+   reset_scanner
first_time)r#   r,   s     r   r$   zScanner.__init__H   sF     ;;"wt{{J'M'U#'DKK r   c                ,    t        | j                        S r   )lenflow_contextr#   s    r   
flow_levelzScanner.flow_levelY   s    4$$%%r   c                    d| _         g | _        g | _        | j                          d| _        d| _        g | _        d| _        i | _        d | _	        g | _
        y )NFr   T)doner2   tokensfetch_stream_starttokens_takenindentindentsallow_simple_keypossible_simple_keysyaml_versiontag_directivesr3   s    r   r.   zScanner.reset_scanner]   sj    	 )+ "$ 	!   #%, !% 57!!%57r   c                    	 | j                   S # t        $ r\ t        | j                  d      r| j                  j                  | _         n| j                  j
                  | _         | j                   cY S w xY wNtyp)_scanner_readerAttributeErrorhasattrr,   reader_readerr3   s    r   rG   zScanner.reader   s`    	(''' 	(t{{E*'+{{'9'9$'+{{':':$'''	(s    A"A32A3c                    t        | j                  d      r | j                  j                  j                  S | j                  j                  S rB   )rF   r,   resolverprocessing_versionr3   s    r   scanner_processing_versionz"Scanner.scanner_processing_version   s6    4;;&;;'':::{{---r   c                    | j                         r!| j                          | j                         r!t        | j                        dkD  r%|sy|D ]  }t	        | j                  d   |      s y yNr   TF)need_more_tokensfetch_more_tokensr1   r8   
isinstancer#   choiceschoices      r   check_tokenzScanner.check_token   sh    ##%""$ ##%t{{a!  dkk!nf5  r   c                    | j                         r!| j                          | j                         r!t        | j                        dkD  r| j                  d   S y Nr   )rO   rP   r1   r8   r3   s    r   
peek_tokenzScanner.peek_token   sL    ##%""$ ##%t{{a;;q>!  r   c                    | j                         r!| j                          | j                         r!t        | j                        dkD  r0| xj                  dz  c_        | j                  j                  d      S y Nr      )rO   rP   r1   r8   r:   popr3   s    r   	get_tokenzScanner.get_token   sb    ##%""$ ##%t{{a";;??1%%  r   c                    | j                   ryt        | j                        dk(  ry| j                          | j	                         | j
                  k(  ryy)NFr   T)r7   r1   r8   stale_possible_simple_keysnext_possible_simple_keyr:   r3   s    r   rO   zScanner.need_more_tokens   sK    99t{{q  	'')((*d.?.??r   c                    t         r   )NotImplementedError)r#   comments     r   fetch_commentzScanner.fetch_comment   s    !!r   c                   | j                         }|| j                  |      S | j                          | j                  | j                  j
                         | j                  j                         }|dk(  r| j                         S |dk(  r | j                         r| j                         S |dk(  r | j                         r| j                         S |dk(  r | j                         r| j                         S |dk(  r| j                         S |dk(  r| j                         S |dk(  r| j!                         S |dk(  r| j#                         S |d	k(  r| j%                         S |dk(  r | j'                         r| j)                         S |d
k(  r | j+                         r| j-                         S |dk(  r | j/                         r| j1                         S |dk(  r| j3                         S |dk(  r| j5                         S |dk(  r| j7                         S |dk(  r| j8                  s| j;                         S |dk(  r| j8                  s| j=                         S |dk(  r| j?                         S |dk(  r| jA                         S | jC                         r| jE                         S tG        dd d|d| j                  jI                               )N %-.[{]},?:*&!|>'"z!while scanning for the next tokenzfound character z that cannot start any token)%scan_to_next_tokenrd   r_   unwind_indentrG   r!   peekfetch_stream_endcheck_directivefetch_directivecheck_document_startfetch_document_startcheck_document_endfetch_document_endfetch_flow_sequence_startfetch_flow_mapping_startfetch_flow_sequence_endfetch_flow_mapping_endfetch_flow_entrycheck_block_entryfetch_block_entry	check_key	fetch_keycheck_valuefetch_valuefetch_aliasfetch_anchor	fetch_tagr4   fetch_literalfetch_foldedfetch_singlefetch_doublecheck_plainfetch_plainr   get_mark)r#   rc   chs      r   rP   zScanner.fetch_more_tokens   s   ))+%%g..'') 	4;;--. [[ :((** 9--/'')) 9224,,.. 9002**,, 91133 90022 9//11 9..00 9((** 9//1))++ 9)>>## 9))+##%% 9##%% 9$$&& 9>>## 9T__%%'' 9T__$$&& 9$$&& 9$$&& ##%% /rf$@AKK  "	
 	
r   c                    d }| j                   D ]/  }| j                   |   }||j                  |k  s$|j                  }1 |S r   )r>   r   )r#   min_token_numberlevelkeys       r   r`   z Scanner.next_possible_simple_keyB  sW      .. 	4E++E2C'3+;+;>N+N#&#3#3 	4  r   c                |   t        | j                        D ]  }| j                  |   }|j                  | j                  j                  k7  s'| j                  j                  |j                  z
  dkD  s\|j
                  r0t        d|j                  d| j                  j                               | j                  |=  y )Ni   while scanning a simple keycould not find expected ':')	listr>   r    rG   r   r   r   r"   r   )r#   r   r   s      r   r_   z"Scanner.stale_possible_simple_keysQ  s     $334 
	5E++E2Cxx4;;+++t{{/@/@399/Lt/S<<&55,,.	  --e4
	5r   c           	        | j                    xr# | j                  | j                  j                  k(  }| j                  r| j                          | j                  t        | j                        z   }t        ||| j                  j                  | j                  j                  | j                  j                  | j                  j                               }|| j                  | j                   <   y y r   )r4   r;   rG   r!   r=   remove_possible_simple_keyr:   r1   r8   r   r   r    r   r>   )r#   r   r   r   s       r   save_possible_simple_keyz Scanner.save_possible_simple_keyd  s     &L4;;$++:L:L+L   ++-,,s4;;/??L!!  ""$$&C :=D%%doo6 !r   c                   | j                   | j                  v rm| j                  | j                      }|j                  r0t        d|j                  d| j
                  j                               | j                  | j                   = y y )Nr   r   )r4   r>   r   r   r"   rG   r   )r#   r   s     r   r   z"Scanner.remove_possible_simple_key{  sr    ??d777++DOO<C||"1HH1KK((*	  ))$//: 8r   c                @   t        | j                        ry | j                  |kD  ry| j                  j	                         }| j
                  j                         | _        | j                  j                  t        j                  ||             | j                  |kD  rxy y r   )
boolr4   r;   rG   r   r<   r\   r8   appendBlockEndToken)r#   r!   r"   s      r   ry   zScanner.unwind_indent  st       kkF";;'')D,,**,DKKKv33D$?@ kkF"r   c                |    | j                   |k  r-| j                  j                  | j                          || _         yy)NTF)r;   r<   r   )r#   r!   s     r   
add_indentzScanner.add_indent  s1    ;;LL, DKr   c                    | j                   j                         }| j                  j                  t        j                  ||| j                   j
                               y )N)encoding)rG   r   r8   r   StreamStartTokenr   r#   r"   s     r   r9   zScanner.fetch_stream_start  sA     {{##%6224H\H\]^r   c                   | j                  d       | j                          d| _        i | _        | j                  j                         }| j                  j                  t        j                  ||             d| _	        y )Nr6   FT)
ry   r   r=   r>   rG   r   r8   r   StreamEndTokenr7   r   s     r   r{   zScanner.fetch_stream_end  sd    2'') %$&!{{##%600t<=	r   c                    | j                  d       | j                          d| _        | j                  j	                  | j                                y )Nr6   F)ry   r   r=   r8   r   scan_directiver3   s    r   r}   zScanner.fetch_directive  sC    2 	'') % 	4..01r   c                B    | j                  t        j                         y r   )fetch_document_indicatorr8   DocumentStartTokenr3   s    r   r   zScanner.fetch_document_start  s    %%f&?&?@r   c                B    | j                  t        j                         y r   )r   r8   DocumentEndTokenr3   s    r   r   zScanner.fetch_document_end  s    %%f&=&=>r   c                6   | j                  d       | j                          d| _        | j                  j	                         }| j                  j                  d       | j                  j	                         }| j                  j                   |||             y )Nr6   F   )ry   r   r=   rG   r   forwardr8   r   )r#   
TokenClass
start_markend_marks       r   r   z Scanner.fetch_document_indicator  sw    2 	'') % [[))+
A;;''):j(;<r   c                F    | j                  t        j                  d       y )Nrj   to_push)fetch_flow_collection_startr8   FlowSequenceStartTokenr3   s    r   r   z!Scanner.fetch_flow_sequence_start  s    (()F)FPS(Tr   c                F    | j                  t        j                  d       y )Nrk   r   )r   r8   FlowMappingStartTokenr3   s    r   r   z Scanner.fetch_flow_mapping_start  s    (()E)Es(Sr   c                H   | j                          | j                  j                  |       d| _        | j                  j                         }| j                  j                          | j                  j                         }| j                  j                   |||             y NT)r   r2   r   r=   rG   r   r   r8   )r#   r   r   r   r   s        r   r   z#Scanner.fetch_flow_collection_start  sw    %%'  ) $[[))+
;;''):j(;<r   c                B    | j                  t        j                         y r   )fetch_flow_collection_endr8   FlowSequenceEndTokenr3   s    r   r   zScanner.fetch_flow_sequence_end  s    &&v'B'BCr   c                B    | j                  t        j                         y r   )r   r8   FlowMappingEndTokenr3   s    r   r   zScanner.fetch_flow_mapping_end  s    &&v'A'ABr   c                f   | j                          	 | j                  j                         }d| _        | j
                  j                         }| j
                  j                          | j
                  j                         }| j                  j                   |||             y # t        $ r Y w xY wNF)
r   r2   r\   
IndexErrorr=   rG   r   r   r8   r   )r#   r   poppedr   r   s        r   r   z!Scanner.fetch_flow_collection_end  s    '')	&&**,F !&[[))+
;;''):j(;<  	 	s   B$ $	B0/B0c                ,   d| _         | j                          | j                  j                         }| j                  j	                          | j                  j                         }| j
                  j                  t        j                  ||             y r   )r=   r   rG   r   r   r8   r   FlowEntryToken)r#   r   r   s      r   r   zScanner.fetch_flow_entry  si     $'')[[))+
;;'')600XFGr   c                   | j                   s| j                  s&t        d d d| j                  j	                               | j                  | j                  j                        rK| j                  j	                         }| j                  j                  t        j                  ||             n	 d| _        | j                          | j                  j	                         }| j                  j                          | j                  j	                         }| j                  j                  t        j                  ||             y )Nz%sequence entries are not allowed hereT)r4   r=   r   rG   r   r   r!   r8   r   BlockSequenceStartTokenr   r   BlockEntryTokenr#   r"   r   r   s       r   r   zScanner.fetch_block_entry  s    ((";KK((*	  t{{112{{++-""6#A#A$#MN  $'') [[))+
;;'')611*hGHr   c                   | j                   s| j                  s&t        d d d| j                  j	                               | j                  | j                  j                        rI| j                  j	                         }| j                  j                  t        j                  ||             | j                    | _        | j                          | j                  j	                         }| j                  j                          | j                  j	                         }| j                  j                  t        j                  ||             y )Nz!mapping keys are not allowed here)r4   r=   r   rG   r   r   r!   r8   r   BlockMappingStartTokenr   r   KeyTokenr   s       r   r   zScanner.fetch_key8  s     (("$ CT[[EYEYE[ 
 t{{112{{++-""6#@#@t#LM %)OO 3 	'') [[))+
;;'')6??:x@Ar   c                   | j                   | j                  v r| j                  | j                      }| j                  | j                   = | j                  j                  |j                  | j
                  z
  t        j                  |j                  |j                               | j                   sv| j                  |j                        r[| j                  j                  |j                  | j
                  z
  t        j                  |j                  |j                               d| _        n| j                   s2| j                  s&t        d d d| j                  j                               | j                   sn| j                  | j                  j                        rI| j                  j                         }| j                  j                  t        j                  ||             | j                    | _        | j!                          | j                  j                         }| j                  j#                          | j                  j                         }| j                  j                  t        j$                  ||             y )NFz#mapping values are not allowed here)r4   r>   r8   insertr   r:   r   r"   r   r!   r   r=   r   rG   r   r   r   r   
ValueToken)r#   r   r"   r   r   s        r   r   zScanner.fetch_valueS  s   ??d777++DOO<C))$//:KK  4#4#44foochhPSPXPX6Y ????3::.KK&&((4+<+<<55chhI %*D! ?? ,,&=,,.	  ????4;;#5#56;;//1DKK&&v'D'DT4'PQ )-$7D! ++- [[))+
;;'')6,,ZBCr   c                    | j                          d| _        | j                  j                  | j	                  t        j
                               y r   )r   r=   r8   r   scan_anchor
AliasTokenr3   s    r   r   zScanner.fetch_alias  s9    %%' %4++F,=,=>?r   c                    | j                          d| _        | j                  j                  | j	                  t        j
                               y r   )r   r=   r8   r   r   AnchorTokenr3   s    r   r   zScanner.fetch_anchor  s9    %%' %4++F,>,>?@r   c                    | j                          d| _        | j                  j                  | j	                                y r   )r   r=   r8   r   scan_tagr3   s    r   r   zScanner.fetch_tag  s.    %%' %4==?+r   c                (    | j                  d       y )Nrt   stylefetch_block_scalarr3   s    r   r   zScanner.fetch_literal      c*r   c                (    | j                  d       y )Nru   r   r   r3   s    r   r   zScanner.fetch_folded  r   r   c                    d| _         | j                          | j                  j                  | j	                  |             y r   )r=   r   r8   r   scan_block_scalarr#   r   s     r   r   zScanner.fetch_block_scalar  s3     $'')411%89r   c                (    | j                  d       y )Nrv   r   fetch_flow_scalarr3   s    r   r   zScanner.fetch_single      S)r   c                (    | j                  d       y )Nrw   r   r   r3   s    r   r   zScanner.fetch_double  r   r   c                    | j                          d| _        | j                  j                  | j	                  |             y r   )r   r=   r8   r   scan_flow_scalarr   s     r   r   zScanner.fetch_flow_scalar  s3    %%' %40078r   c                    | j                          d| _        | j                  j                  | j	                                y r   )r   r=   r8   r   
scan_plainr3   s    r   r   zScanner.fetch_plain  s1    %%' !&4??,-r   c                8    | j                   j                  dk(  ryy )Nr   T)rG   r!   r3   s    r   r|   zScanner.check_directive  s     ;;"r   c                    | j                   j                  dk(  r@| j                   j                  d      dk(  r"| j                   j                  d      t        v ryy )Nr   r   ---TrG   r!   prefixrz   _THE_END_SPACE_TABr3   s    r   r~   zScanner.check_document_start  H    ;;"{{!!!$-$++2B2B12EI[2[r   c                    | j                   j                  dk(  r@| j                   j                  d      dk(  r"| j                   j                  d      t        v ryy )Nr   r   ...Tr   r3   s    r   r   zScanner.check_document_end  r   r   c                D    | j                   j                  d      t        v S )Nr[   )rG   rz   r   r3   s    r   r   zScanner.check_block_entry  s    {{"&888r   c                p    t        | j                        ry| j                  j                  d      t        v S )NTr[   )r   r4   rG   rz   r   r3   s    r   r   zScanner.check_key  s,     {{"&888r   c                   | j                   dk(  rt        | j                        ryt        | j                        r| j                  d   dk(  r#| j                  j                  d      t        vryy| j                  rIt        | j                  d   t        j                        r"| j                  j                  d      t        vryy| j                  j                  d      t        v S )Nr[   r[   Tr6   rj   r[   F)
rL   r   r4   r2   rG   rz   r   r8   rQ   r   r3   s    r   r   zScanner.check_value  s    **f4DOO$DOO$$$R(C/{{''*2DD$
 	 [[ZBARAR%S{{''*2DD${{"&888r   c                   | j                   j                  } |       }| j                  dk(  r0|dvxs*  |d      t        vxr |dk(  xs | j                   xr |dv S |dvry |d      }|dk(  r	|t        vry|dk(  rt        | j                        r	|t        vry |d      t        vxr |dk(  xs | j                   xr |dv S )Nr  u      	
  -?:,[]{}#&*!|>'"%@`r[   rh   z?:Trp   )rG   rz   rL   r   r4   r   
_SPACE_TAB)r#   srpr   ch1s       r   r   zScanner.check_plain  s     kkU**f4LL A00 H3YFt#6#E2:
 DD!f9$669doo.3j3H1v// 
#I=doo-<"*	
r   c                   | j                   j                  }| j                   j                  }| j                   j                  dk(  r |       dk(  r |        d}t        }| j
                  dkD  rdnd}|sg |       |v r |         |       |v r |       dk(  r |       |vr |         |       |vr| j                         r| j
                  s
d| _        nd}|sgy )Nr      ﻿Fr    #T)rG   rz   r   r   _THE_ENDr4   scan_line_breakr=   )r#   r  srffound_the_endwhite_spaces         r   rx   zScanner.scan_to_next_token%  s    & kkkk!!;;!cex&7E#2e%;& %;&u|e8+E e8+##%,0D)  r   c                P   | j                   j                  }| j                   j                  }| j                   j                         } |        | j	                  |      }d }|dk(  r,| j                  |      }| j                   j                         }nm|dk(  r,| j                  |      }| j                   j                         }n<| j                   j                         } |       t        vr |         |       t        vr| j                  |       t        j                  ||||      S )NYAMLTAG)rG   rz   r   r   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer
  scan_directive_ignored_liner8   DirectiveToken)r#   r  r  r   namevaluer   s          r   r   zScanner.scan_directiveL  s    kkkk!![[))+
''
36>22:>E{{++-HU]11*=E{{++-H{{++-H%x' %x'((4$$T5*hGGr   c                >   d}| j                   j                  } ||      }d|cxk  rdk  s n d|cxk  rdk  sn d|cxk  rdk  sn |dv r<|d	z  } ||      }d|cxk  rdk  rn d|cxk  rdk  r'n d|cxk  rdk  r5n |dv r<|s)t        d
|d|| j                   j                               | j                   j	                  |      }| j                   j                  |        |       }|dvr)t        d
|d|| j                   j                               |S )Nr   09AZazz-_:.r[   while scanning a directive4expected alphabetic or numeric character, but found      
  )rG   rz   r   r   r   r   )r#   r   lengthr  r   r  s         r   r  zScanner.scan_directive_namea  s)   kk[R3#"2s"2cR6F36F"PV,aKFVB R3#"2s"2cR6F36F"PV, ,FrfM$$&	  ""6*F#U..,FrfM$$&	  r   c                <   | j                   j                  }| j                   j                  } |       dk(  r |         |       dk(  r| j                  |      } |       dk7  r.t	        d|d |       | j                   j                                |        | j                  |      } |       dvr.t	        d|d |       | j                   j                               ||f| _        t        ||      | j                  j                  d   _
        | j                  S )Nr  ri   r!  z#expected a digit or '.', but found r#  r6   )rG   rz   r   scan_yaml_directive_numberr   r   r?   r   r,   	doc_infosdoc_version)r#   r   r  r  majorminors         r   r  z!Scanner.scan_yaml_directive_value|  s
   kkkk!!eslE esl//
;5C<,5ceY?$$&	  	//
;511,5ceY?$$&	  #EN07u0Eb!-   r   c                   | j                   j                  }| j                   j                  } |       }d|cxk  rdk  s+n t        d|d|| j                   j	                               d}d ||      cxk  rdk  rn n|dz  }d ||      cxk  rdk  rn t        | j                   j                  |            } ||       |S )Nr  r  r!  zexpected a digit, but found r   r[   )rG   rz   r   r   r   r&   r   )r#   r   r  r  r   r$  r  s          r   r&  z"Scanner.scan_yaml_directive_number  s    kkkk!!Ur S ,.rf5$$&	  S['C'aKF S['C'DKK&&v./Fr   c                P   | j                   j                  }| j                   j                  } |       dk(  r |         |       dk(  r| j                  |      } |       dk(  r |         |       dk(  r| j	                  |      }||f}| j
                  j                  |       |S )Nr  )rG   rz   r   scan_tag_directive_handlescan_tag_directive_prefixr@   r   )r#   r   r  r  handler   ret_vals          r   r  z Scanner.scan_tag_directive_value  s    kkkk!!eslE esl//
;eslE esl//
;6"""7+r   c                    | j                  d|      }| j                  j                         }|dk7  r)t        d|d|| j                  j	                               |S )N	directiver  r!  expected ' ', but found )scan_tag_handlerG   rz   r   r   r#   r   r  r   s       r   r-  z!Scanner.scan_tag_directive_handle  sa    $$[*=[[9,*2&1$$&	  r   c                    | j                  d|      }| j                  j                         }|dvr)t        d|d|| j                  j	                               |S )Nr2  r#  r!  r3  )scan_tag_urirG   rz   r   r   r5  s       r   r.  z!Scanner.scan_tag_directive_prefix  sc    !!+z:[[..,*2&1$$&	  r   c                |   | j                   j                  }| j                   j                  } |       dk(  r |         |       dk(  r |       dk(  r" |       t        vr |         |       t        vr |       }|t        vr)t	        d|d|| j                   j                               | j                          y )Nr  r	  r!  .expected a comment or a line break, but found rG   rz   r   r
  r   r   r  )r#   r   r  r  r   s        r   r  z#Scanner.scan_directive_ignored_line  s    kkkk!!eslE esl5C<%x' %x'UX,@G$$&	  	r   c                   | j                   j                  }| j                   j                         } |       }|dk(  rd}nd}| j                   j                          d} ||      }t	        |      r|dz  } ||      }t	        |      r|s,t        d||d|| j                   j                               | j                   j                  |      }| j                   j                  |       |dvr,t        d||d|| j                   j                               | j                   j                         }	 ||||	      S )	Nrq   aliasanchorr   r[   while scanning an r"  u     	
  ?:,[]{}%@`)rG   rz   r   r   r   r   r   )
r#   r   r  r   	indicatorr  r$  r   r  r   s
             r   r   zScanner.scan_anchor  sE    kk[[))+
E	DD[ $B'aKFVB $B' $TH-FrfM$$&	  ""6*F# ::$TH-FrfM$$&	  ;;'')%X66r   c                   | j                   j                  }| j                   j                         } |d      }d}|dk(  r:d}| j                   j                          | j                   j                  } |d      }|dk(  rd }| j                   j                  d       | j	                  d|      } |       dk7  r.t        d|d	 |       | j                   j                               | j                   j                          n|t        v rd }|}| j                   j                          ngd}d
}|dvr|dk(  rd}n|dz  } ||      }|dvr|}|r| j                  d|      }n|}| j                   j                          | j	                  d|      } |       }|dvr)t        d|d|| j                   j                               ||f}	| j                   j                         }
t        j                  |	||
      S )Nr[   rs   z!!<   tagru   zwhile parsing a tagzexpected '>' but found Fr#  Tzwhile scanning a tagr3  )
rG   rz   r   r   r7  r   r   r4  r8   TagToken)r#   r  r   r   short_handler/  suffixr$  
use_handler  r   s              r   r   zScanner.scan_tag  s   kk[[))+
V9LKK!++""CQB9FKK"&&uj9Fu|")-ceY7KK((*	  KK!%%F!FKK!FJ559!%J![ 55 "F--eZ@%##%&&uj9FU..&*2&1$$&	   ;;'')uj(;;r   c                   | j                   j                  }|dk(  rd}nd}g }| j                   j                         }| j                   j                          | j	                  |      \  }}| j                  |      }	| j                  dz   }
|R|
dk  r,|dvs&| j                  dk(  rt        | j                  dd      rd}
| j                         \  }}}t        |
|      }n#|
dk  rd}
|
|z   dz
  }| j                  |      \  }}d}| j                   j                  |k(  rw |       d	k7  rl|j                  |        |       d
v}d} ||      t        vr|dz  } ||      t        vr|j!                  | j                   j#                  |             | j                   j                  |       | j%                         }| j                  |      \  }}|dv r&|
dk(  r!| j'                         s| j)                         rn| j                   j                  |k(  r\ |       d	k7  rR|r|r|dk(  r|j!                  d       |r$|dk(  r|r |       d
vr|s%|j!                  d       n|j!                  |       nn%| j                   j                  |k(  r |       d	k7  rlg }|dv r|j!                  |       |du r|j                  |       n|dv r|j                  |       t+        j,                  dj/                  |      d|||      }| j                  -t        | j                  dd      }||	|j1                  |	g       t3        |      dkD  r2| j                  dt        | j                  dd       }|K|j4                  t3        |      z
  }|D ].  }|d   dk(  sJ | j6                  j9                  |d|       |dz  }0 | j;                         }|r:|j!                  d|d   j                  z  |d   z          | j;                         }|r:| j                  jt        | j                  dd      }|Q| j                   j                         }t+        j<                  dj/                  |      ||      }|j?                  |       |S )Nru   TFr[   z|>r  0top_level_block_style_scalar_no_indent_error_1_1 rf   r   r   
r  r   r   comment_handlingr6   ) rG   rz   r   r   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner;   rL   r-   r,   scan_block_scalar_indentationmaxscan_block_scalar_breaksr!   extendr
  r   r   r  r~   r   r8   ScalarTokenjoinadd_pre_commentsr1   r    commentsadd_blank_linerx   CommentTokenadd_post_comment)r#   r   rtr  foldedchunksr   chomping	incrementblock_scalar_comment
min_indentbreaks
max_indentr   r;   
line_breakleading_non_spacer$  trailingtokencomment_handlerr    xrc   comment_end_marks                            r   r   zScanner.scan_block_scalarK  sO   kkC<FF[[))+
 	"??
K)#BB:N [[1_
A~T!33v=KK!SUZ 
+/+M+M+O(FJZ0FA~
)+a/F#<<VDFH
 kk  F*su}MM&! #U 2Ff+X-! f+X-MM$++,,V45KK'--/J#<<VDFH}q ,,.$2I2I2K{{!!V+ &Z4%7MM$'jD05F35X]K]!c*MM*- S kk  F*su}Z !|#MM*%tMM&!&OOF# ""2776?E:xQVW;;"%dkk3EuMO&'3**,@+ABx=1{{&")$++7I4"P".#==3x=8D% " u},}44Q4@	" --/Ggaj&7&7 7'!* DE113  {{&")$++7I5"Q"* (,{{';';'=$$11"''(2C2:2BDG **73r   c                   | j                   j                  }d }d } |       }|dv r|dk(  rd}nd}| j                   j                           |       }|dv rt        |      }|dk(  r&t	        d|d| j                   j                               | j                   j                          n|dv rt        |      }|dk(  r&t	        d|d| j                   j                               | j                   j                           |       }|dv r$|dk(  rd}nd}| j                   j                           |       }|d	vr)t	        d|d
|| j                   j                               ||fS )Nz+-+TF
0123456789r   while scanning a block scalarz<expected indentation indicator in the range 1-9, but found 0r#  z7expected chomping or indentation indicators, but found )rG   rz   r   r&   r   r   )r#   r   r  r^  r_  r   s         r   rN  z$Scanner.scan_block_scalar_indicators  sj   kk	U:Sy KK!B\!G	>&7"Y,,.	  ##%<BIA~"3UKK((*	  KK!BTz9#H$H##%U../I"P$$&	  ""r   c                   | j                   j                  }| j                   j                  }d}d } |       dk(  r| |       z  } |         |       dk(  r |       dk(  r.|} |       t        vr| |       z  } |         |       t        vr |       }|t        vr)t	        d|d|| j                   j                               | j                          |S )NrJ  r  r	  rn  r9  r:  )r#   r   r  r  r   rc   r   s          r   rO  z&Scanner.scan_block_scalar_ignored_line  s    kkkk!!eslceOFE esl 5C<G%x'35  %x' UX/@G$$&	  	r   c                T   | j                   j                  }| j                   j                  }g }d}d}| j                   j                         } |       dv r |       dk7  rU|dk  r| j                   j                  }|j                  | j                                | j                   j                         }n6 |        | j                   j                  |kD  r| j                   j                  } |       dv r|dkD  r+||kD  r&| j                   j                         }t        d|      |||fS )Nr6   r       
  r  z9more indented follow up line than first in a block scalar)rG   rz   r   r   r!   r   r  r   )r#   r  r  r]  first_indentrc  r   r   s           r   rP  z%Scanner.scan_block_scalar_indentation  s
   kkkk!!
;;'')e..u|!##';;#5#5Ld2245;;//1;;%%
2!%!3!3J e.. !
\ 9--/JKZ  z8++r   c                j   g }| j                   j                  }| j                   j                  }| j                   j                         }| j                   j                  |k  r5 |       dk(  r+ |        | j                   j                  |k  r |       dk(  r+ |       dv r|j                  | j                                | j                   j                         }| j                   j                  |k  r5 |       dk(  r+ |        | j                   j                  |k  r |       dk(  r+ |       dv r||fS )Nr  
   
  )rG   rz   r   r   r!   r   r  )r#   r;   r]  r  r  r   s         r   rR  z Scanner.scan_block_scalar_breaks,  s    kkkk!!;;'')kk  6)ceslE kk  6)cesle--MM$..01{{++-H++$$v-#%3, ++$$v-#%3, e--
 xr   c                d   |dk(  rd}nd}| j                   j                  }g }| j                   j                         } |       }| j                   j                          |j	                  | j                  ||              |       |k7  rM|j	                  | j                  ||             |j	                  | j                  ||              |       |k7  rM| j                   j                          | j                   j                         }t        j                  dj                  |      d|||      S )Nrw   TFrJ  )
rG   rz   r   r   rS  scan_flow_scalar_non_spacesscan_flow_scalar_spacesr8   rT  rU  )r#   r   doubler  r]  r   quoter   s           r   r   zScanner.scan_flow_scalar;  s     C<FFkk[[))+
d66vzJKeunMM$66vzJKMM$::6:NO eun 	;;'')!!"''&/5*hPUVVr   r  rf   r  rL  bt	nrK  vfrer  rw   /\N   _    Lu    Pu    rB        )ri  uUc                   g }| j                   j                  }| j                   j                  }	 d} ||      dvr|dz  } ||      dvr|dk7  r2|j                  | j                   j	                  |              ||        |       }|s+|dk(  r& |d      dk(  r|j                  d        |d       n|r|dk(  s|s|dv r|j                  |        |        nf|ra|dk(  r[ |         |       }|| j
                  v r'|j                  | j
                  |           |        n|| j                  v r| j                  |   } |        t        |      D ]?  } ||      dvst        d	|d
|dd ||      | j                   j                                t        | j                   j	                  |      d      }	|j                  t        |	              ||       na|dv r2| j                          |j                  | j                  ||             n+t        d	|d|| j                   j                               |S )Nr   u    
'"\ 	  r[   rv   rB  z"\r  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarzexpected escape sequence of dz hexdecimal numbers, but found    u
   
  zfound unknown escape character )rG   rz   r   r   r   ESCAPE_REPLACEMENTSESCAPE_CODESranger   r   r&   chrr  rS  scan_flow_scalar_breaks)
r#   rx  r   r]  r  r  r$  r   kcodes
             r   rv  z#Scanner.scan_flow_scalar_non_spacesj  s*   kkkk!!Ff+%EE! f+%EE{dkk0089FBbCiCFcMc"AR3Y2;b!B$JU111MM$":":2">?E4,,,!..r2FE"6] q6)AA". G *">vaj IAADQ
!L $ 4 4 6#  t{{11&92>DMM#d),K11((*MM$">">vz"RS&?"9"@,,.	  ] r   c                &   | j                   j                  }g }d} ||      dv r|dz  } ||      dv r| j                   j                  |      }| j                   j                  |        |       }|dk(  r&t	        d|d| j                   j                               |dv r_| j                         }| j                  ||      }	|dk7  r|j                  |       n|	s|j                  d	       |j                  |	       |S |j                  |       |S )
Nr   r   r[   rf   while scanning a quoted scalarzfound unexpected end of streamrt  rK  r  )
rG   rz   r   r   r   r   r  r  r   rS  )
r#   rx  r   r  r]  r$  whitespacesr   rd  rb  s
             r   rw  zScanner.scan_flow_scalar_spaces  s   kk&kU"aKF &kU"kk((0F#U:00$$&	  ))--/J11&*EFT!j)c"MM&!  MM+&r   c                   g }| j                   j                  }| j                   j                  }	 | j                   j                  d      }|dk(  s|dk(  r4 |d      t        v r&t        d|d| j                   j                                |       dv r |         |       dv r |       dv r |j                  | j                                n|S )Nr   r   r   r  z#found unexpected document separatorr   rt  )	rG   rz   r   r   r   r   r   r   r  )r#   rx  r   r]  r  r  r   s          r   r  zScanner.scan_flow_scalar_breaks  s    kkkk!! [[''*F%6U?ABT8T"49KK((*	  %5. %5.u..d2245! r   c                j   | j                   j                  }| j                   j                  }g }| j                   j                         }|}| j                  dz   }g }	 d} |       dk(  rnt	  ||      }		 |	dk(  r ||dz         t
        vrnP|	dk(  r| j                  dk7  rn;|	t
        v s2| j                  s|	dk(  r ||dz         t
        v s| j                  r|	d	v rn|dz  }v| j                  rA|	dk(  r< ||dz         d
vr/ ||       t        d|d| j                   j                         d      |dk(  rnd| _	        |j                  |       |j                  | j                   j                  |              ||       | j                   j                         }| j                  ||      }|r/ |       dk(  s%| j                  s| j                   j                  |k  rnt        j                   dj#                  |      d||      }
| j$                  t'        | j$                  dd      }|F|rB|d   dk(  r:t        j(                  dj#                  |      dz   ||      }|
j+                  |       |
S |dur>|j,                  dz   }|D ]*  }	|	dk(  s	| j.                  j1                  dd|       |dz  }, |
S )Nr[   Tr   r	  Frp   ro   r  z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.rJ  rM  rK  )rG   rz   r   r   r;   r   rL   r4   r   r=   rS  r   r   scan_plain_spacesr!   r8   rT  rU  r,   r-   rY  rZ  r    rW  rX  )r#   r  r  r]  r   r   r;   spacesr$  r   rg  rh  rc   r    s                 r   r   zScanner.scan_plain  s    kkkk!![[))+
q
 Fu|[3Y3vz?:L#L3Y4#B#Bf#L,, OO#I
O/AAB)O!% * #I
O+KKF"3*KK((*#  {$)D!MM&!MM$++,,V45K{{++-H++FJ?F5C<DKK,>,>,Gi l ""2776?D*hO ;;"%dkk3EuMO&fQi4/$11"''&/D2H*V^_G**73  !-!*  "BTz44T1dC	"
 r   c                H   | j                   j                  }| j                   j                  }g }d} ||      dv r|dz  } ||      dv r| j                   j                  |      }| j                   j                  |        |       }|dv r| j	                         }	d| _        | j                   j                  d      }
|
dk(  s|
dk(  r |d      t        v ry g } |       d	v ro |       dk(  r |        nS|j                  | j	                                | j                   j                  d      }
|
dk(  s|
dk(  r |d      t        v ry  |       d	v ro|	d
k7  r|j                  |	       n|s|j                  d       |j                  |       |S |r|j                  |       |S )Nr   r  r[   rt  Tr   r   r   rq  rK  )	rG   rz   r   r   r  r=   r   r   rS  )r#   r;   r   r  r  r]  r$  r  r   rd  r   rb  s               r   r  zScanner.scan_plain_spaces-  s    kkkk!!&kS aKF &kS kk((0F#U''--/J$(D![[''*F%6U?ABT8TF%225C<EMM$"6"6"89![[//2F%6U?AJ\@\ %22 T!j)c"MM&!  MM+&r   c                   | j                   j                  } |       }|dk7  r,t        d||d|| j                   j                               d} ||      }|dk7  rd|cxk  rdk  s n d|cxk  rd	k  sn d
|cxk  rdk  sn |dv r<|dz  } ||      }d|cxk  rdk  rn d|cxk  rd	k  r'n d
|cxk  rdk  r5n |dv r<|dk7  rG| j                   j	                  |       t        d||d|| j                   j                               |dz  }| j                   j                  |      }| j                   j	                  |       |S )Nrs   r>  zexpected '!', but found r[   r  r  r  r  r  r  r   z-_zexpected '!' but found )rG   rz   r   r   r   r   )r#   r  r   r  r   r$  r  s          r   r4  zScanner.scan_tag_handleR  s]    kkU9$TH-*2&1$$&	  [9"s"cR&63&6#:Js:JbTXj![ "s"cR&63&6#:Js:JbTXj Sy##F+"(1-bV4KK((*	  aKF""6*F#r   c                X   | j                   j                  }g }d} ||      }d|cxk  rdk  s4n d|cxk  rdk  s'n d|cxk  rdk  sn |dv s| j                  d	kD  r|d
k(  r|dk(  ri|j                  | j                   j	                  |             | j                   j                  |       d}|j                  | j                  ||             n|dz  } ||      }d|cxk  rdk  rn d|cxk  rdk  rn d|cxk  rdk  rn |dv r| j                  d	kD  r|d
k(  r|dk7  rG|j                  | j                   j	                  |             | j                   j                  |       d}|s,t        d||d|| j                   j                               dj                  |      S )Nr   r  r  r  r  r  r   z-;/?:@&=+$,_.!~*'()[]%r  r	  rg   r[   zwhile parsing an zexpected URI, but found rJ  )
rG   rz   rL   r   r   r   scan_uri_escapesr   r   rU  )r#   r  r   r  r]  r$  r   s          r   r7  zScanner.scan_tag_urir  s    kk[2bCbC--0069rSySydkk0089##F+d33D*EF!VB 2bCbC--0069rSy Q;MM$++,,V45KK'F#D8,*2&1$$&	  wwvr   c           	     j   | j                   j                  }| j                   j                  }g }| j                   j                         } |       dk(  r |        t	        d      D ]>  } ||      dvst        d||d ||      | j                   j                                |j                  t        | j                   j                  d      d              |d        |       dk(  r	 t        |      j                  d      }|S # t        $ r}	t        d||t        |	      |      d }	~	ww xY w)Nrg   rB  r  r>  @expected URI escape sequence of 2 hexdecimal numbers, but found r  utf-8rG   rz   r   r   r  r   r   r&   r   bytesdecodeUnicodeDecodeErrorstr)
r#   r  r   r  r  
code_bytesr"   r  r  excs
             r   r  zScanner.scan_uri_escapes  s.   kkkk!! "
{{##%eslE1X q6!99&,TH5"%%(VJ0,,.  c$++"4"4Q"7<=F esl	Z*%,,W5E  " 	Z!3D8<j#c(TXYY	Zs   .D
 
	D2D--D2c                *   | j                   j                         }|dv rU| j                   j                  d      dk(  r| j                   j                  d       y| j                   j                          y|dv r| j                   j                          |S y)N   
rB  
rK       rJ  rG   rz   r   r   )r#   r   s     r   r  zScanner.scan_line_break  s     [[{{!!!$.##A&  ##%>!KK!Ir   r   )r,   r%   r'   r(   )r'   r&   r'   r(   r'   r%   rS   r%   r'   r   r'   r   rc   r%   r'   r(   )r!   r%   r'   r(   )r!   r&   r'   r   )r   r%   r'   r(   )r   r%   r   Textr'   r(   )r   r%   r'   r(   r   r%   r'   r%   )r   r%   r'   r(   )r   r%   r'   r%   Fr   r%   r[  zOptional[bool]r'   r%   )r;   r&   r'   r%   )r   r%   r'   r%   )rx  r%   r   r%   r'   r%   )r;   r%   r   r%   r'   r%   r  r%   r   r%   r'   r%   )Rr   r   r   r$   propertyr4   r.   rG   rL   rU   rX   r]   rO   rd   rP   r`   r_   r   r   ry   r   r9   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   r~   r   r   r   r   r   rx   r   r  r  r&  r  r-  r.  r  r   r   r   rN  rO  rP  rR  r   r  r  rv  rw  r  r   r  r4  r7  r  r  r   r   r   r
   r
   G   s    " & &58n ( ( . .
"&
"k
^ 5&=.;"A0_	2A?=UT=DC=$	HI<B6:Dx@A,++:**9.999$ 
H%NH*6!6&&,7\6<p{z0#d2,2 W0TV 	V 	V	
 	f 	V 	V 	V 	V 	V 	V 	S 	S 	d 	V  	V!" 	X#$ 	X%* +L3j:.Xt#J@!F2r   r
   c                  X    e Zd ZddZddZddZddZddZddZdddZ	dddZ
dd	Zy
)r   c                    | j                         r!| j                          | j                         r!| j                          t        | j                        dkD  r%|sy|D ]  }t        | j                  d   |      s y yrN   )rO   rP   _gather_commentsr1   r8   rQ   rR   s      r   rU   zRoundTripScanner.check_token  st    ##%""$ ##%t{{a!  dkk!nf5  r   c                    | j                         r!| j                          | j                         r!| j                          t        | j                        dkD  r| j                  d   S y rW   )rO   rP   r  r1   r8   r3   s    r   rX   zRoundTripScanner.peek_token  sV    ##%""$ ##%t{{a;;q>!r   c                   g }| j                   s|S t        | j                   d   t         j                        rA| j                   j                  d      }| xj                  dz  c_        |j                  |       | j                         r| j                          | j                   s|S t        | j                   d   t         j                        rA| xj                  dz  c_        | j                   j                  d      }|j                  |       | j                         rt        |      dk\  r| j                   d   j                  |       | j                  s*t        | j                         dk  r| j                          yyy)zCcombine multiple comment lines and assign to next non-comment-tokenr   r[   rB  N)r8   rQ   rY  r\   r:   r   rO   rP   r1   rV  r7   )r#   rW  rc   s      r   r  z!RoundTripScanner._gather_comments  s!    {{Odkk!nf&9&9:kkooa(G"OOG$##%""$;;$++a.&*=*=>!!Q&!++//!,( ##% x=AKKN++H5yyS-1""$ 2yr   c                b
   | j                         r!| j                          | j                         r!| j                          t        | j                        dkD  rt        | j                        dkD  rt        | j                  d   t        j                  t        j                  t        j                  t        j                  f      rt        | j                  d   t        j                        r| j                  d   j                  j                  | j                  d   j                  j                  k(  rW| xj                  dz  c_        | j                  j                  d      }| j                          t        | j                        dkD  rt        | j                  d   t        j                        r| xj                  dz  c_        | j                  j                  d      }|j                   d|j                  j"                  z  z   |j                   z   |_        | j                          t        | j                        dkD  r(t        | j                  d   t        j                        r| j                  d   j%                  |       not        | j                        dkD  rVt        | j                  d   t        j                        r.t        | j                  d   t        j                        r| j                  d   j                  j                  | j                  d   j                  j                  k7  r| xj                  dz  c_        | j                  j                  d      }d|j                  j                  | j                  d   j                  j                  z
  z  d|j                  j"                  z  z   |j                   z   |_        | j                  d   j%                  |       | j                          t        | j                        dkD  rt        | j                  d   t        j                        r| xj                  dz  c_        | j                  j                  d      }|j                   d|j                  j"                  z  z   |j                   z   |_        | j                          t        | j                        dkD  r(t        | j                  d   t        j                        r| xj                  dz  c_        | j                  j                  d      S y )Nr   r[   r  rK  )rO   rP   r  r1   r8   rQ   rT  r   r   r   rY  r   r    r   r:   r\   r  r!   rZ  )r#   cc1s      r   r]   zRoundTripScanner.get_token  s   ##%""$ ##%t{{a DKK 1$KKN''):):F<W<W//1
 t{{1~v/B/BCKKN++00DKKN4M4M4R4RR!!Q&!KKOOA&&&($++&*z$++a.&J]J]/^%%*%+Bggr}}/C/C)CDrxxOAG**,	 $++&*z$++a.&J]J]/^
 A//2DKK 1$t{{1~v/A/ABt{{1~v/B/BCKKN++00DKKN4M4M4R4RR!!Q&!KKOOA&ALL--A0G0G0L0LLMQ\\0002gg 
 A//2&&($++&*z$++a.&J]J]/^%%*%+Bggr}}/C/C)CDrxxOAG**,	 $++&*z$++a.&J]J]/^
 ";;??1%%r   c                    |\  }}}|r|d   dk(  r|d d }|r	|d   dk(  r| j                   j                  t        j                  |||             y )Nr6   r  )r8   r   rY  )r#   rc   r  r   r   s        r   rd   zRoundTripScanner.fetch_comment)  s\    &-#z8b	S( #2JE b	S( 	6..uj(KLr   c                N   | j                   j                  }| j                   j                  }| j                   j                  dk(  r |       dk(  r |        d}| j                  dkD  rdnd}|s |       |v r |         |       |v r |       }|dk(  r| j                   j                         }|} |        |t        vr' |       }|dk(  r|dz  }n||z  } |        |t        vr'| j                         }t        |      dkD  r$||z  }| j                         }t        |      dkD  r$| j                   j                         }| j                  sd	| _	        |||fS | j                         d
k7  r| j                   j                         }| j                  sd	| _	         |       }|dk(  r{| j                   j                         }d
}|r| j                  d	      }||z  }|r |       dk(  r|j                  dd      d   dz   }| j                   j                         }|||fS d	}|sy )Nr   r  Fr   r  r	  rf   rK  TrJ  )
empty_liner[   )rG   rz   r   r   r4   r   r
  r  r1   r=   rsplit)	r#   r  r  r  r  r   r   rc   r   s	            r   rx   z#RoundTripScanner.scan_to_next_token3  s   & kkkk!!;;!cex&7E#2e%;& %;&BSy![[113
(BTz  4rMGE ( ))+"gkrMG--/B "gk  ;;//1,0D)
H44##%+![[113
,0D)U:!%!5!5!7J G!11T1B2  u|")..q"9!"<t"C#{{335H"J88Y Z r   c                n   | j                   j                         }|dv rU| j                   j                  d      dk(  r| j                   j                  d       y| j                   j                          y|dv r| j                   j                          |S |r |dv r| j                   j                          |S y)Nr  rB  r  rK  r  z	 rJ  r  )r#   r  r   s      r   r  z RoundTripScanner.scan_line_break{  s     ;;##%{{!!!$.##A&  ##%>!KK!IB%KKK!Ir   c                2    t         j                  | ||      S )N)r[  )r
   r   )r#   r   r[  s      r   r   z"RoundTripScanner.scan_block_scalar  s    ((u(<<r   c           	        | j                   j                  }| j                   j                  }g }d}| j                   j                         } |       dk(  r|dz  } |        t	        d      D ]>  } ||      dvst        d||d ||      | j                   j                                |j                  t        | j                   j                  d      d             || j                   j                  d      z  } |d        |       dk(  r	 t        |      j                  d      }	|S # t        $ r}
t        d||t        |
      |      d	}
~
ww xY w)
z>
        The roundtripscanner doesn't do URI escaping
        rJ  rg   rB  r  r>  r  r  r  Nr  )r#   r  r   r  r  r  chunkr"   r  r  r  s              r   r  z!RoundTripScanner.scan_uri_escapes  sW   
 kkkk!! "
{{##%eslSLEE1X q6!99&,TH5"%%(VJ0,,.  c$++"4"4Q"7<=T[[''**EF esl	Zj!((1A  " 	Z!3D8<j#c(TXYY	Zs   D/ /	E8EENr  r  r  r  )r  r   r'   r  )Tr  r  )r   r   r   rU   rX   r  r]   rd   rx   r  r   r  r   r   r   r   r     s3    %04lMFP0=r   r   c                  B    e Zd ZdZd	dZd
ddZddZddZddZddZ	y)CommentBase)r  r    r!   usedfunctionflineufunulinec                   || _         || _        || _        d| _        t        dk7  rZdd l}|j                  |j                         d   d         }|j                  | _        |j                  | _
        d | _        d | _        y y )Nr  r   r   )r  r    r!   r  r   inspectgetframeinfostackr  linenor  r  r  )r#   r  r    r!   r  infos         r   r$   zCommentBase.__init__  sq    
		Q;''(:1(=>D MMDMDJDIDJ r   c                    || _         t        dk7  rLdd l}|j                  |j	                         d   d         }|j
                  | _        |j                  | _        y y rZ   )	r  r   r  r  r  r  r  r  r  )r#   r  r  r  s       r   set_usedzCommentBase.set_used  sN    	Q;''(:1(=>DDIDJ r   c                    d| _         y )Nrt   )r  r3   s    r   set_assignedzCommentBase.set_assigned  s	    	r   c                    | j                    S r   r  r3   s    r   __str__zCommentBase.__str__  s    **r   c                    | j                   S r   r  r3   s    r   __repr__zCommentBase.__repr__  s    ** r   c                    | j                   dz   }| j                  }| | j                   d| j                  dd| j                  dd|dd| j
                   d| j                   d| j                   d| j                   S )Nrw   r  2rp   z<2z "40s)	r  r  r  r    r!   r  r  r  r  )r#   xvr  s      r   r  zCommentBase.info  s{    ZZ#yyfTYYKq1Qt{{2.>bC}}oQtzzl!DII;a

|E	
r   Nr  r%   r    r%   r!   r%   r'   r(   )rl  )r  r%   r'   r(   r  r'   r  )
r   r   r   	__slots__r$   r  r  r  r  r  r   r   r   r  r    s%    YI%!
r   r  c                  $     e Zd ZdZd fdZ xZS )
EOLCommentEOLCc                (    t         |   |||       y r   superr$   r#   r  r    r!   	__class__s       r   r$   zEOLComment.__init__      f-r   r  r   r   r   r  r$   __classcell__r  s   @r   r  r        D. .r   r  c                  $     e Zd ZdZd fdZ xZS )FullLineCommentFULLc                (    t         |   |||       y r   r  r  s       r   r$   zFullLineComment.__init__  r  r   r  r  r  s   @r   r  r    r  r   r  c                  $     e Zd ZdZd fdZ xZS )BlankLineCommentBLNKc                (    t         |   |||       y r   r  r  s       r   r$   zBlankLineComment.__init__  r  r   r  r  r  s   @r   r  r    r  r   r  c                  v    e Zd ZddZddZddZddZddZddZddZ	ddZ
ddd	Zdd
ZddZddZddZy)ScannedCommentsc                     i | _         g | _        y r   )rW  unusedr3   s    r   r$   zScannedComments.__init__   s    r   c                    |j                  d      dk(  r
|d   dk(  sJ d|vsJ t        |d d ||      x| j                  |<   }| j                  j	                  |       |S NrK  r[   r6   )countr  rW  r  r   r#   rc   r!   r    retvals        r   add_eol_commentzScannedComments.add_eol_comment  sl    ==!#2;$&&&w&&&'1'#2,f'MMdf4 r   c                    |j                  d      dk(  r|d   dk(  sJ || j                  vsJ t        |d d ||      x| j                  |<   }| j                  j	                  |       |S r
  )r  rW  r  r  r   r  s        r   rX  zScannedComments.add_blank_line  so    }}T"a'GBK4,???4==((('7dF'SSdf4 r   c                    |j                  d      dk(  r|d   dk(  sJ t        |d d ||      x| j                  |<   }| j                  j	                  |       |S r
  )r  r  rW  r  r   r  s        r   add_full_line_commentz%ScannedComments.add_full_line_comment  s_    }}T"a'GBK4,??? (7ws|T6'RRdf4 r   c                     | j                   |   S r   )rW  )r#   idxs     r   __getitem__zScannedComments.__getitem__   s    }}S!!r   c                n    ddj                  d | j                  j                         D              z   dz   S )NzParsedComments:
  z
  c              3  N   K   | ]  \  }}|d d|j                            yw)r  r  N)r  ).0r  ri  s      r   	<genexpr>z*ScannedComments.__str__.<locals>.<genexpr>&  s'     [	fQZq
3[s   #%rK  rU  rW  itemsr3   s    r   r  zScannedComments.__str__#  s7    !kk[T]]EXEXEZ[\]	
r   c                    t        | j                  j                               d   \  }}|dd|j                          dS )Nr6   r  r  rK  )r   rW  r  r  )r#   r  ri  s      r   lastzScannedComments.last*  s=    ,,./3	1QVVXJb))r   c                2    t        | j                        dkD  S rW   )r1   r  r3   s    r   any_unprocessedzScannedComments.any_unprocessed.  s    4;;!##r   c              #    K   t        | j                        dkD  rt        dk7  rdd l}|r| j                  j	                  d      n| j                  d   }|j                  |j                         d   d         }t        d|| j                  |   j                  |j                  |j                         | j                  |   f |r| j                  |   j                          t        | j                        dkD  ry y w)Nr   r[   using)r1   r  r   r  r\   r  r  r   rW  r  r  r  r  )r#   user  firstr  s        r   unprocessedzScannedComments.unprocessed6  s     $++"{.1*t{{1~++GMMOA,>q,ABe(<(B(BDMMSWS^S^_u---e$--/ $++"s   C;D >D c                .   |j                   j                  }t        dk7  rVdd l}|j	                  |j                         d   d         }t        d|| j                  |j                  |j                         d}| j                  r| j                  d   |k  rd}| j                  j                  d      }t        dk7  rt        d|       | j                  |   j                          |j                  |       | j                  r| j                  d   |k  r|S )Nr   r[   
assign_preFTzassign_pre < )r   r    r   r  r  r  r   r  r  r  r\   rW  r  add_comment_prer#   rg  
token_liner  r  gobbledr"  s          r   r%  zScannedComments.assign_preB  s    %%**
Q;''(:1(=>DL*dkk4==$++Vkkdkk!nz9GKKOOA&E{/MM% ))+!!%( kkdkk!nz9 r   c                   	 | j                   d   }t        | j                  |   t              sy d}||    j
                  j                  |kD  st        ||    |j                        r>|dz  }||    j
                  j                  |kD  r#t        ||    |j                        r>t        dk7  rt        d|       t        |      |kD  r8t        ||    |j                        rt        ||dz       |j                        ry 	 t        ||    |j                        rt        ||dz       |j                        ro	 | j                   j                  d      }| j                  |   j                          t        dk7  rt        d||t               ||    j!                  |t               y 	 t        ||    |j                        r}t        ||dz       |j                  |j$                  f      rT	 | j                   j                  d      }| j                  |   j                          ||    j!                  |t&               y |D ]  }t        d|        t        dk7  rt        dt)        ||                 dd l}|j-                  d       y # t        $ r Y y w xY w# t        $ r t"        w xY w# t        $ r t        dk7  rt        d       Y %w xY w# t        $ r t"        w xY w# t        $ r t        dk7  rt        d       Y w xY w)	Nr   r[   idx1z>>>>>aIndexError1IndexError2ztt-znot implemented EOL)r  r   rQ   rW  r  r   r    r   r   r   r1   rT  r   r\   r  KEYCMNTadd_comment_eolrb   r   	VALUECMNTtypesysexit)r#   r8   comment_liner  eol_idxr|  r2  s          r   
assign_eolzScannedComments.assign_eolS  s   	;;q>L $--5zBcTl%%**\9ZC4L&++>
 1HC cTl%%**\9ZC4L&++>
 Q;FC K#63$<););<6C!G*-v/A/AB	&#,(:(:;
qz"FOOA."kkooa0GMM'*335{#w@C4L00'B 
	&#,(:(:;
qz"V%6%68N8N$OA."kkooa0GMM'*335C4L00)D 
  	AE1	Q;)4t+=>o  		6 " .--.  	{&	 " .--.  	{&	s\   J 7J- :A-J )AK$ -AK 	JJJ**J- -KKK!!K$ $LLc                .   |j                   j                  }t        dk7  rVdd l}|j	                  |j                         d   d         }t        d|| j                  |j                  |j                         d}| j                  r| j                  d   |k  rd}| j                  j                  d      }t        dk7  rt        d|       | j                  |   j                          |j                  |       | j                  r| j                  d   |k  r|S )Nr   r[   assign_postFTzassign_post < )r   r    r   r  r  r  r   r  r  r  r\   rW  r  add_comment_postr'  s          r   r8  zScannedComments.assign_post  s    %%**
Q;''(:1(=>DM:t{{DMM4;;Wkkdkk!nz9GKKOOA&E{(%0MM% ))+""5) kkdkk!nz9 r   c                b    dj                  d | j                  j                         D              S )NrJ  c              3  r   K   | ]/  \  }}|j                   d k(  sd|dd |j                          d 1 yw)r  z  r  rK  N)r  r  )r  indri  s      r   r  z2ScannedComments.str_unprocessed.<locals>.<genexpr>  s6     \63affX[mr#a!&&(2&\s   77r  r3   s    r   str_unprocessedzScannedComments.str_unprocessed  s(    ww\T]]5H5H5J\
 	
r   N)r#   r%   r'   r(   )rc   r%   r!   r%   r    r%   r'   r%   )r  r%   r'   r%   r  r  r  r  )r!  r%   r'   r%   )rg  r%   r'   r%   )r8   r%   r'   r%   )r   r   r   r$   r  rX  r  r  r  r  r  r#  r%  r6  r8  r=  r   r   r   r  r    sD    "
*$
0":x"
r   r  c                  H     e Zd Zd fdZddZd	dZd
dZd
dZddZ xZ	S )RoundTripScannerSCc                N    t        |   |i | | j                  J d | _        y r   )r  r$   r,   rW  )r#   argr   r  s      r   r$   zRoundTripScannerSC.__init__  s.    #$${{&&& r   c                   | j                         r!| j                          | j                         r!t        | j                        dkD  rt	        | j                  d   t        j
                        r)| j                  j                  | j                  d          n(| j                  j                  | j                  d          | xj                  dz  c_	        | j                  j                  d      S y rZ   )rO   rP   r1   r8   rQ   r   rW  r8  r%  r:   r\   r3   s    r   r]   zRoundTripScannerSC.get_token  s    ##%""$ ##%t{{a$++a.&*>*>?))$++a.9((Q8";;??1%%  r   c                0   | j                    t               x| j                  _        | _         | j                  ryt        | j                        dk(  ry| j                          | j                         | j                  k(  ryt        | j                        dk  ry| j                  d   j                  j                  | j                  d   j                  j                  k(  ry	 t        dk7  r^t        dt        | j                               | j                  D ]  }t        |        t        | j                   j                                | j                   j                  | j                  d          | j                   j!                  | j                         y)NFr   TrB  r6   z-x--)rW  r  r,   parsed_commentsr7   r1   r8   r_   r`   r:   r   r    r   r   r=  r%  r6  )r#   r|  s     r   rO   z#RoundTripScannerSC.need_more_tokens  s0   == :I:KKDKK'$-99t{{q  	'')((*d.?.??t{{a;;q>$$))T[[_-G-G-L-LL{DKK 01 AAJ 5578  Q0  -r   c                   | j                   j                  }| j                   j                  }| j                   j                  dk(  r |       dk(  r |        | j                   j	                         }d}|sU |       dk(  r |         |       dk(  r |       }|dk(  r| j                   j	                         }|} |        |t
        vr' |       }|dk(  r|dz  }n||z  } |        |t
        vr'|j                  dk(  r2| j                  j                  ||j                  |j                         n3| j                  j                  ||j                  |j                         d}| j                          | j                  sd	| _        y t        | j                               r$| j                  sd	| _        | j                          y d	}|sUy )
Nr   r  Fr  r	  rf   rK  rJ  T)rG   rz   r   r   r   r
  r!   rW  r  r    r   scan_empty_or_full_line_commentsr4   r=   r   r  r  )	r#   r  r  r   r  r   comment_start_markrc   r  s	            r   rx   z%RoundTripScannerSC.scan_to_next_token  s   kkkk!!;;!cex&7E[[))+
%3, %3,BSy%)[[%9%9%;"(BTz  4rMGE ( $$)MM77!3!:!:<N<S<S MM11!3!:!:<N<S<S !G557,0D)D((*+,0D)557 i j r   c                p   | j                   j                         }|j                  dk(  sJ d}d }d }| j                   j                         }	 |dv r| j                   j	                  d      dk(  r| j                   j                  d       n| j                   j                          |9|dz  }| j                  j                  ||j                  |j                         d }n6|dz  }| j                  j                  ||j                  |j                         d}| j                   j                         }| j                   j                         }|-|dv r||z  }n(|dk(  r| j                   j                         }d}ny ||z  }| j                   j                          | j                   j                         }k)	Nr   rJ  rt  rB  r  rK  r   r	  )
rG   r   r!   rz   r   r   rW  r  r    rX  )r#   blmarkblanksrc   r"   r   s         r   rF  z3RoundTripScannerSC.scan_empty_or_full_line_comments	  sy   %%'}}!!![[++;;%%a(F2KK''*KK'')&tOGMM77diiX"GdNFMM00T--/[[%%';bLF3Y;;//1D!G 2KK!!!#B= r   c                T   | j                   j                  }| j                   j                  }d}d } |       dk(  r| |       z  } |         |       dk(  r |       dk(  rMd}| j                   j                         } |       t        vr| |       z  } |         |       t        vr|dz  } |       }|t        vr)t        d|d|| j                   j                               |1| j                  j                  |j                  |j                         | j                          y )NrJ  r  r	  rK  rn  r9  )rG   rz   r   r   r
  r   rW  r  r!   r    r  )r#   r   r  r  r   rc   r"   r   s           r   rO  z1RoundTripScannerSC.scan_block_scalar_ignored_line;	  s   kkkk!!eslceOFE esl 5C<G;;'')D%x'35  %x' tOGUX/@G$$&	  MM))'4;;		Jr   )rA  r%   r   r%   r'   r(   r  r  r  r  )
r   r   r   r$   r]   rO   rx   rF  rO  r  r  s   @r   r?  r?    s#    
&6=~%$Nr   r?  )r   r%   r   r%   r'   r%   )'
__future__r   ruamel.yaml.errorr   ruamel.yaml.tokensyamlr8   ruamel.yaml.docinfor   ruamel.yaml.compatr   r   r   r	   typingr%   DictOptionalListUnionr  Tuple__all__r
  r   r  r   r   r   r
   r   r0  r.  r  r  r  r  r  r?  r   r   r   <module>rY     s    "< . # # ' M M : $0 
 
Q;$	? 	 z zz3ow oh 	

)
 )
X. ..k ..{ .d
 d
Np pr   