
    P                        d dl mZmZmZmZ d dlmZ d dl d dlm	Z	m
Z
mZmZmZ 	 g dZdZdZdZ G d	 d
e      Z G d de      Z G d de      Z G d de      Zy)    )print_functionabsolute_importdivisionunicode_literals)MarkedYAMLError)*)utf8unichrPY3check_anchorname_charnprint)ScannerRoundTripScannerScannerErroru   
   u    
 	   	c                       e Zd Zy)r   N)__name__
__module____qualname__     &lib/third_party/ruamel/yaml/scanner.pyr   r   1   s    r   r   c                       e Zd Zd Zy)	SimpleKeyc                 X    || _         || _        || _        || _        || _        || _        y N)token_numberrequiredindexlinecolumnmark)selfr   r   r   r    r!   r"   s          r   __init__zSimpleKey.__init__8   s-    ( 
		r   N)r   r   r   r$   r   r   r   r   r   5   s    r   r   c                   t   e Zd ZdpdZed        Zd Zed        Zed        Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@dqd?ZAd@ ZBdA ZCdB ZDdC ZEdD ZFi dEdFdGdHdIdJdKdLdLdLdMdNdOdPdQdRdSdTdUdVdWdWdXdXdYdYdZdZd[d\d]d^d_d`dadbiZGdcdddedfZHdg ZIdh ZJdi ZKdj ZLdk ZMdl ZNdm ZOdn ZPdo ZQy)rr   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__C   sF     ;;"wt{{J'M'U#'DKK r   c                 ,    t        | j                        S r   )lenflow_contextr#   s    r   
flow_levelzScanner.flow_levelU   s     4$$%%r   c                     d| _         g | _        g | _        | j                          d| _        d| _        g | _        d| _        i | _        y )NFr   T)	doner.   tokensfetch_stream_starttokens_takenindentindentsallow_simple_keypossible_simple_keysr/   s    r   r*   zScanner.reset_scannerZ   s\     	   	!   , !% %'!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_readerr/   s    r   rA   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 r<   )r@   r(   resolverprocessing_versionr/   s    r   scanner_processing_versionz"Scanner.scanner_processing_version   s8     4;;&;;'':::{{---r   c                     | j                         r!| j                          | j                         r!t        | j                        r%|sy|D ]  }t	        | j                  d   |      s y yNTr   F)need_more_tokensfetch_more_tokensboolr4   
isinstancer#   choiceschoices      r   check_tokenzScanner.check_token   s`     ##%""$ ##%!dkk!nf5 " r   c                     | j                         r!| j                          | j                         r!t        | j                        r| j                  d   S y Nr   )rI   rJ   rK   r4   r/   s    r   
peek_tokenzScanner.peek_token   sI     ##%""$ ##%;;q>! r   c                     | j                         r!| j                          | j                         r!t        | j                        r0| xj                  dz  c_        | j                  j                  d      S y N   r   )rI   rJ   rK   r4   r6   popr/   s    r   	get_tokenzScanner.get_token   s_     ##%""$ ##%";;??1%% r   c                     | j                   ry| j                  sy| j                          | j                         | j                  k(  ryy)NFT)r3   r4   stale_possible_simple_keysnext_possible_simple_keyr6   r/   s    r   rI   zScanner.need_more_tokens   sA    99{{ 	'')((*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tI        |      z  | j                  jK                               )N %-.[{]},?:r   &!|>'"z!while scanning for the next tokenz.found character %r that cannot start any token)&scan_to_next_tokenr_   rZ   unwind_indentrA   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_tagr0   fetch_literalfetch_foldedfetch_singlefetch_doublecheck_plainfetch_plainr   r	   get_mark)r#   r^   chs      r   rJ   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$$&& ##%% /<tBxG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_keyF  sR      ..E++E2C'3+;+;>N+N#&#3#3  /  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    rA   r   r   r   r"   r   )r#   r   r   s      r   rZ   z"Scanner.stale_possible_simple_keysV  s     $334E++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   )r0   r7   rA   r!   r9   remove_possible_simple_keyr6   r-   r4   r   r   r    r   r:   )r#   r   r   r   s       r   save_possible_simple_keyz Scanner.save_possible_simple_keyj  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   )r0   r:   r   r   r"   rA   r   )r#   r   s     r   r   z"Scanner.remove_possible_simple_key  st     ??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   )
rK   r0   r7   rA   r   r8   rW   r4   appendBlockEndToken)r#   r!   r"   s      r   rs   zScanner.unwind_indent  sn        kkF";;'')D,,**,DKKK}T489 kkF"r   c                 |    | j                   |k  r-| j                  j                  | j                          || _         yy)NTF)r7   r8   r   )r#   r!   s     r   
add_indentzScanner.add_indent  s3     ;;LL, DKr   c                     | j                   j                         }| j                  j                  t	        ||| j                   j
                               y )N)encoding)rA   r   r4   r   StreamStartTokenr   r#   r"   s     r   r5   zScanner.fetch_stream_start  s<    
 {{##%+D$AUAUVWr   c                     | j                  d       | j                          d| _        i | _        | j                  j                         }| j                  j                  t        ||             d| _	        y )Nr2   FT)
rs   r   r9   r:   rA   r   r4   r   StreamEndTokenr3   r   s     r   ru   zScanner.fetch_stream_end  s`     	2'') %$&!{{##%>$56	r   c                     | j                  d       | j                          d| _        | j                  j	                  | j                                y )Nr2   F)rs   r   r9   r4   r   scan_directiver/   s    r   rw   zScanner.fetch_directive  sE     	2 	'') % 	4..01r   c                 .    | j                  t               y r   )fetch_document_indicatorDocumentStartTokenr/   s    r   ry   zScanner.fetch_document_start  s    %%&89r   c                 .    | j                  t               y r   )r   DocumentEndTokenr/   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 )Nr2   F   )rs   r   r9   rA   r   forwardr4   r   )r#   
TokenClass
start_markend_marks       r   r   z Scanner.fetch_document_indicator  sy     	2 	'') % [[))+
A;;''):j(;<r   c                 2    | j                  t        d       y )Nre   to_push)fetch_flow_collection_startFlowSequenceStartTokenr/   s    r   r|   z!Scanner.fetch_flow_sequence_start  s    (()?(Mr   c                 2    | j                  t        d       y )Nrf   r   )r   FlowMappingStartTokenr/   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   r.   r   r9   rA   r   r   r4   )r#   r   r   r   r   s        r   r   z#Scanner.fetch_flow_collection_start  sy     	%%'  ) $[[))+
;;''):j(;<r   c                 .    | j                  t               y r   )fetch_flow_collection_endFlowSequenceEndTokenr/   s    r   r~   zScanner.fetch_flow_sequence_end
  s    &&';<r   c                 .    | j                  t               y r   )r   FlowMappingEndTokenr/   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   r.   rW   
IndexErrorr9   rA   r   r   r4   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   )r9   r   rA   r   r   r4   r   FlowEntryToken)r#   r   r   s      r   r   zScanner.fetch_flow_entry%  se     !%'')[[))+
;;'')>*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)r0   r9   r   rA   r   r   r!   r4   r   BlockSequenceStartTokenr   r   BlockEntryTokenr#   r"   r   r   s       r   r   zScanner.fetch_block_entry1  s     (("$ GI]I]I_  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)r0   r9   r   rA   r   r   r!   r4   r   BlockMappingStartTokenr   r   KeyTokenr   s       r   r   zScanner.fetch_keyM  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)r0   r:   r4   insertr   r6   r   r"   r   r!   r   r9   r   rA   r   r   r   r   
ValueToken)r#   r   r"   r   r   s        r   r   zScanner.fetch_valuei  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   r9   r4   r   scan_anchor
AliasTokenr/   s    r   r   zScanner.fetch_alias  s5     	%%' %4++J78r   c                     | j                          d| _        | j                  j                  | j	                  t
                     y r   )r   r9   r4   r   r   AnchorTokenr/   s    r   r   zScanner.fetch_anchor  s5     	%%' %4++K89r   c                     | j                          d| _        | j                  j                  | j	                                y r   )r   r9   r4   r   scan_tagr/   s    r   r   zScanner.fetch_tag  s0     	%%' %4==?+r   c                 (    | j                  d       y )Nrn   stylefetch_block_scalarr/   s    r   r   zScanner.fetch_literal      c*r   c                 (    | j                  d       y )Nro   r   r   r/   s    r   r   zScanner.fetch_folded  r   r   c                     d| _         | j                          | j                  j                  | j	                  |             y r   )r9   r   r4   r   scan_block_scalarr#   r   s     r   r   zScanner.fetch_block_scalar  s5     !%'')411%89r   c                 (    | j                  d       y )Nrp   r   fetch_flow_scalarr/   s    r   r   zScanner.fetch_single      S)r   c                 (    | j                  d       y )Nrq   r   r   r/   s    r   r   zScanner.fetch_double  r   r   c                     | j                          d| _        | j                  j                  | j	                  |             y r   )r   r9   r4   r   scan_flow_scalarr   s     r   r   zScanner.fetch_flow_scalar  s5     	%%' %40078r   c                     | j                          d| _        | j                  j                  | j	                                y r   )r   r9   r4   r   
scan_plainr/   s    r   r   zScanner.fetch_plain  s3     	%%' !&4??,-r   c                 8    | j                   j                  dk(  ryy )Nr   T)rA   r!   r/   s    r   rv   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rA   r!   prefixrt   _THE_END_SPACE_TABr/   s    r   rx   zScanner.check_document_start  J     ;;"{{!!!$-$++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   r/   s    r   rz   zScanner.check_document_end   r   r   c                 D    | j                   j                  d      t        v S )NrV   )rA   rt   r   r/   s    r   r   zScanner.check_block_entry  s     {{"&888r   c                 p    t        | j                        ry| j                  j                  d      t        v S )NTrV   )rK   r0   rA   rt   r   r/   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rV   rV   Tr2   re   rV   F)
rF   rK   r0   r.   rA   rt   r   r4   rL   r   r/   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      	
  -?:,[]{}#&*!|>'"%@`rV   rc   z?:Trk   )rA   rt   rF   r   r0   rK   
_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        }|si |       dk(  r |         |       dk(  r |       dk(  r |       |vr |         |       |vr| j                         r| j                  s
d| _        nd}|siy )Nr      ﻿F #T)rA   rt   r   r   _THE_ENDscan_line_breakr0   r9   )r#   r   srffound_the_ends        r   rr   zScanner.scan_to_next_tokenM  s    ( kkkk!!;;!cex&7E%3, %3,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)
rA   rt   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_directivet  s     kkkk!![[))+
''
36>22:>E{{++-HU]11*=E{{++-H{{++-H%x' %x'((4dE:x@@r   c                 b   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<|s2t        d
|dt        |      z  | j                   j	                               | j                   j                  |      }| j                   j                  |        |       }|dvr2t        d
|dt        |      z  | j                   j	                               |S )Nr   09AZazz-_:.rV   while scanning a directive6expected alphabetic or numeric character, but found %r     
  )rA   rt   r   r	   r   r   r   )r#   r   lengthr   r   r  s         r   r  zScanner.scan_directive_name  s1    kk[R3#"2s"2cR6F36F"PV,aKFVB R3#"2s"2cR6F36F"PV, ,H4PR8S$$&	  ""6*F#U..,H4PR8S$$&	  r   c           	         | j                   j                  }| j                   j                  } |       dk(  r |         |       dk(  r| j                  |      } |       dk7  r7t	        d|dt         |             z  | j                   j                                |        | j                  |      } |       dvr7t	        d|dt         |             z  | j                   j                               ||fS )Nr  rd   r  z%expected a digit or '.', but found %rr  z%expected a digit or ' ', but found %r)rA   rt   r   scan_yaml_directive_numberr   r	   r   )r#   r   r   r  majorminors         r   r  z!Scanner.scan_yaml_directive_value  s     kkkk!!eslE esl//
;5C<,7$su+E$$&	  	//
;511,7$su+E$$&	  u~r   c                    | j                   j                  }| j                   j                  } |       }d|cxk  rdk  s4n t        d|dt	        |      z  | 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 %rr   rV   )rA   rt   r   r   r	   r   intr   )r#   r   r   r  r   r  r  s          r   r  z"Scanner.scan_yaml_directive_number  s     kkkk!!Ur S ,048;$$&	  S['C'aKF S['C'DKK&&v./Fr   c                    | j                   j                  }| j                   j                  } |       dk(  r |         |       dk(  r| j                  |      } |       dk(  r |         |       dk(  r| j	                  |      }||fS )Nr  )rA   rt   r   scan_tag_directive_handlescan_tag_directive_prefix)r#   r   r   r  handler   s         r   r  z Scanner.scan_tag_directive_value  s     kkkk!!eslE esl//
;eslE esl//
;r   c                     | j                  d|      }| j                  j                         }|dk7  r2t        d|dt	        |      z  | j                  j                               |S )N	directiver  r  expected ' ', but found %r)scan_tag_handlerA   rt   r   r	   r   r#   r   r  r   s       r   r$  z!Scanner.scan_tag_directive_handle  se     $$[*=[[9,,tBx7$$&	  r   c                     | j                  d|      }| j                  j                         }|dvr2t        d|dt	        |      z  | j                  j                               |S )Nr(  r  r  r)  )scan_tag_urirA   rt   r   r	   r   r+  s       r   r%  z!Scanner.scan_tag_directive_prefix  sg     !!+z:[[..,,tBx7$$&	  r   c                    | j                   j                  }| j                   j                  } |       dk(  r |         |       dk(  r |       dk(  r" |       t        vr |         |       t        vr |       }|t        vr2t	        d|dt        |      z  | j                   j                               | j                          y )Nr  r  r  0expected a comment or a line break, but found %rrA   rt   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,BT"XM$$&	  	r   c                    | j                   j                  }| j                   j                         } |       }|dk(  rd}nd}| j                   j                          d} ||      }t	        |      r|dz  } ||      }t	        |      r|s5t        d||dt        |      z  | j                   j                               | j                   j                  |      }| j                   j                  |       |dvr5t        d||dt        |      z  | j                   j                               | j                   j                         }	 ||||	      S )	Nr   aliasanchorr   rV   zwhile scanning an r  u     	
  ?:,[]{}%@`)rA   rt   r   r   r   r   r	   r   )
r#   r   r   r   	indicatorr  r  r   r  r   s
             r   r   zScanner.scan_anchor  sC    kk[[))+
E	DD[ $B'aKFVB $B' *.0H4PR8S$$&	  ""6*F# ::*.0H4PR8S$$&	  ;;'')%X66r   c           	      ~   | j                   j                  }| j                   j                         } |d      }|dk(  rd }| j                   j                  d       | j	                  d|      } |       dk7  r7t        d|dt         |             z  | j                   j                               | j                   j                          n|t        v rd }d}| j                   j                          ngd}d	}|d
vr|dk(  rd}n|dz  } ||      }|d
vrd}|r| j                  d|      }nd}| j                   j                          | j	                  d|      } |       }|d
vr2t        d|dt        |      z  | j                   j                               ||f}| j                   j                         }	t        |||	      S )NrV   <   tagro   zwhile parsing a tagzexpected '>', but found %rrm   Fr  Tzwhile scanning a tagr)  )
rA   rt   r   r   r-  r   r	   r   r*  TagToken)
r#   r   r   r   r&  suffixr  
use_handler  r   s
             r   r   zScanner.scan_tag@  s    kk[[))+
V9FKK"&&uj9Fu|")04;>KK((*	  KK!%%FFKK!FJ559!%J![ 55 F--eZ@##%&&uj9FU..&,tBx7$$&	   ;;'')z844r   c                 2   | 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/                  |	g       t1        |      dkD  r| j3                         }|r'|j!                  |d          | j3                         }|r'| j                   j                         }t5        dj-                  |      ||      }|j7                  |       |S )Nro   TFrV   z|>r   0top_level_block_style_scalar_no_indent_error_1_1 ra   r   r   
r  r   r   )rA   rt   r   r   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner7   rF   r)   r(   scan_block_scalar_indentationmaxscan_block_scalar_breaksr!   extendr  r   r   r  rx   rz   ScalarTokenjoinadd_pre_commentsr-   rr   CommentTokenadd_post_comment)r#   r   rtr   foldedchunksr   chomping	incrementblock_scalar_comment
min_indentbreaks
max_indentr   r7   
line_breakleading_non_spacer  trailingtokenr^   comment_end_marks                         r   r   zScanner.scan_block_scalarr  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# BGGFOUJ%P+""$8#9:x=1 --/G
+113   ${{335"2778#4h@PQG""7+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r2t	        d|d
t        |      z  | j                   j                               ||fS )Nz+-+TF
0123456789r   while scanning a block scalarz<expected indentation indicator in the range 1-9, but found 0r  z9expected chomping or indentation indicators, but found %r)rA   rt   r   r"  r   r   r	   )r#   r   r   rO  rP  r   s         r   rA  z$Scanner.scan_block_scalar_indicators  so    kk	U:Sy KK!B\!G	>&7"Y,,.	  ##%<BIA~"3UKK((*	  KK!BTz9#H$H##%U../KdSUhV$$&	  ""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r2t	        d|dt        |      z  | j                   j                               | j                          |S )Nr>  r  r  r]  r/  r0  )r#   r   r   r  r   r^   r   s          r   rB  z&Scanner.scan_block_scalar_ignored_line  s     kkkk!!eslceOFE esl 5C<G%x'35  %x' UX/BT"XM$$&	  	r   c                    | j                   j                  }| j                   j                  }g }d}| j                   j                         } |       dv r |       dk7  r:|j	                  | j                                | j                   j                         }n6 |        | j                   j                  |kD  r| j                   j                  } |       dv r|||fS )Nr       
  r  )rA   rt   r   r   r   r  r!   )r#   r   r  rN  rT  r   s         r   rC  z%Scanner.scan_block_scalar_indentation/  s     kkkk!!
;;'')e..u|d2245;;//1;;%%
2!%!3!3J e.. 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  
   
  )rA   rt   r   r   r!   r   r  )r#   r7   rN  r   r  r   s         r   rE  z Scanner.scan_block_scalar_breaksA  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 )Nrq   TFr>  )	rA   rt   r   r   rF  scan_flow_scalar_non_spacesscan_flow_scalar_spacesrG  rH  )r#   r   doubler   rN  r   quoter   s           r   r   zScanner.scan_flow_scalarQ  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  ra   r  r@  bt	nr?  vfrer  rq   /\N   _    Lu    Pu    r7        )x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                  |        |        nv|rq|dk(  rk |         |       }|| j
                  v r'|j                  | j
                  |           |        n*|| j                  v r| j                  |   } |        t        |      D ]F  } ||      dvst        d	|d
|t         ||            fz  | j                   j                                t        | j                   j	                  |      d      }	|j                  t        |	              ||       nj|dv r2| j                          |j                  | j                  ||             n4t        d	|dt        |      z  | j                   j                               |S &)Nr   u    
'"\ 	  rV   rp   r7  z"\rv  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz?expected escape sequence of %d hexdecimal numbers, but found %r   u
   
  z!found unknown escape character %r)rA   rt   r   r   r   ESCAPE_REPLACEMENTSESCAPE_CODESranger   r	   r   r"  r
   r  rF  scan_flow_scalar_breaks)
r#   rf  r   rN  r   r  r  r   kcodes
             r   rd  z#Scanner.scan_flow_scalar_non_spaces  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 *!8;A4A<:P!Q $ 4 4 6#  + t{{11&92>DMM&,/K11((*MM$">">vz"RS&?";d2hF,,.	  ] 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   rV   ra   while scanning a quoted scalarzfound unexpected end of streamrb  r?  r  )
rA   rt   r   r   r   r   r  r  r   rF  )
r#   rf  r   r   rN  r  whitespacesr   rU  rS  s
             r   re  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   rb  )	rA   rt   r   r   r   r   r   r   r  )r#   rf  r   rN  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                 n   | j                   j                  }| j                   j                  }g }| j                   j                         }|}| j                  dz   }g }	 d} |       dk(  rns	  ||      }	|	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  }u| 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||      }
|r8|d   dk(  r0t#        dj!                  |      dz   ||      }|
j%                  |       |
S )NrV   Tr   r  rk   rj   r   z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.Fr>  r?  )rA   rt   r   r   r7   r   rF   r0   r   r9   rF  r   r   scan_plain_spacesr!   rG  rH  rJ  rK  )r#   r   r  rN  r   r   r7   spacesr  r   rX  r^   s               r   r   zScanner.scan_plain  s&    kkkk!![[))+
q
 Fu|[9VaZ8J!J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e h BGGFOT:xHfQi4'"2776?T#9:xPG""7+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  rV   rb  Tr   r   r   r`  r?  )	rA   rt   r   r   r  r9   r   r   rF  )r#   r7   r   r   r  rN  r  r  r   rU  r   rS  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  r5t        d||dt        |      z  | 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  rP| j                   j                  |       t        d||dt        |      z  | j                   j	                               |dz  }| j                   j                  |      }| j                   j                  |       |S )Nrm   while scanning a zexpected '!', but found %rrV   r  r  r  r  r  r  r  z-_)rA   rt   r   r	   r   r   r   )r#   r  r   r   r   r  r  s          r   r*  zScanner.scan_tag_handle`  sY   
 kkU9)-/,tBx7$$&	  [9"s"cR&63&6#:Js:JbTXj![ "s"cR&63&6#:Js:JbTXj Sy##F+"-13048;KK((*	  aKF""6*F#r   c                    | j                   j                  }g }d} ||      }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	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|dk7  rG|j                  | j                   j                  |             | j                   j	                  |       d}|s5t        d||dt        |      z  | j                   j                               dj                  |      S )Nr   r  r  r  r  r  r  z-;/?:@&=+$,_.!~*'()[]%rb   rV   zwhile parsing a zexpected URI, but found %rr>  )
rA   rt   r   r   r   scan_uri_escapesr   r	   r   rH  )r#   r  r   r   rN  r  r   s          r   r-  zScanner.scan_tag_uri  sl    kk[2bCbC--Sydkk0089##F+d33D*EF!VB 2bCbC-- Q;MM$++,,V45KK'F(,.,tBx7$$&	  wwvr   c                 L   | j                   j                  }| j                   j                  }g }| j                   j                         } |       dk(  r |        t	        d      D ]G  } ||      dvst        d||dt         ||            z  | j                   j                                t        r5|j                  t        | j                   j                  d      d             n=|j                  t        t        | j                   j                  d      d                    |d        |       dk(  r	 t        rt        |      j                  d      }|S t        dj                  |      d      }	 |S # t         $ r}	t        d||t#        |	      |      d }	~	ww xY w)	Nrb   r7  r  r  zBexpected URI escape sequence of 2 hexdecimal numbers, but found %rr  zutf-8r   )rA   rt   r   r   r  r   r	   r   r   r"  r   chrbytesdecodeunicoderH  UnicodeDecodeErrorstr)
r#   r  r   r   r  
code_bytesr"   r  r  excs
             r   r  zScanner.scan_uri_escapes  sr    kkkk!!
{{##%eslE1Xq6!99&157"(*.s1v,7,,.   !!#dkk&8&8&;R"@A!!#c$++*<*<Q*?&D"EFF esl 	\j)009
    4g>  " 	\>
CPSHVZ[[	\s   ; E; E; ;	F#FF#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   
r7  
r?       r>  rA   rt   r   r   )r#   r   s     r   r  zScanner.scan_line_break  s     [[{{!!!$.##A&  ##%>!KK!Ir   r   F)Rr   r   r   r$   propertyr0   r*   rA   rF   rP   rS   rX   rI   r_   rJ   r[   rZ   r   r   rs   r   r5   ru   rw   ry   r{   r   r|   r}   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rv   rx   rz   r   r   r   r   rr   r   r  r  r  r  r$  r%  r  r   r   r   rA  rB  rC  rE  r   r  r  rd  re  r  r   r  r*  r-  r  r  r   r   r   r   r   B   s    $ & &4'l 	( 	( . ."&"l
`  5(=0;$:2X
2:8= NM==<=&
AB8;8;=z9:,++:**9	.9
99&!
J%NA,84( (-7^05dn`1#f4,$  P2TV 	V 	V	
 	f 	V 	V 	V 	V 	V 	V 	S 	S 	d 	V  	V!" 	X#$ 	X%* +L4l<0KZ$LB!F@r   r   c                   @    e Zd Zd Zd Zd Zd Zd Zd Zd
dZ	ddZ
y	)r   c                     | j                         r!| j                          | j                         r!| j                          t        | j                        r%|sy|D ]  }t        | j                  d   |      s y yrH   )rI   rJ   _gather_commentsrK   r4   rL   rM   s      r   rP   zRoundTripScanner.check_token  sl     ##%""$ ##%!dkk!nf5 " r   c                     | j                         r!| j                          | j                         r!| j                          t        | j                        r| j                  d   S y rR   )rI   rJ   r  rK   r4   r/   s    r   rS   zRoundTripScanner.peek_token  sS     ##%""$ ##%;;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)zcombine multiple comment linesr   rV   r7  N)r4   rL   rJ  rW   r6   r   rI   rJ   r-   rI  r3   )r#   commentsr^   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                        r%t        | 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(  rL| xj                  dz  c_        | j                  d   j!                  | j                  j#                  d             | xj                  dz  c_        | j                  j#                  d      S y rU   )rI   rJ   r  rK   r4   r-   rL   rG  r   r   r   rJ  r   r    r   r6   rK  rW   r/   s    r   rX   zRoundTripScanner.get_token  s    ##%""$ ##% DKK 1$KKN *.BDWX t{{1~|<KKN++00DKKN4M4M4R4RR!!Q&!A//0BC";;??1%%r   c                     |\  }}}|r|d   dk(  r|d d }|r	|d   dk(  r| j                   j                  t        |||             y )Nr2   r  )r4   r   rJ  )r#   r^   r  r   r   s        r   r_   zRoundTripScanner.fetch_comment(  sV    &-#z8b	S( #2JE b	S( 	<z8DEr   c                 .   | j                   j                  }| j                   j                  }| j                   j                  dk(  r |       dk(  r |        d}|s |       dk(  r |         |       dk(  r |       }|dk(  r| j                   j	                         }|} |        |t
        vr" |       }|dk(  rn||z  } |        |t
        vr"| j                         }t        |      dkD  r$||z  }| j                         }t        |      dkD  r$| j                   j	                         }| j                  sd| _	        |||fS t        | j                               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  ra   Tr?  r>  )
empty_linerV   )rA   rt   r   r   r   r  r  r-   r0   r9   rK   rsplit)r#   r   r  r  r   r   r^   r   s           r   rr   z#RoundTripScanner.scan_to_next_token3  s   * kkkk!!;;!cex&7E%3, %3,BSy![[113
(BTzrMGE ( ))+"gkrMG--/B "gk  ;;//1,0D)
H44D((*+![[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Q R 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  r7  r  r?  r  z	 r>  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)rL  )r   r   )r#   r   rL  s      r   r   z"RoundTripScanner.scan_block_scalar  s    ((u(<<r   Nr  )T)r   r   r   rP   rS   r  rX   r_   rr   r  r   r   r   r   r   r     s-    %26FCJ2=r   r   N)
__future__r   r   r   r   ruamel.yaml.errorr   ruamel.yaml.tokensruamel.yaml.compatr	   r
   r   r   r   typingAnyDictOptionalListUnionTextVersionType__all__r  r   r   r   objectr   r   r   r   r   r   <module>r     sm    S R< .   O O : $0 
	? 	
 
Vf Vr4x=w x=r   