3
QfX                 @   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	   U/home/psgendb/BIRCHDEV/pkg/SPAdes-3.15.4/linux-x86_64/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               @   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dddddddddddddddZAddddZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdS )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   choices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 found expected ':')listr   r   r   r   r   r   rY   )r   r[   r\   r	   r	   r
   r(     s    
z"Scanner.stale_possible_simple_keysc             C   sn   | j  o| j| jk}| js$| s$t| jrj| j  | jt| j }t	||| j
| j| j| j }|| j| j < d S )N)r   r   r   r   AssertionErrorremove_possible_simple_keyr   lenr   r   r   r   rY   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 found expected ':')r   r   r   r   r   rY   )r   r\   r	   r	   r
   r_   9  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   rY   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| j  || _ dS dS )NTF)r   r   rb   )r   r   r	   r	   r
   
add_indent^  s
    
zScanner.add_indentc             C   s$   | j  }| jjt||| jd d S )N)encoding)rY   r   rb   StreamStartTokenre   )r   r   r	   r	   r
   r   h  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   rY   r   rb   StreamEndTokenr   )r   r   r	   r	   r
   r>   t  s    
zScanner.fetch_stream_endc             C   s,   | j d | j  d| _| jj| j  d S )Nr   Fr   )r<   r_   r   r   rb   scan_directive)r   r	   r	   r
   r@     s    
zScanner.fetch_directivec             C   s   | j t d S )N)fetch_document_indicatorDocumentStartToken)r   r	   r	   r
   rB     s    zScanner.fetch_document_startc             C   s   | j t d S )N)ri   DocumentEndToken)r   r	   r	   r
   rD     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   rY   forwardr   rb   )r   
TokenClass
start_markend_markr	   r	   r
   ri     s    

z Scanner.fetch_document_indicatorc             C   s   | j t d S )N)fetch_flow_collection_startFlowSequenceStartToken)r   r	   r	   r
   rE     s    z!Scanner.fetch_flow_sequence_startc             C   s   | j t d S )N)rq   FlowMappingStartToken)r   r	   r	   r
   rF     s    z Scanner.fetch_flow_mapping_startc             C   sJ   | j   |  jd7  _d| _| j }| j  | j }| jj||| d S )Nr   T)ra   r   r   rY   rm   r   rb   )r   rn   ro   rp   r	   r	   r
   rq     s    z#Scanner.fetch_flow_collection_startc             C   s   | j t d S )N)fetch_flow_collection_endFlowSequenceEndToken)r   r	   r	   r
   rG     s    zScanner.fetch_flow_sequence_endc             C   s   | j t d S )N)rt   FlowMappingEndToken)r   r	   r	   r
   rH     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   rY   rm   r   rb   )r   rn   ro   rp   r	   r	   r
   rt     s    z!Scanner.fetch_flow_collection_endc             C   s<   d| _ | j  | j }| j  | j }| jjt|| d S )NT)r   r_   rY   rm   r   rb   FlowEntryToken)r   ro   rp   r	   r	   r
   rI     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   rY   rd   r   r   rb   BlockSequenceStartTokenr_   rm   BlockEntryToken)r   r   ro   rp   r	   r	   r
   rK     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   rY   rd   r   r   rb   BlockMappingStartTokenr_   rm   KeyToken)r   r   ro   rp   r	   r	   r
   rM     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st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   r{   r   rd   r   rz   r   r   rY   rb   r_   rm   
ValueToken)r   r\   r   ro   rp   r	   r	   r
   rO   "  s2    


zScanner.fetch_valuec             C   s$   | j   d| _| jj| jt d S )NF)ra   r   r   rb   scan_anchor
AliasToken)r   r	   r	   r
   rP   Z  s    zScanner.fetch_aliasc             C   s$   | j   d| _| jj| jt d S )NF)ra   r   r   rb   r~   AnchorToken)r   r	   r	   r
   rQ   e  s    zScanner.fetch_anchorc             C   s"   | j   d| _| jj| j  d S )NF)ra   r   r   rb   scan_tag)r   r	   r	   r
   rR   p  s    zScanner.fetch_tagc             C   s   | j dd d S )Nr7   )style)fetch_block_scalar)r   r	   r	   r
   rS   {  s    zScanner.fetch_literalc             C   s   | j dd d S )Nr8   )r   )r   )r   r	   r	   r
   rT   ~  s    zScanner.fetch_foldedc             C   s$   d| _ | j  | jj| j| d S )NT)r   r_   r   rb   scan_block_scalar)r   r   r	   r	   r
   r     s    zScanner.fetch_block_scalarc             C   s   | j dd d S )Nr9   )r   )fetch_flow_scalar)r   r	   r	   r
   rU     s    zScanner.fetch_singlec             C   s   | j dd d S )Nr:   )r   )r   )r   r	   r	   r
   rV     s    zScanner.fetch_doublec             C   s$   | j   d| _| jj| j| d S )NF)ra   r   r   rb   scan_flow_scalar)r   r   r	   r	   r
   r     s    zScanner.fetch_flow_scalarc             C   s"   | j   d| _| jj| j  d S )NF)ra   r   r   rb   
scan_plain)r   r	   r	   r
   rX     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   rl   z---u     	
  T)r   prefixr=   )r   r	   r	   r
   rA     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   rl   z...u     	
  T)r   r   r=   )r   r	   r	   r
   rC     s    
zScanner.check_document_endc             C   s   | j ddkS )Nr   u     	
  )r=   )r   r	   r	   r
   rJ     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
   rL     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
   rN     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   rZ   r	   r	   r
   rW     s    zScanner.check_plainc             C   s   | j dkr| j dkr| j  d}xb|sx| j dkr@| j  q*W | j dkrhx| j dkrf| j  qPW | j r~| jsd| _q$d}q$W d S )Nr   u   ﻿F #u    
  T)r   r=   rm   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    
  )rY   rm   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer=   scan_directive_ignored_lineDirectiveToken)r   ro   namevaluerp   r	   r	   r
   rh     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 |std
|d| | j | j|}| j| | j  }|dkrt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   rY   r   rm   )r   ro   lengthrZ   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rtd|d| j   | j ||fS )Nr   r-   zwhile scanning a directivez%expected a digit or '.', but found %ru     
  z%expected a digit or ' ', but found %r)r=   rm   scan_yaml_directive_numberr   rY   )r   ro   majorminorr	   r	   r
   r   <  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   rY   intr   rm   )r   ro   rZ   r   r   r	   r	   r
   r   M  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 )Nr   )r=   rm   scan_tag_directive_handlescan_tag_directive_prefix)r   ro   handler   r	   r	   r
   r   Z  s    

z Scanner.scan_tag_directive_valuec             C   s6   | j d|}| j }|dkr2td|d| | j |S )N	directiver   zwhile scanning a directivezexpected ' ', but found %r)scan_tag_handler=   r   rY   )r   ro   r   rZ   r	   r	   r
   r   d  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   rY   )r   ro   r   rZ   r	   r	   r
   r   m  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 )Nr   r   u    
  zwhile scanning a directivez0expected a comment or a line break, but found %r)r=   rm   r   rY   r   )r   ro   rZ   r	   r	   r
   r   v  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  sd|  koddkn  sd	|  ko|d
kn  s|dkr|d7 }| j|}q:W |std| |d| | j  | j|}| j| | j }|dkrtd| |d| | j  | j  }||||S )Nr   aliasanchorr   r   r   r   r   r   r   z-_r   zwhile scanning an %sz6expected alphabetic or numeric character, but found %ru     	
  ?:,]}%@`)rY   r=   rm   r   r   )	r   rn   ro   Z	indicatorr   r   rZ   r   rp   r	   r	   r
   r~     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rd}P |d7 }| j|}qW d	}|r| jd|}nd	}| j  | jd|}| j }|dkr
td|d| | j  ||f}| j  }t|||S )Nr   <   tagr8   zwhile parsing a tagzexpected '>', but found %ru     	
  r6   Fu     
  Tzwhile scanning a tagzexpected ' ', but found %r)rY   r=   rm   r   r   r   TagToken)	r   ro   rZ   r   suffixr   Z
use_handler   rp   r	   r	   r
   r     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 }qW |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| qP qW |dk	r|j| |dkr|j
| tdj|d||
|S )Nr8   TFr    r*   z 	r   u    
  
r   )rY   rm   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner   scan_block_scalar_indentationmaxscan_block_scalar_breaksr   r=   extendrb   r   r   ScalarTokenjoin)r   r   Zfoldedchunksro   chomping	incrementZ
min_indentbreaks
max_indentrp   r   
line_breakZleading_non_spacer   r	   r	   r
   r     sP    







zScanner.scan_block_scalarc             C   s   d }d }| j  }|dkrn|dkr&d}nd}| j  | j  }|dkrt|}|dkrdtd|d| j | j  n\|dkrt|}|dkrtd|d| j | j  | j  }|dkr|dkrd}nd}| j  | j  }|d	krt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=   rm   r   r   rY   )r   ro   r   r   rZ   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 )Nr   r   u    
  zwhile scanning a block scalarz0expected a comment or a line break, but found %r)r=   rm   r   rY   r   )r   ro   rZ   r	   r	   r
   r   E  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    
  r   )rY   r=   rb   r   rm   r   )r   r   r   rp   r	   r	   r
   r   S  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 )Nr   u
   
  )rY   r   r=   rm   rb   r   )r   r   r   rp   r	   r	   r
   r   b  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 )Nr:   TFr   )rY   r=   rm   r   scan_flow_scalar_non_spacesscan_flow_scalar_spacesr   r   )r   r   doubler   ro   Zquoterp   r	   r	   r
   r   o  s    zScanner.scan_flow_scalarr*   	r   r   r:   \       u    u    )r   r   btr   nvfrer   r:   r   N_LPr         )xuUc             C   s  g }xd}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   r9   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=   rb   r   rm   ESCAPE_REPLACEMENTSESCAPE_CODESranger   rY   r   chrr   r   scan_flow_scalar_breaks)r   r   ro   r   r   rZ   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   r   )	r=   r   rm   r   rY   r   r   rb   r   )	r   r   ro   r   r   whitespacesrZ   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 )	Nrl   z---z...u     	
  zwhile scanning a quoted scalarz#found unexpected document separatorz 	u
   
  )r   r=   r   rY   rm   rb   r   )r   r   ro   r   r   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rP 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   r   u     	
  r4   z,:?[]{}u     	
  ,[]{}zwhile scanning a plain scalarzfound unexpected ':'zGPlease check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.Fr   T)rY   r   r=   r   rm   r   r   r   rb   r   scan_plain_spacesr   r   r   )r   r   ro   rp   r   Zspacesr   rZ   r	   r	   r
   r     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rd 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rd S qW |dkr|j| n|	s|jd |j|	 n|r*|j| |S )Nr   r   r   u
   
  Trl   z---z...u     	
  u    
  r   )r=   r   rm   r   r   rb   r   )
r   r   ro   r   r   r   rZ   r   r   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rxfd|  koTdkn  sd|  kold	kn  sd
|  kodkn  s|dkr|d7 }| j |}qBW |dkr| j| td| |d| | j |d7 }| j|}| j| |S )Nr6   zwhile scanning a %szexpected '!', but found %rr   r   r   r   r   r   r   r   z-_)r=   r   rY   rm   r   )r   r   ro   rZ   r   r   r	   r	   r
   r   J  s&    

J



zScanner.scan_tag_handlec             C   s   g }d}| j |}xd|  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}|st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=   rb   r   rm   scan_uri_escapesr   rY   r   )r   r   ro   r   r   rZ   r	   r	   r
   r   b  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)rY   r=   rm   r   r   rb   r   r   bytesdecodeUnicodeDecodeErrorstr)r   r   ro   Zcodesr   r   r   excr	   r	   r
   r   {  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=   r   rm   )r   rZ   r	   r	   r
   r     s    	zScanner.scan_line_breakN)Lr   r   r   r   r$   r%   r'   r   r    r)   r(   ra   r_   r<   rd   r   r>   r@   rB   rD   ri   rE   rF   rq   rG   rH   rt   rI   rK   rM   rO   rP   rQ   rR   rS   rT   r   rU   rV   r   rX   r?   rA   rC   rJ   rL   rN   rW   r;   rh   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
   