
    =OOfZ                   V   d dl mZ d dlmZmZ d dl d dlmZ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)MarkedYAMLErrorCommentMark)*)VersionTag)check_anchorname_char_debugnprintnprintf)ScannerRoundTripScannerScannerErroru   
   u    
 	   	c                     t        | i |S N)r   )argskws     T/var/www/premiumrankchecker/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)doner5   tokensfetch_stream_starttokens_takenindentindentsallow_simple_keypossible_simple_keysyaml_versiontag_directivesr6   s    r   r1   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_readerr6   s    r   rJ   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 rE   )rI   r/   resolverprocessing_versionr6   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_tokensr4   r;   
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   )rR   rS   r4   r;   r6   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      )rR   rS   r4   r;   r=   popr6   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)r:   r4   r;   stale_possible_simple_keysnext_possible_simple_keyr=   r6   s    r   rR   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 %-.[{]},?:r   &!|>'"z!while scanning for the next tokenzfound character z that cannot start any token)%scan_to_next_tokenrg   rb   unwind_indentrJ   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_tagr7   fetch_literalfetch_foldedfetch_singlefetch_doublecheck_plainfetch_plainr   get_mark)r&   rf   chs      r   rS   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   )rA   r    )r&   min_token_numberlevelkeys       r   rc   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 ':')	listrA   r#   rJ   r"   r!   r   r%   r   )r&   r   r   s      r   rb   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   )r7   r>   rJ   r$   r@   remove_possible_simple_keyr=   r4   r;   r   r"   r#   r   rA   )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   )r7   rA   r!   r   r%   rJ   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  ro| j                  j	                         }| j
                  j                         | _        | j                  j                  t        ||             | j                  |kD  rny y r   )
boolr7   r>   rJ   r   r?   r_   r;   appendBlockEndToken)r&   r$   r%   s      r   r{   zScanner.unwind_indent  sn       kkF";;'')D,,**,DKKK}T489 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
                               y )N)encoding)rJ   r   r;   r   StreamStartTokenr   r&   r%   s     r   r<   zScanner.fetch_stream_start  s<     {{##%+D$AUAUVWr   c                    | j                  d       | j                          d| _        i | _        | j                  j                         }| j                  j                  t        ||             d| _	        y )Nr9   FT)
r{   r   r@   rA   rJ   r   r;   r   StreamEndTokenr:   r   s     r   r}   zScanner.fetch_stream_end  s^    2'') %$&!{{##%>$56	r   c                    | j                  d       | j                          d| _        | j                  j	                  | j                                y )Nr9   F)r{   r   r@   r;   r   scan_directiver6   s    r   r   zScanner.fetch_directive  sC    2 	'') % 	4..01r   c                .    | j                  t               y r   )fetch_document_indicatorDocumentStartTokenr6   s    r   r   zScanner.fetch_document_start  s    %%&89r   c                .    | j                  t               y r   )r   DocumentEndTokenr6   s    r   r   zScanner.fetch_document_end  s    %%&67r   c                6   | j                  d       | j                          d| _        | j                  j	                         }| j                  j                  d       | j                  j	                         }| j                  j                   |||             y )Nr9   F   )r{   r   r@   rJ   r   forwardr;   r   )r&   
TokenClass
start_markend_marks       r   r   z Scanner.fetch_document_indicator  sw    2 	'') % [[))+
A;;''):j(;<r   c                2    | j                  t        d       y )Nrm   to_push)fetch_flow_collection_startFlowSequenceStartTokenr6   s    r   r   z!Scanner.fetch_flow_sequence_start  s    (()?(Mr   c                2    | j                  t        d       y )Nrn   r   )r   FlowMappingStartTokenr6   s    r   r   z Scanner.fetch_flow_mapping_start  s    (()>(Lr   c                H   | j                          | j                  j                  |       d| _        | j                  j                         }| j                  j                          | j                  j                         }| j                  j                   |||             y NT)r   r5   r   r@   rJ   r   r   r;   )r&   r   r   r   r   s        r   r   z#Scanner.fetch_flow_collection_start  sw    %%'  ) $[[))+
;;''):j(;<r   c                .    | j                  t               y r   )fetch_flow_collection_endFlowSequenceEndTokenr6   s    r   r   zScanner.fetch_flow_sequence_end  s    &&';<r   c                .    | j                  t               y r   )r   FlowMappingEndTokenr6   s    r   r   zScanner.fetch_flow_mapping_end  s    &&':;r   c                f   | j                          	 | j                  j                         }d| _        | j
                  j                         }| j
                  j                          | j
                  j                         }| j                  j                   |||             y # t        $ r Y w xY wNF)
r   r5   r_   
IndexErrorr@   rJ   r   r   r;   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        ||             y r   )r@   r   rJ   r   r   r;   r   FlowEntryToken)r&   r   r   s      r   r   zScanner.fetch_flow_entry  sc     $'')[[))+
;;'')>*h?@r   c                `   | j                   s| j                  s&t        d d d| j                  j	                               | j                  | j                  j                        rA| j                  j	                         }| j                  j                  t        ||             n	 d| _        | j                          | j                  j	                         }| j                  j                          | j                  j	                         }| j                  j                  t        ||             y )Nz%sequence entries are not allowed hereT)r7   r@   r   rJ   r   r   r$   r;   r   BlockSequenceStartTokenr   r   BlockEntryTokenr&   r%   r   r   s       r   r   zScanner.fetch_block_entry  s    ((";KK((*	  t{{112{{++-""#:4#FG  $'') [[))+
;;'')?:x@Ar   c                r   | j                   s| j                  s&t        d d d| j                  j	                               | j                  | j                  j                        r?| j                  j	                         }| j                  j                  t        ||             | j                    | _        | j                          | j                  j	                         }| j                  j                          | j                  j	                         }| j                  j                  t        ||             y )Nz!mapping keys are not allowed here)r7   r@   r   rJ   r   r   r$   r;   r   BlockMappingStartTokenr   r   KeyTokenr   s       r   r   zScanner.fetch_key8  s     (("$ CT[[EYEYE[ 
 t{{112{{++-""#9$#EF %)OO 3 	'') [[))+
;;'')8J9:r   c                   | j                   | j                  v r| j                  | j                      }| j                  | j                   = | j                  j                  |j                  | j
                  z
  t        |j                  |j                               | j                   sl| j                  |j                        rQ| j                  j                  |j                  | j
                  z
  t        |j                  |j                               d| _        n| j                   s2| j                  s&t        d d d| j                  j                               | j                   sd| j                  | j                  j                        r?| j                  j                         }| j                  j                  t        ||             | j                    | _        | j!                          | j                  j                         }| j                  j#                          | j                  j                         }| j                  j                  t%        ||             y )NFz#mapping values are not allowed here)r7   rA   r;   insertr    r=   r   r%   r   r$   r   r@   r   rJ   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4hsxx6R ????3::.KK&&((4+<+<<.sxxB %*D! ?? ,,&=,,.	  ????4;;#5#56;;//1DKK&&'=dD'IJ )-$7D! ++- [[))+
;;''):j(;<r   c                    | j                          d| _        | j                  j                  | j	                  t
                     y r   )r   r@   r;   r   scan_anchor
AliasTokenr6   s    r   r   zScanner.fetch_alias  s3    %%' %4++J78r   c                    | j                          d| _        | j                  j                  | j	                  t
                     y r   )r   r@   r;   r   r   AnchorTokenr6   s    r   r   zScanner.fetch_anchor  s3    %%' %4++K89r   c                    | j                          d| _        | j                  j                  | j	                                y r   )r   r@   r;   r   scan_tagr6   s    r   r   zScanner.fetch_tag  s.    %%' %4==?+r   c                (    | j                  d       y )Nrv   stylefetch_block_scalarr6   s    r   r   zScanner.fetch_literal      c*r   c                (    | j                  d       y )Nrw   r   r   r6   s    r   r   zScanner.fetch_folded  r   r   c                    d| _         | j                          | j                  j                  | j	                  |             y r   )r@   r   r;   r   scan_block_scalarr&   r   s     r   r   zScanner.fetch_block_scalar  s3     $'')411%89r   c                (    | j                  d       y )Nrx   r   fetch_flow_scalarr6   s    r   r   zScanner.fetch_single      S)r   c                (    | j                  d       y )Nry   r   r   r6   s    r   r   zScanner.fetch_double  r   r   c                    | j                          d| _        | j                  j                  | j	                  |             y r   )r   r@   r;   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@   r;   r   
scan_plainr6   s    r   r   zScanner.fetch_plain  s1    %%' !&4??,-r   c                8    | j                   j                  dk(  ryy )Nr   T)rJ   r$   r6   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rJ   r$   prefixr|   _THE_END_SPACE_TABr6   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   r6   s    r   r   zScanner.check_document_end  r   r   c                D    | j                   j                  d      t        v S )Nr^   )rJ   r|   r   r6   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   r7   rJ   r|   r   r6   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                  r?t        | j                  d   t              r"| j                  j                  d      t        vryy| j                  j                  d      t        v S )Nr^   r^   Tr9   rm   r^   F)
rO   r   r7   r5   rJ   r|   r   r;   rT   r   r6   s    r   r   zScanner.check_value  s    **f4DOO$DOO$$$R(C/{{''*2DD$
 	 [[ZB%L{{''*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^   rk   z?:Trs   )rJ   r|   rO   r   r7   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)rJ   r|   r   r"   _THE_ENDr7   scan_line_breakr@   )r&   r  srffound_the_endwhite_spaces         r   rz   zScanner.scan_to_next_token%  s    & kkkk!!;;!cex&7E#2e%;& %;&u|e8+E e8+##%,0D)  r   c                <   | 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        ||||      S )NYAMLTAG)
rJ   r|   r   r   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer  scan_directive_ignored_line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dE:x@@r   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      
  )rJ   r|   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
  rl   r#  z#expected a digit or '.', but found r%  r9   )rJ   r|   r   scan_yaml_directive_numberr   r   rB   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^   )rJ   r|   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
  )rJ   r|   r   scan_tag_directive_handlescan_tag_directive_prefixrC   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_handlerJ   r|   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 )Nr4  r%  r#  r5  )scan_tag_urirJ   r|   r   r   r7  s       r   r0  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 rJ   r|   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 )	Nr   aliasanchorr   r^   while scanning an r$  u     	
  ?:,[]{}%@`)rJ   r|   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        |	||
      S )Nr^   ru   z!!<   tagrw   zwhile parsing a tagzexpected '>' but found Fr%  Tzwhile scanning a tagr5  )	rJ   r|   r   r   r9  r   r   r6  TagToken)r&   r  r   r   short_handler1  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$$&	   ;;'')z844r   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+        dj-                  |      d|||      }| j                  -t        | j                  dd      }||	|j/                  |	g       t1        |      dkD  r(| j                  dt        | j                  dd       }|K|j2                  t1        |      z
  }|D ].  }|d   dk(  sJ | j4                  j7                  |d|       |dz  }0 | j9                         }|r:|j!                  d|d   j                  z  |d   z          | j9                         }|r:| j                  `t        | j                  dd      }|G| j                   j                         }t;        dj-                  |      ||      }|j=                  |       |S )Nrw   TFr^   z|>r  0top_level_block_style_scalar_no_indent_error_1_1 ri   r   r   
r
  r   r   comment_handlingr9   )rJ   r|   r   r   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner>   rO   r0   r/   scan_block_scalar_indentationmaxscan_block_scalar_breaksr$   extendr  r   r   r  r   r   ScalarTokenjoinadd_pre_commentsr4   r#   commentsadd_blank_linerz   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#   xrf   comment_end_marks                            r   r   zScanner.scan_block_scalarK  s<   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# BGGFOUJ%P;;"%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"* (,{{';';'=$*2778+<hHXYG**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 )rJ   r|   r   r)   r   r   )r&   r   r  r`  ra  r   s         r   rP  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 )NrL  r
  r  rp  r;  r<  )r&   r   r  r  r   rf   r   s          r   rQ  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 )Nr9   r       
  r
  z9more indented follow up line than first in a block scalar)rJ   r|   r   r   r$   r   r  r   )r&   r  r  r_  first_indentre  r   r   s           r   rR  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
  
   
  )rJ   r|   r   r   r$   r   r  )r&   r>   r_  r  r  r   s         r   rT  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                P   |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        dj                  |      d|||      S )Nry   TFrL  )	rJ   r|   r   r   rU  scan_flow_scalar_non_spacesscan_flow_scalar_spacesrV  rW  )r&   r   doubler  r_  r   quoter   s           r   r   zScanner.scan_flow_scalar9  s     C<FFkk[[))+
d66vzJKeunMM$66vzJKMM$::6:NO eun 	;;'')2776?E:xOOr   r  ri   r!  rN  bt	nrM  vfrer
  ry   /\N   _    Lu    Pu    rD        )rk  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^   rx   rD  z"\r  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarzexpected escape sequence of dz hexdecimal numbers, but found    u
   
  zfound unknown escape character )rJ   r|   r   r   r   ESCAPE_REPLACEMENTSESCAPE_CODESranger   r   r)   chrr  rU  scan_flow_scalar_breaks)
r&   rz  r   r_  r  r  r&  r   kcodes
             r   rx  z#Scanner.scan_flow_scalar_non_spacesh  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^   ri   while scanning a quoted scalarzfound unexpected end of streamrv  rM  r
  )
rJ   r|   r   r   r   r   r  r  r   rU  )
r&   rz  r   r  r_  r&  whitespacesr   rf  rd  s
             r   ry  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   rv  )	rJ   r|   r   r   r   r   r   r   r  )r&   rz  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                B   | 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        dj!                  |      d||      }
| j"                  t%        | j"                  dd      }|<|r8|d   dk(  r0t'        dj!                  |      dz   ||      }|
j)                  |       |
S |dur>|j*                  dz   }|D ]*  }	|	dk(  s	| j,                  j/                  dd|       |dz  }, |
S )Nr^   Tr   r  Frs   rr   r  z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.rL  rO  rM  )rJ   r|   r   r   r>   r   rO   r7   r   r@   rU  r   r   scan_plain_spacesr$   rV  rW  r/   r0   r[  r\  r#   rY  rZ  )r&   r  r  r_  r   r   r>   spacesr&  r   ri  rj  rf   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 BGGFOT:xH ;;"%dkk3EuMO&fQi4/*2776?T+A:xXG**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^   rv  Tr   r   r   rs  rM  )	rJ   r|   r   r   r  r@   r   r   rU  )r&   r>   r   r  r  r_  r&  r  r   rf  r   rd  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 )Nru   r@  zexpected '!', but found r^   r
  r  r  r  r   r!  r"  z-_zexpected '!' but found )rJ   r|   r   r   r   r   )r&   r  r   r  r   r&  r  s          r   r6  zScanner.scan_tag_handleP  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  rj   r^   zwhile parsing an zexpected URI, but found rL  )
rJ   r|   rO   r   r   r   scan_uri_escapesr   r   rW  )r&   r  r   r  r_  r&  r   s          r   r9  zScanner.scan_tag_urip  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)Nrj   rD  r  r@  @expected URI escape sequence of 2 hexdecimal numbers, but found r  utf-8rJ   r|   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   
rD  
rM       rL  rJ   r|   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(   rV   r(   r*   r   r*   r   rf   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(   )rz  r(   r   r(   r*   r(   )r>   r(   r   r(   r*   r(   r  r(   r   r(   r*   r(   )Rr   r   r   r'   propertyr7   r1   rJ   rO   rX   r[   r`   rR   rg   rS   rc   rb   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   r   r   r   r   r   rz   r   r  r  r(  r  r/  r0  r  r   r   r   rP  rQ  rR  rT  r   r  r  rx  ry  r  r   r  r6  r9  r  r  r   r   r   r   r   G   s    " & &58n ( ( . .
"&
"k
^ 5&=.;":0X	2:8=NM==<=$	AB<;6:=x9:,++:**9.999$ 
H%NA*6!6&&,7\65pyv0#d2,2 P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rQ   )rR   rS   _gather_commentsr4   r;   rT   rU   s      r   rX   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 rZ   )rR   rS   r  r4   r;   r6   s    r   r[   zRoundTripScanner.peek_token  sV    ##%""$ ##%t{{a;;q>!r   c                   g }| j                   s|S t        | j                   d   t              rA| j                   j                  d      }| xj                  dz  c_        |j                  |       | j                         r| j                          | j                   s|S t        | j                   d   t              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^   rD  N)r;   rT   r[  r_   r=   r   rR   rS   r4   rX  r:   )r&   rY  rf   s      r   r  z!RoundTripScanner._gather_comments  s    {{Odkk!nl3kkooa(G"OOG$##%""$;;$++a.,7!!Q&!++//!,( ##% x=AKKN++H5yyS-1""$ 2yr   c                	   | j                         r!| j                          | j                         r!| j                          t        | j                        dkD  rgt        | j                        dkD  rt        | j                  d   t        t        t        t        f      rt        | j                  d   t              r| j                  d   j                  j                  | j                  d   j                  j                  k(  rC| xj                  dz  c_        | j                  j                  d      }| j                          t        | j                        dkD  rt        | j                  d   t              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              r| j                  d   j%                  |       nGt        | j                        dkD  r.t        | j                  d   t              rt        | j                  d   t              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              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              r| xj                  dz  c_        | j                  j                  d      S y )Nr   r^   r
  rM  )rR   rS   r  r4   r;   rT   rV  r   r   r   r[  r   r#   r   r=   r_   r  r$   r\  )r&   cc1s      r   r`   zRoundTripScanner.get_token  sh   ##%""$ ##%t{{a DKK 1$KKN *.BDWX t{{1~|<KKN++00DKKN4M4M4R4RR!!Q&!KKOOA&&&($++&*z$++a.,/W%%*%+Bggr}}/C/C)CDrxxOAG**,	 $++&*z$++a.,/W
 A//2DKK 1$t{{1~{;t{{1~|<KKN++00DKKN4M4M4R4RR!!Q&!KKOOA&ALL--A0G0G0L0LLMQ\\0002gg 
 A//2&&($++&*z$++a.,/W%%*%+Bggr}}/C/C)CDrxxOAG**,	 $++&*z$++a.,/W
 ";;??1%%r   c                    |\  }}}|r|d   dk(  r|d d }|r	|d   dk(  r| j                   j                  t        |||             y )Nr9   r
  )r;   r   r[  )r&   rf   r  r   r   s        r   rg   zRoundTripScanner.fetch_comment&  sV    &-#z8b	S( #2JE b	S( 	<z8DEr   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  ri   rM  TrL  )
empty_liner^   )rJ   r|   r   r"   r7   r   r  r  r4   r@   rsplit)	r&   r  r  r  r  r   r   rf   r   s	            r   rz   z#RoundTripScanner.scan_to_next_token0  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  rD  r  rM  r  z	 rL  r  )r&   r  r   s      r   r  z RoundTripScanner.scan_line_breakx  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
        rL  rj   rD  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   rX   r[   r  r`   rg   rz   r  r   r  r   r   r   r   r     s3    %03jF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 r]   )	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 )Nrv   )r  r6   s    r   set_assignedzCommentBase.set_assigned  s	    	r   c                    | j                    S r   r  r6   s    r   __str__zCommentBase.__str__  s    **r   c                    | j                   S r   r  r6   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 )Nry   r
  2rs   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+   )rn  )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   )rY  unusedr6   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 NrM  r^   r9   )countr  rY  r
  r   r&   rf   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  rY  r  r
  r   r  s        r   rZ  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   rY  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   )rY  )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  rk  s      r   	<genexpr>z*ScannedComments.__str__.<locals>.<genexpr>#  s'     [	fQZq
3[s   #%rM  rW  rY  itemsr6   s    r   r  zScannedComments.__str__   s7    !kk[T]]EXEXEZ[\]	
r   c                    t        | j                  j                               d   \  }}|dd|j                          dS )Nr9   r  r
  rM  )r   rY  r  r  )r&   r  rk  s      r   lastzScannedComments.last'  s=    ,,./3	1QVVXJb))r   c                2    t        | j                        dkD  S rZ   )r4   r
  r6   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)r4   r
  r
   r  r_   r  r  r   rY  r  r  r  r  )r&   user  firstr  s        r   unprocessedzScannedComments.unprocessed3  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_   rY  r  add_comment_prer&   ri  
token_liner  r  gobbledr$  s          r   r'  zScannedComments.assign_pre?  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        ||    t              r8|dz  }||    j
                  j                  |kD  r#t        ||    t              r8t        dk7  rt        d|       t        |      |kD  r,t        ||    t              rt        ||dz       t              ry 	 t        ||    t              rt        ||dz       t              ro	 | j                   j                  d      }| j                  |   j                          t        dk7  rt        d||t               ||    j!                  |t               y 	 t        ||    t              rqt        ||dz       t        t$        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   rT   rY  r  r   r#   r   r
   r   r4   rV  r   r_   r  KEYCMNTadd_comment_eolre   r   	VALUECMNTtypesysexit)r&   r;   comment_liner  eol_idxr~  r4  s          r   
assign_eolzScannedComments.assign_eolP  s   	;;q>L $--5zBcTl%%**\9ZC4L*>
 1HC cTl%%**\9ZC4L*>
 Q;FC K#63$<56C!G*-{;	&#,4qz"H:."kkooa0GMM'*335{#w@C4L00'B 
	&#,4qz"Z$A:."kkooa0GMM'*335C4L00)D 
  	AE1	Q;)4t+=>o  		6 " .--.  	{&	 " .--.  	{&	s[   I *+I7 A-I$ 1J. 7AJ 	I! I!$I44I7 7JJJ++J. .KK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_   rY  r  add_comment_postr)  s          r   r:  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 )NrL  c              3  r   K   | ]/  \  }}|j                   d k(  sd|dd |j                          d 1 yw)r
  z  r  rM  N)r  r  )r  indrk  s      r   r  z2ScannedComments.str_unprocessed.<locals>.<genexpr>  s6     \63affX[mr#a!&&(2&\s   77r  r6   s    r   str_unprocessedzScannedComments.str_unprocessed  s(    ww\T]]5H5H5J\
 	
r   N)r&   r(   r*   r+   )rf   r(   r$   r(   r#   r(   r*   r(   )r  r(   r*   r(   r  r  r  r  )r#  r(   r*   r(   )ri  r(   r*   r(   )r;   r(   r*   r(   )r   r   r   r'   r  rZ  r  r  r  r  r   r%  r'  r8  r:  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/   rY  )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
              r)| j                  j                  | j                  d          n(| j                  j                  | j                  d          | xj                  dz  c_	        | j                  j                  d      S y r]   )rR   rS   r4   r;   rT   r   rY  r:  r'  r=   r_   r6   s    r   r`   zRoundTripScannerSC.get_token  s    ##%""$ ##%t{{a$++a.-8))$++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   TrD  r9   z-x--)rY  r  r/   parsed_commentsr:   r4   r;   rb   rc   r=   r   r#   r
   r   r?  r'  r8  )r&   r~  s     r   rR   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  ri   rM  rL  T)rJ   r|   r   r"   r   r  r$   rY  r  r#   r   scan_empty_or_full_line_commentsr7   r@   r   r  r  )	r&   r  r  r   r  r   comment_start_markrf   r  s	            r   rz   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   rL  rv  rD  r  rM  r   r  )
rJ   r   r$   r|   r   r   rY  r  r#   rZ  )r&   blmarkblanksrf   r%   r   s         r   rH  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 )NrL  r
  r  rM  rp  r;  )rJ   r|   r   r   r  r   rY  r  r$   r#   r  )r&   r   r  r  r   rf   r%   r   s           r   rQ  z1RoundTripScannerSC.scan_block_scalar_ignored_line8	  s   kkkk!!eslceOFE esl 5C<G;;'')D%x'35  %x' tOGUX/@G$$&	  MM))'4;;		Jr   )rC  r(   r   r(   r*   r+   r  r  r  r  )
r   r   r   r'   r`   rR   rz   rH  rQ  r  r  s   @r   rA  rA    s#    
&6=~%$Nr   rA  N)r   r(   r   r(   r*   r(   )'
__future__r   ruamel.yaml.errorr   r   ruamel.yaml.tokensruamel.yaml.docinfor   r   ruamel.yaml.compatr	   r
   r   r   typingr(   DictOptionalListUnionr  Tuple__all__r  r   r  r   r   r   r   r   r2  r0  r  r  r   r  r  rA  r   r   r   <module>rZ     s    "< ;   , M M : $0 
 
Q;$	? 	 x xv3nw nf 	

)
 )
X. ..k ..{ .d
 d
Np pr   