o
    h\                    @   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m	Z	 	 g dZd	Zd
ZdZ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)*)_Fcheck_anchorname_charnprintnprintfF)AnyDictOptionalListUnionText)VersionType)ScannerRoundTripScannerScannerErroru   
   u    
 	   	c                  O   s   t | i |S N)r   )argskw r   [/var/www/html/magazine_api/magazine_env/lib/python3.10/site-packages/ruamel/yaml/scanner.pyxprintf0      r   c                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__r   r   r   r   r   6   s    r   c                   @   s   e Zd Zdd ZdS )	SimpleKeyc                 C   s(   || _ || _|| _|| _|| _|| _d S r   )token_numberrequiredindexlinecolumnmark)selfr   r    r!   r"   r#   r$   r   r   r   __init__=   s   
zSimpleKey.__init__N)r   r   r   r&   r   r   r   r   r   :   s    r   c                   @   s  e Zd ZdddZedd Zdd Zedd	 Zed
d Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFdG Z&dHdI Z'dJdK Z(dLdM Z)dNdO Z*dPdQ Z+dRdS Z,dTdU Z-dVdW Z.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9dndo Z:dpdq Z;drds Z<dtdu Z=dvdw Z>dxdy Z?dzd{ Z@dd}d~ZAdd ZBdd ZCdd ZDdd ZEdd ZFi ddddddddddddddddddddddddddddddddddddiZGddddZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdS )r   Nc                 C   sB   || _ | j durt| j dddu r| | j _|   d| _d| _dS )zInitialize the scanner.N_scannerF)loadergetattrr'   reset_scannerZ
first_timeyaml_version)r%   r(   r   r   r   r&   H   s   
zScanner.__init__c                 C   s
   t | jS r   )lenflow_contextr%   r   r   r   
flow_level[   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   sD   z| j W S  ty!   t| jdr| jj| _ n| jj| _ | j  Y S w 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 r9   )r<   r(   resolverZprocessing_versionr.   r   r   r   scanner_processing_version   s   
z"Scanner.scanner_processing_versionc                 G   sR   |   r|   |   st| jdkr'|sdS |D ]}t| jd |r& dS qdS Nr   TF)need_more_tokensfetch_more_tokensr,   r2   
isinstancer%   choiceschoicer   r   r   check_token   s   zScanner.check_tokenc                 C   s4   |   r|   |   st| jdkr| jd S d S Nr   )rB   rC   r,   r2   r.   r   r   r   
peek_token   s   
zScanner.peek_tokenc                 C   sD   |   r|   |   st| jdkr |  jd7  _| jdS d S Nr      )rB   rC   r,   r2   r4   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rdS dS )NFr   T)r1   r,   r2   stale_possible_simple_keysnext_possible_simple_keyr4   r.   r   r   r   rB      s   zScanner.need_more_tokensc                 C   s   t r   )NotImplementedError)r%   commentr   r   r   fetch_comment   s   zScanner.fetch_commentc                 C   s  |   }|d ur| |S |   | | jj | j }|dkr%|  S |dkr1|  r1| 	 S |dkr=| 
 r=|  S |dkrI|  rI|  S |dkrQ|  S |dkrY|  S |dkra|  S |dkri|  S |d	krq|  S |dkr}|  r}|  S |d
kr|  r|  S |dkr|  r|  S |dkr|  S |dkr|  S |dkr|  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 t$d|d| j% )N %-.[{]},?:r   &!|>'"z!while scanning for the next tokenz2found character {ch!r} that cannot start any tokench)&scan_to_next_tokenrS   rO   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_tagr/   fetch_literalfetch_foldedfetch_singlefetch_doublecheck_plainfetch_plainr   r   get_mark)r%   rR   rf   r   r   r   rC      sh   

	
zScanner.fetch_more_tokensc                 C   s6   d }| j D ]}| j | }|d u s|j|k r|j}q|S r   )r8   r   )r%   Zmin_token_numberlevelkeyr   r   r   rP   L  s   	

z Scanner.next_possible_simple_keyc                 C   sb   t | jD ])}| j| }|j| jjks| jj|j dkr.|jr*td|jd| j | j|= qd S )Ni   while scanning a simple keycould not find expected ':')	listr8   r"   r=   r!   r    r   r$   r   )r%   r   r   r   r   r   rO   \  s   
 z"Scanner.stale_possible_simple_keysc                 C   sl   | j  o
| j| jjk}| jr4|   | jt| j }t	||| jj
| jj| jj| j }|| j| j < d S d S r   )r/   r5   r=   r#   r7   remove_possible_simple_keyr4   r,   r2   r   r!   r"   r   r8   )r%   r    r   r   r   r   r   save_possible_simple_keyp  s   z Scanner.save_possible_simple_keyc                 C   sF   | j | jv r!| j| j  }|jrtd|jd| j | j| j = d S d S )Nr   r   )r/   r8   r    r   r$   r=   r   )r%   r   r   r   r   r     s   z"Scanner.remove_possible_simple_keyc                 C   sR   t | jrd S | j|kr'| j }| j | _| jt	|| | j|ksd S d S r   )
boolr/   r5   r=   r   r6   rM   r2   appendBlockEndToken)r%   r#   r$   r   r   r   rh     s   


zScanner.unwind_indentc                 C   s&   | j |k r| j| j  || _ dS dS )NTF)r5   r6   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   r2   r   ZStreamStartTokenr   r%   r$   r   r   r   r3     s   
zScanner.fetch_stream_startc                 C   sD   |  d |   d| _i | _| j }| jt|| d| _	d S )Nr0   FT)
rh   r   r7   r8   r=   r   r2   r   ZStreamEndTokenr1   r   r   r   r   rj     s   


zScanner.fetch_stream_endc                 C   s,   |  d |   d| _| j|   d S )Nr0   F)rh   r   r7   r2   r   scan_directiver.   r   r   r   rl     s   
zScanner.fetch_directivec                 C      |  t d S r   )fetch_document_indicatorZDocumentStartTokenr.   r   r   r   rn     r   zScanner.fetch_document_startc                 C   r   r   )r   ZDocumentEndTokenr.   r   r   r   rp     r   zScanner.fetch_document_endc                 C   sN   |  d |   d| _| j }| jd | j }| j||| d S )Nr0   F   )rh   r   r7   r=   r   forwardr2   r   )r%   
TokenClass
start_markend_markr   r   r   r     s   


z Scanner.fetch_document_indicatorc                 C      | j tdd d S )NrX   to_push)fetch_flow_collection_startZFlowSequenceStartTokenr.   r   r   r   rq        z!Scanner.fetch_flow_sequence_startc                 C   r   )NrY   r   )r   ZFlowMappingStartTokenr.   r   r   r   rr     r   z Scanner.fetch_flow_mapping_startc                 C   sN   |    | j| d| _| j }| j  | j }| j||| d S NT)r   r-   r   r7   r=   r   r   r2   )r%   r   r   r   r   r   r   r   r     s   


z#Scanner.fetch_flow_collection_startc                 C   r   r   )fetch_flow_collection_endFlowSequenceEndTokenr.   r   r   r   rs     r   zScanner.fetch_flow_sequence_endc                 C   r   r   )r   FlowMappingEndTokenr.   r   r   r   rt     r   zScanner.fetch_flow_mapping_endc                 C   sd   |    z| j }W n	 ty   Y nw d| _| j }| j  | j }| j	||| d S NF)
r   r-   rM   
IndexErrorr7   r=   r   r   r2   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   )r7   r   r=   r   r   r2   r   ZFlowEntryToken)r%   r   r   r   r   r   ru   +  s   


zScanner.fetch_flow_entryc                 C   s   | j s&| jstd d d| j | | jjr%| j }| jt	|| n	 d| _| 
  | j }| j  | j }| jt|| d S )Nz%sequence entries are not allowed hereT)r/   r7   r   r=   r   r   r#   r2   r   ZBlockSequenceStartTokenr   r   BlockEntryTokenr%   r$   r   r   r   r   r   rw   7  s    



zScanner.fetch_block_entryc                 C   s   | j s%| jstd d d| j | | jjr%| j }| jt	|| | j  | _| 
  | j }| j  | j }| jt|| d S )Nz!mapping keys are not allowed here)r/   r7   r   r=   r   r   r#   r2   r   BlockMappingStartTokenr   r   KeyTokenr   r   r   r   ry   S  s   




zScanner.fetch_keyc                 C   s  | j | jv r>| j| j  }| j| j = | j|j| j t|j|j | j s:| |j	r:| j|j| j t
|j|j d| _n1| j sN| jsNtd d d| j | j sf| | jj	rf| j }| jt
|| | j  | _|   | j }| j  | j }| jt|| d S )NFz#mapping values are not allowed here)r/   r8   r2   insertr   r4   r   r$   r   r#   r   r7   r   r=   r   r   r   r   
ValueToken)r%   r   r$   r   r   r   r   r   r{   o  s>   







zScanner.fetch_valuec                 C   $   |    d| _| j| t d S r   )r   r7   r2   r   scan_anchorZ
AliasTokenr.   r   r   r   r|        zScanner.fetch_aliasc                 C   r   r   )r   r7   r2   r   r   ZAnchorTokenr.   r   r   r   r}     r   zScanner.fetch_anchorc                 C   "   |    d| _| j|   d S r   )r   r7   r2   r   scan_tagr.   r   r   r   r~     s   zScanner.fetch_tagc                 C      | j dd d S )Nra   stylefetch_block_scalarr.   r   r   r   r        zScanner.fetch_literalc                 C   r   )Nrb   r   r   r.   r   r   r   r     r   zScanner.fetch_foldedc                 C   s$   d| _ |   | j| | d S r   )r7   r   r2   r   scan_block_scalarr%   r   r   r   r   r     s   zScanner.fetch_block_scalarc                 C   r   )Nrc   r   fetch_flow_scalarr.   r   r   r   r     r   zScanner.fetch_singlec                 C   r   )Nrd   r   r   r.   r   r   r   r     r   zScanner.fetch_doublec                 C   s$   |    d| _| j| | d S r   )r   r7   r2   r   scan_flow_scalarr   r   r   r   r     r   zScanner.fetch_flow_scalarc                 C   r   r   )r   r7   r2   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   rk     s   zScanner.check_directivec                 C   4   | j jdkr| j ddkr| j dtv rdS d S )Nr   r   ---Tr=   r#   prefixri   _THE_END_SPACE_TABr.   r   r   r   rm         zScanner.check_document_startc                 C   r   )Nr   r   ...Tr   r.   r   r   r   ro     r   zScanner.check_document_endc                 C   s   | j dtv S )NrL   )r=   ri   r   r.   r   r   r   rv     s   zScanner.check_block_entryc                 C   s   t | jrdS | jdtv S )NTrL   )r   r/   r=   ri   r   r.   r   r   r   rx     s   
zScanner.check_keyc                 C   s   | j dkrt| jrdS n/t| jr<| jd dkr%| jdtvr#dS dS | jr:t| jd t	r:| jdtvr:dS dS | jdtv S )NrL   rL   Tr0   rX   rL   F)
r@   r   r/   r-   r=   ri   r   r2   rD   r   r.   r   r   r   rz     s   


zScanner.check_valuec                 C   s   | j j}| }| jdkr"|dvp!|dtvo!|dkp!| j o!|dv S |dvr(dS |d}|dkr6|tvr6dS |dkrEt| jrE|tvrEdS |dtvoV|dkpV| j oV|dv S )Nr   u      	
  -?:,[]{}#&*!|>'"%@`rL   rV   z?:Tr^   )r=   ri   r@   r   r/   r   
_SPACE_TAB)r%   srprf   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}|sJ| dkr)|  | dks!| dkr;| |vr;|  | |vs3|  rF| jsEd| _nd}|rd S )Nr      ﻿F #T)r=   ri   r   r!   _THE_ENDscan_line_breakr/   r7   )r%   r   srffoundZ_the_endr   r   r   rg   S  s*   




zScanner.scan_to_next_tokenc                 C   s   | j j}| j j}| j  }|  | |}d }|dkr&| |}| j  }n!|dkr5| |}| j  }n| j  }| tvrG|  | tvs?| | t	||||S )NYAMLZTAG)
r=   ri   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   z  s$   







zScanner.scan_directivec                 C   s  d}| j j}||}d|  krdks/n d|  krdks/n d|  kr*dks/n |dv r\|d	7 }||}d|  krAdks/n d|  krLdks/n d|  krWdks/n |dv s/|sltd
|td|d| j  | j |}| j | | }|dvrtd
|td|d| j  |S )Nr   09AZazz-_:.rL   while scanning a directive:expected alphabetic or numeric character, but found {ch!r}re        
  )r=   ri   r   r   r   r   r   )r%   r   lengthr   rf   r   r   r   r   r     s2   JJ

zScanner.scan_directive_namec                 C   s   | j j}| j j}| dkr|  | dks| |}| dkr.td|td| d| j  |  | |}| dvrJtd|td| d| j  ||f| _| jS )Nr   rW   r   z/expected a digit or '.', but found {srp_call!r}srp_callr   )r=   ri   r   scan_yaml_directive_numberr   r   r   r+   )r%   r   r   r   majorminorr   r   r   r     s0   






z!Scanner.scan_yaml_directive_valuec                 C   s   | j j}| j j}| }d|  krdks$n td|td|d| j  d}d||  kr2dkrEn n|d7 }d||  krDdks4n t| j |}|| |S )Nr   r   r   z"expected a digit, but found {ch!r}re   r   rL   )r=   ri   r   r   r   r   intr   )r%   r   r   r   rf   r   r   r   r   r   r     s"   
z"Scanner.scan_yaml_directive_numberc                 C   s`   | j j}| j j}| dkr|  | dks| |}| dkr'|  | dks| |}||fS )Nr   )r=   ri   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rtd|td|d| j |S )N	directiver   r   expected ' ', but found {ch!r}re   )scan_tag_handler=   ri   r   r   r   r%   r   r   rf   r   r   r   r        

z!Scanner.scan_tag_directive_handlec                 C   s>   |  d|}| j }|dvrtd|td|d| j |S )Nr   r   r   r   re   )scan_tag_urir=   ri   r   r   r   r   r   r   r   r     r   z!Scanner.scan_tag_directive_prefixc                 C   s   | j j}| j j}| dkr|  | dks| dkr'| tvr'|  | tvs| }|tvr<td|td|d| j  |   d S )Nr   r   r   4expected a comment or a line break, but found {ch!r}re   r=   ri   r   r   r   r   r   r   )r%   r   r   r   rf   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|r0|d7 }||}t|s$|sDttd|d|td|d	| j  | j |}| j | |d
vrfttd|d|td|d	| j  | j  }	||||	S )Nr   aliasanchorr   rL   while scanning an {name!s}r   r   re   u     	
  ?:,[]{}%@`)r=   ri   r   r   r   r   r   r   )
r%   r   r   r   Z	indicatorr   r   rf   r   r   r   r   r   r     s>   







zScanner.scan_anchorc           
      C   s<  | j j}| j  }|d}|dkr9d }| j d | d|}| dkr3td|td| d| j  | j   nA|tv rGd }d	}| j   n3d}d
}|dvrb|d	krVd}n|d7 }||}|dvsOd	}|rm| d|}nd	}| j   | d|}| }|dvrtd|td|d| j  ||f}| j  }	t	|||	S )NrL   <   tagrb   zwhile parsing a tagz$expected '>', but found {srp_call!r}r   r`   Fr   Tzwhile scanning a tagr   re   )
r=   ri   r   r   r   r   r   r   r   ZTagToken)
r%   r   r   rf   r   suffixr   Z
use_handler   r   r   r   r   r   G  sZ   




zScanner.scan_tagFc                 C   s|  | j j}|dkrd}nd}g }| j  }| j   | |\}}| |}	| jd }
|d u rQ|
dk rD|dvsB| jdkrDt| j	ddrDd}
| 
 \}}}t|
|}n|
dk rWd}
|
| d }| |\}}d}| j j|kr| d	kr|| | d
v}d}||tvr|d7 }||tvs|| j | | j | |  }| |\}}|dv r|
dkr|  s|  rn?| j j|kr| d	kr|r|r|dkr|d |r|dkr|r| d
vr|s|d n|| nn| j j|kr| d	ksqg }|dv r|| |du r|| n
|dv r|| td|d|||}| j	d ur@t| j	dd}|d u r@|	d ur@||	g t|dkr| j	d ur{t| j	dd }|d ur{|jt| }|D ]}|d dksmJ | j|d| |d7 }qb|  }|r|d|d j |d   |  }|s| j	d urt| j	dd}|d u r| j  }td|||}|| |S )Nrb   TFrL   z|>r   Z0top_level_block_style_scalar_no_indent_error_1_1 rT   r   r   
r   r   r   comment_handlingr0   )r=   ri   r   r   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner5   r@   r)   r(   scan_block_scalar_indentationmaxscan_block_scalar_breaksr#   extendr   r   r   r   rm   ro   ScalarTokenjoinadd_pre_commentsr,   r"   commentsadd_blank_linerg   CommentTokenadd_post_comment)r%   r   rtr   foldedchunksr   chomping	incrementZblock_scalar_commentZ
min_indentbreaks
max_indentr   r5   
line_breakZleading_non_spacer   Ztrailingtokencomment_handlerr"   xrR   Zcomment_end_markr   r   r   r   y  s   








-










zScanner.scan_block_scalarc                 C   s
  | j j}d }d }| }|dv r<|dkrd}nd}| j   | }|dv r;t|}|dkr6td|d| j  | j   n0|dv rlt|}|dkrRtd|d| j  | j   | }|dv rl|dkred}nd}| j   | }|d	vrtd|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   z=expected chomping or indentation indicators, but found {ch!r}re   )r=   ri   r   r   r   r   r   )r%   r   r   r  r  rf   r   r   r   r     s\   




z$Scanner.scan_block_scalar_indicatorsc                 C   s   | j j}| j j}d}d }| dkr|| 7 }|  | dks| dkr7|}| tvr7|| 7 }|  | tvs*| }|tvrLtd|td|d| j  |   |S )Nr   r   r   r  r   re   r   )r%   r   r   r   r   rR   rf   r   r   r   r   (  s0   







z&Scanner.scan_block_scalar_ignored_linec                 C   s~   | j j}| j j}g }d}| j  }| dv r:| dkr(||   | j  }n|  | j j|kr5| j j}| dv s|||fS )Nr       
  r   )r=   ri   r   r   r   r   r#   )r%   r   r   r  r  r   r   r   r   r   B  s   




z%Scanner.scan_block_scalar_indentationc                 C   s   g }| j j}| j j}| j  }| j j|k r(| dkr(|  | j j|k r(| dks| dv rW||   | j  }| j j|k rR| dkrR|  | j j|k rR| dksD| dv s-||fS )Nr   
   
  )r=   ri   r   r   r#   r   r   )r%   r5   r  r   r   r   r   r   r   r  T  s   



z Scanner.scan_block_scalar_breaksc                 C   s   |dkrd}nd}| j j}g }| j  }| }| j   || || | |krA|| || || || | |ks*| j   | j  }td|d|||S )Nrd   TFr   )	r=   ri   r   r   r  scan_flow_scalar_non_spacesscan_flow_scalar_spacesr  r  )r%   r   doubler   r  r   quoter   r   r   r   r   d  s    





zScanner.scan_flow_scalarr   rT   r   r   bt	nr   vfrer   rd   /\N   _    Lu    Pu    r         )r  uUc           
   	   C   s  g }| j j}| j j}	 d}||dvr|d7 }||dvs|dkr.|| j | || | }|sG|dkrG|ddkrG|d |d n|rM|dksS|s\|dv r\|| |  n|r|dkr|  | }|| jv ry|| j|  |  nb|| jv r| j| }|  t|D ]}||d	vrtd
|t	d|||d| j 
 qt| j |d}	|t|	 || n"|dv r|   || || ntd
|t	d|d| j 
 |S q)NTr   u    
'"\ 	  rL   rc   r   z"\r,  0123456789ABCDEFabcdefz%while scanning a double-quoted scalarzQexpected escape sequence of {length:d} hexdecimal numbers, but found {srp_call!r})r   r      u
   
  z%found unknown escape character {ch!r}re   )r=   ri   r   r   r   ESCAPE_REPLACEMENTSESCAPE_CODESranger   r   r   r   chrr   r  scan_flow_scalar_breaks)
r%   r  r   r  r   r   r   rf   kcoder   r   r   r    sl   







z#Scanner.scan_flow_scalar_non_spacesc           
      C   s   | j j}g }d}||dv r|d7 }||dv s| j |}| j | | }|dkr5td|d| j  |dv r[|  }| ||}	|dkrM|| n|	sT|d	 |	|	 |S || |S )
Nr   r   rL   rT   while scanning a quoted scalarzfound unexpected end of streamr  r   r   )
r=   ri   r   r   r   r   r   r=  r   r  )
r%   r  r   r   r  r   whitespacesrf   r  r  r   r   r   r    s6   


zScanner.scan_flow_scalar_spacesc                 C   s   g }| j j}| j j}	 | j d}|dks|dkr)|dtv r)td|d| j  | dv r6|  | dv s.| dv rC||   n|S q)	NTr   r   r   r@  z#found unexpected document separatorr   r  )	r=   ri   r   r   r   r   r   r   r   )r%   r  r   r  r   r   r   r   r   r   r=    s&   


zScanner.scan_flow_scalar_breaksc                 C   s  | j j}| j j}g }| j  }|}| jd }g }	 d}| dkr!n	 ||}	|	dkr3||d tvr3n%|	dkr=| jdkr=n|	tv sW| jsP|	dkrP||d tv sW| jrX|	dv rXn|d7 }q"| jr{|	dkr{||d d	vr{|| td
|d| j  d|dkrn2d| _	|
| || j | || | j  }| ||}|r| dks| js| j j|k rnqtd|d||}
| jd urt| jdd}|d u r|r|d dkrtd|d ||}|
| |
S |dur|jd }|D ]}	|	dkr| jdd| |d7 }q|
S )NrL   Tr   r   r^   r]   r   z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.Fr   r   r   )r=   ri   r   r   r5   r   r@   r/   r   r7   r  r   r   scan_plain_spacesr#   r  r  r(   r)   r  r	  r"   r  r  )r%   r   r   r  r   r   r5   spacesr   rf   r  r  rR   r"   r   r   r   r     s   


	


4



zScanner.scan_plainc                 C   s>  | j j}| j j}g }d}||dv r|d7 }||dv s| j |}| j | | }|dv r|  }	d| _| j d}
|
dksD|
dkrL|dtv rLd S g }| d	v r~| dkr\|  n||   | j d}
|
dksq|
dkry|dtv ryd S | d	v sS|	d
kr||	 n|s|d || |S |r|| |S )Nr   r   rL   r  Tr   r   r   r  r   )	r=   ri   r   r   r   r7   r   r   r  )r%   r5   r   r   r   r  r   rA  rf   r  r   r  r   r   r   rB  ]  sD   





zScanner.scan_plain_spacesc                 C   sN  | j j}| }|dkrttd|d|td|d| j  d}||}|dkrd|  kr1d	ksLn d
|  kr<dksLn d|  krGdksLn |dv ry|d7 }||}d|  kr^d	ksLn d
|  kridksLn d|  krtdksLn |dv sL|dkr| j | ttd|d|td|d| j  |d7 }| j |}| j | |S )Nr`   r   r   zexpected '!', but found {ch!r}re   rL   r   r   r   r   r   r   r   z-_)r=   ri   r   r   r   r   r   )r%   r   r   r   rf   r   r   r   r   r   r     s8   

JJ

zScanner.scan_tag_handlec                 C   sz  | j j}g }d}||}d|  krdks:n d|  kr!dks:n d|  kr,dks:n |dv s:| jd	kr|d
kr|dkrY|| j | | j | d}|| || n|d7 }||}d|  krkdks:n d|  krvdks:n d|  krdks:n |dv s:| jd	kr|d
ks:|dkr|| j | | j | d}|sttd|d|td|d| j 	 d
|S )Nr   r   r   r   r   r   r   z-;/?:@&=+$,_.!~*'()[]%r   r   rU   rL   zwhile parsing an {name!s}r   zexpected URI, but found {ch!r}re   r   )r=   ri   r@   r   r   r   scan_uri_escapesr   r   r   r  )r%   r   r   r   r  r   rf   r   r   r   r     sB   



zScanner.scan_tag_uric           
   
   C   s   | j j}| j j}g }| j  }| dkrM|  tdD ]}||dvr7ttd|d|td||d| j  q|t| j 	dd |d | dksz
t
|d	}W |S  typ }	 zttd|d|t|	|d }	~	ww )
NrU   r   r7  r   r   zLexpected URI escape sequence of 2 hexdecimal numbers, but found {srp_call!r}r   r8  zutf-8)r=   ri   r   r   r;  r   r   r   r   r   bytesdecodeUnicodeDecodeErrorstr)
r%   r   r   r   r   Z
code_bytesr$   r>  r   excr   r   r   rD    s<   



zScanner.scan_uri_escapesc                 C   sZ   | j  }|dv r | j ddkr| j d dS | j   dS |dv r+| j   |S dS )N   
r   
r        r   r=   ri   r   r   )r%   rf   r   r   r   r     s   



zScanner.scan_line_breakr   F)Rr   r   r   r&   propertyr/   r*   r=   r@   rH   rJ   rN   rB   rS   rC   rP   rO   r   r   rh   r   r3   rj   rl   rn   rp   r   rq   rr   r   rs   rt   r   ru   rw   ry   r{   r|   r}   r~   r   r   r   r   r   r   r   rk   rm   ro   rv   rx   rz   r   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r9  r:  r  r  r=  r   rB  r   r   rD  r   r   r   r   r   r   G   s    

6

p	=					%'/
2|3	
:Y&!$r   c                   @   sP   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdddZ	dddZ
dS )r   c                 G   sZ   |   r|   |   s|   t| jdkr+|sdS |D ]}t| jd |r* dS qdS rA   )rB   rC   _gather_commentsr,   r2   rD   rE   r   r   r   rH     s   zRoundTripScanner.check_tokenc                 C   s<   |   r|   |   s|   t| jdkr| jd S d S rI   )rB   rC   rP  r,   r2   r.   r   r   r   rJ     s   
zRoundTripScanner.peek_tokenc                 C   s   g }| j s|S t| j d tr!| j d}|  jd7  _|| |  rL|   | j s.|S t| j d trH|  jd7  _| j d}|| |  s%t|dkrZ| j d 	| | j
sjt| j dk rl|   dS dS dS )zCcombine multiple comment lines and assign to next non-comment-tokenr   rL   r   N)r2   rD   r  rM   r4   r   rB   rC   r,   r  r1   )r%   r  rR   r   r   r   rP    s*   

	z!RoundTripScanner._gather_commentsc                 C   s~  |   r|   |   s|   t| jdkr=t| jdkrt| jd tttt	frt| jd t
r| jd jj| jd jjkr|  jd7  _| jd}|   t| jdkrt| jd t
r|  jd7  _| jd}|jd|jj  |j |_|   t| jdkrt| jd t
sa| jd | nt| jdkr0t| jd tr0t| jd t
r0| jd jj| jd jjkr0|  jd7  _| jd}d|jj| jd jj  d|jj  |j |_| jd | |   t| jdkr0t| jd t
r0|  jd7  _| jd}|jd|jj  |j |_|   t| jdkr0t| jd t
s|  jd7  _| jdS d S )Nr   rL   r   r   )rB   rC   rP  r,   r2   rD   r  r   r   r   r  r   r"   r   r4   rM   r   r#   r	  )r%   cc1r   r   r   rN   0  sb   

""zRoundTripScanner.get_tokenc                 C   sN   |\}}}|r|d dkr|d d }|r|d dks| j t||| d S )Nr0   r   )r2   r   r  )r%   rR   r   r   r   r   r   r   rS   f  s
   
zRoundTripScanner.fetch_commentc                 C   s  | j j}| j j}| j jdkr| dkr|  d}|s| dkr'|  | dks| }|dkr{| j  }|}|  |tvrS| }|dkrH|d7 }n||7 }|  |tvs<|  }t|dkrk||7 }|  }t|dks]| j  }| jsvd| _	|||fS |  d	kr| j  }| jsd| _	| }|dkr| j  }d	}|r| jdd
}||7 }|s| dkr|
ddd d }| j  }|||fS nd}|rd S )Nr   r   Fr   r   rT   r   Tr   )
empty_linerL   )r=   ri   r   r!   r   r   r   r,   r/   r7   rsplit)r%   r   r   r   rf   r   rR   r   r   r   r   rg   q  sf   









-z#RoundTripScanner.scan_to_next_tokenFc                 C   st   | j  }|dv r | j ddkr| j d dS | j   dS |dv r+| j   |S |r8|dv r8| j   |S dS )NrJ  r   rK  r   rL  z	 r   rM  )r%   rS  rf   r   r   r   r     s   




z RoundTripScanner.scan_line_breakTc                 C   s   t j| ||dS )N)r
  )r   r   )r%   r   r
  r   r   r   r     r   z"RoundTripScanner.scan_block_scalarNrN  )T)r   r   r   rH   rJ   rP  rN   rS   rg   r   r   r   r   r   r   r     s    
6
Ir   c                   @   sB   e Zd ZdZdd ZdddZdd Zd	d
 Zdd Zdd Z	dS )CommentBase)r   r"   r#   usedfunctionflineufunulinec                 C   sN   || _ || _|| _d| _tt d d }|j| _|j| _	d | _
d | _d S )Nr   r   r   )r   r"   r#   rV  inspectgetframeinfostackrW  linenorX  rY  rZ  )r%   r   r"   r#   infor   r   r   r&     s   
zCommentBase.__init__r  c                 C   s0   || _ tt d d }|j| _|j| _d S )NrL   r   )rV  r[  r\  r]  rW  rY  r^  rZ  )r%   r#  r_  r   r   r   set_used  s   zCommentBase.set_usedc                 C   s
   d| _ d S )Nra   )rV  r.   r   r   r   set_assigned     
zCommentBase.set_assignedc                 C      t d| jdS )Nz{value}r   r   r   r.   r   r   r   __str__  r   zCommentBase.__str__c                 C   rc  )Nz	{value!r}rd  re  r.   r   r   r   __repr__  r   zCommentBase.__repr__c                 C   s2   t d| j| j| j| jd | j| j| j| j| j	d
S )NzP{name}{used} {line:2}:{column:<2} "{value:40s} {function}:{fline} {ufun}:{uline}rd   )	r   r"   r#   r   rV  rW  rX  rY  rZ  )
r   r   r"   r#   r   rV  rW  rX  rY  rZ  r.   r   r   r   r_    s   zCommentBase.infoN)r  )
r   r   r   	__slots__r&   r`  ra  rf  rg  r_  r   r   r   r   rU    s    
rU  c                           e Zd ZdZ fddZ  ZS )
EOLCommentZEOLCc                       t  ||| d S r   superr&   r%   r   r"   r#   	__class__r   r   r&        zEOLComment.__init__r   r   r   r   r&   __classcell__r   r   ro  r   rj        rj  c                       ri  )FullLineCommentZFULLc                    rk  r   rl  rn  ro  r   r   r&     rq  zFullLineComment.__init__rr  r   r   ro  r   ru    rt  ru  c                       ri  )BlankLineCommentZBLNKc                    rk  r   rl  rn  ro  r   r   r&   %  rq  zBlankLineComment.__init__rr  r   r   ro  r   rv  "  rt  rv  c                   @   sv   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dddZdd Zdd Zdd Zdd ZdS )ScannedCommentsc                 C   s   i | _ g | _d S r   )r  unusedr.   r   r   r   r&   +  s   
zScannedComments.__init__c                 C   sZ   | ddkr|d dksJ nd|vsJ t|d d || | j|< }| j| |S Nr   rL   r0   )countrj  r  rx  r   r%   rR   r#   r"   retvalr   r   r   add_eol_comment0  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 ry  )rz  r  rv  rx  r   r{  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 ry  )rz  ru  r  rx  r   r{  r   r   r   add_full_line_commentD  s   z%ScannedComments.add_full_line_commentc                 C   s
   | j | S r   )r  )r%   idxr   r   r   __getitem__O  rb  zScannedComments.__getitem__c                 C   s"   dd dd | j D  d S )NzParsedComments:
  z
  c                 s   s&    | ]\}}t d || dV  qdS )z{lineno:2} {x}r^  r  N)r   r_  ).0r^  r  r   r   r   	<genexpr>X  s
    
z*ScannedComments.__str__.<locals>.<genexpr>r   r  r  itemsr.   r   r   r   rf  S  s   zScannedComments.__str__c                 C   s(   t | j d \}}td|| dS )Nr0   z{lineno:2} {x}
r  )r   r  r  r   r_  )r%   r^  r  r   r   r   last`  s   zScannedComments.lastc                 C   s   t | jdkS rI   )r,   rx  r.   r   r   r   any_unprocessede  s   zScannedComments.any_unprocessedFc                 c   s    t | jdkrH|r| jdn| jd }tt d d }td|| j| j|j	|j
 || j| fV  |r?| j|   t | jdksd S d S )Nr   rL   using)r,   rx  rM   r[  r\  r]  r   r  r   rW  r^  r`  )r%   Zusefirstr_  r   r   r   unprocessedn  s   zScannedComments.unprocessedc                 C      |j j}tt d d }td|| j|j|j d}| jrI| jd |k rId}| j	d}td| | j
|   || | jrI| jd |k s&|S )NrL   r   
assign_preFTzassign_pre < )r   r"   r[  r\  r]  r   rx  rW  r^  rM   r  r`  Zadd_comment_prer%   r  Z
token_liner_  Zgobbledr  r   r   r   r  x     

zScannedComments.assign_prec                 C   s.  z| j d }W n
 ty   Y d S w t| j| tsd S d}||  jj|ks/t||  trD|d7 }||  jj|ks/t||  ts/td| t	||krct||  t
rct||d   t
rcd S z?t||  t
rt||d   trz!| j d}| j|   td||t ||  |t W W d S  ty   tw W n ty   td Y nw z:t||  t
rt||d   ttfrz| j d}| j|   ||  |t W W d S  ty   tw W n ty   td Y nw |D ]}td| qtdt||   dd l}|d d S )	Nr   rL   Zidx1z>>>>>aZIndexError1ZIndexError2ztt-znot implemented EOL)rx  r   rD   r  rj  r   r"   r   r   r,   r  r   rM   r`  KEYCMNTZadd_comment_eolrQ   r   	VALUECMNTtypesysexit)r%   r2   Zcomment_liner  Zeol_idxr   r  r   r   r   
assign_eol  s|   


zScannedComments.assign_eolc                 C   r  )NrL   r   assign_postFTzassign_post < )r   r"   r[  r\  r]  r   rx  rW  r^  rM   r  r`  Zadd_comment_postr  r   r   r   r    r  zScannedComments.assign_postc                 C   s   d dd | j D S )Nr   c                 s   s0    | ]\}}|j d krtd|| dV  qdS )r   z  {ind:2} {x}
)indr  N)rV  r   r_  )r  r  r  r   r   r   r    s    
z2ScannedComments.str_unprocessed.<locals>.<genexpr>r  r.   r   r   r   str_unprocessed  s
   zScannedComments.str_unprocessedNrN  )r   r   r   r&   r}  r  r~  r  rf  r  r  r  r  r  r  r  r   r   r   r   rw  *  s    	
	
8rw  c                       sD   e Zd Z fddZdd Zdd Zdd Zd	d
 Zdd Z  Z	S )RoundTripScannerSCc                    s*   t  j|i | | jd usJ d | _d S r   )rm  r&   r(   r  )r%   argr   ro  r   r   r&     s   
zRoundTripScannerSC.__init__c                 C   sz   |   r|   |   st| jdkr;t| jd tr%| j| jd  n	| j| jd  |  j	d7  _	| j
dS d S rK   )rB   rC   r,   r2   rD   r   r  r  r  r4   rM   r.   r   r   r   rN     s   zRoundTripScannerSC.get_tokenc                 C   s   | j d u rt  | j_| _ | jrdS t| jdkrdS |   |  | j	kr(dS t| jdk r1dS | jd j
j| jd j
jkrAdS 	 tdt| j | jD ]}t| qMt| j   | j | jd  | j | j dS )NFr   Tr   r0   z-x--)r  rw  r(   Zparsed_commentsr1   r,   r2   rO   rP   r4   r   r"   r   r  r  r  )r%   r   r   r   r   rB     s*   


z#RoundTripScannerSC.need_more_tokensc           	      C   s0  | j j}| j j}| j jdkr| dkr|  | j  }d}|s| dkr,|  | dks$| }|dkr| j  }|}|  |tvrX| }|dkrM|d7 }n||7 }|  |tvsA|jdkrh| j||j|j	 n| j
||j|j	 d}|   | js~d	| _d S t|  r| jsd	| _|   d S d	}|rd S )
Nr   r   Fr   r   rT   r   r   T)r=   ri   r   r!   r   r   r#   r  r~  r"   r}   scan_empty_or_full_line_commentsr/   r7   r   r   rT  )	r%   r   r   r   r   rf   Zcomment_start_markrR   r/  r   r   r   rg   	  sV   






5z%RoundTripScannerSC.scan_to_next_tokenc                 C   s  | j  }|jdksJ d}d }d }| j  }	 |dv r`| j ddkr+| j d n| j   |d urE|d7 }| j||j|j d }n|d7 }| j	||j|j d}| j  }| j  }q|d u r{|dv rm||7 }n|d	kry| j  }d	}nd S ||7 }| j   | j  }q)
Nr   r   Tr  r   rK  r   r   r   )
r=   r   r#   ri   r   r   r  r~  r"   r  )r%   ZblmarkZblanksrR   r$   rf   r   r   r   r  H	  s@   








z3RoundTripScannerSC.scan_empty_or_full_line_commentsc                 C   s   | j j}| j j}d}d }| dkr|| 7 }|  | dks| dkr@d}| j  }| tvr<|| 7 }|  | tvs/|d7 }| }|tvrUtd|td|d| j  |d urc| j||j	|j
 |   d S )Nr   r   r   r   r  r   re   )r=   ri   r   r   r   r   r   r  r}  r#   r"   r   )r%   r   r   r   r   rR   r$   rf   r   r   r   r   p	  s8   








z1RoundTripScannerSC.scan_block_scalar_ignored_line)
r   r   r   r&   rN   rB   rg   r  r   rs  r   r   ro  r   r    s    @(r  )#r[  Zruamel.yaml.errorr   r   Zruamel.yaml.tokensZruamel.yaml.compatr   r   r   r   typingr	   r
   r   r   r   r   r   __all__r   r   r   r   r   r   r   r   r  r  rU  rj  ru  rv  rw  r  r   r   r   r   <module>   sJ                D ]2 .