U
    œ9%eOÈ  ã                   @   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	   úK/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/yaml/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                   @   sz  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€dd‚dƒd„d…d†d‡dˆd‰dŠd‹dŒddŽœZAddd‘d’œZBd“d”„ ZCd•d–„ ZDd—d˜„ ZEd™dš„ ZFd›dœ„ ZGddž„ 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   sD   |   ¡ r|  ¡  q | 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|  ¡  q | jr"| jd S d S d S )Nr   )r!   r"   r   r    r	   r	   r
   Ú
peek_token}   s
    

zScanner.peek_tokenc                 C   s6   |   ¡ r|  ¡  q | jr2|  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r4|  ¡ S |dkrL|  ¡ rL|  ¡ S |dkrd|  ¡ rd|  	¡ S |dkr||  
¡ r||  ¡ S |dkrŒ|  ¡ S |dkrœ|  ¡ S |dkr¬|  ¡ S |dkr¼|  ¡ S |d	krÌ|  ¡ S |dkrä|  ¡ rä|  ¡ S |d
krü|  ¡ rü|  ¡ S |dkr|  ¡ r|  ¡ S |dkr*|  ¡ S |dkr<|  ¡ S |dkrN|  ¡ S |dkrh| jsh|  ¡ S |dkr‚| js‚|  ¡ S |dkr”|  ¡ S |dkr¦|  ¡ S |  ¡ r¸|   ¡ S t!dd d| |  "¡ ƒ‚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   s6   d }| j D ]&}| j | }|d k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 ]L}| j| }|j| jks4| j|j dkr
|jrNtd|jd|  ¡ ƒ‚| j|= q
d S )Ni   úwhile scanning a simple keyúcould not find expected ':')Úlistr   r   r   r   r   r   r[   )r   r^   r_   r	   r	   r
   r*     s    
ÿ ÿz"Scanner.stale_possible_simple_keysc                 C   s^   | j  o| j| jk}| jrZ|  ¡  | jt| jƒ }t||| j	| j
| j|  ¡ ƒ}|| j| j < 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   s@   | j | jkr<| j| j  }|jr2td|jd|  ¡ ƒ‚| j| j = d S )Nr`   ra   )r   r   r   r   r   r[   )r   r_   r	   r	   r
   rc   8  s     ÿz"Scanner.remove_possible_simple_keyc                 C   s@   | j r
d S | j|kr<|  ¡ }| j ¡ | _| j t||ƒ¡ q
d S r   )r   r   r[   r   r(   r   ÚappendZBlockEndToken)r   r   r   r	   r	   r
   r>   E  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   ZStreamStartTokenrh   ©r   r   r	   r	   r
   r   g  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   ZStreamEndTokenr   ri   r	   r	   r
   r@   s  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   s   |   t¡ d S r   )Úfetch_document_indicatorZDocumentStartTokenr    r	   r	   r
   rD   ’  s    zScanner.fetch_document_startc                 C   s   |   t¡ d S r   )rk   ZDocumentEndTokenr    r	   r	   r
   rF   •  s    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
   rk   ˜  s    

z Scanner.fetch_document_indicatorc                 C   s   |   t¡ d S r   )Úfetch_flow_collection_startZFlowSequenceStartTokenr    r	   r	   r
   rG   ¨  s    z!Scanner.fetch_flow_sequence_startc                 C   s   |   t¡ d S r   )rr   ZFlowMappingStartTokenr    r	   r	   r
   rH   «  s    z Scanner.fetch_flow_mapping_startc                 C   sJ   |   ¡  |  jd7  _d| _|  ¡ }|  ¡  |  ¡ }| j |||ƒ¡ d S )Nr   T)re   r   r   r[   rm   r   rf   rn   r	   r	   r
   rr   ®  s    z#Scanner.fetch_flow_collection_startc                 C   s   |   t¡ d S r   )Úfetch_flow_collection_endZFlowSequenceEndTokenr    r	   r	   r
   rI   ¿  s    zScanner.fetch_flow_sequence_endc                 C   s   |   t¡ d S r   )rs   ZFlowMappingEndTokenr    r	   r	   r
   rJ   Â  s    zScanner.fetch_flow_mapping_endc                 C   sJ   |   ¡  |  jd8  _d| _|  ¡ }|  ¡  |  ¡ }| j |||ƒ¡ d S )Nr   F)rc   r   r   r[   rm   r   rf   rn   r	   r	   r
   rs   Å  s    z!Scanner.fetch_flow_collection_endc                 C   s<   d| _ |  ¡  |  ¡ }|  ¡  |  ¡ }| j t||ƒ¡ d S ©NT)r   rc   r[   rm   r   rf   ZFlowEntryToken)r   rp   rq   r	   r	   r
   rK   Ö  s    zScanner.fetch_flow_entryc                 C   s‚   | j sF| jstd d d|  ¡ ƒ‚|  | j¡rF|  ¡ }| j t||ƒ¡ n d| _|  	¡  |  ¡ }|  
¡  |  ¡ }| j t||ƒ¡ d S )Nz%sequence entries are not allowed hereT)r   r   r   r[   rg   r   r   rf   ZBlockSequenceStartTokenrc   rm   ZBlockEntryToken©r   r   rp   rq   r	   r	   r
   rM   ä  s    þzScanner.fetch_block_entryc                 C   s„   | j sD| jstd d d|  ¡ ƒ‚|  | j¡rD|  ¡ }| j t||ƒ¡ | j  | _|  	¡  |  ¡ }|  
¡  |  ¡ }| j t||ƒ¡ d S )Nz!mapping keys are not allowed here)r   r   r   r[   rg   r   r   rf   ÚBlockMappingStartTokenrc   rm   ÚKeyTokenru   r	   r	   r
   rO     s    þ
zScanner.fetch_keyc                 C   s  | j | jkr|| j| j  }| j| j = | j |j| j t|j|jƒ¡ | j st|  |j	¡rt| j |j| j t
|j|jƒ¡ d| _n\| j sš| jsštd d d|  ¡ ƒ‚| j sÆ|  | j	¡rÆ|  ¡ }| j t
||ƒ¡ | j  | _|  ¡  |  ¡ }|  ¡  |  ¡ }| j t||ƒ¡ d S )NFz#mapping values are not allowed here)r   r   r   Úinsertr   r   rw   r   rg   r   rv   r   r   r[   rf   rc   rm   Z
ValueToken)r   r_   r   rp   rq   r	   r	   r
   rQ   !  s8    
ÿÿþ
zScanner.fetch_valuec                 C   s$   |   ¡  d| _| j |  t¡¡ d S ©NF)re   r   r   rf   Úscan_anchorZ
AliasTokenr    r	   r	   r
   rR   Y  s    zScanner.fetch_aliasc                 C   s$   |   ¡  d| _| j |  t¡¡ d S ry   )re   r   r   rf   rz   ZAnchorTokenr    r	   r	   r
   rS   d  s    zScanner.fetch_anchorc                 C   s"   |   ¡  d| _| j |  ¡ ¡ d S ry   )re   r   r   rf   Úscan_tagr    r	   r	   r
   rT   o  s    zScanner.fetch_tagc                 C   s   | j dd d S )Nr9   ©Ústyle©Úfetch_block_scalarr    r	   r	   r
   rU   z  s    zScanner.fetch_literalc                 C   s   | j dd d S )Nr:   r|   r~   r    r	   r	   r
   rV   }  s    zScanner.fetch_foldedc                 C   s$   d| _ |  ¡  | j |  |¡¡ d S rt   )r   rc   r   rf   Úscan_block_scalar©r   r}   r	   r	   r
   r   €  s    zScanner.fetch_block_scalarc                 C   s   | j dd d S )Nr;   r|   ©Úfetch_flow_scalarr    r	   r	   r
   rW   ‹  s    zScanner.fetch_singlec                 C   s   | j dd d S )Nr<   r|   r‚   r    r	   r	   r
   rX   Ž  s    zScanner.fetch_doublec                 C   s$   |   ¡  d| _| j |  |¡¡ d S ry   )re   r   r   rf   Úscan_flow_scalarr   r	   r	   r
   rƒ   ‘  s    zScanner.fetch_flow_scalarc                 C   s"   |   ¡  d| _| j |  ¡ ¡ d S ry   )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   s.   | j dkr*|  d¡dkr*|  d¡dkr*dS d S )Nr   rl   ú---õ     	
Â…â€¨â€©T©r   Úprefixr?   r    r	   r	   r
   rC   ²  s
    
ÿzScanner.check_document_startc                 C   s.   | j dkr*|  d¡dkr*|  d¡dkr*dS d S )Nr   rl   ú...r‡   Trˆ   r    r	   r	   r
   rE   º  s
    
ÿzScanner.check_document_endc                 C   s   |   d¡dkS )Nr   r‡   )r?   r    r	   r	   r
   rL   Â  s    zScanner.check_block_entryc                 C   s   | j r
dS |  d¡dkS d S ©NTr   r‡   ©r   r?   r    r	   r	   r
   rN   Ç  s    zScanner.check_keyc                 C   s   | j r
dS |  d¡dkS d S r‹   rŒ   r    r	   r	   r
   rP   Ñ  s    zScanner.check_valuec                 C   s6   |   ¡ }|dkp4|   d¡dko4|dkp4| j o4|dk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}|sz|  ¡ dkr<|  ¡  q&|  ¡ dkr^|  ¡ dkr^|  ¡  qH|  ¡ rt| jsxd| _q"d}q"d S )Nr   u   ï»¿Fú ú#õ    
Â…â€¨â€©T)r   r?   rm   Ú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rV|  |¡}|   ¡ }n|   ¡ }|  ¡ dkrt|  ¡  q^|  |¡ t||||ƒS )NÚYAMLZTAGr   )r[   rm   Úscan_directive_nameÚscan_yaml_directive_valueÚscan_tag_directive_valuer?   Úscan_directive_ignored_lineZDirectiveToken)r   rp   ÚnameÚvaluerq   r	   r	   r
   rj     s    






zScanner.scan_directivec                 C   sÄ   d}|   |¡}d|  kr"dksXn d|  kr8dksXn d|  krNdksXn |dkrl|d	7 }|   |¡}q|s†td
|d| |  ¡ ƒ‚|  |¡}|  |¡ |   ¡ }|dk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‰   rm   )r   rp   Úlengthr]   r˜   r	   r	   r
   r“   &  s2    
Bÿÿþ

ÿþzScanner.scan_directive_namec                 C   s†   |   ¡ dkr|  ¡  q |  |¡}|   ¡ dkrFtd|d|   ¡  |  ¡ ƒ‚|  ¡  |  |¡}|   ¡ dkr~td|d|   ¡  |  ¡ ƒ‚||fS )Nr   r/   r    z%expected a digit or '.', but found %rr¢   z%expected a digit or ' ', but found %r)r?   rm   Úscan_yaml_directive_numberr   r[   )r   rp   ÚmajorÚminorr	   r	   r
   r”   ;  s     


þ

þz!Scanner.scan_yaml_directive_valuec                 C   s|   |   ¡ }d|  krdks4n td|d| |  ¡ ƒ‚d}d|   |¡  krRdkr`n n
|d7 }q8t|  |¡ƒ}|  |¡ |S )Nr™   rš   r    zexpected a digit, but found %rr   r   )r?   r   r[   Úintr‰   rm   )r   rp   r]   r£   r˜   r	   r	   r
   r¤   L  s     ÿ

z"Scanner.scan_yaml_directive_numberc                 C   sH   |   ¡ dkr|  ¡  q |  |¡}|   ¡ dkr6|  ¡  q |  |¡}||fS )Nr   )r?   rm   Úscan_tag_directive_handleÚscan_tag_directive_prefix)r   rp   Úhandler‰   r	   r	   r
   r•   Y  s    



z Scanner.scan_tag_directive_valuec                 C   s6   |   d|¡}|  ¡ }|dkr2td|d| |  ¡ ƒ‚|S )NÚ	directiver   r    úexpected ' ', but found %r)Úscan_tag_handler?   r   r[   ©r   rp   r˜   r]   r	   r	   r
   r¨   c  s     ÿz!Scanner.scan_tag_directive_handlec                 C   s6   |   d|¡}|  ¡ }|dkr2td|d| |  ¡ ƒ‚|S )Nr«   r¢   r    r¬   )Úscan_tag_urir?   r   r[   r®   r	   r	   r
   r©   l  s     ÿz!Scanner.scan_tag_directive_prefixc                 C   sj   |   ¡ dkr|  ¡  q |   ¡ dkr8|   ¡ dkr8|  ¡  q"|   ¡ }|dkr^td|d| |  ¡ ƒ‚|  ¡  d S )Nr   rŽ   r   r    ú0expected a comment or a line break, but found %r©r?   rm   r   r[   r   ©r   rp   r]   r	   r	   r
   r–   u  s    

ÿþz#Scanner.scan_directive_ignored_linec           	      C   s  |   ¡ }|  ¡ }|dkrd}nd}|  ¡  d}|  |¡}d|  krLdks‚n d|  krbdks‚n d	|  krxd
ks‚n |dkr–|d7 }|  |¡}q8|s´td| |d| |   ¡ ƒ‚|  |¡}|  |¡ |  ¡ }|dkròtd| |d| |   ¡ ƒ‚|   ¡ }||||ƒS )Nr   ÚaliasÚanchorr   r™   rš   r›   rœ   r   rž   rŸ   r   zwhile scanning an %sr¡   u     	
Â…â€¨â€©?:,]}%@`)r[   r?   rm   r   r‰   )	r   ro   rp   Z	indicatorr—   r£   r]   r˜   rq   r	   r	   r
   rz   ƒ  s@    	
Bÿ
ÿþ


ÿþzScanner.scan_anchorc           	      C   s"  |   ¡ }|  d¡}|dkrdd }|  d¡ |  d|¡}|  ¡ dkrZtd|d|  ¡  |   ¡ ƒ‚|  ¡  nz|dkr~d }d	}|  ¡  n`d}d
}|dkr°|d	krœd}q°|d7 }|  |¡}q†d	}|rÆ|  d|¡}nd	}|  ¡  |  d|¡}|  ¡ }|dk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?   rm   r¯   r   r­   ZTagToken)	r   rp   r]   rª   Úsuffixr£   Z
use_handler˜   rq   r	   r	   r
   r{   §  sN    


þ


 ÿzScanner.scan_tagc                 C   s°  |dkrd}nd}g }|   ¡ }|  ¡  |  |¡\}}|  |¡ | jd }|dk rTd}|d krv|  ¡ \}}	}
t||	ƒ}n|| d }|  |¡\}}
d}| j|krr|  	¡ dkrr| 
|¡ |  	¡ dk}d}|  	|¡d	krà|d7 }qÈ| |  |¡¡ |  |¡ |  ¡ }|  |¡\}}
| j|krr|  	¡ dkrr|r`|d
kr`|r`|  	¡ dkr`|sj| d¡ n
| |¡ q”qrq”|dk	r†| |¡ |dkrš| 
|¡ td |¡d||
|ƒS )Nr:   TFr   Ú r,   ú 	r   r   Ú
r   )r[   rm   Ú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Úchunksrp   ÚchompingÚ	incrementZ
min_indentÚbreaksÚ
max_indentrq   r   Ú
line_breakZleading_non_spacer£   r	   r	   r
   r€   Ð  sX    




ÿ
ÿ



ÿzScanner.scan_block_scalarc                 C   sø   d }d }|   ¡ }|dkrn|dkr&d}nd}|  ¡  |   ¡ }|dkrÊt|ƒ}|dkrdtd|d|  ¡ ƒ‚|  ¡  n\|dkrÊt|ƒ}|dkr˜td|d|  ¡ ƒ‚|  ¡  |   ¡ }|dkrÊ|dkr¾d}nd}|  ¡  |   ¡ }|d	krðt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?   rm   r§   r   r[   )r   rp   rÆ   rÇ   r]   r	   r	   r
   r¼     sP    þ
þÿþz$Scanner.scan_block_scalar_indicatorsc                 C   sj   |   ¡ dkr|  ¡  q |   ¡ dkr8|   ¡ dkr8|  ¡  q"|   ¡ }|dkr^td|d| |  ¡ ƒ‚|  ¡  d S )Nr   rŽ   r   rÍ   r°   r±   r²   r	   r	   r
   r½   D  s    

þz&Scanner.scan_block_scalar_ignored_linec                 C   sd   g }d}|   ¡ }|  ¡ dkrZ|  ¡ dkr@| |  ¡ ¡ |   ¡ }q|  ¡  | j|kr| j}q|||fS )Nr   õ    
Â…â€¨â€©r   )r[   r?   rf   r   rm   r   )r   rÅ   rÉ   rq   r	   r	   r
   r¾   R  s    

z%Scanner.scan_block_scalar_indentationc                 C   sx   g }|   ¡ }| j|k r,|  ¡ dkr,|  ¡  q|  ¡ dkrp| |  ¡ ¡ |   ¡ }| j|k r,|  ¡ dkr,|  ¡  qNq,||fS )Nr   õ
   
Â…â€¨â€©)r[   r   r?   rm   rf   r   )r   r   rÅ   rq   r	   r	   r
   rÀ   a  s    
z Scanner.scan_block_scalar_breaksc                 C   s˜   |dkrd}nd}g }|   ¡ }|  ¡ }|  ¡  | |  ||¡¡ |  ¡ |krr| |  ||¡¡ | |  ||¡¡ q@|  ¡  |   ¡ }td |¡d|||ƒS )Nr<   TFr¹   )r[   r?   rm   rÁ   Úscan_flow_scalar_non_spacesÚscan_flow_scalar_spacesrÂ   rÃ   )r   r}   ÚdoublerÅ   rp   Úquoterq   r	   r	   r
   r„   n  s     ÿzScanner.scan_flow_scalarr,   úúú	r»   úúúúr   r<   ú\ú/õ   Â…õ   Â u   â€¨u   â€©)r™   r   ÚbÚtrÖ   ÚnÚvÚfÚrÚer   r<   rÛ   rÜ   ÚNÚ_ÚLÚPr¶   é   é   )ÚxÚuÚUc              	   C   s¶  g }d}|   |¡dkr |d7 }q|r>| |  |¡¡ |  |¡ |   ¡ }|sv|dkrv|   d¡dkrv| d¡ |  d¡ q|r‚|dksŽ|s¢|dkr¢| |¡ |  ¡  q|r¬|dkr¬|  ¡  |   ¡ }|| jkræ| | j| ¡ |  ¡  nÄ|| jkrn| j| }|  ¡  t|ƒD ]6}|   |¡dkrtd	|d
||   |¡f |  ¡ ƒ‚qt	|  |¡dƒ}| t
|ƒ¡ |  |¡ n<|dkr”|  ¡  | |  ||¡¡ ntd	|d| |  ¡ ƒ‚q|S qd S )Nr   u   '"\  	
Â…â€¨â€©r   r;   r¶   z"\rÛ   Ú0123456789ABCDEFabcdefz%while scanning a double-quoted scalarz@expected escape sequence of %d hexadecimal numbers, but found %ré   rÏ   z!found unknown escape character %r)r?   rf   r‰   rm   ÚESCAPE_REPLACEMENTSÚESCAPE_CODESÚranger   r[   r§   Úchrr   rÁ   Úscan_flow_scalar_breaks)r   rÒ   rp   rÅ   r£   r]   ÚkÚcoder	   r	   r
   rÐ   ¡  sT    







ÿþ
 ÿz#Scanner.scan_flow_scalar_non_spacesc           	      C   s°   g }d}|   |¡dkr |d7 }q|  |¡}|  |¡ |   ¡ }|dkrXtd|d|  ¡ ƒ‚nT|dkr¢|  ¡ }|  ||¡}|dkrˆ| |¡ n|s–| d	¡ | |¡ n
| |¡ |S )
Nr   rº   r   r,   úwhile scanning a quoted scalarzfound unexpected end of streamrÏ   r»   r   )	r?   r‰   rm   r   r[   r   rõ   rf   rÁ   )	r   rÒ   rp   rÅ   r£   Úwhitespacesr]   rÊ   rÈ   r	   r	   r
   rÑ   Ì  s,    


 ÿ

zScanner.scan_flow_scalar_spacesc                 C   sz   g }|   d¡}|dks|dkr>|  d¡dkr>td|d|  ¡ ƒ‚|  ¡ dkrT|  ¡  q>|  ¡ dkrp| |  ¡ ¡ q|S qd S )	Nrl   r†   rŠ   r‡   rø   z#found unexpected document separatorrº   rÏ   )r‰   r?   r   r[   rm   rf   r   )r   rÒ   rp   rÅ   r‰   r	   r	   r
   rõ   ä  s    
ÿ ÿ
zScanner.scan_flow_scalar_breaksc                 C   s  g }|   ¡ }|}| jd }g }d}|  ¡ dkr0qð|  |¡}|dks„|dkrj|  |d ¡d| jrbdnd ks„| jrz|dkrzq„|d7 }q0|dkrŽqðd	| _| |¡ | |  |¡¡ |  |¡ |   ¡ }|  	||¡}|rð|  ¡ dksð| js| j
|k rqðqtd |¡d
||ƒS )Nr   r   rŽ   r‡   r6   z,[]{}r¹   z,?[]{}FT)r[   r   r?   r   r   rÁ   rf   r‰   rm   Úscan_plain_spacesr   rÂ   rÃ   )r   rÅ   rp   rq   r   Úspacesr£   r]   r	   r	   r
   r…   ö  sJ    

ÿÿþüü


ÿÿzScanner.scan_plainc           
      C   s&  g }d}|   |¡dkr |d7 }q|  |¡}|  |¡ |   ¡ }|dkr|  ¡ }d| _|  d¡}|dksn|dkr€|   d¡d	kr€d S g }	|   ¡ d
krâ|   ¡ dkr¦|  ¡  q„|	 |  ¡ ¡ |  d¡}|dksÎ|dkr„|   d¡d	kr„d S q„|dkrö| |¡ n|	s| d¡ | |	¡ n|r"| |¡ |S )Nr   r   r   rÏ   Trl   r†   rŠ   r‡   rÎ   r»   )r?   r‰   rm   r   r   rf   rÁ   )
r   r   rp   rÅ   r£   rù   r]   rÊ   r‰   rÈ   r	   r	   r
   rú     sB    




ÿ

ÿ

zScanner.scan_plain_spacesc                 C   sê   |   ¡ }|dkr*td| |d| |  ¡ ƒ‚d}|   |¡}|dkrÒd|  krTdksŠn d|  krjd	ksŠn d
|  kr€dksŠn |dkrž|d7 }|   |¡}q@|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[   rm   r‰   )r   r—   rp   r]   r£   r˜   r	   r	   r
   r­   D  s0    
 ÿ
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rRdks\n |dkrª|d	kr–| |  |¡¡ |  |¡ d}| |  ||¡¡ n|d
7 }|   |¡}q|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‰   rm   Úscan_uri_escapesr   r[   rÃ   )r   r—   rp   rÅ   r£   r]   r	   r	   r
   r¯   \  s.    
Bÿ


 ÿzScanner.scan_tag_uric              
   C   sÎ   g }|   ¡ }|  ¡ dkr~|  ¡  tdƒD ]2}|  |¡dkr(td| |d|  |¡ |   ¡ ƒ‚q(| t|  d¡dƒ¡ |  d¡ qzt|ƒ 	d¡}W n8 t
k
rÈ } ztd| |t|ƒ|ƒ‚W 5 d }~X Y nX |S )Nr-   r¶   rï   rü   zCexpected URI escape sequence of 2 hexadecimal numbers, but found %rrð   zutf-8)r[   r?   rm   ró   r   rf   r§   r‰   ÚbytesÚdecodeÚUnicodeDecodeErrorÚstr)r   r—   rp   Úcodesr   rö   r˜   Úexcr	   r	   r
   rý   u  s&    
ÿþ(zScanner.scan_uri_escapesc                 C   sN   |   ¡ }|dkr6|  d¡dkr*|  d¡ n|  ¡  dS |dkrJ|  ¡  |S dS )Nu   
Â…r¶   z
r»   u   â€¨â€©r¹   )r?   r‰   rm   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>   rg   r   r@   rB   rD   rF   rk   rG   rH   rr   rI   rJ   rs   rK   rM   rO   rQ   rR   rS   rT   rU   rV   r   rW   rX   rƒ   rZ   rA   rC   rE   rL   rN   rP   rY   r=   rj   r“   r”   r¤   r•   r¨   r©   r–   rz   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
   