o
    wÖi×Z ã                   @  s  d dl mZ d dlmZmZ d dlT d dlmZmZ d dl	m
Z
mZmZmZ 	 g d¢Zd	Zd
ZdZed kr: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 )(é    )Úannotations)ÚMarkedYAMLErrorÚCommentMark)Ú*)ÚVersionÚTag)Úcheck_anchorname_charÚ_debugÚnprintÚnprintfF)ÚAnyÚDictÚOptionalÚListÚUnionÚTextÚTuple)ÚScannerÚRoundTripScannerÚScannerErroru   
 Â…â€¨â€©u    
 	Â…â€¨â€©ú 	Úargsr   ÚkwÚreturnc                  O  s   t | i |¤ŽS ©N)r   )r   r   © r   úP/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/ruamel/yaml/scanner.pyÚxprintf1   ó   r   c                   @  s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   5   s    r   c                   @  s   e Zd Zddd„ZdS )Ú	SimpleKeyÚtoken_numberr   ÚrequiredÚindexÚintÚlineÚcolumnÚmarkr   ÚNonec                 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__N)r#   r   r$   r   r%   r&   r'   r&   r(   r&   r)   r   r   r*   )r   r    r!   r,   r   r   r   r   r"   9   s    r"   c                   @  s’  e Zd ZdÐdÑdd„ZedÒd	d
„ƒZdÓdd„ZedÔdd„ƒZedÔdd„ƒZdÕdd„Z	dÔdd„Z
dÔdd„ZdÖdd„Zd×dd„ZdÔdd„ZdÔd d!„ZdÓd"d#„ZdÓd$d%„ZdÓd&d'„ZdØd)d*„ZdÙd+d,„ZdÓd-d.„ZdÓd/d0„ZdÓd1d2„ZdÓd3d4„ZdÓd5d6„ZdÚd8d9„ZdÓd:d;„ZdÓd<d=„ZdÛd@dA„ZdÓdBdC„ZdÓdDdE„ZdÚdFdG„Z dÓdHdI„Z!dÓdJdK„Z"dÓdLdM„Z#dÓdNdO„Z$dÓdPdQ„Z%dÓdRdS„Z&dÓdTdU„Z'dÓdVdW„Z(dÓdXdY„Z)dÜd[d\„Z*dÓd]d^„Z+dÓd_d`„Z,dÜdadb„Z-dÓdcdd„Z.dÔdedf„Z/dÔdgdh„Z0dÔdidj„Z1dÔdkdl„Z2dÔdmdn„Z3dÔdodp„Z4dÔdqdr„Z5dÔdsdt„Z6dÔdudv„Z7dÝdxdy„Z8dÝdzd{„Z9dÝd|d}„Z:dÝd~d„Z;dÝd€d„Z<dÝd‚dƒ„Z=dÞd„d…„Z>dßd†d‡„Z?dÔdˆd‰„Z@dàdáddŽ„ZAdÝdd„ZBdÝd‘d’„ZCdÔd“d”„ZDdâd–d—„ZEdãd˜d™„ZFi dšd›“dœd“dždŸ“d d¡“d¡d¡“d¢d£“d¤d¥“d¦d§“d¨d©“dªd«“d¬d¬“d­d­“d®d®“d¯d¯“d°d±“d²d³“d´dµ“d¶d·i¥ZGd¸d¹dºd»œZHdäd½d¾„ZIdäd¿dÀ„ZJdädÁdÂ„ZKdÔdÃdÄ„ZLdådÅdÆ„ZMdædÈdÉ„ZNdædÊdË„ZOdædÌdÍ„ZPdÔdÎdÏ„ZQdS )çr   NÚloaderr   r   r*   c                 C  s<   || _ | j durt| j ddƒdu r| | j _|  ¡  d| _dS )zInitialize the scanner.NÚ_scannerF)r-   Úgetattrr.   Úreset_scannerÚ
first_time)r+   r-   r   r   r   r,   H   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  sH   d| _ g | _g | _|  ¡  d| _d| _g | _d| _i | _d | _	g | _
d S )NFr   éÿÿÿÿT)Údoner3   ÚtokensÚfetch_stream_startÚtokens_takenÚindentÚindentsÚallow_simple_keyÚpossible_simple_keysÚyaml_versionÚtag_directivesr4   r   r   r   r0   ]   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)Ú_scanner_readerÚAttributeErrorÚhasattrr-   ÚreaderÚ_readerr4   r   r   r   rF   ”   s   

ûzScanner.readerc                 C  s   t | jdƒr| jjjS | jjS rA   )rE   r-   ÚresolverÚprocessing_versionr4   r   r   r   Úscanner_processing_versionŸ   s   
z"Scanner.scanner_processing_versionÚchoicesÚboolc                 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_tokensr2   r8   Ú
isinstance©r+   rK   Ú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   )rN   rO   r2   r8   r4   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   é   )rN   rO   r2   r8   r:   Úpopr4   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)r7   r2   r8   Ústale_possible_simple_keysÚnext_possible_simple_keyr:   r4   r   r   r   rN   Ä   s   zScanner.need_more_tokensÚcommentc                 C  s   t ‚r   )ÚNotImplementedError)r+   r\   r   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 d|›d| j $¡ ƒ‚)Nú ú%ú-Ú.ú[Ú{ú]Ú}ú,ú?ú:r   ú&ú!ú|ú>ú'ú"z!while scanning for the next tokenzfound character z that cannot start any token)%Úscan_to_next_tokenr^   rZ   Úunwind_indentrF   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_tagr5   Úfetch_literalÚfetch_foldedÚfetch_singleÚfetch_doubleÚcheck_plainÚfetch_plainr   Úget_mark)r+   r\   Úchr   r   r   rO   Ó   sh   

	
üzScanner.fetch_more_tokensc                 C  s6   d }| j D ]}| j | }|d u s|j|k r|j}q|S r   )r>   r#   )r+   Úmin_token_numberÚlevelÚkeyr   r   r   r[   B  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 ':')	Úlistr>   r'   rF   r%   r$   r   r)   rŽ   )r+   r‘   r’   r   r   r   rZ   Q  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   )r5   r;   rF   r(   r=   Úremove_possible_simple_keyr:   r2   r8   r"   r%   r'   rŽ   r>   )r+   r$   r#   r’   r   r   r   Úsave_possible_simple_keyd  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”   )r5   r>   r$   r   r)   rF   rŽ   )r+   r’   r   r   r   r–   {  s   üõz"Scanner.remove_possible_simple_keyr(   c                 C  sR   t | jƒrd S | j|kr'| j ¡ }| j ¡ | _| j t	||ƒ¡ | j|ksd S d S r   )
rL   r5   r;   rF   rŽ   r<   rX   r8   ÚappendÚBlockEndToken)r+   r(   r)   r   r   r   rq   Œ  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)rF   rŽ   r8   r˜   ÚStreamStartTokenr›   ©r+   r)   r   r   r   r9   ®  s   
zScanner.fetch_stream_startc                 C  sD   |   d¡ |  ¡  d| _i | _| j ¡ }| j t||ƒ¡ d| _	d S )Nr6   FT)
rq   r–   r=   r>   rF   rŽ   r8   r˜   ÚStreamEndTokenr7   r   r   r   r   rs   ¶  s   


zScanner.fetch_stream_endc                 C  s,   |   d¡ |  ¡  d| _| j |  ¡ ¡ d S )Nr6   F)rq   r–   r=   r8   r˜   Úscan_directiver4   r   r   r   ru   Ä  s   
zScanner.fetch_directivec                 C  ó   |   t¡ d S r   )Úfetch_document_indicatorÚDocumentStartTokenr4   r   r   r   rw   Ï  r   zScanner.fetch_document_startc                 C  r    r   )r¡   ÚDocumentEndTokenr4   r   r   r   ry   Ò  r   zScanner.fetch_document_endÚ
TokenClassc                 C  sN   |   d¡ |  ¡  d| _| j ¡ }| j d¡ | j ¡ }| j |||ƒ¡ d S )Nr6   Fé   )rq   r–   r=   rF   rŽ   Úforwardr8   r˜   )r+   r¤   Ú
start_markÚend_markr   r   r   r¡   Õ  s   


z Scanner.fetch_document_indicatorc                 C  ó   | j tdd d S )Nrc   ©Úto_push)Úfetch_flow_collection_startÚFlowSequenceStartTokenr4   r   r   r   rz   ä  ó   z!Scanner.fetch_flow_sequence_startc                 C  r©   )Nrd   rª   )r¬   ÚFlowMappingStartTokenr4   r   r   r   r{   ç  r®   z Scanner.fetch_flow_mapping_startr«   r   c                 C  sN   |   ¡  | j |¡ d| _| j ¡ }| j ¡  | j ¡ }| j |||ƒ¡ d S ©NT)r—   r3   r˜   r=   rF   rŽ   r¦   r8   )r+   r¤   r«   r§   r¨   r   r   r   r¬   ê  s   


z#Scanner.fetch_flow_collection_startc                 C  r    r   )Úfetch_flow_collection_endÚFlowSequenceEndTokenr4   r   r   r   r|   ÷  r   zScanner.fetch_flow_sequence_endc                 C  r    r   )r±   ÚFlowMappingEndTokenr4   r   r   r   r}   ú  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–   r3   rX   Ú
IndexErrorr=   rF   rŽ   r¦   r8   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–   rF   rŽ   r¦   r8   r˜   ÚFlowEntryToken)r+   r§   r¨   r   r   r   r~     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)r5   r=   r   rF   rŽ   rš   r(   r8   r˜   ÚBlockSequenceStartTokenr–   r¦   ÚBlockEntryToken©r+   r)   r§   r¨   r   r   r   r€     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)r5   r=   r   rF   rŽ   rš   r(   r8   r˜   ÚBlockMappingStartTokenr–   r¦   ÚKeyTokenrº   r   r   r   r‚   8  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)r5   r>   r8   Úinsertr#   r:   r¼   r)   rš   r(   r»   r=   r   rF   rŽ   r˜   r–   r¦   Ú
ValueToken)r+   r’   r)   r§   r¨   r   r   r   r„   S  s>   
ÿ
þü





zScanner.fetch_valuec                 C  ó$   |   ¡  d| _| j |  t¡¡ d S r´   )r—   r=   r8   r˜   Úscan_anchorÚ
AliasTokenr4   r   r   r   r…     ó   zScanner.fetch_aliasc                 C  r¿   r´   )r—   r=   r8   r˜   rÀ   ÚAnchorTokenr4   r   r   r   r†   —  rÂ   zScanner.fetch_anchorc                 C  ó"   |   ¡  d| _| j |  ¡ ¡ d S r´   )r—   r=   r8   r˜   Úscan_tagr4   r   r   r   r‡   Ÿ  s   zScanner.fetch_tagc                 C  ó   | j dd d S )Nrl   ©Ústyle©Úfetch_block_scalarr4   r   r   r   rˆ   §  ó   zScanner.fetch_literalc                 C  rÆ   )Nrm   rÇ   rÉ   r4   r   r   r   r‰   ª  rË   zScanner.fetch_foldedrÈ   c                 C  s$   d| _ |  ¡  | j |  |¡¡ d S r°   )r=   r–   r8   r˜   Úscan_block_scalar©r+   rÈ   r   r   r   rÊ   ­  s   zScanner.fetch_block_scalarc                 C  rÆ   )Nrn   rÇ   ©Úfetch_flow_scalarr4   r   r   r   rŠ   µ  rË   zScanner.fetch_singlec                 C  rÆ   )Nro   rÇ   rÎ   r4   r   r   r   r‹   ¸  rË   zScanner.fetch_doublec                 C  s$   |   ¡  d| _| j |  |¡¡ d S r´   )r—   r=   r8   r˜   Úscan_flow_scalarrÍ   r   r   r   rÏ   »  rÂ   zScanner.fetch_flow_scalarc                 C  rÄ   r´   )r—   r=   r8   r˜   Ú
scan_plainr4   r   r   r   r   Ã  s   zScanner.fetch_plainc                 C  s   | j jdkrdS d S )Nr   T)rF   r(   r4   r   r   r   rt   Ï  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©rF   r(   Úprefixrr   Ú_THE_END_SPACE_TABr4   r   r   r   rv   Ö  ó    zScanner.check_document_startc                 C  rÒ   )Nr   r¥   ú...TrÔ   r4   r   r   r   rx   Ý  r×   zScanner.check_document_endc                 C  s   | j  d¡tv S )NrW   )rF   rr   rÖ   r4   r   r   r   r   ä  s   zScanner.check_block_entryc                 C  s   t | jƒrdS | j d¡tv S )NTrW   )rL   r5   rF   rr   rÖ   r4   r   r   r   r   è  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©rW   rW   Tr6   rc   rW   F)
rJ   rL   r5   r3   rF   rr   rÖ   r8   rP   r¾   r4   r   r   r   rƒ   ï  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      	
Â…â€¨â€©-?:,[]{}#&*!|>'"%@`rW   ra   z?:Tri   )rF   rr   rJ   rÖ   r5   rL   Ú
_SPACE_TAB)r+   Úsrpr   Ú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r!dnd}|sS|ƒ |v r2|ƒ  |ƒ |v s*|ƒ dkrD|ƒ |vrD|ƒ  |ƒ |vs<|  ¡ rO| jsNd| _nd}|r%d S )Nr   õ   ï»¿Fr   ú ú#T)rF   rr   r¦   r%   Ú_THE_ENDr5   Úscan_line_breakr=   )r+   rÛ   ÚsrfÚfoundÚ_the_endÚwhite_spacer   r   r   rp   %  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ÚYAMLÚTAG)
rF   rr   r¦   rŽ   Úscan_directive_nameÚscan_yaml_directive_valueÚscan_tag_directive_valuerà   Úscan_directive_ignored_lineÚDirectiveToken)r+   rÛ   râ   r§   ÚnameÚvaluer¨   r   r   r   rŸ   L  s$   






ÿ
zScanner.scan_directiver§   c                 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/|sktd
|d|›| j  ¡ ƒ‚| j  |¡}| j  |¡ |ƒ }|dvr‹td
|d|›| j  ¡ ƒ‚|S )Nr   Ú0Ú9ÚAÚZÚaÚzz-_:.rW   úwhile scanning a directiveú4expected alphabetic or numeric character, but found õ     
Â…â€¨â€©)rF   rr   r   rŽ   rÕ   r¦   )r+   r§   ÚlengthrÛ   r   rî   r   r   r   rè   a  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|d|ƒ ›| j  ¡ ƒ‚|ƒ  |  |¡}|ƒ dvrHtd|d|ƒ ›| j  ¡ ƒ‚||f| _t||ƒ| jj	d _
| jS )NrÞ   rb   rõ   z#expected a digit or '.', but found r÷   r6   )rF   rr   r¦   Úscan_yaml_directive_numberr   rŽ   r?   r   r-   Ú	doc_infosÚdoc_version)r+   r§   rÛ   râ   ÚmajorÚminorr   r   r   ré   |  s2   

ÿ


ü


ü
z!Scanner.scan_yaml_directive_valuec                 C  s¤   | j j}| j j}|ƒ }d|  krdks#n td|d|›| j  ¡ ƒ‚d}d||ƒ  kr1dkrDn n|d7 }d||ƒ  krCdks3n t| j  |¡ƒ}||ƒ |S )Nrï   rð   rõ   zexpected a digit, but found r   rW   )rF   rr   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|ƒ  |ƒ dks|  |¡}|ƒ dkr'|ƒ  |ƒ dks|  |¡}||f}| j |¡ |S )NrÞ   )rF   rr   r¦   Úscan_tag_directive_handleÚscan_tag_directive_prefixr@   r˜   )r+   r§   rÛ   râ   ÚhandlerÕ   Úret_valr   r   r   rê   ª  s   

ÿ


ÿ
z Scanner.scan_tag_directive_valuec                 C  s<   |   d|¡}| j ¡ }|dkrtd|d|›| j ¡ ƒ‚|S )NÚ	directiverÞ   rõ   úexpected ' ', but found )Úscan_tag_handlerF   rr   r   rŽ   ©r+   r§   rî   r   r   r   r   rþ   ¸  ó   
üz!Scanner.scan_tag_directive_handlec                 C  s<   |   d|¡}| j ¡ }|dvrtd|d|›| j ¡ ƒ‚|S )Nr  r÷   rõ   r  )Úscan_tag_urirF   rr   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|d|›| j  ¡ ƒ‚|  ¡  d S )NrÞ   rß   rõ   ú.expected a comment or a line break, but found ©rF   rr   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|ƒr0|d7 }||ƒ}t|ƒs$|sBtd|›|d|›| j  ¡ ƒ‚| j  |¡}| j  |¡ |dvrbtd|›|d|›| j  ¡ ƒ‚| j  ¡ }	||||	ƒS )	Nr   ÚaliasÚanchorr   rW   úwhile scanning an rö   u     	
Â…â€¨â€©?:,[]{}%@`)rF   rr   rŽ   r¦   r   r   rÕ   )
r+   r¤   rÛ   r§   Ú	indicatorrí   rø   r   rî   r¨   r   r   r   rÀ   å  s>   	

þüü
zScanner.scan_anchorc                 C  sb  | j j}| j  ¡ }|dƒ}d}|dkr"d}| j  ¡  | j j}|dƒ}|dkrMd }| j  d¡ |  d|¡}|ƒ dkrGtd|d	|ƒ ›| j  ¡ ƒ‚| j  ¡  nA|tv r[d }|}| j  ¡  n3d}d
}|dvrv|dkrjd}n|d7 }||ƒ}|dvsc|}|r|  d|¡}n|}| j  ¡  |  d|¡}|ƒ }|dvr¢td|d|›| j  ¡ ƒ‚||f}	| j  ¡ }
t|	||
ƒS )NrW   rk   z!!ú<é   Útagrm   zwhile parsing a tagzexpected '>' but found Fr÷   Tzwhile scanning a tagr  )	rF   rr   rŽ   r¦   r  r   rÖ   r  ÚTagToken)r+   rÛ   r§   r   Úshort_handler   Úsuffixrø   Ú
use_handlerî   r¨   r   r   r   rÅ     sf   



üû
ü
zScanner.scan_tagFÚrtúOptional[bool]c                 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·|  ¡ r¸n?| 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r¼t| j	ddƒ}|d u r¼| j  ¡ }td |¡||ƒ}| |¡ |S )Nrm   TFrW   z|>rÙ   Ú0top_level_block_style_scalar_no_indent_error_1_1Ú r_   r   r   Ú
úrÞ   r°   r´   Úcomment_handlingr6   )rF   rr   rŽ   r¦   Úscan_block_scalar_indicatorsÚscan_block_scalar_ignored_liner;   rJ   r/   r-   Úscan_block_scalar_indentationÚmaxÚscan_block_scalar_breaksr(   Úextendrà   r˜   rÕ   rá   rv   rx   ÚScalarTokenÚjoinÚadd_pre_commentsr2   r'   ÚcommentsÚadd_blank_linerp   ÚCommentTokenÚadd_post_comment)r+   rÈ   r  rÛ   ÚfoldedÚchunksr§   ÚchompingÚ	incrementÚblock_scalar_commentÚ
min_indentÚbreaksÚ
max_indentr¨   r;   Ú
line_breakÚleading_non_spacerø   ÚtrailingÚtokenÚcomment_handlerr'   Úxr\   Úcomment_end_markr   r   r   rÌ   K  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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 )rF   rr   r¦   r&   r   rŽ   )r+   r§   rÛ   r+  r,  r   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rKtd|d|›| j  ¡ ƒ‚|  ¡  |S )Nr  rÞ   rß   r:  r  r	  )r+   r§   rÛ   râ   rÕ   r\   r   r   r   r   r  ø  s0   


þ



þüz&Scanner.scan_block_scalar_ignored_linec                 C  s¶   | j j}| j j}g }d}d}| j  ¡ }|ƒ dv rD|ƒ dkr2|dk r%| j j}| |  ¡ ¡ | j  ¡ }n|ƒ  | j j|kr?| j j}|ƒ dv s|dkrV||krV| j  ¡ }td|ƒ‚|||fS )Nr6   r   õ    
Â…â€¨â€©rÞ   z9more indented follow up line than first in a block scalar)rF   rr   r¦   rŽ   r(   r˜   rá   r   )r+   rÛ   râ   r*  Úfirst_indentr0  r¨   r§   r   r   r   r    s,   



÷

ÿ
z%Scanner.scan_block_scalar_indentationr;   c                 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Þ   õ
   
Â…â€¨â€©)rF   rr   r¦   rŽ   r(   r˜   rá   )r+   r;   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rA| |  ||¡¡ | |  ||¡¡ |ƒ |ks*| j  ¡  | j  ¡ }td |¡d|||ƒS )Nro   TFr  )	rF   rr   rŽ   r¦   r!  Úscan_flow_scalar_non_spacesÚscan_flow_scalar_spacesr"  r#  )r+   rÈ   ÚdoublerÛ   r*  r§   Úquoter¨   r   r   r   rÐ   9  s    



þ

zScanner.scan_flow_scalarrï   r_   ró   r  ÚbúÚtú	Únr  ÚvúÚfúÚrúÚeúrÞ   ro   ú/ú\ÚNõ   Â…Ú_õ   Â ÚLu   â€¨ÚPu   â€©r  é   é   )r6  ÚuÚUr@  c           
   	   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| ¡ |ƒ  nc|| jv r»| 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  	¡ ƒ‚|S q)NTr   u    
'"\ 	Â…â€¨â€©rW   rn   r  z"\rP  Ú0123456789ABCDEFabcdefz%while scanning a double-quoted scalarzexpected escape sequence of Údz hexdecimal numbers, but found é   u
   
Â…â€¨â€©zfound unknown escape character )rF   rr   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>  h  sh   ÿ






ÿûÿ
üÒ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   rW   r_   úwhile scanning a quoted scalarzfound unexpected end of streamr=  r  rÞ   )
rF   rr   rÕ   r¦   r   rŽ   rá   rb  r˜   r!  )
r+   r@  r§   rÛ   r*  rø   Úwhitespacesr   r1  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Ø   re  z#found unexpected document separatorr   r=  )	rF   rr   r¦   rÕ   rÖ   r   rŽ   r˜   rá   )r+   r@  r§   r*  rÛ   râ   rÕ   r   r   r   rb  º  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r4||d ƒtvr4n%|	dkr>| jd	kr>n|	tv sX| jsQ|	dkrQ||d ƒtv sX| jrY|	d
v rYn|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 r²nqtd |¡d||ƒ}
| jd urt| jddƒ}|d u rè|ræ|d dkrætd |¡d ||ƒ}|
 |¡ |
S |dur|jd }|D ]}	|	dkr| j dd|¡ |d7 }qô|
S )NrW   Tr   rß   Fri   rg   rh   rÙ   z,:?[]{}u     	
Â…â€¨â€©,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.r  r  r  )rF   rr   r¦   rŽ   r;   rÖ   rJ   r5   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   r4  r5  r\   r'   r   r   r   rÑ   Ñ  s’   


þþîÿû	

ÿ
ÿÌ6

ù

€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Þ   rW   r=  Tr¥   rÓ   rØ   r;  r  )	rF   rr   r¦   rÕ   rá   r=   rÖ   r˜   r!  )r+   r;   r§   rÛ   râ   r*  rø   rf  r   r1  rÕ   r/  r   r   r   rg  +  sD   ÿ


ù

þ
zScanner.scan_plain_spacesrí   c                 C  sF  | j j}|ƒ }|dkrtd|›|d|›| j  ¡ ƒ‚d}||ƒ}|dkr•d|  kr/dksJn d|  kr:d	ksJn d
|  krEdksJn |dv rw|d7 }||ƒ}d|  kr\dksJn d|  krgd	ksJn d
|  krrdksJn |dv sJ|dkr‘| j  |¡ td|›|d|›| j  ¡ ƒ‚|d7 }| j  |¡}| j  |¡ |S )Nrk   r  zexpected '!', but found rW   rÞ   rï   rð   rñ   rò   ró   rô   z-_zexpected '!' but found )rF   rr   r   rŽ   r¦   rÕ   )r+   rí   r§   rÛ   r   rø   rî   r   r   r   r  P  s8   üJJþüzScanner.scan_tag_handlec                 C  sv  | 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}|s¶td|›|d|›| j  ¡ ƒ‚d 	|¡S )Nr   rï   rð   rñ   rò   ró   rô   z-;/?:@&=+$,_.!~*'()[]%rÙ   rß   r`   rW   zwhile parsing an zexpected URI, but found r  )
rF   rr   rJ   r˜   rÕ   r¦   Úscan_uri_escapesr   rŽ   r#  )r+   rí   r§   rÛ   r*  rø   r   r   r   r   r  p  sB   ó
ü
zScanner.scan_tag_uric           
   
   C  sÜ   | j j}| j j}g }| j  ¡ }|ƒ dkrK|ƒ  tdƒD ]}||ƒdvr5td|›|d||ƒ›| j  ¡ ƒ‚q| t| j  d¡dƒ¡ |dƒ |ƒ dksz
t	|ƒ 
d¡}W |S  tym }	 ztd|›|t|	ƒ|ƒ‚d }	~	ww )Nr`   r  r[  r  ú@expected URI escape sequence of 2 hexdecimal numbers, but found r]  úutf-8©rF   rr   r¦   rŽ   r`  r   r˜   r&   rÕ   ÚbytesÚdecodeÚUnicodeDecodeErrorÚstr)
r+   rí   r§   rÛ   râ   Ú
code_bytesr)   rc  rî   Úexcr   r   r   ri  “  s6   

ÿûÿ
ôþ€ÿ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  ©rF   rr   rÕ   r¦   )r+   r   r   r   r   rá   ¬  s   
	
ÿ
zScanner.scan_line_breakr   )r-   r   r   r*   )r   r&   ©r   r*   ©r   r   ©rK   r   r   rL   ©r   rL   ©r\   r   r   r*   )r(   r   r   r*   )r(   r&   r   rL   )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   ©F©rÈ   r   r  r  r   r   )r;   r&   r   r   )rÈ   r   r   r   )r@  r   r§   r   r   r   )r;   r   r§   r   r   r   ©rí   r   r§   r   r   r   )Rr   r    r!   r,   Úpropertyr5   r0   rF   rJ   rS   rU   rY   rN   r^   rO   r[   rZ   r—   r–   rq   rš   r9   rs   ru   rw   ry   r¡   rz   r{   r¬   r|   r}   r±   r~   r€   r‚   r„   r…   r†   r‡   rˆ   r‰   rÊ   rŠ   r‹   rÏ   r   rt   rv   rx   r   r   rƒ   rŒ   rp   rŸ   rè   ré   rù   rê   rþ   rÿ   rë   rÀ   rÅ   rÌ   r  r  r  r   rÐ   r^  r_  r>  r?  rb  rÑ   rg  r  r  ri  rá   r   r   r   r   r   G   sì    
7








o






















<
















$
'








.8
{
2


ÿþýüûúùø	÷
öõôóòñðïî

5


Z
%
 
#r   c                   @  sj   e Zd Zd#dd„Zd$dd„Zd$d	d
„Zd$dd„Zd%dd„Zd$dd„Zd&d'dd„Z	d(d)dd„Z
d*d d!„Zd"S )+r   rK   r   r   rL   c                 G  sZ   |   ¡ r|  ¡  |   ¡ s|  ¡  t| jƒdkr+|sdS |D ]}t| jd |ƒr* dS qdS rM   )rN   rO   Ú_gather_commentsr2   r8   rP   rQ   r   r   r   rS   Ã  s   ÿÿzRoundTripScanner.check_tokenc                 C  s<   |   ¡ r|  ¡  |   ¡ s|  ¡  t| jƒdkr| jd S d S rT   )rN   rO   r  r2   r8   r4   r   r   r   rU   Ð  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   rW   r  N)r8   rP   r'  rX   r:   r˜   rN   rO   r2   r$  r7   )r+   r%  r\   r   r   r   r  Ù  s*   

ø	ÿz!RoundTripScanner._gather_commentsc                 C  s~  |   ¡ r|  ¡  |   ¡ s|  ¡  t| jƒdkr=t| 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 |_|  ¡  t| jƒdkrŽt| jd t
ƒsa| jd  |¡ n™t| 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   rW   rÞ   r  )rN   rO   r  r2   r8   rP   r"  r¾   r²   r³   r'  r¨   r'   r§   r:   rX   rî   r(   r(  )r+   ÚcÚc1r   r   r   rY   ñ  sb   ÿ
þÿûüÿþ
ÿþÿ""üzRoundTripScanner.get_tokenr\   r*   c                 C  sN   |\}}}|r|d dkr|d d… }|r|d dks| j  t|||ƒ¡ d S )Nr6   rÞ   )r8   r˜   r'  )r+   r\   rî   r§   r¨   r   r   r   r^   &  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 r0|ƒ  |ƒ |v s(|ƒ }|dkr„| j  ¡ }|}|ƒ  |tvr\|ƒ }|dkrQ|d7 }n||7 }|ƒ  |tvsE|  ¡ }t|ƒdkrt||7 }|  ¡ }t|ƒdksf| j  ¡ }| jsd	| _	|||fS |  ¡ d
krË| j  ¡ }| js•d	| _	|ƒ }|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Þ   rß   r_   r  Tr  )Ú
empty_linerW   )rF   rr   r¦   r%   r5   rŽ   rà   rá   r2   r=   Úrsplit)	r+   rÛ   râ   rã   rå   r   r§   r\   r¨   r   r   r   rp   0  sh   

ÿ
÷þ



þ


öÔ-z#RoundTripScanner.scan_to_next_tokenFr„  r   c                 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 )Nrs  r  rt  r  ru  z	 r  rv  )r+   r„  r   r   r   r   rá   x  s   
	
ÿ

z RoundTripScanner.scan_line_breakTrÈ   r  r  c                 C  s   t j| ||dS )N)r  )r   rÌ   )r+   rÈ   r  r   r   r   rÌ     rË   z"RoundTripScanner.scan_block_scalarrí   r§   c              
   C  sø   | j j}| j j}g }d}| j  ¡ }|ƒ dkrY|d7 }|ƒ  tdƒD ]}||ƒdvr;td|›|d||ƒ›| j  ¡ ƒ‚q!| t| j  d¡dƒ¡ || j  d¡7 }|dƒ |ƒ dksz
t	|ƒ 
d¡}	W |S  ty{ }
 ztd|›|t|
ƒ|ƒ‚d	}
~
ww )
z>
        The roundtripscanner doesn't do URI escaping
        r  r`   r  r[  r  rj  r]  rk  Nrl  )r+   rí   r§   rÛ   râ   rq  Úchunkr)   rc  rS  rr  r   r   r   ri  “  s<   

ÿûÿ
òþ€ÿz!RoundTripScanner.scan_uri_escapesNry  rx  r{  r}  )r„  rL   r   r   )Tr~  r  )r   r    r!   rS   rU   r  rY   r^   rp   rá   rÌ   ri  r   r   r   r   r   Â  s    


	

5

Hr   c                   @  sN   e Zd ZdZddd	„Zdddd„Zddd„Zddd„Zddd„Zddd„Z	dS )ÚCommentBase)rî   r'   r(   ÚusedÚfunctionÚflineÚufunÚulinerî   r   r'   r(   r   r*   c                 C  sb   || _ || _|| _d| _tdkr/dd l}| | ¡ d d ¡}|j| _|j	| _
d | _d | _d S d S )NrÞ   r   r¥   )rî   r'   r(   rˆ  r	   ÚinspectÚgetframeinfoÚstackr‰  ÚlinenorŠ  r‹  rŒ  )r+   rî   r'   r(   r  Úinfor   r   r   r,   ¾  s   
ùzCommentBase.__init__r8  rG  c                 C  sD   || _ tdkr dd l}| | ¡ d d ¡}|j| _|j| _d S d S rV   )	rˆ  r	   r  rŽ  r  r‰  r‹  r  rŒ  )r+   rG  r  r‘  r   r   r   Úset_usedÌ  s   ûzCommentBase.set_usedc                 C  s
   d| _ d S )Nrl   )rˆ  r4   r   r   r   Úset_assignedÕ  ó   
zCommentBase.set_assignedrp  c                 C  s   | j › S r   ©rî   r4   r   r   r   Ú__str__Ø  ó   zCommentBase.__str__c                 C  s   | j ›S r   r•  r4   r   r   r   Ú__repr__Û  r—  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 )Nro   rÞ   Ú2ri   z<2z "Ú40s)	rî   rí   rˆ  r'   r(   r‰  rŠ  r‹  rŒ  )r+   Úxvrí   r   r   r   r‘  Þ  s   
(ÿÿÿÿÿzCommentBase.infoN©rî   r   r'   r   r(   r   r   r*   )r8  )rG  r   r   r*   rw  ©r   rp  )
r   r    r!   Ú	__slots__r,   r’  r“  r–  r˜  r‘  r   r   r   r   r‡  »  s    

	

r‡  c                      ó"   e Zd ZdZd
‡ fdd	„Z‡  ZS )Ú
EOLCommentÚEOLCrî   r   r'   r(   r   r*   c                   ó   t ƒ  |||¡ d S r   ©Úsuperr,   ©r+   rî   r'   r(   ©Ú	__class__r   r   r,   ê  ó   zEOLComment.__init__rœ  ©r   r    r!   rí   r,   Ú__classcell__r   r   r¦  r   r   ç  ó    r   c                      rŸ  )ÚFullLineCommentÚFULLrî   r   r'   r(   r   r*   c                   r¢  r   r£  r¥  r¦  r   r   r,   ñ  r¨  zFullLineComment.__init__rœ  r©  r   r   r¦  r   r¬  î  r«  r¬  c                      rŸ  )ÚBlankLineCommentÚBLNKrî   r   r'   r(   r   r*   c                   r¢  r   r£  r¥  r¦  r   r   r,   ø  r¨  zBlankLineComment.__init__rœ  r©  r   r   r¦  r   r®  õ  r«  r®  c                   @  s   e Zd Zd*dd„Zd+d
d„Zd+dd„Zd+dd„Zd,dd„Zd-dd„Zd.dd„Z	d/dd„Z
d0d1dd„Zd2d d!„Zd3d#d$„Zd2d%d&„Zd-d'd(„Zd)S )4ÚScannedCommentsr+   r   r   r*   c                 C  s   i | _ g | _d S r   )r%  Úunusedr4   r   r   r   r,   ý  s   
zScannedComments.__init__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  rW   r6   )Úcountr   r%  r±  r˜   ©r+   r\   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 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J ‚t|d d… ||ƒ | j|< }| j |¡ |S r²  )r³  r¬  r%  r±  r˜   r´  r   r   r   Úadd_full_line_comment  s   z%ScannedComments.add_full_line_commentÚidxc                 C  s
   | j | S r   )r%  )r+   r¸  r   r   r   Ú__getitem__  r”  zScannedComments.__getitem__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)r‘  )Ú.0r  r6  r   r   r   Ú	<genexpr>#  s   €& z*ScannedComments.__str__.<locals>.<genexpr>r  ©r#  r%  Úitemsr4   r   r   r   r–     s   ÿþÿzScannedComments.__str__rp  c                 C  s,   t | j ¡ ƒd \}}|d›d| ¡ › dS )Nr6   r™  rÞ   r  )r•   r%  r½  r‘  )r+   r  r6  r   r   r   Úlast'  s   zScannedComments.lastrL   c                 C  s   t | jƒdkS rT   )r2   r±  r4   r   r   r   Úany_unprocessed+  s   zScannedComments.any_unprocessedFÚusec                 c  s¤    t | jƒdkrPtdkr6dd l}|r| j d¡n| jd }| | ¡ d d ¡}td|| j| j	|j
|jƒ || j| fV  |rG| j|  ¡  t | jƒdksd S d S )Nr   rW   Úusing)r2   r±  r	   r  rX   rŽ  r  r   r%  rî   r‰  r  r’  )r+   rÀ  r  Úfirstr‘  r   r   r   Úunprocessed3  s   €÷zScannedComments.unprocessedr4  c                 C  ó®   |j j}tdkr"dd l}| | ¡ d d ¡}td|| j|j|j	ƒ d}| jrU| jd |k rUd}| j 
d¡}tdkr?td|ƒ | j|  ¡  | |¡ | jrU| jd |k s.|S )Nr   rW   Ú
assign_preFTzassign_pre < )r§   r'   r	   r  rŽ  r  r   r±  r‰  r  rX   r%  r’  Úadd_comment_pre©r+   r4  Ú
token_liner  r‘  ÚgobbledrÂ  r   r   r   rÅ  ?  ó   

úzScannedComments.assign_prer8   c                 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krMt	d|ƒ t
|ƒ|krgt||  tƒrgt||d   tƒrgd S zCt||  tƒr©t||d   tƒr©z%| j  d¡}| j|  ¡  tdkr“t	d||tƒ ||   |t¡ W W d S  ty¨   t‚w W n ty»   tdkr¹t	dƒ Y nw z:t||  tƒrõt||d   ttfƒrõz| j  d¡}| j|  ¡  ||   |t¡ W W d S  tyô   t‚w W n ty	   tdkrt	dƒ Y nw |D ]}t	d|ƒ qtdkr$t	dt||  ƒƒ dd l}| d¡ d S )	Nr   rW   Úidx1z>>>>>aÚIndexError1ÚIndexError2ztt-znot implemented EOL)r±  rµ   rP   r%  r   r§   r'   r¾   r	   r   r2   r"  r¼   rX   r’  ÚKEYCMNTÚadd_comment_eolr]   r¹   Ú	VALUECMNTÚtypeÚsysÚexit)r+   r8   Úcomment_liner¸  Úeol_idxrD  rÒ  r   r   r   Ú
assign_eolP  s†   ÿ
ÿý
ÿ
ÿþÿþÿ€ýÿþÿ€
ý
zScannedComments.assign_eolc                 C  rÄ  )Nr   rW   Úassign_postFTzassign_post < )r§   r'   r	   r  rŽ  r  r   r±  r‰  r  rX   r%  r’  Úadd_comment_postrÇ  r   r   r   r×  Œ  rÊ  zScannedComments.assign_postc                 C  s   d  dd„ | j ¡ D ƒ¡S )Nr  c                 s  s6    | ]\}}|j d krd|d›d | ¡ › dV  qdS )rÞ   z  r™  r  N)rˆ  r‘  )rº  Úindr6  r   r   r   r»  Ÿ  s   €4 z2ScannedComments.str_unprocessed.<locals>.<genexpr>r¼  r4   r   r   r   Ústr_unprocessed  s   ÿzScannedComments.str_unprocessedN)r+   r   r   r*   )r\   r   r(   r   r'   r   r   r   )r¸  r   r   r   rx  r  rz  r}  )rÀ  r   r   r   )r4  r   r   r   )r8   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    












<r°  c                      sP   e Zd Zd‡ fdd„Zddd	„Zddd„Zddd„Zddd„Zddd„Z‡  Z	S )ÚRoundTripScannerSCÚargr   r   r   r*   c                   s*   t ƒ j|i |¤Ž | jd usJ ‚d | _d S r   )r¤  r,   r-   r%  )r+   rÜ  r   r¦  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 rV   )rN   rO   r2   r8   rP   r™   r%  r×  rÅ  r:   rX   r4   r   r   r   rY   «  s   ÿúzRoundTripScannerSC.get_tokenrL   c                 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kr_tdt| jƒƒ | jD ]}t|ƒ qQt| j  ¡ ƒ | j  | jd ¡ | j  | j¡ dS )NFr   Tr  r6   z-x--)r%  r°  r-   Úparsed_commentsr7   r2   r8   rZ   r[   r:   r§   r'   r	   r   rÚ  rÅ  rÖ  )r+   rD  r   r   r   rN   ·  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sŒd	| _|  ¡  d S d	}|rd S )
Nr   rÝ   FrÞ   rß   r_   r  r  T)rF   rr   r¦   r%   rŽ   rà   r(   r%  r·  r'   r¶  Ú scan_empty_or_full_line_commentsr5   r=   rL   rá   r…  )	r+   rÛ   râ   r§   rã   r   Úcomment_start_markr\   rS  r   r   r   rp   Ò  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  rt  r  r   rß   )
rF   rŽ   r(   rr   rÕ   r¦   r%  r·  r'   r&  )r+   ÚblmarkÚblanksr\   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r||ƒ 7 }|ƒ  |ƒ dks|ƒ dkr@d}| j  ¡ }|ƒ tvr<||ƒ 7 }|ƒ  |ƒ tvs/|d7 }|ƒ }|tvrTtd|d|›| j  ¡ ƒ‚|d urb| j ||j|j	¡ |  
¡  d S )Nr  rÞ   rß   r  r:  r  )rF   rr   r¦   rŽ   rà   r   r%  r¶  r(   r'   rá   )r+   r§   rÛ   râ   rÕ   r\   r)   r   r   r   r   r  8	  s8   


þ




þüz1RoundTripScannerSC.scan_block_scalar_ignored_line)rÜ  r   r   r   r   r*   rx  rz  rw  r|  )
r   r    r!   r,   rY   rN   rp   rÞ  r  rª  r   r   r¦  r   rÛ  £  s    



?'rÛ  N)r   r   r   r   r   r   )'Ú
__future__r   Úruamel.yaml.errorr   r   Úruamel.yaml.tokensÚruamel.yaml.docinfor   r   Úruamel.yaml.compatr   r	   r
   r   Útypingr   r   r   r   r   r   r   Ú__all__rà   rÖ   rÚ   r   r   r"   r   r   rÐ  rÎ  r‡  r   r¬  r®  r°  rÛ  r   r   r   r   Ú<module>   sN   
              t, (