U
    Æ½„b…\ ã                   @   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	 dddg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ÚnprintfÚScannerÚRoundTripScannerÚScannerErroru   
 Â…â€¨â€©u    
 	Â…â€¨â€©ú 	c                  O   s
   t | |ŽS ©N)r   )ÚargsÚkw© r   ú7/tmp/pip-unpacked-wheel-ctuyz3qg/ruamel/yaml/scanner.pyÚxprintf0   s    r   c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   6   s   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d±d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@d²d}d~„ZAdd€„ ZBd�d‚„ ZCdƒd„„ ZDd…d†„ ZEd‡dˆ„ ZFd‰dŠd‹dŒdŒd�dŽd�d�d‘d’d“d”d•d–d—d˜d™dšœZGd›dœd�džœZHdŸd „ ZId¡d¢„ ZJd£d¤„ ZKd¥d¦„ ZLd§d¨„ ZMd©dª„ ZNd«d¬„ ZOd­d®„ ZPd¯d°„ ZQdS )³r	   Nc                 C   sB   || _ | j dk	r*t| j ddƒdk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   sJ   z| j W S  tk
rD   t| jdƒr0| jj| _ n
| jj| _ | j  Y S X d S ©NÚtyp)Z_scanner_readerÚAttributeErrorÚhasattrr    ÚreaderZ_readerr&   r   r   r   r5   –   s    
zScanner.readerc                 C   s   t | jdƒr| jjjS | jjS r1   )r4   r    ÚresolverZprocessing_versionr&   r   r   r   Úscanner_processing_version¢   s    
z"Scanner.scanner_processing_versionc                 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$   r*   Ú
isinstance©r   ÚchoicesÚ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   )r9   r:   r$   r*   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   é   )r9   r:   r$   r*   r,   Ú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)r)   r$   r*   Ústale_possible_simple_keysÚnext_possible_simple_keyr,   r&   r   r   r   r9   Ë   s    zScanner.need_more_tokensc                 C   s   t ‚d S r   )ÚNotImplementedError)r   Úcommentr   r   r   Úfetch_commentØ   s    zScanner.fetch_commentc                 C   sò  |   ¡ }|d k	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 t$d|d�| j %¡ ƒ‚d S )Nú ú%ú-Ú.ú[Ú{ú]Ú}ú,ú?ú:r   ú&ú!ú|ú>ú'ú"z!while scanning for the next tokenz2found character {ch!r} that cannot start any token©Úch)&Úscan_to_next_tokenrJ   rF   Úunwind_indentr5   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   rI   r]   r   r   r   r:   Ü   sh    

	






üzScanner.fetch_more_tokensc                 C   s6   d }| j D ]&}| j | }|d ks*|j|k r
|j}q
|S r   )r0   r   )r   Zmin_token_numberÚlevelÚkeyr   r   r   rG   L  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 ':')	Úlistr0   r   r5   r   r   r   r   r|   )r   r}   r~   r   r   r   rF   \  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   )r'   r-   r5   r   r/   Úremove_possible_simple_keyr,   r$   r*   r   r   r   r|   r0   )r   r   r   r~   r   r   r   Úsave_possible_simple_keyp  s    úz Scanner.save_possible_simple_keyc                 C   sB   | j | jkr>| j| j  }|jr4td|jd| j ¡ ƒ‚| j| j = d S )Nr   r€   )r'   r0   r   r   r   r5   r|   )r   r~   r   r   r   r‚   ˆ  s    üz"Scanner.remove_possible_simple_keyc                 C   sF   t | jƒrd S | j|krB| j ¡ }| j ¡ | _| j t	||ƒ¡ qd S r   )
Úboolr'   r-   r5   r|   r.   rD   r*   ÚappendÚBlockEndToken)r   r   r   r   r   r   r_   š  s    


zScanner.unwind_indentc                 C   s&   | j |k r"| j | j ¡ || _ dS dS )NTF)r-   r.   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)r5   r|   r*   r…   ZStreamStartTokenrˆ   ©r   r   r   r   r   r+   ¾  s    
zScanner.fetch_stream_startc                 C   sD   |   d¡ |  ¡  d| _i | _| j ¡ }| j t||ƒ¡ d| _	d S )Nr(   FT)
r_   r‚   r/   r0   r5   r|   r*   r…   ZStreamEndTokenr)   r‰   r   r   r   ra   Ç  s    

zScanner.fetch_stream_endc                 C   s,   |   d¡ |  ¡  d| _| j |  ¡ ¡ d S )Nr(   F)r_   r‚   r/   r*   r…   Úscan_directiver&   r   r   r   rc   Ö  s    
zScanner.fetch_directivec                 C   s   |   t¡ d S r   )Úfetch_document_indicatorZDocumentStartTokenr&   r   r   r   re   â  s    zScanner.fetch_document_startc                 C   s   |   t¡ d S r   )r‹   ZDocumentEndTokenr&   r   r   r   rg   æ  s    zScanner.fetch_document_endc                 C   sN   |   d¡ |  ¡  d| _| j ¡ }| j d¡ | j ¡ }| j |||ƒ¡ d S )Nr(   Fé   )r_   r‚   r/   r5   r|   Úforwardr*   r…   )r   Ú
TokenClassÚ
start_markÚend_markr   r   r   r‹   ê  s    


z Scanner.fetch_document_indicatorc                 C   s   | j tdd� d S )NrO   ©Úto_push)Úfetch_flow_collection_startZFlowSequenceStartTokenr&   r   r   r   rh   ú  s    z!Scanner.fetch_flow_sequence_startc                 C   s   | j tdd� d S )NrP   r‘   )r“   ZFlowMappingStartTokenr&   r   r   r   ri   þ  s    z Scanner.fetch_flow_mapping_startc                 C   sN   |   ¡  | j |¡ d| _| j ¡ }| j ¡  | j ¡ }| j |||ƒ¡ d S ©NT)rƒ   r%   r…   r/   r5   r|   r�   r*   )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   rj     s    zScanner.fetch_flow_sequence_endc                 C   s   |   t¡ d S r   )r•   ÚFlowMappingEndTokenr&   r   r   r   rk     s    zScanner.fetch_flow_mapping_endc                 C   sf   |   ¡  z| j ¡ }W n tk
r*   Y nX d| _| j ¡ }| j ¡  | j ¡ }| j 	|||ƒ¡ d S ©NF)
r‚   r%   rD   Ú
IndexErrorr/   r5   r|   r�   r*   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”   )r/   r‚   r5   r|   r�   r*   r…   ZFlowEntryToken)r   r�   r�   r   r   r   rl   +  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)r'   r/   r   r5   r|   r‡   r   r*   r…   ZBlockSequenceStartTokenr‚   r�   ÚBlockEntryToken©r   r   r�   r�   r   r   r   rn   7  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)r'   r/   r   r5   r|   r‡   r   r*   r…   ÚBlockMappingStartTokenr‚   r�   ÚKeyTokenrœ   r   r   r   rp   S  s"       ÿ




zScanner.fetch_keyc                 C   s  | j | jk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sœt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)r'   r0   r*   Úinsertr   r,   rž   r   r‡   r   r�   r/   r   r5   r|   r…   r‚   r�   Ú
ValueToken)r   r~   r   r�   r�   r   r   r   rr   o  s@    

 ÿ
þü





zScanner.fetch_valuec                 C   s$   |   ¡  d| _| j |  t¡¡ d S r˜   )rƒ   r/   r*   r…   Úscan_anchorZ
AliasTokenr&   r   r   r   rs   ¬  s    zScanner.fetch_aliasc                 C   s$   |   ¡  d| _| j |  t¡¡ d S r˜   )rƒ   r/   r*   r…   r¡   ZAnchorTokenr&   r   r   r   rt   µ  s    zScanner.fetch_anchorc                 C   s"   |   ¡  d| _| j |  ¡ ¡ d S r˜   )rƒ   r/   r*   r…   Úscan_tagr&   r   r   r   ru   ¾  s    zScanner.fetch_tagc                 C   s   | j dd� d S )NrX   ©Ústyle©Úfetch_block_scalarr&   r   r   r   rv   Ç  s    zScanner.fetch_literalc                 C   s   | j dd� d S )NrY   r£   r¥   r&   r   r   r   rw   Ë  s    zScanner.fetch_foldedc                 C   s$   d| _ |  ¡  | j |  |¡¡ d S r”   )r/   r‚   r*   r…   Úscan_block_scalar©r   r¤   r   r   r   r¦   Ï  s    zScanner.fetch_block_scalarc                 C   s   | j dd� d S )NrZ   r£   ©Úfetch_flow_scalarr&   r   r   r   rx   Ø  s    zScanner.fetch_singlec                 C   s   | j dd� d S )Nr[   r£   r©   r&   r   r   r   ry   Ü  s    zScanner.fetch_doublec                 C   s$   |   ¡  d| _| j |  |¡¡ d S r˜   )rƒ   r/   r*   r…   Úscan_flow_scalarr¨   r   r   r   rª   à  s    zScanner.fetch_flow_scalarc                 C   s"   |   ¡  d| _| j |  ¡ ¡ d S r˜   )rƒ   r/   r*   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)r5   r   r&   r   r   r   rb   ö  s    zScanner.check_directivec                 C   s4   | j jdkr0| j  d¡dkr0| j  d¡tkr0dS d S )Nr   rŒ   ú---T©r5   r   Úprefixr`   Ú_THE_END_SPACE_TABr&   r   r   r   rd   þ  s     zScanner.check_document_startc                 C   s4   | j jdkr0| j  d¡dkr0| j  d¡tkr0dS d S )Nr   rŒ   ú...Tr®   r&   r   r   r   rf     s     zScanner.check_document_endc                 C   s   | j  d¡tkS )NrC   )r5   r`   r°   r&   r   r   r   rm     s    zScanner.check_block_entryc                 C   s   t | jƒrdS | j d¡tkS )NTrC   )r„   r'   r5   r`   r°   r&   r   r   r   ro     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krrdS n*| jrrt| jd t	ƒrr| j d¡tkrrdS dS | j d¡tkS )N©rC   rC   Tr(   rO   rC   F)
r7   r„   r'   r%   r5   r`   r°   r*   r;   r    r&   r   r   r   rq     s    


zScanner.check_valuec                 C   s®   | j j}|ƒ }| jdkrD|dkpB|dƒtkoB|dkpB| j oB|dkS |dkrPdS |dƒ}|dkrl|tkrldS |dkrŠt| jƒrŠ|tkrŠdS |dƒtko¬|dkp¬| j o¬|dkS )Nr²   u      	
Â…â€¨â€©-?:,[]{}#&*!|>'"%@`rC   rM   z?:TrU   )r5   r`   r7   r°   r'   r„   Ú
_SPACE_TAB)r   Úsrpr]   Zch1r   r   r   rz   .  s"    
þÿzScanner.check_plainc                 C   s†   | j j}| j j}| j jdkr,|ƒ dkr,|ƒ  d}t}|s‚|ƒ dkrJ|ƒ  q8|ƒ dkrf|ƒ |krf|ƒ  qT|  ¡ r|| js€d| _q4d}q4d S )Nr   õ   ï»¿Fú ú#T)r5   r`   r�   r   Ú_THE_ENDÚscan_line_breakr'   r/   )r   r´   ÚsrfÚfoundZ_the_endr   r   r   r^   S  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kr†|ƒ  qt|  |¡ t	||||ƒS )NZYAMLZTAG)
r5   r`   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rTdks^n |dkrp|d	7 }||ƒ}q|s�td
|td|d�| j  ¡ ƒ‚| j  |¡}| j  |¡ |ƒ }|dkrÒtd
|td|d�| j  ¡ ƒ‚|S )Nr   Ú0Ú9ÚAÚZÚaÚzz-_:.rC   úwhile scanning a directiveú:expected alphabetic or numeric character, but found {ch!r}r\   õ     
Â…â€¨â€©)r5   r`   r   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rTtd|td|ƒ d�| j  ¡ ƒ‚|ƒ  |  |¡}|ƒ dkrŒtd|td|ƒ d�| j  ¡ ƒ‚||f| _| jS )Nr¶   rN   rÈ   z/expected a digit or '.', but found {srp_call!r}©Úsrp_callrÊ   )r5   r`   r�   Úscan_yaml_directive_numberr   r   r|   r#   )r   r�   r´   rº   ÚmajorÚminorr   r   r   r½   ¬  s.    


ü

ü
z!Scanner.scan_yaml_directive_valuec                 C   sŽ   | j j}| j j}|ƒ }d|  kr*dksHn td|td|d�| j  ¡ ƒ‚d}d||ƒ  krddkrrn n
|d7 }qLt| j  |¡ƒ}||ƒ |S )NrÂ   rÃ   rÈ   z"expected a digit, but found {ch!r}r\   r   rC   )r5   r`   r�   r   r   r|   Úintr¯   )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¶   )r5   r`   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}r\   )Úscan_tag_handler5   r`   r   r   r|   ©r   r�   rÁ   r]   r   r   r   rÒ   è  s    

üz!Scanner.scan_tag_directive_handlec                 C   s>   |   d|¡}| j ¡ }|dkr:td|td|d�| j ¡ ƒ‚|S )NrÕ   rÊ   rÈ   rÖ   r\   )Úscan_tag_urir5   r`   r   r   r|   rØ   r   r   r   rÓ   ö  s    

üz!Scanner.scan_tag_directive_prefixc                 C   st   | j j}| j j}|ƒ dkr"|ƒ  q|ƒ dkr>|ƒ tkr>|ƒ  q,|ƒ }|tkrhtd|td|d�| j  ¡ ƒ‚|  ¡  d S )Nr¶   r·   rÈ   ú4expected a comment or a line break, but found {ch!r}r\   ©r5   r`   r�   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td|d�|td|d	�| j  ¡ ƒ‚| j  |¡}| j  |¡ |d
krÆttd|d�|td|d	�| j  ¡ ƒ‚| j  ¡ }	||||	ƒS )Nr   ÚaliasÚanchorr   rC   úwhile scanning an {name!s}©rÀ   rÉ   r\   u     	
Â…â€¨â€©?:,[]{}%@`)r5   r`   r|   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   s8  | j j}| j  ¡ }|dƒ}|dkrrd }| j  d¡ |  d|¡}|ƒ dkrftd|td|ƒ d�| j  ¡ ƒ‚| j  ¡  n||tkrŽd }d	}| j  ¡  n`d}d
}|dkr¾|d	kr¬d}q¾|d7 }||ƒ}q–d	}|rÔ|  d|¡}nd	}| j  ¡  |  d|¡}|ƒ }|dk�rtd|td|d�| j  ¡ ƒ‚||f}| j  ¡ }	t	|||	ƒS )NrC   ú<é   ÚtagrY   zwhile parsing a tagz$expected '>', but found {srp_call!r}rÌ   rW   FrÊ   Tzwhile scanning a tagrÖ   r\   )
r5   r`   r|   r�   rÙ   r   r   r°   r×   ZTagToken)
r   r´   r�   r]   rÔ   ÚsuffixrË   Z
use_handlerÁ   r�   r   r   r   r¢   G  sX    

ü



ü
zScanner.scan_tagFc                 C   s‚  | j j}|dkrd}nd}g }| j  ¡ }| j  ¡  |  |¡\}}|  |¡}	| jd }
|d kr¢|
dk rˆ|dks„| jdkrˆt| j	ddƒrˆd}
|  
¡ \}}}t|
|ƒ}n&|
dk r®d}
|
| d }|  |¡\}}d}| j j|k�rö|ƒ d	k�rö| |¡ |ƒ d
k}d}||ƒtk�r|d7 }qþ| | j  |¡¡ | j  |¡ |  ¡ }|  |¡\}}|dk�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
k�rä|�sî| d¡ n
| |¡ qÌ�qöqÌg }|dk�r| |¡ |dk�r$| |¡ n|dk�r8| |¡ td |¡d|||ƒ}| j	d k	�rˆt| j	ddƒ}|d k�rˆ|	d k	�rˆ| |	g¡ t|ƒdk�r~| j	d k	�rþt| j	dd ƒ}|d k	�rþ|jt|ƒ }|D ]0}|d dk�sât‚| j |d|¡ |d7 }�qÌ|  ¡ }|�r4| d|d j |d  ¡ |  ¡ }�q| j	d k	�r~t| j	ddƒ}|d k�r~| j  ¡ }td |¡||ƒ}| |¡ |S )NrY   TFrC   z|>r²   Z0top_level_block_style_scalar_no_indent_error_1_1Ú rK   r   r   Ú
úr¶   r”   r˜   Úcomment_handlingr(   ) r5   r`   r|   r�   Úscan_block_scalar_indicatorsÚscan_block_scalar_ignored_liner-   r7   r!   r    Úscan_block_scalar_indentationÚmaxÚscan_block_scalar_breaksr   Úextendr¸   r…   r¯   r¹   rd   rf   ÚScalarTokenÚjoinÚadd_pre_commentsr$   r   ÚAssertionErrorÚcommentsÚadd_blank_liner^   ÚCommentTokenÚadd_post_comment)r   r¤   Úrtr´   ÚfoldedÚchunksr�   ÚchompingÚ	incrementZblock_scalar_commentZ
min_indentÚbreaksÚ
max_indentr�   r-   Ú
line_breakZleading_non_spacerË   ZtrailingÚtokenÚcomment_handlerr   ÚxrI   Zcomment_end_markr   r   r   r§   y  s¨    



ÿþ  ÿý



"










zScanner.scan_block_scalarc                 C   s  | j j}d }d }|ƒ }|dkrx|dkr,d}nd}| j  ¡  |ƒ }|dkrØt|ƒ}|dkrltd|d| j  ¡ ƒ‚| j  ¡  n`|dkrØt|ƒ}|dkr¤td|d| j  ¡ ƒ‚| j  ¡  |ƒ }|dkrØ|dkrÊd}nd}| j  ¡  |ƒ }|d	k�rt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}r\   )r5   r`   r�   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kr^||ƒ 7 }|ƒ  qB|ƒ }|tkrˆtd|td|d�| j  ¡ ƒ‚|  ¡  |S )Nrä   r¶   r·   r  rÚ   r\   rÛ   )r   r�   r´   rº   r¯   rI   r]   r   r   r   ré   (  s,    





üz&Scanner.scan_block_scalar_ignored_linec                 C   sv   | j j}| j j}g }d}| j  ¡ }|ƒ dkrl|ƒ dkrP| |  ¡ ¡ | j  ¡ }q"|ƒ  | j j|kr"| j j}q"|||fS )Nr   õ    
Â…â€¨â€©r¶   )r5   r`   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<|ƒ  q|ƒ dkr~| |  ¡ ¡ | j  ¡ }| j j|k r<|ƒ dkr<|ƒ  q^q<||fS )Nr¶   õ
   
Â…â€¨â€©)r5   r`   r�   r|   r   r…   r¹   )r   r-   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rz| |  ||¡¡ | |  ||¡¡ qJ| j  ¡  | j  ¡ }td |¡d|||ƒS )Nr[   TFrä   )	r5   r`   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_scalarrK   ræ   úú	rå   úúúúr¶   r[   ú/ú\õ   Â…õ   Â u   â€¨u   â€©)rÂ   rÆ   ÚbÚtr  ÚnÚvÚfÚrÚer¶   r[   r  r  ÚNÚ_ÚLÚPrá   é   é   )r   ÚuÚUc           
   	   C   s¾  g }| j j}| j j}d}||ƒdk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kr¬| |¡ |ƒ  q|�r´|dk�r´|ƒ  |ƒ }|| jkrê| | j| ¡ |ƒ  nÈ|| jk�rp| j| }|ƒ  t|ƒD ]6}||ƒdk�rtd	|t	d
|||ƒd�| j  
¡ ƒ‚�qt| j  |¡dƒ}	| t|	ƒ¡ ||ƒ nB|dk�r–|  ¡  | |  ||¡¡ ntd	|t	d|d�| j  
¡ ƒ‚q|S qd S )Nr   u    
'"\ 	Â…â€¨â€©rC   rZ   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}r\   )r5   r`   r�   r…   r¯   ÚESCAPE_REPLACEMENTSÚESCAPE_CODESÚranger   r   r|   rÑ   Úchrr¹   rí   Úscan_flow_scalar_breaks)
r   r  r�   rø   r´   rº   rË   r]   ÚkÚcoder   r   r   r  ”  sd    





ü÷


üz#Scanner.scan_flow_scalar_non_spacesc           
      C   sº   | j j}g }d}||ƒdkr&|d7 }q| j  |¡}| j  |¡ |ƒ }|dkrbtd|d| j  ¡ ƒ‚nT|dkr¬|  ¡ }|  ||¡}	|dkr’| |¡ n|	s | d	¡ | 	|	¡ n
| |¡ |S )
Nr   r   rC   rK   úwhile scanning a quoted scalarzfound unexpected end of streamr  rå   r¶   )
r5   r`   r¯   r�   r   r|   r¹   r)  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krPtd|d| j  ¡ ƒ‚|ƒ dkrb|ƒ  qP|ƒ dkr|| |  ¡ ¡ q|S qd S )NrŒ   r­   r±   r,  z#found unexpected document separatorr   r  )	r5   r`   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rB�ql||ƒ}	|	dkrd||d ƒtkrdnJ|	dkrx| jdkrxn6|	tks¸| jsž|	dkrž||d ƒtks¸| jr®|	dkr®q¸|d7 }qB| jrô|	dkrô||d ƒdk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 k	�rt| jddƒ}|d k�rÚ|�r|d dk�rtd |¡d ||ƒ}|
 |¡ nB|dk	�r|jd }|D ](}	|	dk�rò| j dd|¡ |d7 }�qò|
S )NrC   r   r·   rU   rT   r²   z,:?[]{}u     	
Â…â€¨â€©,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.Frä   Trç   rå   )r5   r`   r�   r|   r-   r°   r7   r'   r   r/   rí   r…   r¯   Úscan_plain_spacesr   rî   rï   r    r!   rô   rõ   r   rò   ró   )r   r´   rº   rø   r�   r�   r-   ÚspacesrË   r]   rþ   rÿ   rI   r   r   r   r   r¬     s”    


ÿýüûùù	
ÿþýû	


ÿþý
ý



zScanner.scan_plainc                 C   s2  | j j}| j j}g }d}||ƒdkr.|d7 }q| j  |¡}| j  |¡ |ƒ }|dk�r|  ¡ }	d| _| j  d¡}
|
dks€|
dkr�|dƒtkr�d S g }|ƒ d	krì|ƒ dkr°|ƒ  q”| |  ¡ ¡ | j  d¡}
|
dksÚ|
dkr”|dƒtkr”d S q”|	d
k�r| |	¡ n|�s| d¡ | |¡ n|�r.| |¡ |S )Nr   r¶   rC   r  TrŒ   r­   r±   r  rå   )	r5   r`   r�   r¯   r¹   r/   r°   r…   rí   )r   r-   r�   r´   rº   rø   rË   r-  r]   rý   r¯   rû   r   r   r   r.  ]  s>    






zScanner.scan_plain_spacesc                 C   s  | j j}|ƒ }|dkr:ttd|d�|td|d�| j  ¡ ƒ‚d}||ƒ}|dkrêd|  krbd	ks˜n d
|  krxdks˜n d|  krŽdks˜n |dkrª|d7 }||ƒ}qN|dkrâ| j  |¡ ttd|d�|td|d�| j  ¡ ƒ‚|d7 }| j  |¡}| j  |¡ |S )NrW   rÞ   rß   zexpected '!', but found {ch!r}r\   rC   r¶   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   z-_)r5   r`   r   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k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td|d�|td|d�| j  	¡ ƒ‚d 
|¡S )Nr   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   z-;/?:@&=+$,_.!~*'()[]%r²   r·   rL   rC   zwhile parsing an {name!s}rß   zexpected URI, but found {ch!r}r\   rä   )r5   r`   r7   r…   r¯   r�   Úscan_uri_escapesr   r   r|   rï   )r   rÀ   r�   r´   rø   rË   r]   r   r   r   rÙ   ¤  sX     ÿÿ þþ ýýüûû


üzScanner.scan_tag_uric           
   
   C   sæ   | j j}| j j}g }| j  ¡ }|ƒ dkr’|ƒ  tdƒD ]8}||ƒdkr6ttd|d�|td||ƒd�| j  ¡ ƒ‚q6| t| j  	d¡dƒ¡ |dƒ qzt
|ƒ d	¡}W n< tk
rà }	 zttd|d�|t|	ƒ|ƒ‚W 5 d }	~	X Y nX |S )
NrL   rá   r#  rÞ   rß   zLexpected URI escape sequence of 2 hexdecimal numbers, but found {srp_call!r}rÌ   r$  zutf-8)r5   r`   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   r0  È  s:    


ýø


   ÿzScanner.scan_uri_escapesc                 C   sX   | j  ¡ }|dkr>| j  d¡dkr0| j  d¡ n
| j  ¡  dS |dkrT| j  ¡  |S dS )Nõ   
Â…rá   ú
rå   õ   â€¨â€©rä   ©r5   r`   r¯   r�   )r   r]   r   r   r   r¹   ç  s    



zScanner.scan_line_break)N)F)Rr   r   r   r   Úpropertyr'   r"   r5   r7   r?   rA   rE   r9   rJ   r:   rG   rF   rƒ   r‚   r_   r‡   r+   ra   rc   re   rg   r‹   rh   ri   r“   rj   rk   r•   rl   rn   rp   rr   rs   rt   ru   rv   rw   r¦   rx   ry   rª   r{   rb   rd   rf   rm   ro   rq   rz   r^   rŠ   r¼   r½   rÎ   r¾   rÒ   rÓ   r¿   r¡   r¢   r§   rè   ré   rê   rì   r«   r%  r&  r  r  r)  r¬   r.  r×   rÙ   r0  r¹   r   r   r   r   r	   G   sÆ   

6

p	=					%'/2
|3î:Y&!$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   sT   |   ¡ r|  ¡  q |  ¡  t| jƒdkrP|s0dS |D ]}t| jd |ƒr4 dS q4dS r8   )r9   r:   Ú_gather_commentsr$   r*   r;   r<   r   r   r   r?   ÿ  s    
zRoundTripScanner.check_tokenc                 C   s6   |   ¡ r|  ¡  q |  ¡  t| jƒdkr2| jd S d S r@   )r9   r:   r;  r$   r*   r&   r   r   r   rA     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
sÊt| j ƒdk rÊ|  ¡  dS )zCcombine multiple comment lines and assign to next non-comment-tokenr   rC   rá   N)r*   r;   rô   rD   r,   r…   r9   r:   r$   rð   r)   )r   rò   rI   r   r   r   r;    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   rC   r¶   rå   )r9   r:   r;  r$   r*   r;   rî   r    r–   r—   rô   r�   r   r�   r,   rD   rÁ   r   rõ   )r   ÚcZc1r   r   r   rE   0  sd    
ÿ
þþúù	"
ÿþýü
ÿþÿ"zRoundTripScanner.get_tokenc                 C   s@   |\}}}|r(|d dkr(|d d… }q
| j  t|||ƒ¡ d S )Nr(   r¶   )r*   r…   rô   )r   rI   rÁ   r�   r�   r   r   r   rJ   f  s    
zRoundTripScanner.fetch_commentc                 C   s‚  | j j}| j j}| j jdkr,|ƒ dkr,|ƒ  d}|�s~|ƒ dkrH|ƒ  q6|ƒ }|dkrà| j  ¡ }|}|ƒ  |tkrš|ƒ }|dkrŠ|d7 }qš||7 }|ƒ  qj|  ¡ }t|ƒdkrÀ||7 }|  ¡ }q¢| j  ¡ }| jsÖd| _	|||fS |  ¡ d	k�rx| j  ¡ }| j�sd| _	|ƒ }|dk�r|| j  ¡ }d	}|�rB| jdd
�}||7 }�q$|ƒ dk�rb| 
dd¡d d }| j  ¡ }|||fS q0d}q0d S )Nr   rµ   Fr¶   r·   rK   rå   Trä   ©Ú
empty_linerC   )r5   r`   r�   r   r|   r¸   r¹   r$   r'   r/   Úrsplit)r   r´   rº   r»   r]   r�   rI   r�   r   r   r   r^   q  sZ    








z#RoundTripScanner.scan_to_next_tokenFc                 C   sr   | j  ¡ }|dkr>| j  d¡dkr0| j  d¡ n
| j  ¡  dS |dkrT| j  ¡  |S |rn|dkrn| j  ¡  |S dS )Nr6  rá   r7  rå   r8  z	 rä   r9  )r   r>  r]   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§   Ó  s    z"RoundTripScanner.scan_block_scalarN)F)T)r   r   r   r?   rA   r;  rE   rJ   r^   r¹   r§   r   r   r   r   r
   þ  s   
6I
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   rA  ÚinspectÚgetframeinfoÚstackrB  ÚlinenorC  rD  rE  )r   rÁ   r   r   Úinfor   r   r   r   ã  s    zCommentBase.__init__r  c                 C   s0   || _ t t ¡ d d ¡}|j| _|j| _d S )NrC   r   )rA  rF  rG  rH  rB  rD  rI  rE  )r   r  rJ  r   r   r   Úset_usedï  s    zCommentBase.set_usedc                 C   s
   d| _ d S )NrX   )rA  r&   r   r   r   Úset_assignedö  s    zCommentBase.set_assignedc                 C   s   t d| jd�S )Nz{value}©rÁ   ©r   rÁ   r&   r   r   r   Ú__str__ú  s    zCommentBase.__str__c                 C   s   t d| jd�S )Nz	{value!r}rM  rN  r&   r   r   r   Ú__repr__þ  s    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}r[   )	rÀ   r   r   rÁ   rA  rB  rC  rD  rE  )
r   rÀ   r   r   rÁ   rA  rB  rC  rD  rE  r&   r   r   r   rJ    s    özCommentBase.infoN)r  )
r   r   r   Ú	__slots__r   rK  rL  rO  rP  rJ  r   r   r   r   r@  à  s   
r@  c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )Ú
EOLCommentZEOLCc                    s   t ƒ  |||¡ d S r   ©Úsuperr   ©r   rÁ   r   r   ©Ú	__class__r   r   r     s    zEOLComment.__init__©r   r   r   rÀ   r   Ú__classcell__r   r   rV  r   rR    s   rR  c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚFullLineCommentZFULLc                    s   t ƒ  |||¡ d S r   rS  rU  rV  r   r   r     s    zFullLineComment.__init__rX  r   r   rV  r   rZ    s   rZ  c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚBlankLineCommentZBLNKc                    s   t ƒ  |||¡ d S r   rS  rU  rV  r   r   r   %  s    zBlankLineComment.__init__rX  r   r   rV  r   r[  "  s   r[  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,t‚nd|ks,t‚t|d d… ||ƒ | j|< }| j |¡ |S ©Nrå   rC   r(   )Úcountrñ   rR  rò   r]  r…   ©r   rI   r   r   Úretvalr   r   r   Úadd_eol_comment0  s    zScannedComments.add_eol_commentc                 C   sZ   |  d¡dkr|d dkst‚|| jks,t‚t|d d… ||ƒ | j|< }| j |¡ |S r^  )r_  rñ   rò   r[  r]  r…   r`  r   r   r   ró   ;  s
    zScannedComments.add_blank_linec                 C   sL   |  d¡dkr|d dkst‚t|d d… ||ƒ | j|< }| j |¡ |S r^  )r_  rñ   rZ  rò   r]  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  s    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}©rI  r   N)r   rJ  )Ú.0rI  r   r   r   r   Ú	<genexpr>X  s   ÿz*ScannedComments.__str__.<locals>.<genexpr>rå   ©rï   rò   Úitemsr&   r   r   r   rO  S  s    þÿÿùÿzScannedComments.__str__c                 C   s(   t | j ¡ ƒd \}}td|| ¡ d�S )Nr(   z{lineno:2} {x}
rf  )r�   rò   rj  r   rJ  )r   rI  r   r   r   r   Úlast`  s    zScannedComments.lastc                 C   s   t | jƒdkS r@   )r$   r]  r&   r   r   r   Úany_unprocessede  s    zScannedComments.any_unprocessedFc                 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   rC   Zusing)r$   r]  rD   rF  rG  rH  r   rò   rÁ   rB  rI  rK  )r   ZuseÚfirstrJ  r   r   r   Úunprocessedn  s    zScannedComments.unprocessedc                 C   s„   |j j}t t ¡ d d ¡}td|| j|j|jƒ d}| jr€| jd |k r€d}| j 	d¡}td|ƒ | j
|  ¡  | |¡ q8|S )NrC   r   Ú
assign_preFTzassign_pre < )r�   r   rF  rG  rH  r   r]  rB  rI  rD   rò   rK  Zadd_comment_pre©r   rþ   Z
token_linerJ  Zgobbledrm  r   r   r   ro  x  s    
zScannedComments.assign_prec                 C   s6  z| j d }W n tk
r$   Y d S X t| j| tƒs:d S d}||  jj|ks`t||  tƒrj|d7 }q>td|ƒ t	|ƒ|kr¨t||  t
ƒr¨t||d   t
ƒr¨d S zŒt||  t
ƒ�r2t||d   tƒ�r2z>| j  d¡}| j|  ¡  td||tƒ ||   |t¡ W n tk
�r*   t‚Y nX W d S W n tk
�rR   tdƒ Y nX z‚t||  t
ƒ�rÔt||d   ttfƒ�rÔz0| j  d¡}| j|  ¡  ||   |t¡ W n tk
�rÌ   t‚Y nX W d S W n tk
�rô   tdƒ Y nX |D ]}td|ƒ �qútdt||  ƒƒ dd l}| d¡ d S )	Nr   rC   Zidx1z>>>>>aZIndexError1ZIndexError2ztt-znot implemented EOL)r]  r™   r;   rò   rR  r�   r   r    r   r$   rî   rž   rD   rK  ÚKEYCMNTZadd_comment_eolrH   r›   Ú	VALUECMNTÚtypeÚsysÚexit)r   r*   Zcomment_linerd  Zeol_idxr  rt  r   r   r   Ú
assign_eol†  sp     ÿ


ÿþý ÿ

 ÿ

zScannedComments.assign_eolc                 C   s„   |j j}t t ¡ d d ¡}td|| j|j|jƒ d}| jr€| jd |k r€d}| j 	d¡}td|ƒ | j
|  ¡  | |¡ q8|S )NrC   r   Úassign_postFTzassign_post < )r�   r   rF  rG  rH  r   r]  rB  rI  rD   rò   rK  Zadd_comment_postrp  r   r   r   rw  ¾  s    
zScannedComments.assign_postc                 C   s   d  dd„ | j ¡ D ƒ¡S )Nrä   c                 s   s.   | ]&\}}|j d krtd|| ¡ d�V  qdS )r¶   z  {ind:2} {x}
)Úindr   N)rA  r   rJ  )rg  rx  r   r   r   r   rh  Ï  s   
þz2ScannedComments.str_unprocessed.<locals>.<genexpr>ri  r&   r   r   r   Ústr_unprocessedÌ  s
    þÿzScannedComments.str_unprocessedN)F)r   r   r   r   rb  ró   rc  re  rO  rk  rl  rn  ro  rv  rw  ry  r   r   r   r   r\  *  s   		

8r\  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||Ž | jd k	st‚d | _d S r   )rT  r   r    rñ   rò   )r   Úargr   rV  r   r   r   Ø  s    zRoundTripScannerSC.__init__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 rB   )r9   r:   r$   r*   r;   r†   rò   rw  ro  r,   rD   r&   r   r   r   rE   à  s    
zRoundTripScannerSC.get_tokenc                 C   sØ   | j d k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r‚dS tdt| jƒƒ | jD ]}t|ƒ q˜t| j  ¡ ƒ | j  | jd ¡ | j  | j¡ dS )NFr   Trá   r(   z-x--)rò   r\  r    Zparsed_commentsr)   r$   r*   rF   rG   r,   r�   r   r   ry  ro  rv  )r   r  r   r   r   r9   í  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kr¤|ƒ }|dkr”|d7 }q¤||7 }|ƒ  qt|jdkrÄ| j ||j|j	¡ n| j 
||j|j	¡ d}|  ¡  | jsðd	| _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·   rK   rå   rä   Tr=  rC   )r5   r`   r�   r   r|   r¸   r   rò   rc  r   rb  Ú scan_empty_or_full_line_commentsr'   r/   r„   r¹   r?  )	r   r´   rº   r�   r»   r]   Zcomment_start_markrI   r  r   r   r   r^   	  sn    



  ÿ  ÿ    
z%RoundTripScannerSC.scan_to_next_tokenc                 C   s  | j  ¡ }|jdkst‚d}d }d }| j  ¡ }|dkr¾| j  d¡dkrT| j  d¡ n
| j  ¡  |d k	rˆ|d7 }| j ||j|j	¡ d }n|d7 }| j 
||j|j	¡ d}| j  ¡ }| j  ¡ }q.|d krö|dkrØ||7 }qþ|dkrð| j  ¡ }d}qþ�qn||7 }| j  ¡  | j  ¡ }q.d S )	Nr   rä   r  rá   r7  rå   r   r·   )r5   r|   r   rñ   r`   r¯   r�   rò   rc  r   ró   )r   ZblmarkZblanksrI   r   r]   r   r   r   r|  H	  s<    







z3RoundTripScannerSC.scan_empty_or_full_line_commentsc                 C   sÂ   | j j}| j j}d}d }|ƒ dkr4||ƒ 7 }|ƒ  q|ƒ dkrpd}| j  ¡ }|ƒ tkrh||ƒ 7 }|ƒ  qL|d7 }|ƒ }|tkrštd|td|d�| j  ¡ ƒ‚|d k	r¶| j ||j	|j
¡ |  ¡  d S )Nrä   r¶   r·   rå   r  rÚ   r\   )r5   r`   r�   r|   r¸   r   r   rò   rb  r   r   r¹   )r   r�   r´   rº   r¯   rI   r   r]   r   r   r   ré   p	  s4    






üz1RoundTripScannerSC.scan_block_scalar_ignored_line)
r   r   r   r   rE   r9   r^   r|  ré   rY  r   r   rV  r   rz  ×  s   @(rz  )"rF  Zruamel.yaml.errorr   r   Zruamel.yaml.tokensZruamel.yaml.compatr   r   r   r   ÚAnyÚDictÚOptionalÚListÚUnionÚTextZVersionTypeÚ__all__r¸   r°   r³   r   r   r   r	   r
   rr  rq  r@  rR  rZ  r[  r\  rz  r   r   r   r   Ú<module>   sF   
             D ]2 .