a
    ܌xdP                    @   s*  d dl Z d dlmZmZ d dlT d dlmZmZmZ d dl	m
Z
mZmZmZmZmZ d dlmZ g dZdZd	Zd
Ze
e
e
dddZG dd deZG dd dZG dd dZG dd deZd Zd ZG dd dZG dd deZG dd deZG dd deZG dd dZ G d d! d!eZ!dS )"    N)MarkedYAMLErrorCommentMark)*)check_anchorname_charnprintnprintf)AnyDictOptionalListUnionText)VersionType)ScannerRoundTripScannerScannerErroru   
   u    
 	   	)argskwreturnc                  O   s   t | i |S N)r   )r   r    r   K/var/www/html/Ranjet/env/lib/python3.9/site-packages/ruamel/yaml/scanner.pyxprintf/   s    r   c                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__r   r   r   r   r   4   s   r   c                   @   s&   e Zd ZeeeeeeddddZdS )	SimpleKeyN)token_numberrequiredindexlinecolumnmarkr   c                 C   s(   || _ || _|| _|| _|| _|| _d S r   )r   r   r    r!   r"   r#   )selfr   r   r    r!   r"   r#   r   r   r   __init__;   s    zSimpleKey.__init__)r   r   r   r   intr%   r   r   r   r   r   8   s   r   c                   @   s  e Zd ZdeddddZeedddZdddd	Zeedd
dZ	eedddZ
eedddZedddZedddZedddZeddddZedddZedddZddddZddd d!Zddd"d#Zedd$d%d&Zeed$d'd(Zddd)d*Zddd+d,Zddd-d.Zddd/d0Zddd1d2Zedd3d4d5Zddd6d7Zddd8d9Zee dd:d;d<Z!ddd=d>Z"ddd?d@Z#edd3dAdBZ$dddCdDZ%dddEdFZ&dddGdHZ'dddIdJZ(dddKdLZ)dddMdNZ*dddOdPZ+dddQdRZ,dddSdTZ-eddUdVdWZ.dddXdYZ/dddZd[Z0eddUd\d]Z1ddd^d_Z2edd`daZ3eddbdcZ4eddddeZ5eddfdgZ6eddhdiZ7eddjdkZ8eddldmZ9eddndoZ:eddpdqZ;eedrdsdtZ<eedrdudvZ=eedrdwdxZ>eedrdydzZ?eedrd{d|Z@eedrd}d~ZAeddrddZBeed3ddZCedddZDdeeEe edddZFeedrddZGeedrddZHedddZIeedddZJeedUddZKdddddddddddddddddddZLddddZMeeedddZNeeedddZOeeedddZPedddZQeeedddZReeedddZSeeedddZTeeedddZUedddZVdS )r   N)loaderr   c                 C   sB   || _ | j dur*t| j dddu r*| | j _|   d| _d| _dS )zInitialize the scanner.N_scannerF)r'   getattrr(   reset_scannerZ
first_timeyaml_version)r$   r'   r   r   r   r%   G   s    zScanner.__init__r   c                 C   s
   t | jS r   )lenflow_contextr$   r   r   r   
flow_levelY   s    zScanner.flow_levelc                 C   s<   d| _ g | _g | _|   d| _d| _g | _d| _i | _d S )NFr   T)	doner.   tokensfetch_stream_starttokens_takenindentindentsallow_simple_keypossible_simple_keysr/   r   r   r   r*   ]   s    zScanner.reset_scannerc                 C   sH   z| j W S  tyB   t| jdr.| jj| _ n
| jj| _ | j  Y S 0 d S Ntyp)Z_scanner_readerAttributeErrorhasattrr'   reader_readerr/   r   r   r   r>      s    
zScanner.readerc                 C   s   t | jdr| jjjS | jjS r:   )r=   r'   resolverZprocessing_versionr/   r   r   r   scanner_processing_version   s    
z"Scanner.scanner_processing_versionchoicesr   c                 G   sL   |   r|   q t| jdkrH|s(dS |D ]}t| jd |r, dS q,dS Nr   TF)need_more_tokensfetch_more_tokensr-   r3   
isinstancer$   rC   choicer   r   r   check_token   s    
zScanner.check_tokenc                 C   s.   |   r|   q t| jdkr*| jd S d S Nr   )rE   rF   r-   r3   r/   r   r   r   
peek_token   s    
zScanner.peek_tokenc                 C   s>   |   r|   q t| jdkr:|  jd7  _| jdS d S Nr      )rE   rF   r-   r3   r5   popr/   r   r   r   	get_token   s
    
zScanner.get_tokenc                 C   s:   | j r
dS t| jdkrdS |   |  | jkr6dS dS )NFr   T)r2   r-   r3   stale_possible_simple_keysnext_possible_simple_keyr5   r/   r   r   r   rE      s    zScanner.need_more_tokenscommentr   c                 C   s   t d S r   )NotImplementedError)r$   rT   r   r   r   fetch_comment   s    zScanner.fetch_commentc                 C   s  |   }|d ur| |S |   | | jj | j }|dkrJ|  S |dkrb|  rb| 	 S |dkrz| 
 rz|  S |dkr|  r|  S |dkr|  S |dkr|  S |dkr|  S |dkr|  S |d	kr|  S |dkr|  r|  S |d
kr|  r|  S |dkr2|  r2|  S |dkrD|  S |dkrV|  S |dkrh|  S |dkr| js|  S |dkr| js|  S |dkr|  S |dkr|   S | ! r| " S t#dd d|d| j$ d S )N %-.[{]},?:r   &!|>'"z!while scanning for the next tokenzfound character z that cannot start any token)%scan_to_next_tokenrV   rQ   unwind_indentr>   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   get_mark)r$   rT   chr   r   r   rF      sh    

	






zScanner.fetch_more_tokensc                 C   s6   d }| j D ]&}| j | }|d u s*|j|k r
|j}q
|S r   )r9   r   )r$   Zmin_token_numberlevelkeyr   r   r   rR   @  s    

z Scanner.next_possible_simple_keyc                 C   sb   t | jD ]R}| j| }|j| jjks8| jj|j dkr
|jrTtd|jd| j | j|= q
d S )Ni   while scanning a simple keycould not find expected ':')	listr9   r!   r>   r    r   r   r#   r   )r$   r   r   r   r   r   rQ   O  s    
 z"Scanner.stale_possible_simple_keysc                 C   sh   | j  o| j| jjk}| jrd|   | jt| j }t	||| jj
| jj| jj| j }|| j| j < d S r   )r0   r6   r>   r"   r8   remove_possible_simple_keyr5   r-   r3   r   r    r!   r   r9   )r$   r   r   r   r   r   r   save_possible_simple_keyb  s    z Scanner.save_possible_simple_keyc                 C   sB   | j | jv r>| j| j  }|jr4td|jd| j | j| j = d S )Nr   r   )r0   r9   r   r   r#   r>   r   )r$   r   r   r   r   r   y  s    z"Scanner.remove_possible_simple_key)r"   r   c                 C   sF   t | jrd S | j|krB| j }| j | _| jt	|| qd S r   )
boolr0   r6   r>   r   r7   rO   r3   appendBlockEndToken)r$   r"   r#   r   r   r   ri     s    


zScanner.unwind_indentc                 C   s&   | j |k r"| j| j  || _ dS dS )NTF)r6   r7   r   )r$   r"   r   r   r   
add_indent  s
    
zScanner.add_indentc                 C   s(   | j  }| jt||| j jd d S )N)encoding)r>   r   r3   r   ZStreamStartTokenr   r$   r#   r   r   r   r4     s    
zScanner.fetch_stream_startc                 C   sD   |  d |   d| _i | _| j }| jt|| d| _	d S )Nr1   FT)
ri   r   r8   r9   r>   r   r3   r   ZStreamEndTokenr2   r   r   r   r   rk     s    

zScanner.fetch_stream_endc                 C   s,   |  d |   d| _| j|   d S )Nr1   F)ri   r   r8   r3   r   scan_directiver/   r   r   r   rm     s    
zScanner.fetch_directivec                 C   s   |  t d S r   )fetch_document_indicatorZDocumentStartTokenr/   r   r   r   ro     s    zScanner.fetch_document_startc                 C   s   |  t d S r   )r   ZDocumentEndTokenr/   r   r   r   rq     s    zScanner.fetch_document_end)
TokenClassr   c                 C   sN   |  d |   d| _| j }| jd | j }| j||| d S )Nr1   F   )ri   r   r8   r>   r   forwardr3   r   )r$   r   
start_markend_markr   r   r   r     s    


z Scanner.fetch_document_indicatorc                 C   s   | j tdd d S )Nr[   to_push)fetch_flow_collection_startZFlowSequenceStartTokenr/   r   r   r   rr     s    z!Scanner.fetch_flow_sequence_startc                 C   s   | j tdd d S )Nr\   r   )r   ZFlowMappingStartTokenr/   r   r   r   rs     s    z Scanner.fetch_flow_mapping_start)r   r   r   c                 C   sN   |    | j| d| _| j }| j  | j }| j||| d S NT)r   r.   r   r8   r>   r   r   r3   )r$   r   r   r   r   r   r   r   r     s    


z#Scanner.fetch_flow_collection_startc                 C   s   |  t d S r   )fetch_flow_collection_endFlowSequenceEndTokenr/   r   r   r   rt     s    zScanner.fetch_flow_sequence_endc                 C   s   |  t d S r   )r   FlowMappingEndTokenr/   r   r   r   ru     s    zScanner.fetch_flow_mapping_endc                 C   sd   |    z| j }W n ty(   Y n0 d| _| j }| j  | j }| j	||| d S NF)
r   r.   rO   
IndexErrorr8   r>   r   r   r3   r   )r$   r   poppedr   r   r   r   r   r     s    


z!Scanner.fetch_flow_collection_endc                 C   sB   d| _ |   | j }| j  | j }| jt|| d S r   )r8   r   r>   r   r   r3   r   ZFlowEntryToken)r$   r   r   r   r   r   rv     s    


zScanner.fetch_flow_entryc                 C   s   | j sL| js td d d| j | | jjrL| j }| jt	|| n d| _| 
  | j }| j  | j }| jt|| d S )Nz%sequence entries are not allowed hereT)r0   r8   r   r>   r   r   r"   r3   r   ZBlockSequenceStartTokenr   r   BlockEntryTokenr$   r#   r   r   r   r   r   rx     s    



zScanner.fetch_block_entryc                 C   s   | j sJ| js td d d| j | | jjrJ| j }| jt	|| | j  | _| 
  | j }| j  | j }| jt|| d S )Nz!mapping keys are not allowed here)r0   r8   r   r>   r   r   r"   r3   r   BlockMappingStartTokenr   r   KeyTokenr   r   r   r   rz   3  s    




zScanner.fetch_keyc                 C   s  | j | jv r|| j| j  }| j| j = | j|j| j t|j|j | j st| |j	rt| j|j| j t
|j|j d| _nb| j s| jstd d d| j | j s| | jj	r| j }| jt
|| | j  | _|   | j }| j  | j }| jt|| d S )NFz#mapping values are not allowed here)r0   r9   r3   insertr   r5   r   r#   r   r"   r   r8   r   r>   r   r   r   r   
ValueToken)r$   r   r#   r   r   r   r   r   r|   N  s>    







zScanner.fetch_valuec                 C   s$   |    d| _| j| t d S r   )r   r8   r3   r   scan_anchorZ
AliasTokenr/   r   r   r   r}     s    zScanner.fetch_aliasc                 C   s$   |    d| _| j| t d S r   )r   r8   r3   r   r   ZAnchorTokenr/   r   r   r   r~     s    zScanner.fetch_anchorc                 C   s"   |    d| _| j|   d S r   )r   r8   r3   r   scan_tagr/   r   r   r   r     s    zScanner.fetch_tagc                 C   s   | j dd d S )Nrd   stylefetch_block_scalarr/   r   r   r   r     s    zScanner.fetch_literalc                 C   s   | j dd d S )Nre   r   r   r/   r   r   r   r     s    zScanner.fetch_folded)r   r   c                 C   s$   d| _ |   | j| | d S r   )r8   r   r3   r   scan_block_scalarr$   r   r   r   r   r     s    zScanner.fetch_block_scalarc                 C   s   | j dd d S )Nrf   r   fetch_flow_scalarr/   r   r   r   r     s    zScanner.fetch_singlec                 C   s   | j dd d S )Nrg   r   r   r/   r   r   r   r     s    zScanner.fetch_doublec                 C   s$   |    d| _| j| | d S r   )r   r8   r3   r   scan_flow_scalarr   r   r   r   r     s    zScanner.fetch_flow_scalarc                 C   s"   |    d| _| j|   d S r   )r   r8   r3   r   
scan_plainr/   r   r   r   r     s    zScanner.fetch_plainc                 C   s   | j jdkrdS d S )Nr   T)r>   r"   r/   r   r   r   rl     s    zScanner.check_directivec                 C   s4   | j jdkr0| j ddkr0| j dtv r0dS d S )Nr   r   ---Tr>   r"   prefixrj   _THE_END_SPACE_TABr/   r   r   r   rn     s     zScanner.check_document_startc                 C   s4   | j jdkr0| j ddkr0| j dtv r0dS d S )Nr   r   ...Tr   r/   r   r   r   rp     s     zScanner.check_document_endc                 C   s   | j dtv S )NrN   )r>   rj   r   r/   r   r   r   rw     s    zScanner.check_block_entryc                 C   s   t | jrdS | jdtv S )NTrN   )r   r0   r>   rj   r   r/   r   r   r   ry     s    
zScanner.check_keyc                 C   s   | j dkrt| jrvdS n\t| jrv| jd dkrH| jdtvrrdS n*| jrrt| jd t	rr| jdtvrrdS dS | jdtv S )NrN   rN   Tr1   r[   rN   F)
rA   r   r0   r.   r>   rj   r   r3   rG   r   r/   r   r   r   r{     s    


zScanner.check_valuec                 C   s   | j j}| }| jdkrD|dvpB|dtvoB|dkpB| j oB|dv S |dvrPdS |d}|dkrl|tvrldS |dkrt| jr|tvrdS |dtvo|dkp| j o|dv S )Nr   u      	
  -?:,[]{}#&*!|>'"%@`rN   rY   z?:Tra   )r>   rj   rA   r   r0   r   
_SPACE_TAB)r$   srpr   Zch1r   r   r   r     s"    
zScanner.check_plainc                 C   s   | j j}| j j}| j jdkr,| dkr,|  d}t}| jdkrBdnd}|s| |v r\|  qJ| dkrx| |vrx|  qf|  r| jsd| _qFd}qFd S )Nr      ﻿Fr    #T)r>   rj   r   r    _THE_ENDr0   scan_line_breakr8   )r$   r   srffoundZ_the_endwhite_spacer   r   r   rh      s$    


zScanner.scan_to_next_tokenc                 C   s   | j j}| j j}| j  }|  | |}d }|dkrL| |}| j  }n:|dkrj| |}| j  }n| j  }| tvr|  qt| | t	||||S )NYAMLZTAG)
r>   rj   r   r   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer   scan_directive_ignored_lineZDirectiveToken)r$   r   r   r   namevaluer   r   r   r   r   G  s"    






zScanner.scan_directiver   r   c                 C   s   d}| j j}||}d|  kr(dks^n d|  kr>dks^n d|  krTdks^n |dv rp|d	7 }||}q|std
|d|| j  | j |}| j | | }|dvrtd
|d|| j  |S )Nr   09AZazz-_:.rN   while scanning a directive4expected alphabetic or numeric character, but found      
  )r>   rj   r   r   r   r   )r$   r   lengthr   r   r   r   r   r   r   \  s0    J
zScanner.scan_directive_namec                 C   s   | j j}| j j}| dkr"|  q| |}| dkrRtd|d| | j  |  | |}| dvrtd|d| | j  ||f| _| jS )Nr   rZ   r   z#expected a digit or '.', but found r   )r>   rj   r   scan_yaml_directive_numberr   r   r+   )r$   r   r   r   majorminorr   r   r   r   w  s.    







z!Scanner.scan_yaml_directive_valuec                 C   s   | j j}| j j}| }d|  kr*dksFn td|d|| j  d}d||  krbdkrpn n
|d7 }qJt| j |}|| |S )Nr   r   r   zexpected a digit, but found r   rN   )r>   rj   r   r   r   r&   r   )r$   r   r   r   r   r   r   r   r   r   r     s     
z"Scanner.scan_yaml_directive_numberc                 C   sP   | j j}| j j}| dkr"|  q| |}| dkr>|  q,| |}||fS )Nr   )r>   rj   r   scan_tag_directive_handlescan_tag_directive_prefix)r$   r   r   r   handler   r   r   r   r     s    



z Scanner.scan_tag_directive_valuec                 C   s<   |  d|}| j }|dkr8td|d|| j |S )N	directiver   r   expected ' ', but found )scan_tag_handler>   rj   r   r   r$   r   r   r   r   r   r   r     s    
z!Scanner.scan_tag_directive_handlec                 C   s<   |  d|}| j }|dvr8td|d|| j |S )Nr   r   r   r   )scan_tag_urir>   rj   r   r   r   r   r   r   r     s    
z!Scanner.scan_tag_directive_prefixc                 C   sr   | j j}| j j}| dkr"|  q| dkr>| tvr>|  q,| }|tvrftd|d|| j  |   d S )Nr   r   r   .expected a comment or a line break, but found r>   rj   r   r   r   r   r   )r$   r   r   r   r   r   r   r   r     s     


z#Scanner.scan_directive_ignored_linec           
      C   s   | j j}| j  }| }|dkr&d}nd}| j   d}||}t|rZ|d7 }||}q@|s~td||d|| j  | j |}| j | |dvrtd||d|| j  | j  }	||||	S )	Nr   aliasanchorr   rN   while scanning an r   u     	
  ?:,[]{}%@`)r>   rj   r   r   r   r   r   )
r$   r   r   r   Z	indicatorr   r   r   r   r   r   r   r   r     s<    	



zScanner.scan_anchorc                 C   s^  | j j}| j  }|d}d}|dkrDd}| j   | j j}|d}|dkrd }| j d | d|}| dkrtd|d	| | j  | j   n||tv rd }|}| j   n`d}d
}|dvr|dkrd}q|d7 }||}q|}|r| d|}n|}| j   | d|}| }|dvr@td|d|| j  ||f}	| j  }
t|	||
S )NrN   rc   z!!<   tagre   zwhile parsing a tagzexpected '>' but found Fr   Tzwhile scanning a tagr   )	r>   rj   r   r   r   r   r   r   ZTagToken)r$   r   r   r   Zshort_handler   suffixr   Z
use_handler   r   r   r   r   r     sd    







zScanner.scan_tagFr   rtr   c                 C   s  | j j}|dkrd}nd}g }| j  }| j   | |\}}| |}	| jd }
|d u r|
dk r|dvs| jdkrt| j	ddrd}
| 
 \}}}t|
|}n&|
dk rd}
|
| d }| |\}}d}| j j|kr| d	kr|| | d
v}d}||tvr|d7 }q|| j | | j | |  }| |\}}|dv rv|
dkrv|  s|  rvq| j j|kr| d	kr|r|r|dkr|d |r|dkr|r| d
vr|s|d n
|| q̐qqg }|dv r|| |du r$|| n|dv r8|| td|d|||}| j	d urt| j	dd}|d u r|	d ur||	g t|dkr~| j	d urt| j	dd }|d ur|jt| }|D ]0}|d dksJ | j|d| |d7 }q|  }|r4|d|d j |d   |  }q| j	d ur~t| j	dd}|d u r~| j  }td|||}|| |S )Nre   TFrN   z|>r   Z0top_level_block_style_scalar_no_indent_error_1_1 rW   r   r   
r   r   r   comment_handlingr1   )r>   rj   r   r   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner6   rA   r)   r'   scan_block_scalar_indentationmaxscan_block_scalar_breaksr"   extendr   r   r   r   rn   rp   ScalarTokenjoinadd_pre_commentsr-   r!   commentsadd_blank_linerh   CommentTokenadd_post_comment)r$   r   r   r   foldedchunksr   chomping	incrementZblock_scalar_commentZ
min_indentbreaks
max_indentr   r6   
line_breakZleading_non_spacer   Ztrailingtokencomment_handlerr!   xrT   Zcomment_end_markr   r   r   r   C  s    







"










zScanner.scan_block_scalarc                 C   s
  | j j}d }d }| }|dv rx|dkr,d}nd}| j   | }|dv rt|}|dkrltd|d| j  | j   n`|dv rt|}|dkrtd|d| j  | j   | }|dv r|dkrd}nd}| j   | }|d	vrtd|d
|| 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 )r>   rj   r   r&   r   r   )r$   r   r   r  r  r   r   r   r   r     sZ    



z$Scanner.scan_block_scalar_indicatorsc                 C   s   | j j}| j j}d}d }| dkr4|| 7 }|  q| dkr^|}| tvr^|| 7 }|  qB| }|tvrtd|d|| j  |   |S )Nr   r   r   r  r   r   )r$   r   r   r   r   rT   r   r   r   r   r     s,    




z&Scanner.scan_block_scalar_ignored_linec                 C   sv   | j j}| j j}g }d}| j  }| dv rl| dkrP||   | j  }q"|  | j j|kr"| j j}q"|||fS )Nr       
  r   )r>   rj   r   r   r   r   r"   )r$   r   r   r  r  r   r   r   r   r   	  s    



z%Scanner.scan_block_scalar_indentation)r6   r   c                 C   s   g }| j j}| j j}| j  }| j j|k r<| dkr<|  q| dv r~||   | j  }| j j|k r<| dkr<|  q^q<||fS )Nr   
   
  )r>   rj   r   r   r"   r   r   )r$   r6   r  r   r   r   r   r   r   r     s    



z Scanner.scan_block_scalar_breaksc                 C   s   |dkrd}nd}| j j}g }| j  }| }| j   || || | |krz|| || || || qJ| j   | j  }td|d|||S )Nrg   TFr   )	r>   rj   r   r   r   scan_flow_scalar_non_spacesscan_flow_scalar_spacesr   r   )r$   r   doubler   r  r   quoter   r   r   r   r   )  s    




zScanner.scan_flow_scalarrW   r   	r   r   rg   /\       u    u    )r   r   btr  nvfrer   rg   r  r  N_LPr         )r
  uU)r  r   r   c           
   	   C   s  g }| j j}| j j}d}||dvr.|d7 }q|dkrP|| j | || | }|s|dkr|ddkr|d |d q|r|dks|s|dv r|| |  q|r|dkr|  | }|| jv r|| j|  |  n|| jv rt| j| }|  t|D ]:}||dvrtd	|d
|dd||| j 	 qt
| j |d}	|t|	 || n@|dv r|   || || ntd	|d|| j 	 q|S qd S )Nr   u    
'"\ 	  rN   rf   r   z"\r  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarzexpected escape sequence of dz hexdecimal numbers, but found    u
   
  zfound unknown escape character )r>   rj   r   r   r   ESCAPE_REPLACEMENTSESCAPE_CODESranger   r   r&   chrr   r   scan_flow_scalar_breaks)
r$   r  r   r  r   r   r   r   kcoder   r   r   r  X  s`    








z#Scanner.scan_flow_scalar_non_spacesc           
      C   s   | j j}g }d}||dv r&|d7 }q| j |}| j | | }|dkrbtd|d| j  nT|dv r|  }| ||}	|dkr|| n|	s|d	 |	|	 n
|| |S )
Nr   r   rN   rW   while scanning a quoted scalarzfound unexpected end of streamr  r   r   )
r>   rj   r   r   r   r   r   r4  r   r   )
r$   r  r   r   r  r   whitespacesr   r  r  r   r   r   r    s2    


zScanner.scan_flow_scalar_spacesc                 C   s   g }| j j}| j j}| j d}|dks0|dkrP|dtv rPtd|d| j  | dv rb|  qP| dv r|||   q|S qd S )Nr   r   r   r7  z#found unexpected document separatorr   r  )	r>   rj   r   r   r   r   r   r   r   )r$   r  r   r  r   r   r   r   r   r   r4    s     

zScanner.scan_flow_scalar_breaksc                 C   s   | j j}| j j}g }| j  }|}| jd }g }d}| dkrBql||}	|	dkrd||d tvrdnJ|	dkrx| jdkrxn6|	tv s| js|	dkr||d tv s| jr|	dv rq|d7 }qB| jr|	dkr||d dvr|| td	|d
| j  d|dkrqld| _	|
| || j | || | j  }| ||}|rl| dksl| js0| j j|k r0qlq0td|d||}
| jd urt| jdd}|d u r|r|d dkrtd|d ||}|
| nB|dur|jd }|D ](}	|	dkr| jdd| |d7 }q|
S )NrN   r   r   ra   r`   r   z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.Fr   Tr   r   )r>   rj   r   r   r6   r   rA   r0   r   r8   r   r   r   scan_plain_spacesr"   r   r   r'   r)   r   r   r!   r   r   )r$   r   r   r  r   r   r6   spacesr   r   r  r	  rT   r!   r   r   r   r     s    


	
	







zScanner.scan_plain)r6   r   r   c                 C   s2  | j j}| j j}g }d}||dv r.|d7 }q| j |}| j | | }|dv r|  }	d| _| j d}
|
dks|
dkr|dtv rd S g }| d	v r| dkr|  q||   | j d}
|
dks|
dkr|dtv rd S q|	d
kr||	 n|s|d || n|r.|| |S )Nr   r   rN   r  Tr   r   r   r  r   )	r>   rj   r   r   r   r8   r   r   r   )r$   r6   r   r   r   r  r   r8  r   r  r   r  r   r   r   r9    s>    






zScanner.scan_plain_spaces)r   r   r   c                 C   s   | j j}| }|dkr6td||d|| j  d}||}|dkrd|  kr^dksn d|  krtd	ksn d
|  krdksn |dv r|d7 }||}qJ|dkr| j | td||d|| j  |d7 }| j |}| j | |S )Nrc   r   zexpected '!', but found rN   r   r   r   r   r   r   r   z-_zexpected '!' but found )r>   rj   r   r   r   r   )r$   r   r   r   r   r   r   r   r   r   r   >  s6    J
zScanner.scan_tag_handlec                 C   s  | j j}g }d}||}d|  kr,dkstn d|  krBdkstn d|  krXdkstn |dv st| jd	kr|d
kr|dkr|| j | | j | d}|| || n|d7 }||}q|dkr|| j | | j | d}|std||d|| j  d	|S )Nr   r   r   r   r   r   r   z-;/?:@&=+$,_.!~*'()[]%r   r   rX   rN   zwhile parsing an zexpected URI, but found r   )
r>   rj   rA   r   r   r   scan_uri_escapesr   r   r   )r$   r   r   r   r  r   r   r   r   r   r   ^  sR    
zScanner.scan_tag_uric           
   
   C   s   | j j}| j j}g }| j  }| dkr|  tdD ]4}||dvr6td||d||| j  q6|t| j dd |d qzt	|
d}W n< ty }	 z$td||t|	|W Y d }	~	n
d }	~	0 0 |S )NrX   r   r-  r   z@expected URI escape sequence of 2 hexdecimal numbers, but found r/  zutf-8)r>   rj   r   r   r2  r   r   r&   r   bytesdecodeUnicodeDecodeErrorstr)
r$   r   r   r   r   Z
code_bytesr#   r5  r   excr   r   r   r;    s.    


.zScanner.scan_uri_escapesc                 C   sX   | j  }|dv r>| j ddkr0| j d n
| j   dS |dv rT| j   |S dS )N   
r   
r        r   r>   rj   r   r   )r$   r   r   r   r   r     s    	


zScanner.scan_line_break)N)F)Wr   r   r   r   r%   propertyr&   r0   r*   r>   rA   r   rJ   rL   rP   rE   rV   rF   rR   rQ   r   r   ri   r   r4   rk   rm   ro   rq   r   rr   rs   r   r   rt   ru   r   rv   rx   rz   r|   r}   r~   r   r   r   r   r   r   r   r   rl   rn   rp   rw   ry   r{   r   rh   r   r   r   r   r   r   r   r   r   r   r
   r   r   r   r   r   r   r0  r1  r  r  r4  r   r9  r   r   r;  r   r   r   r   r   r   F   s   5

o
<$'.8{25X% #r   c                   @   s   e Zd ZeedddZedddZedddZedd	d
ZeddddZ	edddZ
deedddZdeee edddZdS )r   rB   c                 G   sT   |   r|   q |   t| jdkrP|s0dS |D ]}t| jd |r4 dS q4dS rD   )rE   rF   _gather_commentsr-   r3   rG   rH   r   r   r   rJ     s    
zRoundTripScanner.check_tokenr,   c                 C   s6   |   r|   q |   t| jdkr2| jd S d S rK   )rE   rF   rF  r-   r3   r/   r   r   r   rL     s    

zRoundTripScanner.peek_tokenc                 C   s   g }| j s|S t| j d trB| j d}|  jd7  _|| |  r|   | j s\|S t| j d trB|  jd7  _| j d}|| qBt|dkr| j d 	| | j
st| j dk r|   dS )zCcombine multiple comment lines and assign to next non-comment-tokenr   rN   r   N)r3   rG   r   rO   r5   r   rE   rF   r-   r   r2   )r$   r   rT   r   r   r   rF    s&    
z!RoundTripScanner._gather_commentsc                 C   sL  |   r|   q |   t| jdkrHt| jdkrt| jd tttt	frt| jd t
r| jd jj| jd jjkr|  jd7  _| jd}|   t| jdkrt| jd t
r|  jd7  _| jd}|jd|jj  |j |_|   q| jd | nt| jdkr.t| jd tr.t| jd t
r.| jd jj| jd jjkr.|  jd7  _| jd}d|jj| jd jj  d|jj  |j |_| jd | |   t| jdkr.t| jd t
r.|  jd7  _| jd}|jd|jj  |j |_|   q|  jd7  _| jdS d S )Nr   rN   r   r   )rE   rF   rF  r-   r3   rG   r   r   r   r   r   r   r!   r   r5   rO   r   r"   r   )r$   cc1r   r   r   rP     sd    

	"

"zRoundTripScanner.get_tokenNrS   c                 C   s@   |\}}}|r(|d dkr(|d d }q
| j t||| d S )Nr1   r   )r3   r   r   )r$   rT   r   r   r   r   r   r   rV     s    
zRoundTripScanner.fetch_commentc           	      C   s  | j j}| j j}| j jdkr,| dkr,|  d}| jdkr>dnd}|s| |v rZ|  qH| }|dkr| j  }|}|  |tvr| }|dkr|d7 }q||7 }|  q||  }t|dkr||7 }|  }q| j  }| jsd	| _	|||fS |  d
kr| j  }| jsd	| _	| }|dkr| j  }d
}|rT| jd	d}||7 }q6| dkrt|
ddd d }| j  }|||fS qBd	}qBd S )Nr   r   Fr   r   r   rW   r   Tr   
empty_linerN   )r>   rj   r   r    r0   r   r   r   r-   r8   rsplit)	r$   r   r   r   r   r   r   rT   r   r   r   r   rh     s\    








z#RoundTripScanner.scan_to_next_tokenF)rJ  r   c                 C   sr   | j  }|dv r>| j ddkr0| j d n
| j   dS |dv rT| j   |S |rn|dv rn| j   |S dS )NrA  r   rB  r   rC  z	 r   rD  )r$   rJ  r   r   r   r   r   f  s    	



z RoundTripScanner.scan_line_breakTr   c                 C   s   t j| ||dS )N)r   )r   r   )r$   r   r   r   r   r   r   ~  s    z"RoundTripScanner.scan_block_scalar)F)T)r   r   r   r   r   rJ   rL   rF  rP   rV   rh   r   r   r
   r   r   r   r   r   r     s   	5
Hr   c                   @   sn   e Zd ZdZeeeddddZdedddd	Zdd
ddZed
ddZ	ed
ddZ
ed
ddZdS )CommentBase)r   r!   r"   usedfunctionflineufunulineNr   r!   r"   r   c                 C   sN   || _ || _|| _d| _tt d d }|j| _|j| _	d | _
d | _d S )Nr   r   r   )r   r!   r"   rM  inspectgetframeinfostackrN  linenorO  rP  rQ  )r$   r   r!   r"   infor   r   r   r%     s    zCommentBase.__init__r  )r!  r   c                 C   s0   || _ tt d d }|j| _|j| _d S )NrN   r   )rM  rS  rT  rU  rN  rP  rV  rQ  )r$   r!  rW  r   r   r   set_used  s    zCommentBase.set_usedr,   c                 C   s
   d| _ d S )Nrd   )rM  r/   r   r   r   set_assigned  s    zCommentBase.set_assignedc                 C   s   | j  S r   r   r/   r   r   r   __str__  s    zCommentBase.__str__c                 C   s   | j S r   rZ  r/   r   r   r   __repr__  s    zCommentBase.__repr__c                 C   sZ   | j d }| j}| | j d| jdd| jdd|dd| j d| j d| j d| j S )Nrg   r   2ra   z<2z "Z40s)	r   r   rM  r!   r"   rN  rO  rP  rQ  )r$   Zxvr   r   r   r   rW    s    
(zCommentBase.info)r  )r   r   r   	__slots__r   r%   rX  rY  r?  r[  r\  rW  r   r   r   r   rL    s   rL  c                       s,   e Zd ZdZeeedd fddZ  ZS )
EOLCommentZEOLCNrR  c                    s   t  ||| d S r   superr%   r$   r   r!   r"   	__class__r   r   r%     s    zEOLComment.__init__r   r   r   r   r   r%   __classcell__r   r   rc  r   r_    s   r_  c                       s,   e Zd ZdZeeedd fddZ  ZS )FullLineCommentZFULLNrR  c                    s   t  ||| d S r   r`  rb  rc  r   r   r%     s    zFullLineComment.__init__re  r   r   rc  r   rg    s   rg  c                       s,   e Zd ZdZeeedd fddZ  ZS )BlankLineCommentZBLNKNrR  c                    s   t  ||| d S r   r`  rb  rc  r   r   r%     s    zBlankLineComment.__init__re  r   r   rc  r   rh    s   rh  c                   @   s   e Zd ZeddddZeeeedddZeeeeddd	Zeeeedd
dZeedddZedddZ	e
dddZedddZd$eedddZeedddZeedddZeedd d!Zedd"d#ZdS )%ScannedCommentsN)r$   r   c                 C   s   i | _ g | _d S r   )r   unusedr/   r   r   r   r%     s    zScannedComments.__init__)rT   r"   r!   r   c                 C   sZ   | ddkr |d dks,J nd|vs,J t|d d || | j|< }| j| |S Nr   rN   r1   )countr_  r   rj  r   r$   rT   r"   r!   retvalr   r   r   add_eol_comment  s    zScannedComments.add_eol_commentc                 C   sZ   | ddkr|d dksJ || jvs,J t|d d || | j|< }| j| |S rk  )rl  r   rh  rj  r   rm  r   r   r   r     s
    zScannedComments.add_blank_linec                 C   sL   | ddkr|d dksJ t|d d || | j|< }| j| |S rk  )rl  rg  r   rj  r   rm  r   r   r   add_full_line_comment  s    z%ScannedComments.add_full_line_comment)idxr   c                 C   s
   | j | S r   )r   )r$   rq  r   r   r   __getitem__  s    zScannedComments.__getitem__r,   c                 C   s"   dd dd | j D  d S )NzParsedComments:
  z
  c                 s   s&   | ]\}}|d d|   V  qdS )r]  r   N)rW  ).0rV  r
  r   r   r   	<genexpr>      z*ScannedComments.__str__.<locals>.<genexpr>r   r   r   itemsr/   r   r   r   r[    s    zScannedComments.__str__c                 C   s,   t | j d \}}|dd|  dS )Nr1   r]  r   r   )r   r   rw  rW  )r$   rV  r
  r   r   r   last  s    zScannedComments.lastc                 C   s   t | jdkS rK   )r-   rj  r/   r   r   r   any_unprocessed  s    zScannedComments.any_unprocessedF)user   c                 c   s   t | jdkr~|r| jdn| jd }tt d d }td|| j| j|j	|j
 || j| fV  |r | j|   q d S )Nr   rN   using)r-   rj  rO   rS  rT  rU  r   r   r   rN  rV  rX  )r$   rz  firstrW  r   r   r   unprocessed  s    zScannedComments.unprocessed)r  r   c                 C   s   |j j}tt d d }td|| j|j|j d}| jr| jd |k rd}| j	d}td| | j
|   || q8|S )NrN   r   
assign_preFTzassign_pre < )r   r!   rS  rT  rU  r   rj  rN  rV  rO   r   rX  Zadd_comment_prer$   r  Z
token_linerW  Zgobbledr|  r   r   r   r~    s    
zScannedComments.assign_pre)r3   r   c                 C   s,  z| j d }W n ty"   Y d S 0 t| j| ts8d S d}||  jj|ks^t||  trh|d7 }q<td| t	||krt||  t
rt||d   t
rd S zt||  t
r.t||d   tr.z>| j d}| j|   td||t ||  |t W n ty&   tY n0 W d S W n tyL   td Y n0 zt||  t
rt||d   ttfrz0| j d}| j|   ||  |t W n ty   tY n0 W d S W n ty   td Y n0 |D ]}td| qtdt||   dd l}|d d S )	Nr   rN   Zidx1z>>>>>aZIndexError1ZIndexError2ztt-znot implemented EOL)rj  r   rG   r   r_  r   r!   r   r   r-   r   r   rO   rX  KEYCMNTZadd_comment_eolrU   r   	VALUECMNTtypesysexit)r$   r3   Zcomment_linerq  Zeol_idxr  r  r   r   r   
assign_eol  sj    







zScannedComments.assign_eolc                 C   s   |j j}tt d d }td|| j|j|j d}| jr| jd |k rd}| j	d}td| | j
|   || q8|S )NrN   r   assign_postFTzassign_post < )r   r!   rS  rT  rU  r   rj  rN  rV  rO   r   rX  Zadd_comment_postr  r   r   r   r  I  s    
zScannedComments.assign_postc                 C   s   d dd | j D S )Nr   c                 s   s4   | ],\}}|j d krd|dd |  dV  qdS )r   z  r]  r   N)rM  rW  )rs  indr
  r   r   r   rt  X  ru  z2ScannedComments.str_unprocessed.<locals>.<genexpr>rv  r/   r   r   r   str_unprocessedV  s    zScannedComments.str_unprocessed)F)r   r   r   r   r%   ro  r   rp  rr  r[  r?  rx  r   ry  r}  r~  r  r  r  r   r   r   r   ri    s   

	7ri  c                       sn   e Zd Zeedd fddZedddZeddd	Zddd
dZddddZ	eedddZ
  ZS )RoundTripScannerSCN)argr   r   c                    s*   t  j|i | | jd us J d | _d S r   )ra  r%   r'   r   )r$   r  r   rc  r   r   r%   ]  s    zRoundTripScannerSC.__init__r,   c                 C   st   |   r|   q t| jdkrpt| jd trD| j| jd  n| j| jd  |  j	d7  _	| j
dS d S rM   )rE   rF   r-   r3   rG   r   r   r  r~  r5   rO   r/   r   r   r   rP   d  s    
zRoundTripScannerSC.get_tokenc                 C   s   | j d u rt  | j_| _ | jr$dS t| jdkr6dS |   |  | j	krPdS t| jdk rbdS | jd j
j| jd j
jkrdS tdt| j | jD ]}t| qt| j   | j | jd  | j | j dS )NFr   Tr   r1   z-x--)r   ri  r'   Zparsed_commentsr2   r-   r3   rQ   rR   r5   r   r!   r   r  r~  r  )r$   r  r   r   r   rE   p  s(    


z#RoundTripScannerSC.need_more_tokensc           	      C   st  | j j}| j j}| j jdkr,| dkr,|  | j  }d}|sp| dkrR|  q@| }|dkr| j  }|}|  |tvr| }|dkr|d7 }q||7 }|  qt|jdkr| j||j|j	 n| j
||j|j	 d}|   | jsd	| _d S t|  rj| jsd	| _|   d S |r:| jd	d
}||7 }q| dkrZ|ddd d }| j  }d S q:d	}q:d S )Nr   r   Fr   r   rW   r   r   TrI  rN   )r>   rj   r   r    r   r   r"   r   rp  r!   ro   scan_empty_or_full_line_commentsr0   r8   r   r   rK  )	r$   r   r   r   r   r   Zcomment_start_markrT   r&  r   r   r   rh     sf    





    
z%RoundTripScannerSC.scan_to_next_tokenc                 C   s  | j  }|jdksJ d}d }d }| j  }|dv r| j ddkrT| j d n
| j   |d ur|d7 }| j||j|j d }n|d7 }| j	||j|j d}| j  }| j  }q.|d u r|dv r||7 }q|dkr| j  }d}qqn||7 }| j   | j  }q.d S )	Nr   r   r  r   rB  r   r   r   )
r>   r   r"   rj   r   r   r   rp  r!   r   )r$   ZblmarkZblanksrT   r#   r   r   r   r   r    s<    







z3RoundTripScannerSC.scan_empty_or_full_line_commentsr   c                 C   s   | j j}| j j}d}d }| dkr4|| 7 }|  q| dkrpd}| j  }| tvrh|| 7 }|  qL|d7 }| }|tvrtd|d|| j  |d ur| j||j|j	 | 
  d S )Nr   r   r   r   r  r   )r>   rj   r   r   r   r   r   ro  r"   r!   r   )r$   r   r   r   r   rT   r#   r   r   r   r   r     s4    





z1RoundTripScannerSC.scan_block_scalar_ignored_line)r   r   r   r   r%   rP   r   rE   rh   r  r   rf  r   r   rc  r   r  \  s   ?'r  )"rS  Zruamel.yaml.errorr   r   Zruamel.yaml.tokensZruamel.yaml.compatr   r   r   typingr   r	   r
   r   r   r   r   __all__r   r   r   r   r   r   r   r   r  r  rL  r_  rg  rh  ri  r  r   r   r   r   <module>   sH                v U& 