o
    QŽfX§Ê  ã                   @   sL   d dgZ ddlmZ ddlT G dd„ deƒZG dd„ dƒZG dd „ d ƒZd	S )
ÚScannerÚScannerErroré   )ÚMarkedYAMLError)Ú*c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   úc/oak/stanford/groups/akundaje/marinovg/programs/SPAdes-3.15.4-Linux/share/spades/pyyaml3/scanner.pyr       s    c                   @   s   e Zd Zdd„ ZdS )Ú	SimpleKeyc                 C   s(   || _ || _|| _|| _|| _|| _d S ©N)Ú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„ 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d'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6didj„ Z7dkdl„ Z8dmdn„ Z9dodp„ Z:dqdr„ Z;dsdt„ Z<dudv„ Z=dwdx„ Z>dydz„ Z?d{d|„ Z@i d}d~“dd€“dd‚“dƒd„“d„d„“d…d†“d‡dˆ“d‰dŠ“d‹dŒ“ddŽ“dd“dd“d‘d‘“d’d““d”d•“d–d—“d˜d™“ZAdšd›dœdœZBdždŸ„ ZCd d¡„ ZDd¢d£„ ZEd¤d¥„ ZFd¦d§„ ZGd¨d©„ ZHdªd«„ ZId¬d­„ ZJd®d¯„ ZKd°S )±r   c                 C   s<   d| _ d| _g | _|  ¡  d| _d| _g | _d| _i | _dS )zInitialize the scanner.Fé    éÿÿÿÿTN)	ÚdoneÚ
flow_levelÚtokensÚfetch_stream_startÚtokens_takenÚindentÚindentsÚallow_simple_keyÚpossible_simple_keys©r   r	   r	   r
   r   0   s   
zScanner.__init__c                 G   sJ   |   ¡ r|  ¡  |   ¡ s| jr#|sdS |D ]}t| jd |ƒr" dS qdS )NTr   F)Úneed_more_tokensÚfetch_more_tokensr   Ú
isinstance)r   ÚchoicesÚchoicer	   r	   r
   Úcheck_tokenq   s   ÿÿzScanner.check_tokenc                 C   s,   |   ¡ r|  ¡  |   ¡ s| jr| jd S d S )Nr   )r!   r"   r   r    r	   r	   r
   Ú
peek_token}   s   ÿ
ÿzScanner.peek_tokenc                 C   s<   |   ¡ r|  ¡  |   ¡ s| jr|  jd7  _| j d¡S d S )Nr   r   )r!   r"   r   r   Úpopr    r	   r	   r
   Ú	get_token„   s   ÿþzScanner.get_tokenc                 C   s2   | j rdS | js
dS |  ¡  |  ¡ | jkrdS d S )NFT)r   r   Ústale_possible_simple_keysÚnext_possible_simple_keyr   r    r	   r	   r
   r!   Ž   s   ÿzScanner.need_more_tokensc                 C   s¶  |   ¡  |  ¡  |  | j¡ |  ¡ }|dkr|  ¡ S |dkr&|  ¡ r&|  ¡ S |dkr2|  ¡ r2|  	¡ S |dkr>|  
¡ r>|  ¡ S |dkrF|  ¡ S |dkrN|  ¡ S |dkrV|  ¡ S |dkr^|  ¡ S |d	krf|  ¡ S |dkrr|  ¡ rr|  ¡ 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| |  "¡ ƒ‚)Nú ú%ú-Ú.ú[Ú{ú]Ú}ú,ú?ú:r   ú&ú!ú|ú>ú'ú"z!while scanning for the next tokenz.found character %r that cannot start any token)#Úscan_to_next_tokenr*   Úunwind_indentr   Ú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   Úget_mark©r   Úchr	   r	   r
   r"   ™   s`   	þzScanner.fetch_more_tokensc                 C   s6   d }| j D ]}| j | }|d u s|j|k r|j}q|S r   )r   r   )r   Zmin_token_numberÚlevelÚkeyr	   r	   r
   r+     s   

€z Scanner.next_possible_simple_keyc                 C   s\   t | jƒD ]&}| j| }|j| jks| j|j dkr+|jr'td|jd|  ¡ ƒ‚| j|= qd S )Ni   úwhile scanning a simple keyúcould not found expected ':')Úlistr   r   r   r   r   r   r[   )r   r^   r_   r	   r	   r
   r*     s   
ÿ€ùz"Scanner.stale_possible_simple_keysc                 C   sp   | j  o	| j| jk}| js|rJ ‚| jr6|  ¡  | jt| jƒ }t||| j	| j
| j|  ¡ ƒ}|| j| j < d S d S r   )r   r   r   r   Úremove_possible_simple_keyr   Úlenr   r   r   r   r[   r   )r   r   r   r_   r	   r	   r
   Úsave_possible_simple_key$  s   ÿûz Scanner.save_possible_simple_keyc                 C   sD   | j | jv r | j| j  }|jrtd|jd|  ¡ ƒ‚| j| j = d S d S )Nr`   ra   )r   r   r   r   r   r[   )r   r_   r	   r	   r
   rc   9  s   ÿùz"Scanner.remove_possible_simple_keyc                 C   sL   | j rd S | j|kr$|  ¡ }| j ¡ | _| j t||ƒ¡ | j|ks
d S d S r   )r   r   r[   r   r(   r   ÚappendÚBlockEndToken)r   r   r   r	   r	   r
   r>   F  s   
ýzScanner.unwind_indentc                 C   s&   | j |k r| j | j ¡ || _ dS dS )NTF)r   r   rf   )r   r   r	   r	   r
   Ú
add_indent^  s
   
zScanner.add_indentc                 C   s$   |   ¡ }| j t||| jd¡ d S )N)Úencoding)r[   r   rf   ÚStreamStartTokenri   ©r   r   r	   r	   r
   r   h  s   ÿzScanner.fetch_stream_startc                 C   sB   |   d¡ |  ¡  d| _i | _|  ¡ }| j t||ƒ¡ d| _d S )Nr   FT)	r>   rc   r   r   r[   r   rf   ÚStreamEndTokenr   rk   r	   r	   r
   r@   t  s   

zScanner.fetch_stream_endc                 C   s,   |   d¡ |  ¡  d| _| j |  ¡ ¡ d S )Nr   F)r>   rc   r   r   rf   Úscan_directiver    r	   r	   r
   rB   ‡  s   
zScanner.fetch_directivec                 C   ó   |   t¡ d S r   )Úfetch_document_indicatorÚDocumentStartTokenr    r	   r	   r
   rD   “  ó   zScanner.fetch_document_startc                 C   rn   r   )ro   ÚDocumentEndTokenr    r	   r	   r
   rF   –  rq   zScanner.fetch_document_endc                 C   sH   |   d¡ |  ¡  d| _|  ¡ }|  d¡ |  ¡ }| j |||ƒ¡ d S )Nr   Fé   )r>   rc   r   r[   Úforwardr   rf   ©r   Ú
TokenClassÚ
start_markÚend_markr	   r	   r
   ro   ™  s   

z Scanner.fetch_document_indicatorc                 C   rn   r   )Úfetch_flow_collection_startÚFlowSequenceStartTokenr    r	   r	   r
   rG   ©  rq   z!Scanner.fetch_flow_sequence_startc                 C   rn   r   )ry   ÚFlowMappingStartTokenr    r	   r	   r
   rH   ¬  rq   z Scanner.fetch_flow_mapping_startc                 C   sJ   |   ¡  |  jd7  _d| _|  ¡ }|  ¡  |  ¡ }| j |||ƒ¡ d S )Nr   T)re   r   r   r[   rt   r   rf   ru   r	   r	   r
   ry   ¯  ó   z#Scanner.fetch_flow_collection_startc                 C   rn   r   )Úfetch_flow_collection_endÚFlowSequenceEndTokenr    r	   r	   r
   rI   À  rq   zScanner.fetch_flow_sequence_endc                 C   rn   r   )r}   ÚFlowMappingEndTokenr    r	   r	   r
   rJ   Ã  rq   zScanner.fetch_flow_mapping_endc                 C   sJ   |   ¡  |  jd8  _d| _|  ¡ }|  ¡  |  ¡ }| j |||ƒ¡ d S )Nr   F)rc   r   r   r[   rt   r   rf   ru   r	   r	   r
   r}   Æ  r|   z!Scanner.fetch_flow_collection_endc                 C   s<   d| _ |  ¡  |  ¡ }|  ¡  |  ¡ }| j t||ƒ¡ d S ©NT)r   rc   r[   rt   r   rf   ÚFlowEntryToken)r   rw   rx   r	   r	   r
   rK   ×  s   zScanner.fetch_flow_entryc                 C   s„   | j s#| jstd d d|  ¡ ƒ‚|  | j¡r"|  ¡ }| j t||ƒ¡ n	 d| _|  	¡  |  ¡ }|  
¡  |  ¡ }| j t||ƒ¡ d S )Nz%sequence entries are not allowed hereT)r   r   r   r[   rh   r   r   rf   ÚBlockSequenceStartTokenrc   rt   ÚBlockEntryToken©r   r   rw   rx   r	   r	   r
   rM   å  s"   þ€zScanner.fetch_block_entryc                 C   s„   | j s"| jstd d d|  ¡ ƒ‚|  | j¡r"|  ¡ }| j t||ƒ¡ | j  | _|  	¡  |  ¡ }|  
¡  |  ¡ }| j t||ƒ¡ d S )Nz!mapping keys are not allowed here)r   r   r   r[   rh   r   r   rf   ÚBlockMappingStartTokenrc   rt   ÚKeyTokenr„   r	   r	   r
   rO     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| _n.| j sM| jsMtd d d|  ¡ ƒ‚| j sc|  | j	¡rc|  ¡ }| j t
||ƒ¡ | j  | _|  ¡  |  ¡ }|  ¡  |  ¡ }| j t||ƒ¡ d S )NFz#mapping values are not allowed here)r   r   r   Úinsertr   r   r†   r   rh   r   r…   r   r   r[   rf   rc   rt   Ú
ValueToken)r   r_   r   rw   rx   r	   r	   r
   rQ   "  s8   
ÿÿþ
zScanner.fetch_valuec                 C   ó$   |   ¡  d| _| j |  t¡¡ d S ©NF)re   r   r   rf   Úscan_anchorÚ
AliasTokenr    r	   r	   r
   rR   Z  ó   zScanner.fetch_aliasc                 C   r‰   rŠ   )re   r   r   rf   r‹   ÚAnchorTokenr    r	   r	   r
   rS   e  r   zScanner.fetch_anchorc                 C   ó"   |   ¡  d| _| j |  ¡ ¡ d S rŠ   )re   r   r   rf   Úscan_tagr    r	   r	   r
   rT   p  s   zScanner.fetch_tagc                 C   ó   | j dd d S )Nr9   ©Ústyle©Úfetch_block_scalarr    r	   r	   r
   rU   {  ó   zScanner.fetch_literalc                 C   r‘   )Nr:   r’   r”   r    r	   r	   r
   rV   ~  r–   zScanner.fetch_foldedc                 C   s$   d| _ |  ¡  | j |  |¡¡ d S r€   )r   rc   r   rf   Úscan_block_scalar©r   r“   r	   r	   r
   r•     s   zScanner.fetch_block_scalarc                 C   r‘   )Nr;   r’   ©Úfetch_flow_scalarr    r	   r	   r
   rW   Œ  r–   zScanner.fetch_singlec                 C   r‘   )Nr<   r’   r™   r    r	   r	   r
   rX     r–   zScanner.fetch_doublec                 C   s$   |   ¡  d| _| j |  |¡¡ d S rŠ   )re   r   r   rf   Úscan_flow_scalarr˜   r	   r	   r
   rš   ’  r   zScanner.fetch_flow_scalarc                 C   r   rŠ   )re   r   r   rf   Ú
scan_plainr    r	   r	   r
   rZ     s   zScanner.fetch_plainc                 C   s   | j dkrdS d S )Nr   T)r   r    r	   r	   r
   rA   ¬  s   
ÿzScanner.check_directivec                 C   ó6   | j dkr|  d¡dkr|  d¡dv rdS d S d S d S )Nr   rs   ú---õ     	
Â…â€¨â€©T©r   Úprefixr?   r    r	   r	   r
   rC   ³  ó   
ýzScanner.check_document_startc                 C   r   )Nr   rs   ú...rŸ   Tr    r    r	   r	   r
   rE   »  r¢   zScanner.check_document_endc                 C   s   |   d¡dv S )Nr   rŸ   )r?   r    r	   r	   r
   rL   Ã  s   zScanner.check_block_entryc                 C   ó   | j rdS |  d¡dv S ©NTr   rŸ   ©r   r?   r    r	   r	   r
   rN   È  ó   zScanner.check_keyc                 C   r¤   r¥   r¦   r    r	   r	   r
   rP   Ò  r§   zScanner.check_valuec                 C   s6   |   ¡ }|dvp|   d¡dvo|dkp| j o|dv S )Nu      	
Â…â€¨â€©-?:,[]{}#&*!|>'"%@`r   rŸ   r.   z?:)r?   r   r\   r	   r	   r
   rY   Ü  s
   þzScanner.check_plainc                 C   s˜   | j dkr|  ¡ dkr|  ¡  d}|sJ|  ¡ dkr#|  ¡  |  ¡ dks|  ¡ dkr9|  ¡ dvr9|  ¡  |  ¡ dvs/|  ¡ rD| jsCd| _nd}|rd S d S )Nr   u   ï»¿Fú ú#õ    
Â…â€¨â€©T)r   r?   rt   Úscan_line_breakr   r   )r   Úfoundr	   r	   r
   r=   ñ  s"   ÿÿ€özScanner.scan_to_next_tokenc                 C   s–   |   ¡ }|  ¡  |  |¡}d }|dkr|  |¡}|   ¡ }n"|dkr+|  |¡}|   ¡ }n|   ¡ }|  ¡ dvr?|  ¡  |  ¡ dvs5|  |¡ t||||ƒS )NZYAMLZTAGrª   )r[   rt   Úscan_directive_nameÚscan_yaml_directive_valueÚscan_tag_directive_valuer?   Úscan_directive_ignored_lineÚDirectiveToken)r   rw   ÚnameÚvaluerx   r	   r	   r
   rm     s    




ÿ
zScanner.scan_directivec                 C   s  d}|   |¡}d|  krdks,n d|  krdks,n d|  kr'dks,n |dv rZ|d	7 }|   |¡}d|  kr?dks,n d|  krJdks,n d|  krUdks,n |dv s,|sgtd
|d| |  ¡ ƒ‚|  |¡}|  |¡ |   ¡ }|dvr„td
|d| |  ¡ ƒ‚|S )Nr   Ú0Ú9ÚAÚZÚaÚzú-_r   úwhile scanning a directiveú6expected alphabetic or numeric character, but found %rõ     
Â…â€¨â€©)r?   r   r[   r¡   rt   )r   rw   Úlengthr]   r³   r	   r	   r
   r­   '  s4   
B
Býÿþ

ÿþzScanner.scan_directive_namec                 C   s   |   ¡ dkr|  ¡  |   ¡ dks|  |¡}|   ¡ dkr(td|d|   ¡  |  ¡ ƒ‚|  ¡  |  |¡}|   ¡ dvrDtd|d|   ¡  |  ¡ ƒ‚||fS )Nr¨   r/   r»   z%expected a digit or '.', but found %rr½   z%expected a digit or ' ', but found %r)r?   rt   Úscan_yaml_directive_numberr   r[   )r   rw   ÚmajorÚminorr	   r	   r
   r®   <  s"   ÿ

þ

þz!Scanner.scan_yaml_directive_valuec                 C   s–   |   ¡ }d|  krdksn td|d| |  ¡ ƒ‚d}d|   |¡  kr)dkr=n n|d7 }d|   |¡  kr<dks+n t|  |¡ƒ}|  |¡ |S )Nr´   rµ   r»   zexpected a digit, but found %rr   r   )r?   r   r[   Úintr¡   rt   )r   rw   r]   r¾   r³   r	   r	   r
   r¿   M  s   ÿÿ
z"Scanner.scan_yaml_directive_numberc                 C   s\   |   ¡ dkr|  ¡  |   ¡ dks|  |¡}|   ¡ dkr%|  ¡  |   ¡ dks|  |¡}||fS )Nr¨   )r?   rt   Úscan_tag_directive_handleÚscan_tag_directive_prefix)r   rw   Úhandler¡   r	   r	   r
   r¯   Z  s   ÿ
ÿ
z Scanner.scan_tag_directive_valuec                 C   s6   |   d|¡}|  ¡ }|dkrtd|d| |  ¡ ƒ‚|S )NÚ	directiver¨   r»   úexpected ' ', but found %r)Úscan_tag_handler?   r   r[   ©r   rw   r³   r]   r	   r	   r
   rÃ   d  ó   ÿz!Scanner.scan_tag_directive_handlec                 C   s6   |   d|¡}|  ¡ }|dvrtd|d| |  ¡ ƒ‚|S )NrÆ   r½   r»   rÇ   )Úscan_tag_urir?   r   r[   rÉ   r	   r	   r
   rÄ   m  rÊ   z!Scanner.scan_tag_directive_prefixc                 C   ó~   |   ¡ dkr|  ¡  |   ¡ dks|   ¡ dkr&|   ¡ dvr&|  ¡  |   ¡ dvs|   ¡ }|dvr9td|d| |  ¡ ƒ‚|  ¡  d S )Nr¨   r©   rª   r»   ú0expected a comment or a line break, but found %r©r?   rt   r   r[   r«   ©r   rw   r]   r	   r	   r
   r°   v  s    ÿÿÿþz#Scanner.scan_directive_ignored_linec           	      C   sN  |   ¡ }|  ¡ }|dkrd}nd}|  ¡  d}|  |¡}d|  kr&dksAn d|  kr1dksAn d	|  kr<d
ksAn |dv ro|d7 }|  |¡}d|  krTdksAn d|  kr_dksAn d	|  krjd
ksAn |dv sA|s~td| |d| |   ¡ ƒ‚|  |¡}|  |¡ |  ¡ }|dvrtd| |d| |   ¡ ƒ‚|   ¡ }||||ƒS )Nr   ÚaliasÚanchorr   r´   rµ   r¶   r·   r¸   r¹   rº   r   zwhile scanning an %sr¼   u     	
Â…â€¨â€©?:,]}%@`)r[   r?   rt   r   r¡   )	r   rv   rw   Z	indicatorr²   r¾   r]   r³   rx   r	   r	   r
   r‹   „  sB   	
B
Bý
ÿþ


ÿþzScanner.scan_anchorc           	      C   s&  |   ¡ }|  d¡}|dkr2d }|  d¡ |  d|¡}|  ¡ dkr-td|d|  ¡  |   ¡ ƒ‚|  ¡  n@|dv r?d }d	}|  ¡  n3d}d
}|dvr[|d	krNd}n|d7 }|  |¡}|dvsGd	}|rf|  d|¡}nd	}|  ¡  |  d|¡}|  ¡ }|dvr…td|d| |   ¡ ƒ‚||f}|   ¡ }t|||ƒS )Nr   ú<é   Útagr:   zwhile parsing a tagzexpected '>', but found %rrŸ   r8   Fr½   Tzwhile scanning a tagrÇ   )r[   r?   rt   rË   r   rÈ   ÚTagToken)	r   rw   r]   rÅ   Úsuffixr¾   Z
use_handler³   rx   r	   r	   r
   r   ¨  sN   


þ


ûÿzScanner.scan_tagc                 C   s¸  |dkrd}nd}g }|   ¡ }|  ¡  |  |¡\}}|  |¡ | jd }|dk r*d}|d u r;|  ¡ \}}	}
t||	ƒ}n|| d }|  |¡\}}
d}| j|kr¿|  	¡ dkr¿| 
|¡ |  	¡ dv}d}|  	|¡d	vrt|d7 }|  	|¡d	vsi| |  |¡¡ |  |¡ |  ¡ }|  |¡\}}
| j|kr³|  	¡ dkr³|r­|d
kr­|r­|  	¡ dvr­|s¬| d¡ n| |¡ nn| j|kr¿|  	¡ dksU|durÈ| |¡ |du rÑ| 
|¡ td |¡d||
|ƒS )Nr:   TFr   Ú r,   ú 	r   rª   Ú
r¨   )r[   rt   Úscan_block_scalar_indicatorsÚscan_block_scalar_ignored_liner   Úscan_block_scalar_indentationÚmaxÚscan_block_scalar_breaksr   r?   Úextendrf   r¡   r«   ÚScalarTokenÚjoin)r   r“   ÚfoldedÚchunksrw   ÚchompingÚ	incrementZ
min_indentÚbreaksÚ
max_indentrx   r   Ú
line_breakZleading_non_spacer¾   r	   r	   r
   r—   Ñ  s\   


ÿ
ÿ
€Ý&

ÿzScanner.scan_block_scalarc                 C   sø   d }d }|   ¡ }|dv r7|dkrd}nd}|  ¡  |   ¡ }|dv r6t|ƒ}|dkr2td|d|  ¡ ƒ‚|  ¡  n.|dv ret|ƒ}|dkrLtd|d|  ¡ ƒ‚|  ¡  |   ¡ }|dv re|dkr_d}nd}|  ¡  |   ¡ }|d	vrxtd|d
| |  ¡ ƒ‚||fS )Nz+-ú+TFÚ
0123456789r   úwhile scanning a block scalarz<expected indentation indicator in the range 1-9, but found 0r½   z9expected chomping or indentation indicators, but found %r)r?   rt   rÂ   r   r[   )r   rw   rä   rå   r]   r	   r	   r
   rÚ     sR   þ€þÿþz$Scanner.scan_block_scalar_indicatorsc                 C   rÌ   )Nr¨   r©   rª   rë   rÍ   rÎ   rÏ   r	   r	   r
   rÛ   E  s   ÿÿþz&Scanner.scan_block_scalar_ignored_linec                 C   sn   g }d}|   ¡ }|  ¡ dv r2|  ¡ dkr | |  ¡ ¡ |   ¡ }n|  ¡  | j|kr,| j}|  ¡ dv s|||fS )Nr   õ    
Â…â€¨â€©r¨   )r[   r?   rf   r«   rt   r   )r   rã   rç   rx   r	   r	   r
   rÜ   S  s   

ù
z%Scanner.scan_block_scalar_indentationc                 C   sª   g }|   ¡ }| j|k r |  ¡ dkr |  ¡  | j|k r |  ¡ dks|  ¡ dv rQ| |  ¡ ¡ |   ¡ }| j|k rK|  ¡ dkrK|  ¡  | j|k rK|  ¡ dks<|  ¡ dv s&||fS )Nr¨   õ
   
Â…â€¨â€©)r[   r   r?   rt   rf   r«   )r   r   rã   rx   r	   r	   r
   rÞ   b  s   ÿÿýz Scanner.scan_block_scalar_breaksc                 C   s¢   |dkrd}nd}g }|   ¡ }|  ¡ }|  ¡  | |  ||¡¡ |  ¡ |kr>| |  ||¡¡ | |  ||¡¡ |  ¡ |ks&|  ¡  |   ¡ }td |¡d|||ƒS )Nr<   TFr×   )r[   r?   rt   rß   Úscan_flow_scalar_non_spacesÚscan_flow_scalar_spacesrà   rá   )r   r“   Údoublerã   rw   Úquoterx   r	   r	   r
   r›   o  s"   þÿzScanner.scan_flow_scalarr´   r,   r¸   úÚbúÚtú	ÚnrÙ   ÚvúÚfúÚrúÚeúr¨   r<   ú\ÚNõ   Â…Ú_õ   Â ÚLu   â€¨ÚPu   â€©rÓ   é   é   )ÚxÚuÚUc              	   C   s²  g }	 d}|   |¡dvr|d7 }|   |¡dvs|r&| |  |¡¡ |  |¡ |   ¡ }|sB|dkrB|   d¡dkrB| d¡ |  d¡ n–|rH|dksN|sX|dv rX| |¡ |  ¡  n€|rÖ|dkrÖ|  ¡  |   ¡ }|| jv rx| | j| ¡ |  ¡  n`|| jv r¹| j| }|  ¡  t|ƒD ]}|   |¡d	vr£td
|d||   |¡f |  ¡ ƒ‚qŠt	|  |¡dƒ}| t
|ƒ¡ |  |¡ n|dv rË|  ¡  | |  ||¡¡ ntd
|d| |  ¡ ƒ‚|S q)NTr   u   '"\  	
Â…â€¨â€©r   r;   rÓ   z"\r   Ú0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz?expected escape sequence of %d hexdecimal numbers, but found %ré   rí   z!found unknown escape character %r)r?   rf   r¡   rt   ÚESCAPE_REPLACEMENTSÚESCAPE_CODESÚranger   r[   rÂ   Úchrr«   rß   Úscan_flow_scalar_breaks)r   rð   rw   rã   r¾   r]   ÚkÚcoder	   r	   r
   rî   ¡  sZ   ÿ







ÿþÿÿÚz#Scanner.scan_flow_scalar_non_spacesc           	      C   s¼   g }d}|   |¡dv r|d7 }|   |¡dv s|  |¡}|  |¡ |   ¡ }|dkr1td|d|  ¡ ƒ‚|dv rW|  ¡ }|  ||¡}|dkrI| |¡ n|sP| d	¡ | |¡ |S | |¡ |S )
Nr   rØ   r   r,   úwhile scanning a quoted scalarzfound unexpected end of streamrí   rÙ   r¨   )	r?   r¡   rt   r   r[   r«   r  rf   rß   )	r   rð   rw   rã   r¾   Úwhitespacesr]   rè   ræ   r	   r	   r
   rï   Ì  s.   ÿ

ÿ


ÿzScanner.scan_flow_scalar_spacesc                 C   s‚   g }	 |   d¡}|dks|dkr |  d¡dv r td|d|  ¡ ƒ‚|  ¡ dv r0|  ¡  |  ¡ dv s&|  ¡ d	v r>| |  ¡ ¡ n|S q)
NTrs   rž   r£   rŸ   r  z#found unexpected document separatorrØ   rí   )r¡   r?   r   r[   rt   rf   r«   )r   rð   rw   rã   r¡   r	   r	   r
   r  ä  s   
ÿÿózScanner.scan_flow_scalar_breaksc                 C   s>  g }|   ¡ }|}| jd }g }	 d}|  ¡ dkrn|	 |  |¡}|dv s:| js3|dkr3|  |d ¡dv s:| jr;|dv r;n|d7 }q| jr_|dkr_|  |d ¡dvr_|  |¡ td	|d
|   ¡ dƒ‚|dkrdn1d| _| |¡ | |  	|¡¡ |  |¡ |   ¡ }|  
||¡}|r“|  ¡ dks“| js”| j|k r”nqtd |¡d||ƒS )Nr   Tr   r©   rŸ   r6   z,:?[]{}u     	
Â…â€¨â€©,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.Fr×   )r[   r   r?   r   rt   r   r   rß   rf   r¡   Úscan_plain_spacesr   rà   rá   )r   rã   rw   rx   r   Úspacesr¾   r]   r	   r	   r
   rœ   ö  sX   

ÿÿù	
þ

ÿ
ãzScanner.scan_plainc           
      C   s8  g }d}|   |¡dv r|d7 }|   |¡dv s|  |¡}|  |¡ |   ¡ }|dv r“|  ¡ }d| _|  d¡}|dks<|dkrE|   d¡d	v rEd S g }	|   ¡ d
v r{|   ¡ dkrX|  ¡  n|	 |  ¡ ¡ |  d¡}|dksl|dkru|   d¡d	v rud S |   ¡ d
v sM|dkr…| |¡ n|	sŒ| d¡ | |	¡ |S |rš| |¡ |S )Nr   r¨   r   rí   Trs   rž   r£   rŸ   rì   rÙ   )r?   r¡   rt   r«   r   rf   rß   )
r   r   rw   rã   r¾   r  r]   rè   r¡   ræ   r	   r	   r
   r  %  sD   ÿ




ø	

þ
zScanner.scan_plain_spacesc                 C   s2  |   ¡ }|dkrtd| |d| |  ¡ ƒ‚d}|   |¡}|dkrd|  kr*dksEn d|  kr5d	ksEn d
|  kr@dksEn |dv rs|d7 }|   |¡}d|  krXdksEn d|  krcd	ksEn d
|  krndksEn |dv sE|dkr‰|  |¡ td| |d| |  ¡ ƒ‚|d7 }|  |¡}|  |¡ |S )Nr8   úwhile scanning a %szexpected '!', but found %rr   r¨   r´   rµ   r¶   r·   r¸   r¹   rº   )r?   r   r[   rt   r¡   )r   r²   rw   r]   r¾   r³   r	   r	   r
   rÈ   J  s.   
ÿ
B
Bý

ÿ

zScanner.scan_tag_handlec                 C   s<  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 ry|d	krK| |  |¡¡ |  |¡ d}| |  ||¡¡ n|d
7 }|   |¡}d|  kr^dks.n d|  kridks.n d|  krtdks.n |dv s.|rŠ| |  |¡¡ |  |¡ d}|s™td| |d| |  ¡ ƒ‚d |¡S )Nr   r´   rµ   r¶   r·   r¸   r¹   z-;/?:@&=+$,_.!~*'()[]%r-   r   zwhile parsing a %szexpected URI, but found %rr×   )r?   rf   r¡   rt   Úscan_uri_escapesr   r[   rá   )r   r²   rw   rã   r¾   r]   r	   r	   r
   rË   b  s.   
B

B÷	

ÿ
zScanner.scan_tag_uric              
   C   sÌ   g }|   ¡ }|  ¡ dkrD|  ¡  tdƒD ]}|  |¡dvr-td| |d|  |¡ |   ¡ ƒ‚q| t|  d¡dƒ¡ |  d¡ |  ¡ dksz
t|ƒ 	d¡}W |S  t
ye } ztd| |t|ƒ|ƒ‚d }~ww )Nr-   rÓ   r  r  zBexpected URI escape sequence of 2 hexdecimal numbers, but found %rr  zutf-8)r[   r?   rt   r  r   rf   rÂ   r¡   ÚbytesÚdecodeÚUnicodeDecodeErrorÚstr)r   r²   rw   Úcodesr   r  r³   Úexcr	   r	   r
   r  {  s.   
ÿþÿ
ø	þ€ÿzScanner.scan_uri_escapesc                 C   sP   |   ¡ }|dv r|  d¡dkr|  d¡ dS |  ¡  dS |dv r&|  ¡  |S dS )Nu   
Â…rÓ   z
rÙ   u   â€¨â€©r×   )r?   r¡   rt   r\   r	   r	   r
   r«   Ž  s   	
ÿzScanner.scan_line_breakN)Lr   r   r   r   r&   r'   r)   r!   r"   r+   r*   re   rc   r>   rh   r   r@   rB   rD   rF   ro   rG   rH   ry   rI   rJ   r}   rK   rM   rO   rQ   rR   rS   rT   rU   rV   r•   rW   rX   rš   rZ   rA   rC   rE   rL   rN   rP   rY   r=   rm   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   .   sÞ    A
l
!8

#
		$)L(ÿþýüûúùø	÷
öõôóòñðïý+/%N)Ú__all__Úerrorr   r   r   r   r   r	   r	   r	   r
   Ú<module>   s   