509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
<zÃWïÉ  ã               @   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	   ú/usr/lib64/python3.6/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               @   sx  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@d}d~dd€d€d�d‚dƒ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 | _| jƒ  d| _d| _g | _d| _i | _dS )zInitialize the scanner.Fé    r   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   x| j ƒ r| jƒ  qW | jrF|s$dS x |D ]}t| jd |ƒr*dS q*W dS )NTr   F)Úneed_more_tokensÚfetch_more_tokensr   Ú
isinstance)r   ÚchoicesZchoicer	   r	   r
   Úcheck_tokenq   s    

zScanner.check_tokenc             C   s*   x| j ƒ r| jƒ  qW | jr&| jd S d S )Nr   )r   r    r   )r   r	   r	   r
   Ú
peek_token}   s    
zScanner.peek_tokenc             C   s:   x| j ƒ r| jƒ  qW | jr6|  jd7  _| jjdƒS d S )Nr   r   )r   r    r   r   Úpop)r   r	   r	   r
   Ú	get_token„   s
    
zScanner.get_tokenc             C   s2   | j r
dS | jsdS | jƒ  | jƒ | 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 ƒ  | jƒ  | j| jƒ | jƒ }|dkr4| jƒ S |dkrL| jƒ rL| jƒ S |dkrd| jƒ rd| j	ƒ S |dkr|| j
ƒ r|| jƒ S |dkrŒ| jƒ S |dkrœ| jƒ S |dkr¬| jƒ S |dkr¼| jƒ S |d	krÌ| jƒ S |dkrä| jƒ rä| jƒ S |d
krü| jƒ rü| jƒ S |dk�r| jƒ �r| jƒ S |dk�r*| jƒ S |dk�r<| jƒ S |dk�rN| jƒ S |dk�rj| j �rj| jƒ S |dk�r†| j �r†| jƒ S |dk�r˜| jƒ S |dk�rª| jƒ S | jƒ �r¼| j ƒ S t!dd d| | j"ƒ ƒ‚d S )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   s:   d }x0| j D ]&}| j | }|d ks,|j|k r|j}qW |S )N)r   r   )r   Zmin_token_numberÚlevelÚkeyr	   r	   r
   r(     s    

z Scanner.next_possible_simple_keyc             C   s`   xZt | jƒD ]L}| j| }|j| jks6| j|j dkr|jrPtd|jd| jƒ ƒ‚| j|= qW d S )Ni   zwhile scanning a simple keyzcould not find expected ':')Úlistr   r   r   r   r   r   rX   )r   rZ   r[   r	   r	   r
   r'     s    
z"Scanner.stale_possible_simple_keysc             C   s^   | j  o| j| jk}| jrZ| jƒ  | jt| jƒ }t||| j	| j
| j| jƒ ƒ}|| j| j < d S )N)r   r   r   r   Úremove_possible_simple_keyr   Úlenr   r   r   r   rX   r   )r   r   r   r[   r	   r	   r
   Úsave_possible_simple_key$  s    z Scanner.save_possible_simple_keyc             C   s@   | j | jkr<| j| j  }|jr2td|jd| jƒ ƒ‚| j| j = d S )Nzwhile scanning a simple keyzcould not find expected ':')r   r   r   r   r   rX   )r   r[   r	   r	   r
   r]   5  s    z"Scanner.remove_possible_simple_keyc             C   sD   | j r
d S x4| j|kr>| jƒ }| jjƒ | _| jjt||ƒƒ qW d S )N)r   r   rX   r   r%   r   ÚappendZBlockEndToken)r   r   r   r	   r	   r
   r;   B  s    zScanner.unwind_indentc             C   s&   | j |k r"| jj| j ƒ || _ dS dS )NTF)r   r   r`   )r   r   r	   r	   r
   Ú
add_indentZ  s
    
zScanner.add_indentc             C   s$   | j ƒ }| jjt||| jd�ƒ d S )N)Úencoding)rX   r   r`   ZStreamStartTokenrb   )r   r   r	   r	   r
   r   d  s    zScanner.fetch_stream_startc             C   sB   | j dƒ | jƒ  d| _i | _| jƒ }| jjt||ƒƒ d| _d S )Nr   FTr   )	r;   r]   r   r   rX   r   r`   ZStreamEndTokenr   )r   r   r	   r	   r
   r=   p  s    
zScanner.fetch_stream_endc             C   s,   | j dƒ | jƒ  d| _| jj| jƒ ƒ d S )Nr   Fr   )r;   r]   r   r   r`   Úscan_directive)r   r	   r	   r
   r?   ƒ  s    
zScanner.fetch_directivec             C   s   | j tƒ d S )N)Úfetch_document_indicatorZDocumentStartToken)r   r	   r	   r
   rA   �  s    zScanner.fetch_document_startc             C   s   | j tƒ d S )N)rd   ZDocumentEndToken)r   r	   r	   r
   rC   ’  s    zScanner.fetch_document_endc             C   sH   | j dƒ | jƒ  d| _| jƒ }| jdƒ | jƒ }| jj|||ƒƒ d S )Nr   Fé   r   )r;   r]   r   rX   Úforwardr   r`   )r   Ú
TokenClassÚ
start_markÚend_markr	   r	   r
   rd   •  s    

z Scanner.fetch_document_indicatorc             C   s   | j tƒ d S )N)Úfetch_flow_collection_startZFlowSequenceStartToken)r   r	   r	   r
   rD   ¥  s    z!Scanner.fetch_flow_sequence_startc             C   s   | j tƒ d S )N)rj   ZFlowMappingStartToken)r   r	   r	   r
   rE   ¨  s    z Scanner.fetch_flow_mapping_startc             C   sJ   | j ƒ  |  jd7  _d| _| jƒ }| jƒ  | jƒ }| jj|||ƒƒ d S )Nr   T)r_   r   r   rX   rf   r   r`   )r   rg   rh   ri   r	   r	   r
   rj   «  s    z#Scanner.fetch_flow_collection_startc             C   s   | j tƒ d S )N)Úfetch_flow_collection_endZFlowSequenceEndToken)r   r	   r	   r
   rF   ¼  s    zScanner.fetch_flow_sequence_endc             C   s   | j tƒ d S )N)rk   ZFlowMappingEndToken)r   r	   r	   r
   rG   ¿  s    zScanner.fetch_flow_mapping_endc             C   sJ   | j ƒ  |  jd8  _d| _| jƒ }| jƒ  | jƒ }| jj|||ƒƒ d S )Nr   F)r]   r   r   rX   rf   r   r`   )r   rg   rh   ri   r	   r	   r
   rk   Â  s    z!Scanner.fetch_flow_collection_endc             C   s<   d| _ | jƒ  | jƒ }| jƒ  | jƒ }| jjt||ƒƒ d S )NT)r   r]   rX   rf   r   r`   ZFlowEntryToken)r   rh   ri   r	   r	   r
   rH   Ó  s    zScanner.fetch_flow_entryc             C   s‚   | j sF| jstd d d| jƒ ƒ‚| j| jƒrF| jƒ }| jjt||ƒƒ n d| _| j	ƒ  | jƒ }| j
ƒ  | jƒ }| jjt||ƒƒ d S )Nz%sequence entries are not allowed hereT)r   r   r   rX   ra   r   r   r`   ZBlockSequenceStartTokenr]   rf   ZBlockEntryToken)r   r   rh   ri   r	   r	   r
   rJ   á  s    
zScanner.fetch_block_entryc             C   s„   | j sD| jstd d d| jƒ ƒ‚| j| jƒrD| jƒ }| jjt||ƒƒ | j  | _| j	ƒ  | jƒ }| j
ƒ  | jƒ }| jjt||ƒƒ d S )Nz!mapping keys are not allowed here)r   r   r   rX   ra   r   r   r`   ÚBlockMappingStartTokenr]   rf   ÚKeyToken)r   r   rh   ri   r	   r	   r
   rL     s    

zScanner.fetch_keyc             C   s  | j | jkr|| j| j  }| j| j = | jj|j| j t|j|jƒƒ | j st| j|j	ƒrt| jj|j| j t
|j|jƒƒ d| _n\| j sš| jsštd d d| jƒ ƒ‚| j sÆ| j| j	ƒrÆ| jƒ }| jjt
||ƒƒ | j  | _| jƒ  | jƒ }| jƒ  | jƒ }| jjt||ƒƒ d S )NFz#mapping values are not allowed here)r   r   r   Úinsertr   r   rm   r   ra   r   rl   r   r   rX   r`   r]   rf   Z
ValueToken)r   r[   r   rh   ri   r	   r	   r
   rN     s2    


zScanner.fetch_valuec             C   s$   | j ƒ  d| _| jj| jtƒƒ d S )NF)r_   r   r   r`   Úscan_anchorZ
AliasToken)r   r	   r	   r
   rO   V  s    zScanner.fetch_aliasc             C   s$   | j ƒ  d| _| jj| jtƒƒ d S )NF)r_   r   r   r`   ro   ZAnchorToken)r   r	   r	   r
   rP   a  s    zScanner.fetch_anchorc             C   s"   | j ƒ  d| _| jj| jƒ ƒ d S )NF)r_   r   r   r`   Úscan_tag)r   r	   r	   r
   rQ   l  s    zScanner.fetch_tagc             C   s   | j dd� d S )Nr6   )Ústyle)Úfetch_block_scalar)r   r	   r	   r
   rR   w  s    zScanner.fetch_literalc             C   s   | j dd� d S )Nr7   )rq   )rr   )r   r	   r	   r
   rS   z  s    zScanner.fetch_foldedc             C   s$   d| _ | jƒ  | jj| j|ƒƒ d S )NT)r   r]   r   r`   Úscan_block_scalar)r   rq   r	   r	   r
   rr   }  s    zScanner.fetch_block_scalarc             C   s   | j dd� d S )Nr8   )rq   )Úfetch_flow_scalar)r   r	   r	   r
   rT   ˆ  s    zScanner.fetch_singlec             C   s   | j dd� d S )Nr9   )rq   )rt   )r   r	   r	   r
   rU   ‹  s    zScanner.fetch_doublec             C   s$   | j ƒ  d| _| jj| j|ƒƒ d S )NF)r_   r   r   r`   Úscan_flow_scalar)r   rq   r	   r	   r
   rt   Ž  s    zScanner.fetch_flow_scalarc             C   s"   | j ƒ  d| _| jj| jƒ ƒ d S )NF)r_   r   r   r`   Ú
scan_plain)r   r	   r	   r
   rW   ™  s    zScanner.fetch_plainc             C   s   | j dkrdS d S )Nr   T)r   )r   r	   r	   r
   r>   ¨  s    
zScanner.check_directivec             C   s.   | j dkr*| jdƒdkr*| jdƒdkr*dS d S )Nr   re   z---u     	
Â…â€¨â€©T)r   Úprefixr<   )r   r	   r	   r
   r@   ¯  s    
zScanner.check_document_startc             C   s.   | j dkr*| jdƒdkr*| jdƒdkr*dS d S )Nr   re   z...u     	
Â…â€¨â€©T)r   rw   r<   )r   r	   r	   r
   rB   ·  s    
zScanner.check_document_endc             C   s   | j dƒdkS )Nr   u     	
Â…â€¨â€©)r<   )r   r	   r	   r
   rI   ¿  s    zScanner.check_block_entryc             C   s   | j r
dS | jdƒdkS d S )NTr   u     	
Â…â€¨â€©)r   r<   )r   r	   r	   r
   rK   Ä  s    zScanner.check_keyc             C   s   | j r
dS | jdƒdkS d S )NTr   u     	
Â…â€¨â€©)r   r<   )r   r	   r	   r
   rM   Î  s    zScanner.check_valuec             C   s6   | j ƒ }|dkp4| j dƒdko4|dkp4| j o4|dkS )Nu      	
Â…â€¨â€©-?:,[]{}#&*!|>'"%@`r   u     	
Â…â€¨â€©r+   z?:)r<   r   )r   rY   r	   r	   r
   rV   Ø  s    zScanner.check_plainc             C   sŠ   | j dkr| jƒ dkr| jƒ  d}xb|s„x| jƒ dkr@| jƒ  q*W | jƒ dkrhx| jƒ dkrf| jƒ  qPW | jƒ r~| js‚d| _q$d}q$W d S )Nr   u   ï»¿Fú ú#u    
Â…â€¨â€©T)r   r<   rf   Úscan_line_breakr   r   )r   Úfoundr	   r	   r
   r:   í  s    zScanner.scan_to_next_tokenc             C   s�   | j ƒ }| jƒ  | j|ƒ}d }|dkr:| j|ƒ}| j ƒ }n>|dkrV| j|ƒ}| j ƒ }n"| j ƒ }x| jƒ dkrv| jƒ  q`W | j|ƒ t||||ƒS )NZYAMLZTAGu    
Â…â€¨â€©)rX   rf   Úscan_directive_nameÚscan_yaml_directive_valueÚscan_tag_directive_valuer<   Úscan_directive_ignored_lineZDirectiveToken)r   rh   ÚnameÚvalueri   r	   r	   r
   rc     s    





zScanner.scan_directivec             C   sÎ   d}| j |ƒ}xfd|  ko"dkn  s`d|  ko:dkn  s`d|  koRdkn  s`|dkrt|d	7 }| j |ƒ}qW |s�td
|d| | jƒ ƒ‚| j|ƒ}| j|ƒ | j ƒ }|dkrÊtd
|d| | jƒ ƒ‚|S )Nr   Ú0Ú9ÚAÚZÚaÚzz-_r   zwhile scanning a directivez6expected alphabetic or numeric character, but found %ru     
Â…â€¨â€©)r<   r   rX   rw   rf   )r   rh   ÚlengthrY   r�   r	   r	   r
   r|   #  s$    
J

zScanner.scan_directive_namec             C   sŠ   x| j ƒ dkr| jƒ  qW | j|ƒ}| j ƒ dkrJtd|d| j ƒ  | jƒ ƒ‚| jƒ  | j|ƒ}| j ƒ dkr‚td|d| j ƒ  | jƒ ƒ‚||fS )Nrx   r,   zwhile scanning a directivez%expected a digit or '.', but found %ru     
Â…â€¨â€©z%expected a digit or ' ', but found %r)r<   rf   Úscan_yaml_directive_numberr   rX   )r   rh   ÚmajorÚminorr	   r	   r
   r}   8  s    





z!Scanner.scan_yaml_directive_valuec             C   s‚   | j ƒ }d|  kodkn  s6td|d| | jƒ ƒ‚d}x*d| j |ƒ  koTdkn  rd|d7 }q<W t| j|ƒƒ}| j|ƒ |S )Nr‚   rƒ   zwhile scanning a directivezexpected a digit, but found %rr   r   )r<   r   rX   Úintrw   rf   )r   rh   rY   rˆ   r�   r	   r	   r
   r‰   I  s     
z"Scanner.scan_yaml_directive_numberc             C   sP   x| j ƒ dkr| jƒ  qW | j|ƒ}x| j ƒ dkr<| jƒ  q&W | j|ƒ}||fS )Nrx   )r<   rf   Úscan_tag_directive_handleÚscan_tag_directive_prefix)r   rh   Úhandlerw   r	   r	   r
   r~   V  s    

z Scanner.scan_tag_directive_valuec             C   s6   | j d|ƒ}| jƒ }|dkr2td|d| | jƒ ƒ‚|S )NÚ	directiverx   zwhile scanning a directivezexpected ' ', but found %r)Úscan_tag_handler<   r   rX   )r   rh   r�   rY   r	   r	   r
   r�   `  s    z!Scanner.scan_tag_directive_handlec             C   s6   | j d|ƒ}| jƒ }|dkr2td|d| | jƒ ƒ‚|S )Nr�   u     
Â…â€¨â€©zwhile scanning a directivezexpected ' ', but found %r)Úscan_tag_urir<   r   rX   )r   rh   r�   rY   r	   r	   r
   rŽ   i  s    z!Scanner.scan_tag_directive_prefixc             C   sr   x| j ƒ dkr| jƒ  qW | j ƒ dkr@x| j ƒ dkr>| jƒ  q(W | j ƒ }|dkrftd|d| | jƒ ƒ‚| jƒ  d S )Nrx   ry   u    
Â…â€¨â€©zwhile scanning a directivez0expected a comment or a line break, but found %r)r<   rf   r   rX   rz   )r   rh   rY   r	   r	   r
   r   r  s    z#Scanner.scan_directive_ignored_linec       	      C   s  | j ƒ }| jƒ }|dkrd}nd}| jƒ  d}| j|ƒ}xfd|  koLdkn  sŠd|  koddkn  sŠd	|  ko|d
kn  sŠ|dkrž|d7 }| j|ƒ}q:W |s¾td| |d| | j ƒ ƒ‚| j|ƒ}| j|ƒ | jƒ }|dkrütd| |d| | j ƒ ƒ‚| j ƒ }||||ƒS )Nr   ÚaliasZanchorr   r‚   rƒ   r„   r…   r†   r‡   z-_r   zwhile scanning an %sz6expected alphabetic or numeric character, but found %ru     	
Â…â€¨â€©?:,]}%@`)rX   r<   rf   r   rw   )	r   rg   rh   Z	indicatorr€   rˆ   rY   r�   ri   r	   r	   r
   ro   €  s2    	
J



zScanner.scan_anchorc       	      C   s&  | j ƒ }| jdƒ}|dkrdd }| jdƒ | jd|ƒ}| jƒ dkrZtd|d| jƒ  | j ƒ ƒ‚| jƒ  n~|dkr~d }d	}| jƒ  ndd}d
}x,|dkr²|d	kržd}P |d7 }| j|ƒ}qˆW d	}|rÊ| jd|ƒ}nd	}| jƒ  | jd|ƒ}| jƒ }|dk�r
td|d| | j ƒ ƒ‚||f}| j ƒ }t|||ƒS )Nr   ú<é   Útagr7   zwhile parsing a tagzexpected '>', but found %ru     	
Â…â€¨â€©r5   Fu     
Â…â€¨â€©Tzwhile scanning a tagzexpected ' ', but found %r)rX   r<   rf   r’   r   r‘   ZTagToken)	r   rh   rY   r�   Úsuffixrˆ   Z
use_handler�   ri   r	   r	   r
   rp   ¤  sH    







zScanner.scan_tagc             C   s´  |dkrd}nd}g }| j ƒ }| jƒ  | j|ƒ\}}| j|ƒ | jd }|dk rTd}|d krv| jƒ \}}	}
t||	ƒ}n|| d }| j|ƒ\}}
d}xà| j|koª| j	ƒ dk�rt|j
|ƒ | j	ƒ dk}d}x| j	|ƒd	krâ|d7 }qÊW |j| j|ƒƒ | j|ƒ | jƒ }| j|ƒ\}}
| j|k�rp| j	ƒ dk�rp|�rd|d
k�rd|�rd| j	ƒ dk�rd|�sn|jdƒ n
|j|ƒ q–P q–W |dk	�rŠ|j|ƒ |dk�rž|j
|ƒ tdj|ƒd||
|ƒS )Nr7   TFr   Ú r)   z 	r   u    
Â…â€¨â€©Ú
rx   )rX   rf   Úscan_block_scalar_indicatorsÚscan_block_scalar_ignored_liner   Úscan_block_scalar_indentationÚmaxÚscan_block_scalar_breaksr   r<   Úextendr`   rw   rz   ÚScalarTokenÚjoin)r   rq   ZfoldedÚchunksrh   ÚchompingÚ	incrementZ
min_indentÚbreaksÚ
max_indentri   r   Ú
line_breakZleading_non_spacerˆ   r	   r	   r
   rs   Í  sP    







zScanner.scan_block_scalarc             C   sø   d }d }| j ƒ }|dkrn|dkr&d}nd}| jƒ  | j ƒ }|dkrÊt|ƒ}|dkrdtd|d| jƒ ƒ‚| jƒ  n\|dkrÊt|ƒ}|dkr˜td|d| jƒ ƒ‚| jƒ  | j ƒ }|dkrÊ|dkr¾d}nd}| jƒ  | j ƒ }|d	krðtd|d
| | jƒ ƒ‚||fS )Nz+-ú+TFÚ
0123456789r   zwhile scanning a block scalarz<expected indentation indicator in the range 1-9, but found 0u     
Â…â€¨â€©z9expected chomping or indentation indicators, but found %r)r<   rf   rŒ   r   rX   )r   rh   r£   r¤   rY   r	   r	   r
   rš     sF    


z$Scanner.scan_block_scalar_indicatorsc             C   sr   x| j ƒ dkr| jƒ  qW | j ƒ dkr@x| j ƒ dkr>| jƒ  q(W | j ƒ }|dkrftd|d| | jƒ ƒ‚| jƒ  d S )Nrx   ry   u    
Â…â€¨â€©zwhile scanning a block scalarz0expected a comment or a line break, but found %r)r<   rf   r   rX   rz   )r   rh   rY   r	   r	   r
   r›   A  s    
z&Scanner.scan_block_scalar_ignored_linec             C   sh   g }d}| j ƒ }xL| jƒ dkr\| jƒ dkrB|j| jƒ ƒ | j ƒ }q| jƒ  | j|kr| j}qW |||fS )Nr   u    
Â…â€¨â€©rx   )rX   r<   r`   rz   rf   r   )r   r¢   r¦   ri   r	   r	   r
   rœ   O  s    


z%Scanner.scan_block_scalar_indentationc             C   s„   g }| j ƒ }x"| j|k r.| jƒ dkr.| jƒ  qW xJ| jƒ dkrz|j| jƒ ƒ | j ƒ }x"| j|k rv| jƒ dkrv| jƒ  qVW q2W ||fS )Nrx   u
   
Â…â€¨â€©)rX   r   r<   rf   r`   rz   )r   r   r¢   ri   r	   r	   r
   rž   ^  s    z Scanner.scan_block_scalar_breaksc             C   sœ   |dkrd}nd}g }| j ƒ }| jƒ }| jƒ  |j| j||ƒƒ x4| jƒ |krt|j| j||ƒƒ |j| j||ƒƒ qBW | jƒ  | j ƒ }tdj|ƒd|||ƒS )Nr9   TFr˜   )rX   r<   rf   rŸ   Úscan_flow_scalar_non_spacesÚscan_flow_scalar_spacesr    r¡   )r   rq   Údoubler¢   rh   Zquoteri   r	   r	   r
   ru   k  s    zScanner.scan_flow_scalarr)   úúú	r™   úúúúrx   r9   ú\õ   Â…õ   Â u   â€¨u   â€©)r‚   r†   ÚbÚtr¯   ÚnÚvÚfÚrÚerx   r9   r´   ÚNÚ_ÚLÚPr•   é   é   )ÚxÚuÚUc             C   sÆ  g }�xºd}x| j |ƒdkr&|d7 }qW |rF|j| j|ƒƒ | j|ƒ | j ƒ }| r€|dkr€| j dƒdkr€|jdƒ | jdƒ q|rŒ|dksš| r®|dkr®|j|ƒ | jƒ  q|o¸|dk�rº| jƒ  | j ƒ }|| jkrð|j| j| ƒ | jƒ  nÈ|| jk�r|| j| }| jƒ  xBt|ƒD ]6}| j |ƒdk�rtd	|d
|| j |ƒf | jƒ ƒ‚�qW t	| j|ƒdƒ}|jt
|ƒƒ | j|ƒ n<|dk�r¢| jƒ  |j| j||ƒƒ ntd	|d| | jƒ ƒ‚q|S qW d S )Nr   u   '"\  	
Â…â€¨â€©r   r8   r•   z"\r´   Ú0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz?expected escape sequence of %d hexdecimal numbers, but found %ré   u
   
Â…â€¨â€©z!found unknown escape character %r)r<   r`   rw   rf   ÚESCAPE_REPLACEMENTSÚESCAPE_CODESÚranger   rX   rŒ   Úchrrz   rŸ   Úscan_flow_scalar_breaks)r   r¬   rh   r¢   rˆ   rY   ÚkÚcoder	   r	   r
   rª   �  sL    







z#Scanner.scan_flow_scalar_non_spacesc       	      C   s´   g }d}x| j |ƒdkr"|d7 }q
W | j|ƒ}| j|ƒ | j ƒ }|dkr\td|d| jƒ ƒ‚nT|dkr¦| jƒ }| j||ƒ}|dkrŒ|j|ƒ n|sš|jd	ƒ |j|ƒ n
|j|ƒ |S )
Nr   z 	r   r)   zwhile scanning a quoted scalarzfound unexpected end of streamu
   
Â…â€¨â€©r™   rx   )	r<   rw   rf   r   rX   rz   rÍ   r`   rŸ   )	r   r¬   rh   r¢   rˆ   ÚwhitespacesrY   r§   r¥   r	   r	   r
   r«   È  s(    



zScanner.scan_flow_scalar_spacesc             C   s‚   g }xx| j dƒ}|dks |dkr@| jdƒdkr@td|d| jƒ ƒ‚x| jƒ dkrX| jƒ  qBW | jƒ dkrv|j| jƒ ƒ q|S qW d S )	Nre   z---z...u     	
Â…â€¨â€©zwhile scanning a quoted scalarz#found unexpected document separatorz 	u
   
Â…â€¨â€©)rw   r<   r   rX   rf   r`   rz   )r   r¬   rh   r¢   rw   r	   r	   r
   rÍ   à  s    
zScanner.scan_flow_scalar_breaksc             C   sN  g }| j ƒ }|}| jd }g }�xd}| jƒ dkr4P xP| j|ƒ}|dksx| j rj|dkrj| j|d ƒdksx| jrz|dkrzP |d7 }q6W | jrÄ|dkrÄ| j|d ƒdkrÄ| j|ƒ td|d	| j ƒ d
ƒ‚|dkrÎP d| _|j|ƒ |j| j	|ƒƒ | j|ƒ | j ƒ }| j
||ƒ}| �s4| jƒ dk�s4| j r"| j|k r"P q"W tdj|ƒd||ƒS )Nr   r   ry   u     	
Â…â€¨â€©r3   z,:?[]{}u     	
Â…â€¨â€©,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.Fr˜   T)rX   r   r<   r   rf   r   r   rŸ   r`   rw   Úscan_plain_spacesr   r    r¡   )r   r¢   rh   ri   r   Zspacesrˆ   rY   r	   r	   r
   rv   ò  sF    




zScanner.scan_plainc       
      C   s.  g }d}x| j |ƒdkr"|d7 }q
W | j|ƒ}| j|ƒ | j ƒ }|dk�r| jƒ }d| _| jdƒ}|dksr|dkr„| j dƒd	kr„d S g }	x`| j ƒ d
krè| j ƒ dkr¬| jƒ  qŠ|	j| jƒ ƒ | jdƒ}|dksÔ|dkrŠ| j dƒd	krŠd S qŠW |dkrþ|j|ƒ n|	�s|jdƒ |j|	ƒ n|�r*|j|ƒ |S )Nr   rx   r   u
   
Â…â€¨â€©Tre   z---z...u     	
Â…â€¨â€©u    
Â…â€¨â€©r™   )r<   rw   rf   rz   r   r`   rŸ   )
r   r   rh   r¢   rˆ   rÐ   rY   r§   rw   r¥   r	   r	   r
   rÑ   !  s>    







zScanner.scan_plain_spacesc             C   sô   | j ƒ }|dkr*td| |d| | jƒ ƒ‚d}| j |ƒ}|dkrÜxfd|  koTdkn  s’d|  kold	kn  s’d
|  ko„dkn  s’|dkr¦|d7 }| j |ƒ}qBW |dkrÔ| j|ƒ td| |d| | jƒ ƒ‚|d7 }| j|ƒ}| j|ƒ |S )Nr5   zwhile scanning a %szexpected '!', but found %rr   rx   r‚   rƒ   r„   r…   r†   r‡   z-_)r<   r   rX   rf   rw   )r   r€   rh   rY   rˆ   r�   r	   r	   r
   r‘   F  s&    

J



zScanner.scan_tag_handlec             C   sþ   g }d}| j |ƒ}x d|  ko&dkn  sdd|  ko>dkn  sdd|  koVdkn  sd|dkr²|d	krž|j| j|ƒƒ | j|ƒ d}|j| j||ƒƒ n|d
7 }| j |ƒ}qW |rÖ|j| j|ƒƒ | j|ƒ d}|sôtd| |d| | jƒ ƒ‚dj|ƒS )Nr   r‚   rƒ   r„   r…   r†   r‡   z-;/?:@&=+$,_.!~*'()[]%r*   r   zwhile parsing a %szexpected URI, but found %rr˜   )r<   r`   rw   rf   Úscan_uri_escapesr   rX   r¡   )r   r€   rh   r¢   rˆ   rY   r	   r	   r
   r’   ^  s(    
J


zScanner.scan_tag_uric             C   sÖ   g }| j ƒ }xx| jƒ dkr„| jƒ  x>tdƒD ]2}| j|ƒdkr,td| |d| j|ƒ | j ƒ ƒ‚q,W |jt| jdƒdƒƒ | jdƒ qW yt|ƒj	dƒ}W n8 t
k
rÐ } ztd| |t|ƒ|ƒ‚W Y d d }~X nX |S )Nr*   r•   rÇ   zwhile scanning a %szBexpected URI escape sequence of 2 hexdecimal numbers, but found %rrÈ   zutf-8)rX   r<   rf   rË   r   r`   rŒ   rw   ÚbytesÚdecodeÚUnicodeDecodeErrorÚstr)r   r€   rh   Zcodesr   rÎ   r�   Úexcr	   r	   r
   rÒ   w  s     
(zScanner.scan_uri_escapesc             C   sN   | j ƒ }|dkr6| jdƒdkr*| jdƒ n| jƒ  dS |dkrJ| jƒ  |S dS )Nu   
Â…r•   z
r™   u   â€¨â€©r˜   )r<   rw   rf   )r   rY   r	   r	   r
   rz   Š  s    	zScanner.scan_line_breakN)Lr   r   r   r   r#   r$   r&   r   r    r(   r'   r_   r]   r;   ra   r   r=   r?   rA   rC   rd   rD   rE   rj   rF   rG   rk   rH   rJ   rL   rN   rO   rP   rQ   rR   rS   rr   rT   rU   rt   rW   r>   r@   rB   rI   rK   rM   rV   r:   rc   r|   r}   r‰   r~   r�   rŽ   r   ro   rp   rs   rš   r›   rœ   rž   ru   rÉ   rÊ   rª   r«   rÍ   rv   rÑ   r‘   r’   rÒ   rz   r	   r	   r	   r
   r   .   s¶   A
l
!8

#
		$)L(+/%N)Ú__all__Úerrorr   r   r   r   r   r	   r	   r	   r
   Ú<module>   s
   