
kR\                 @   sf   d  d g Z  d d l m Z d d l TGd d   d e  Z Gd d   d  Z Gd d    d   Z d	 S)
ScannerScannerError   )MarkedYAMLError)*c               @   s   e  Z d  Z d S)r   N)__name__
__module____qualname__ r	   r	   A/var/www/dbchiro/venv/lib/python3.4/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 d1 d2   Z d3 d4   Z d5 d6   Z d7 d8   Z d9 d:   Z d; d<   Z  d= d>   Z! d? d@   Z" dA dB   Z# dC dD   Z$ dE dF   Z% dG dH   Z& dI dJ   Z' dK dL   Z( dM dN   Z) dO dP   Z* dQ dR   Z+ dS dT   Z, dU dV   Z- dW dX   Z. dY dZ   Z/ d[ d\   Z0 d] d^   Z1 d_ d`   Z2 da db   Z3 dc dd   Z4 de df   Z5 dg dh   Z6 di dj   Z7 dk dl   Z8 dm dn   Z9 do dp   Z: dq dr   Z; ds dt   Z< du dv   Z= dw dx   Z> dy dz   Z? d{ d|   Z@ i d} d~ 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6ZA i d d 6d d 6d d 6ZB d d   ZC d d   ZD d d   ZE d d   ZF d d   ZG d d   ZH d d   ZI d d   ZJ d d   ZK d S)r   c             C   sV   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   sb   x |  j    r |  j   q W|  j r^ | s0 d Sx+ | D]  } t |  j d |  r7 d Sq7 Wn  d S)NTr   F)need_more_tokensfetch_more_tokensr   
isinstance)r   choiceschoicer	   r	   r
   check_tokenq   s    	zScanner.check_tokenc             C   s5   x |  j    r |  j   q W|  j r1 |  j d Sd  S)Nr   )r   r    r   )r   r	   r	   r
   
peek_token}   s    	zScanner.peek_tokenc             C   sI   x |  j    r |  j   q W|  j rE |  j d 7_ |  j j d  Sd  S)Nr   r   )r   r    r   r   pop)r   r	   r	   r
   	get_token   s
    	zScanner.get_tokenc             C   sA   |  j  r d S|  j s d S|  j   |  j   |  j k r= d Sd  S)NFT)r   r   stale_possible_simple_keysnext_possible_simple_keyr   )r   r	   r	   r
   r      s    		
zScanner.need_more_tokensc             C   sg  |  j    |  j   |  j |  j  |  j   } | d k rF |  j   S| d k rh |  j   rh |  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 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 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|  j   rD|  j    St! 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   sR   d  } xE |  j  D]: } |  j  | } | d  k s> | j | k  r | j } q 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   x t  |  j  D]r } |  j | } | j |  j k sK |  j | j d k r | j ru t d | j d |  j     n  |  j | =q q Wd  S)Ni   zwhile scanning a simple keyzcould not find expected ':')listr   r   r   r   r   r   rY   )r   r[   r\   r	   r	   r
   r(     s    	z"Scanner.stale_possible_simple_keysc             C   s   |  j  o |  j |  j k } |  j r |  j   |  j t |  j  } t | | |  j	 |  j
 |  j |  j    } | |  j |  j  <n  d  S)N)r   r   r   r   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 rL t d | j d |  j     n  |  j |  j  =n  d  S)Nzwhile scanning a simple keyzcould not find expected ':')r   r   r   r   r   rY   )r   r\   r	   r	   r
   r^   5  s    	z"Scanner.remove_possible_simple_keyc             C   s^   |  j  r d  SxJ |  j | k rY |  j   } |  j j   |  _ |  j j t | |   q Wd  S)N)r   r   rY   r   r&   r   appendZBlockEndToken)r   r   r   r	   r	   r
   r<   B  s    	zScanner.unwind_indentc             C   s3   |  j  | k  r/ |  j j |  j   | |  _  d Sd S)NTF)r   r   ra   )r   r   r	   r	   r
   
add_indentZ  s
    	zScanner.add_indentc             C   s2   |  j    } |  j j t | | d |  j  d  S)Nencoding)rY   r   ra   ZStreamStartTokenrc   )r   r   r	   r	   r
   r   d  s    zScanner.fetch_stream_startc             C   s[   |  j  d  |  j   d |  _ i  |  _ |  j   } |  j j t | |   d |  _ d  S)Nr   FTr   )	r<   r^   r   r   rY   r   ra   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   ra   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
   rB     s    zScanner.fetch_document_startc             C   s   |  j  t  d  S)N)re   ZDocumentEndToken)r   r	   r	   r
   rD     s    zScanner.fetch_document_endc             C   sb   |  j  d  |  j   d |  _ |  j   } |  j d  |  j   } |  j j | | |   d  S)Nr   F   r   )r<   r^   r   rY   forwardr   ra   )r   
TokenClass
start_markend_markr	   r	   r
   re     s    
	z Scanner.fetch_document_indicatorc             C   s   |  j  t  d  S)N)fetch_flow_collection_startZFlowSequenceStartToken)r   r	   r	   r
   rE     s    z!Scanner.fetch_flow_sequence_startc             C   s   |  j  t  d  S)N)rk   ZFlowMappingStartToken)r   r	   r	   r
   rF     s    z Scanner.fetch_flow_mapping_startc             C   sa   |  j    |  j d 7_ d |  _ |  j   } |  j   |  j   } |  j j | | |   d  S)Nr   T)r`   r   r   rY   rg   r   ra   )r   rh   ri   rj   r	   r	   r
   rk     s    
	
z#Scanner.fetch_flow_collection_startc             C   s   |  j  t  d  S)N)fetch_flow_collection_endZFlowSequenceEndToken)r   r	   r	   r
   rG     s    zScanner.fetch_flow_sequence_endc             C   s   |  j  t  d  S)N)rl   ZFlowMappingEndToken)r   r	   r	   r
   rH     s    zScanner.fetch_flow_mapping_endc             C   sa   |  j    |  j d 8_ d |  _ |  j   } |  j   |  j   } |  j j | | |   d  S)Nr   F)r^   r   r   rY   rg   r   ra   )r   rh   ri   rj   r	   r	   r
   rl     s    
	
z!Scanner.fetch_flow_collection_endc             C   sR   d |  _  |  j   |  j   } |  j   |  j   } |  j j t | |   d  S)NT)r   r^   rY   rg   r   ra   ZFlowEntryToken)r   ri   rj   r	   r	   r
   rI     s    	

zScanner.fetch_flow_entryc             C   s   |  j  sm |  j s0 t d  d  d |  j     n  |  j |  j  rm |  j   } |  j j t | |   qm n  d |  _ |  j	   |  j   } |  j
   |  j   } |  j j t | |   d  S)Nz%sequence entries are not allowed hereT)r   r   r   rY   rb   r   r   ra   ZBlockSequenceStartTokenr^   rg   ZBlockEntryToken)r   r   ri   rj   r	   r	   r
   rK     s    				

zScanner.fetch_block_entryc             C   s   |  j  sm |  j s0 t d  d  d |  j     n  |  j |  j  rm |  j   } |  j j t | |   qm n  |  j  |  _ |  j	   |  j   } |  j
   |  j   } |  j j t | |   d  S)Nz!mapping keys are not allowed here)r   r   r   rY   rb   r   r   ra   BlockMappingStartTokenr^   rg   KeyToken)r   r   ri   rj   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  s |  j | j	  r |  j j | j |  j t
 | j | j   q n  d |  _ n |  j  s |  j s t d  d  d |  j     q n  |  j  s-|  j |  j	  r-|  j   } |  j j t
 | |   q-n  |  j  |  _ |  j   |  j   } |  j   |  j   } |  j j t | |   d  S)NFz#mapping values are not allowed here)r   r   r   insertr   r   rn   r   rb   r   rm   r   r   rY   ra   r^   rg   Z
ValueToken)r   r\   r   ri   rj   r	   r	   r
   rO     s2    					

zScanner.fetch_valuec             C   s0   |  j    d |  _ |  j j |  j t   d  S)NF)r`   r   r   ra   scan_anchorZ
AliasToken)r   r	   r	   r
   rP   V  s    
	zScanner.fetch_aliasc             C   s0   |  j    d |  _ |  j j |  j t   d  S)NF)r`   r   r   ra   rp   ZAnchorToken)r   r	   r	   r
   rQ   a  s    
	zScanner.fetch_anchorc             C   s-   |  j    d |  _ |  j j |  j    d  S)NF)r`   r   r   ra   scan_tag)r   r	   r	   r
   rR   l  s    
	zScanner.fetch_tagc             C   s   |  j  d d  d  S)Nstyler7   )fetch_block_scalar)r   r	   r	   r
   rS   w  s    zScanner.fetch_literalc             C   s   |  j  d d  d  S)Nrr   r8   )rs   )r   r	   r	   r
   rT   z  s    zScanner.fetch_foldedc             C   s0   d |  _  |  j   |  j j |  j |   d  S)NT)r   r^   r   ra   scan_block_scalar)r   rr   r	   r	   r
   rs   }  s    	
zScanner.fetch_block_scalarc             C   s   |  j  d d  d  S)Nrr   r9   )fetch_flow_scalar)r   r	   r	   r
   rU     s    zScanner.fetch_singlec             C   s   |  j  d d  d  S)Nrr   r:   )ru   )r   r	   r	   r
   rV     s    zScanner.fetch_doublec             C   s0   |  j    d |  _ |  j j |  j |   d  S)NF)r`   r   r   ra   scan_flow_scalar)r   rr   r	   r	   r
   ru     s    
	zScanner.fetch_flow_scalarc             C   s-   |  j    d |  _ |  j j |  j    d  S)NF)r`   r   r   ra   
scan_plain)r   r	   r	   r
   rX     s    
	zScanner.fetch_plainc             C   s   |  j  d k r d Sd  S)Nr   T)r   )r   r	   r	   r
   r?     s    zScanner.check_directivec             C   sD   |  j  d k r@ |  j d  d k r@ |  j d  d k r@ d Sn  d  S)Nr   rf   z---u     	
  T)r   prefixr=   )r   r	   r	   r
   rA     s    zScanner.check_document_startc             C   sD   |  j  d k r@ |  j d  d k r@ |  j d  d k r@ d Sn  d  S)Nr   rf   z...u     	
  T)r   rx   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 Sd  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 Sd  S)NTr   u     	
  )r   r=   )r   r	   r	   r
   rN     s    	zScanner.check_valuec             C   sM   |  j    } | d k pL |  j  d  d k oL | d k pL |  j oL | 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   n  d } x | s x  |  j   d k r_ |  j   q@ W|  j   d k r x# |  j   d k r |  j   qu Wn  |  j   r |  j s d |  _ q q7 d } q7 Wd  S)Nr   u   ﻿F #u    
  T)r   r=   rg   scan_line_breakr   r   )r   foundr	   r	   r
   r;     s    !		zScanner.scan_to_next_tokenc             C   s   |  j    } |  j   |  j |  } d  } | d k rU |  j |  } |  j    } nY | d k r |  j |  } |  j    } n/ |  j    } x  |  j   d k r |  j   q W|  j |  t | | | |  S)NZYAMLZTAGu    
  )rY   rg   scan_directive_namescan_yaml_directive_valuescan_tag_directive_valuer=   scan_directive_ignored_lineZDirectiveToken)r   ri   namevaluerj   r	   r	   r
   rd     s    
zScanner.scan_directivec             C   s  d } |  j  |  } x} d | k o/ d k n sx d | k oK d k n sx d | k og d k n sx | d k r | d	 7} |  j  |  } q W| s t d
 | d | |  j     n  |  j |  } |  j |  |  j    } | d k rt d
 | d | |  j     n  | S)Nr   09AZazz-_r   zwhile scanning a directivez6expected alphabetic or numeric character, but found %ru     
  )r=   r   rY   rx   rg   )r   ri   lengthrZ   r   r	   r	   r
   r}   #  s$    W
		zScanner.scan_directive_namec             C   s   x  |  j    d k r" |  j   q W|  j |  } |  j    d k rl t d | d |  j    |  j     n  |  j   |  j |  } |  j    d k r t d | d |  j    |  j     n  | | f S)Nry   r-   zwhile scanning a directivez%expected a digit or '.', but found %ru     
  z%expected a digit or ' ', but found %r)r=   rg   scan_yaml_directive_numberr   rY   )r   ri   majorminorr	   r	   r
   r~   8  s    	
	z!Scanner.scan_yaml_directive_valuec             C   s   |  j    } d | k o# d k n sJ t d | d | |  j     n  d } x3 d |  j  |  k os d k n r | d 7} qS Wt |  j |   } |  j |  | S)Nr   r   zwhile scanning a directivezexpected a digit, but found %rr   r   )r=   r   rY   intrx   rg   )r   ri   rZ   r   r   r	   r	   r
   r   I  s    	(z"Scanner.scan_yaml_directive_numberc             C   sn   x  |  j    d k r" |  j   q W|  j |  } x  |  j    d k rT |  j   q5 W|  j |  } | | f S)Nry   )r=   rg   scan_tag_directive_handlescan_tag_directive_prefix)r   ri   handlerx   r	   r	   r
   r   V  s    z Scanner.scan_tag_directive_valuec             C   sP   |  j  d |  } |  j   } | d k rL t d | d | |  j     n  | S)N	directivery   zwhile scanning a directivezexpected ' ', but found %r)scan_tag_handler=   r   rY   )r   ri   r   rZ   r	   r	   r
   r   `  s    	z!Scanner.scan_tag_directive_handlec             C   sP   |  j  d |  } |  j   } | d k rL t d | d | |  j     n  | S)Nr   u     
  zwhile scanning a directivezexpected ' ', but found %r)scan_tag_urir=   r   rY   )r   ri   r   rZ   r	   r	   r
   r   i  s    	z!Scanner.scan_tag_directive_prefixc             C   s   x  |  j    d k r" |  j   q W|  j    d k r[ x# |  j    d k rW |  j   q8 Wn  |  j    } | d k r t d | d | |  j     n  |  j   d  S)Nry   rz   u    
  zwhile scanning a directivez0expected a comment or a line break, but found %r)r=   rg   r   rY   r{   )r   ri   rZ   r	   r	   r
   r   r  s    	z#Scanner.scan_directive_ignored_linec       	      C   st  |  j    } |  j   } | d k r- d } n d } |  j   d } |  j |  } x} d | k ol d k n s d | k o d k n s d	 | k o d
 k n s | d k r | d 7} |  j |  } qU W| s t d | | d | |  j      n  |  j |  } |  j |  |  j   } | d k rXt d | | d | |  j      n  |  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=   rg   r   rx   )	r   rh   ri   Z	indicatorr   r   rZ   r   rj   r	   r	   r
   rp     s2    		
W
zScanner.scan_anchorc       	      C   s  |  j    } |  j d  } | d k r d  } |  j d  |  j d |  } |  j   d k r t d | d |  j   |  j      n  |  j   n | d k r d  } d	 } |  j   n d } d
 } x? | d k r| d	 k r d } Pn  | d 7} |  j |  } q Wd	 } | r'|  j d |  } n d	 } |  j   |  j d |  } |  j   } | d k rt d | d | |  j      n  | | 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=   rg   r   r   r   ZTagToken)	r   ri   rZ   r   suffixr   Z
use_handler   rj   r	   r	   r
   rq     sH    	

	zScanner.scan_tagc             C   sZ  | d k r d } n d } g  } |  j    } |  j   |  j |  \ } } |  j |  |  j d } | d k  r{ d } n  | d  k r |  j   \ } }	 }
 t | |	  } n# | | d } |  j |  \ } }
 d } x)|  j | k r|  j	   d k r| j
 |  |  j	   d k } d } x# |  j	 |  d	 k rE| d 7} q#W| j |  j |   |  j |  |  j   } |  j |  \ } }
 |  j | k r|  j	   d k r| r| d
 k r| r|  j	   d k r| s| j d  qq| j |  q Pq W| d k	 r| j |  n  | d k r;| j
 |  n  t d j |  d | |
 |  S)Nr8   TFr    r*   z 	r   u    
  
ry   )rY   rg   scan_block_scalar_indicatorsscan_block_scalar_ignored_liner   scan_block_scalar_indentationmaxscan_block_scalar_breaksr   r=   extendra   rx   r{   ScalarTokenjoin)r   rr   foldedchunksri   chomping	incrementZ
min_indentbreaks
max_indentrj   r   
line_breakZleading_non_spacer   r	   r	   r
   rt     sP    	
	$!zScanner.scan_block_scalarc             C   sz  d  } d  } |  j    } | d k r | d k r9 d } n d } |  j   |  j    } | d k r6t |  } | d k r t d | d |  j     n  |  j   q6n | d k r6t |  } | d k r t d | d |  j     n  |  j   |  j    } | d k r6| d k r d } n d } |  j   q6n  |  j    } | d	 k rpt d | d
 | |  j     n  | | 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=   rg   r   r   rY   )r   ri   r   r   rZ   r	   r	   r
   r     sF    	
		
		z$Scanner.scan_block_scalar_indicatorsc             C   s   x  |  j    d k r" |  j   q W|  j    d k r[ x# |  j    d k rW |  j   q8 Wn  |  j    } | d k r t d | d | |  j     n  |  j   d  S)Nry   rz   u    
  zwhile scanning a block scalarz0expected a comment or a line break, but found %r)r=   rg   r   rY   r{   )r   ri   rZ   r	   r	   r
   r   A  s    	z&Scanner.scan_block_scalar_ignored_linec             C   s   g  } d } |  j    } xo |  j   d k r |  j   d k ra | j |  j    |  j    } q |  j   |  j | k r |  j } q q W| | | f S)Nr   u    
  ry   )rY   r=   ra   r{   rg   r   )r   r   r   rj   r	   r	   r
   r   O  s    
z%Scanner.scan_block_scalar_indentationc             C   s   g  } |  j    } x/ |  j | k  rC |  j   d k rC |  j   q Wxg |  j   d k r | j |  j    |  j    } x/ |  j | k  r |  j   d k r |  j   q{ WqG W| | f S)Nry   u
   
  )rY   r   r=   rg   ra   r{   )r   r   r   rj   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 | |   xH |  j   | k r | j |  j | |   | j |  j | |   q_ W|  j   |  j    } t d j |  d | | |  S)Nr:   TFr   )rY   r=   rg   r   scan_flow_scalar_non_spacesscan_flow_scalar_spacesr   r   )r   rr   doubler   ri   quoterj   r	   r	   r
   rv   k  s    	

zScanner.scan_flow_scalarr*   r   r   b	tr   nvfrery   r:   \   N    _u    Lu    Pr   x   u   Uc             C   sg  g  } xZd } x# |  j  |  d k r4 | d 7} q W| ra | j |  j |   |  j |  n  |  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	 | r[| d k r[|  j   |  j    } | |  j k rI| j |  j |  |  j   q_| |  j k r|  j | } |  j   xZ t |  D]L } |  j  |  d k r|t d	 | d
 | |  j  |  f |  j     q|q|Wt	 |  j |  d  } | j t
 |   |  j |  q_| d k r9|  j   | j |  j | |   q_t d	 | d | |  j     q	 | Sq	 Wd  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=   ra   rx   rg   ESCAPE_REPLACEMENTSESCAPE_CODESranger   rY   r   chrr{   r   scan_flow_scalar_breaks)r   r   ri   r   r   rZ   kcoder	   r	   r
   r     sL    (%

	)
	z#Scanner.scan_flow_scalar_non_spacesc       	      C   s  g  } d } x# |  j  |  d k r1 | d 7} q W|  j |  } |  j |  |  j    } | d k r t d | d |  j     ny | d k r |  j   } |  j | |  } | d k r | j |  n | s | j d	  n  | j |  n | j |  | S)
Nr   z 	r   r*   zwhile scanning a quoted scalarzfound unexpected end of streamu
   
  r   ry   )	r=   rx   rg   r   rY   r{   r   ra   r   )	r   r   ri   r   r   whitespacesrZ   r   r   r	   r	   r
   r     s(    	zScanner.scan_flow_scalar_spacesc             C   s   g  } x |  j  d  } | d k s0 | d k rc |  j d  d k rc t d | d |  j     n  x  |  j   d k r |  j   qf W|  j   d k r | j |  j    q	 | Sq	 Wd  S)	Nrf   z---z...u     	
  zwhile scanning a quoted scalarz#found unexpected document separatorz 	u
   
  )rx   r=   r   rY   rg   ra   r{   )r   r   ri   r   rx   r	   r	   r
   r     s    	zScanner.scan_flow_scalar_breaksc             C   s  g  } |  j    } | } |  j d } g  } xd } |  j   d k rJ Pn  xq |  j |  } | d k s |  j r | d k r |  j | d  d k s |  j r | d k r Pn  | d 7} qM W|  j r| d k r|  j | d  d k r|  j |  t d | d	 |  j    d
   n  | d k r*Pn  d |  _ | j |  | j |  j	 |   |  j |  |  j    } |  j
 | |  } | s|  j   d k s|  j r. |  j | k  r. Pq. q. Wt d j |  d | |  S)Nr   r   rz   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   rg   r   r   r   ra   rx   scan_plain_spacesr   r   r   )r   r   ri   rj   r   Zspacesr   rZ   r	   r	   r
   rw     sF    		zScanner.scan_plainc       
      C   s  g  } d } x# |  j  |  d k r1 | d 7} q W|  j |  } |  j |  |  j    } | d k r|  j   } d |  _ |  j d  } | d k s | d k r |  j  d  d	 k r d  Sg  }	 x |  j    d
 k rK|  j    d k r |  j   q |	 j |  j    |  j d  } | d k s/| d k r |  j  d  d	 k r d  Sq W| d k rh| j |  n |	 s~| j d  n  | j |	  n | r| j |  n  | S)Nr   ry   r   u
   
  Trf   z---z...u     	
  u    
  r   )r=   rx   rg   r{   r   ra   r   )
r   r   ri   r   r   r   rZ   r   rx   r   r	   r	   r
   r   !  s>    	zScanner.scan_plain_spacesc             C   sK  |  j    } | d k r> t d | | d | |  j     n  d } |  j  |  } | d k r+x} d | k oy d k n s d | k o d	 k n s d
 | k o d k n s | d k r | d 7} |  j  |  } qb W| d k r|  j |  t d | | d | |  j     n  | d 7} n  |  j |  } |  j |  | S)Nr6   zwhile scanning a %szexpected '!', but found %rr   ry   r   r   r   r   r   r   z-_)r=   r   rY   rg   rx   )r   r   ri   rZ   r   r   r	   r	   r
   r   F  s&    W
zScanner.scan_tag_handlec             C   sW  g  } d } |  j  |  } x d | k o5 d k n s~ d | k oQ d k n s~ d | k om d k n s~ | d k r | d	 k r | j |  j |   |  j |  d } | j |  j | |   n
 | d
 7} |  j  |  } q W| r| j |  j |   |  j |  d } n  | sJt d | | d | |  j     n  d j |  S)Nr   r   r   r   r   r   r   z-;/?:@&=+$,_.!~*'()[]%r+   r   zwhile parsing a %szexpected URI, but found %rr   )r=   ra   rx   rg   scan_uri_escapesr   rY   r   )r   r   ri   r   r   rZ   r	   r	   r
   r   ^  s(    W
	zScanner.scan_tag_uric             C   s   g  } |  j    } x |  j   d k r |  j   xX t d  D]J } |  j |  d k r> t d | | d |  j |  |  j      q> q> W| j t |  j d  d   |  j d  q Wy t |  j	 d  } WnD t
 k
 r} z$ t d | | t |  |   WYd  d  } ~ Xn 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=   rg   r   r   ra   r   rx   bytesdecodeUnicodeDecodeErrorstr)r   r   ri   Zcodesr   r   r   excr	   r	   r
   r   w  s     
#2zScanner.scan_uri_escapesc             C   si   |  j    } | d k rK |  j d  d k r= |  j d  n
 |  j   d S| d k re |  j   | Sd S)Nu   
r   z
r   u     r   )r=   rx   rg   )r   rZ   r	   r	   r
   r{     s    	

zScanner.scan_line_breakN)Lr   r   r   r   r$   r%   r'   r   r    r)   r(   r`   r^   r<   rb   r   r>   r@   rB   rD   re   rE   rF   rk   rG   rH   rl   rI   rK   rM   rO   rP   rQ   rR   rS   rT   rs   rU   rV   ru   rX   r?   rA   rC   rJ   rL   rN   rW   r;   rd   r}   r~   r   r   r   r   r   rp   rq   rt   r   r   r   r   rv   r   r   r   r   r   rw   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
   
