o
    sÇhOÈ  ã                   @   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	   ú`/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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                   @   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˜“d™dši¥ZAd›dœddžœ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   Ú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 find expected ':')Úlistr   r   r   r   r   r   r[   )r   r_   r`   r	   r	   r
   r*     s   
ÿ€ùz"Scanner.stale_possible_simple_keysc                 C   sb   | j  o	| j| jk}| jr/|  ¡  | 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 )Nra   rb   )r   r   r   r   r   r[   )r   r`   r	   r	   r
   rd   8  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>   E  s   
ýzScanner.unwind_indentc                 C   s&   | j |k r| j | j ¡ || _ dS dS )NTF)r   r   rg   )r   r   r	   r	   r
   Ú
add_indent]  s
   
zScanner.add_indentc                 C   s$   |   ¡ }| j t||| jd¡ d S )N)Úencoding)r[   r   rg   ÚStreamStartTokenrj   ©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>   rd   r   r   r[   r   rg   ÚStreamEndTokenr   rl   r	   r	   r
   r@   s  s   

zScanner.fetch_stream_endc                 C   s,   |   d¡ |  ¡  d| _| j |  ¡ ¡ d S )Nr   F)r>   rd   r   r   rg   Ú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   ro   r   )rp   ÚDocumentEndTokenr    r	   r	   r
   rF   •  rr   zScanner.fetch_document_endc                 C   sH   |   d¡ |  ¡  d| _|  ¡ }|  d¡ |  ¡ }| j |||ƒ¡ d S )Nr   Fé   )r>   rd   r   r[   Úforwardr   rg   ©r   Ú
TokenClassÚ
start_markÚend_markr	   r	   r
   rp   ˜  s   

z Scanner.fetch_document_indicatorc                 C   ro   r   )Úfetch_flow_collection_startÚFlowSequenceStartTokenr    r	   r	   r
   rG   ¨  rr   z!Scanner.fetch_flow_sequence_startc                 C   ro   r   )rz   ÚFlowMappingStartTokenr    r	   r	   r
   rH   «  rr   z Scanner.fetch_flow_mapping_startc                 C   sJ   |   ¡  |  jd7  _d| _|  ¡ }|  ¡  |  ¡ }| j |||ƒ¡ d S )Nr   T)rf   r   r   r[   ru   r   rg   rv   r	   r	   r
   rz   ®  ó   z#Scanner.fetch_flow_collection_startc                 C   ro   r   )Úfetch_flow_collection_endÚFlowSequenceEndTokenr    r	   r	   r
   rI   ¿  rr   zScanner.fetch_flow_sequence_endc                 C   ro   r   )r~   ÚFlowMappingEndTokenr    r	   r	   r
   rJ   Â  rr   zScanner.fetch_flow_mapping_endc                 C   sJ   |   ¡  |  jd8  _d| _|  ¡ }|  ¡  |  ¡ }| j |||ƒ¡ d S )Nr   F)rd   r   r   r[   ru   r   rg   rv   r	   r	   r
   r~   Å  r}   z!Scanner.fetch_flow_collection_endc                 C   s<   d| _ |  ¡  |  ¡ }|  ¡  |  ¡ }| j t||ƒ¡ d S ©NT)r   rd   r[   ru   r   rg   ÚFlowEntryToken)r   rx   ry   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[   ri   r   r   rg   ÚBlockSequenceStartTokenrd   ru   ÚBlockEntryToken©r   r   rx   ry   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[   ri   r   r   rg   ÚBlockMappingStartTokenrd   ru   Ú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   ri   r   r†   r   r   r[   rg   rd   ru   Ú
ValueToken)r   r`   r   rx   ry   r	   r	   r
   rQ   !  s8   
ÿÿþ
zScanner.fetch_valuec                 C   ó$   |   ¡  d| _| j |  t¡¡ d S ©NF)rf   r   r   rg   Úscan_anchorÚ
AliasTokenr    r	   r	   r
   rR   Y  ó   zScanner.fetch_aliasc                 C   rŠ   r‹   )rf   r   r   rg   rŒ   ÚAnchorTokenr    r	   r	   r
   rS   d  rŽ   zScanner.fetch_anchorc                 C   ó"   |   ¡  d| _| j |  ¡ ¡ d S r‹   )rf   r   r   rg   Úscan_tagr    r	   r	   r
   rT   o  s   zScanner.fetch_tagc                 C   ó   | j dd d S )Nr9   ©Ústyle©Úfetch_block_scalarr    r	   r	   r
   rU   z  ó   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   rd   r   rg   Ú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‹   )rf   r   r   rg   Úscan_flow_scalarr™   r	   r	   r
   r›   ‘  rŽ   zScanner.fetch_flow_scalarc                 C   r   r‹   )rf   r   r   rg   Ú
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   rt   ú---õ     	
Â…â€¨â€©T©r   Úprefixr?   r    r	   r	   r
   rC   ²  ó   
ýzScanner.check_document_startc                 C   rž   )Nr   rt   ú...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?   ru   Ú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 )NÚYAMLÚTAGr«   )r[   ru   Úscan_directive_nameÚscan_yaml_directive_valueÚscan_tag_directive_valuer?   Úscan_directive_ignored_lineÚDirectiveToken)r   rx   ÚnameÚvaluery   r	   r	   r
   rn     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¢   ru   )r   rx   Ú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?   ru   Úscan_yaml_directive_numberr   r[   )r   rx   Ú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¢   ru   )r   rx   r]   rÁ   r¶   r	   r	   r
   rÂ   L  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?   ru   Úscan_tag_directive_handleÚscan_tag_directive_prefix)r   rx   Úhandler¢   r	   r	   r
   r²   Y  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   rx   r¶   r]   r	   r	   r
   rÆ   c  ó   ÿ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Ç   l  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?   ru   r   r[   r¬   ©r   rx   r]   r	   r	   r
   r³   u  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?   ru   r   r¢   )	r   rw   rx   Ú	indicatorrµ   rÁ   r]   r¶   ry   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?   ru   rÎ   r   rË   ÚTagToken)	r   rx   r]   rÈ   ÚsuffixrÁ   Ú
use_handler¶   ry   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[   ru   Úscan_block_scalar_indicatorsÚscan_block_scalar_ignored_liner   Úscan_block_scalar_indentationÚmaxÚscan_block_scalar_breaksr   r?   Úextendrg   r¢   r¬   ÚScalarTokenÚjoin)r   r”   ÚfoldedÚchunksrx   ÚchompingÚ	incrementÚ
min_indentÚbreaksÚ
max_indentry   r   Ú
line_breakÚ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?   ru   rÅ   r   r[   )r   rx   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à   D  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?   rg   r¬   ru   r   )r   rè   rí   ry   r	   r	   r
   rá   R  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?   ru   rg   r¬   )r   r   rè   ry   r	   r	   r
   rã   a  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?   ru   rä   Úscan_flow_scalar_non_spacesÚscan_flow_scalar_spacesrå   ræ   )r   r”   Údoublerè   rx   Úquotery   r	   r	   r
   rœ   n  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 hexadecimal numbers, but found %ré   rô   z!found unknown escape character %r)r?   rg   r¢   ru   ÚESCAPE_REPLACEMENTSÚESCAPE_CODESÚranger   r[   rÅ   Úchrr¬   rä   Úscan_flow_scalar_breaks)r   r÷   rx   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¢   ru   r   r[   r¬   r  rg   rä   )	r   r÷   rx   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)
NTrt   rŸ   r¤   r    r  z#found unexpected document separatorrÝ   rô   )r¢   r?   r   r[   ru   rg   r¬   )r   r÷   rx   rè   r¢   r	   r	   r
   r  ä  s   
ÿÿózScanner.scan_flow_scalar_breaksc                 C   s  g }|   ¡ }|}| jd }g }	 d}|  ¡ dkrna	 |  |¡}|dv s>|dkr7|  |d ¡d| jr3dnd v s>| jr?|d	v r?n|d7 }q|dkrIn1d
| _| |¡ | |  |¡¡ |  |¡ |   ¡ }|  	||¡}|rx|  ¡ dksx| jsy| j
|k rynqtd |¡d||ƒS )Nr   Tr   rª   r    r6   z,[]{}rÜ   z,?[]{}F)r[   r   r?   r   r   rä   rg   r¢   ru   Úscan_plain_spacesr   rå   ræ   )r   rè   rx   ry   r   ÚspacesrÁ   r]   r	   r	   r
   r   ö  sJ   

ÿþø	

ÿ
é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ô   Trt   rŸ   r¤   r    ró   rÞ   )r?   r¢   ru   r¬   r   rg   rä   )
r   r   rx   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[   ru   r¢   )r   rµ   rx   r]   rÁ   r¶   r	   r	   r
   rË   D  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?   rg   r¢   ru   Úscan_uri_escapesr   r[   ræ   )r   rµ   rx   rè   rÁ   r]   r	   r	   r
   rÎ   \  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!  zCexpected URI escape sequence of 2 hexadecimal numbers, but found %rr  zutf-8)r[   r?   ru   r  r   rg   rÅ   r¢   ÚbytesÚdecodeÚUnicodeDecodeErrorÚstr)r   rµ   rx   Úcodesr   r  r¶   Úexcr	   r	   r
   r"  u  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¢   ru   r\   r	   r	   r
   r¬   ˆ  s   	
ÿzScanner.scan_line_breakN)Lr   r   r   r   r&   r'   r)   r!   r"   r+   r*   rf   rd   r>   ri   r   r@   rB   rD   rF   rp   rG   rH   rz   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=   rn   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   