î
kÐR\—c  ã               @   sg   d  d g Z  d d l m Z d d l Td d l Td d l TGd d „  d e ƒ Z Gd d  „  d  ƒ Z d S)ÚParserÚParserErroré   )ÚMarkedYAMLError)Ú*c               @   s   e  Z d  Z d S)r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú@/var/www/dbchiro/venv/lib/python3.4/site-packages/yaml/parser.pyr   E   s   c               @   s¤  e  Z d  Z i d d 6d d 6Z 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  d! d" „ Z d# d$ „  Z d% d& „  Z d' d( „  Z d) d* „  Z d+ d, „  Z d- d. „  Z d/ d0 „  Z d  d1 d2 „ Z d3 d4 „  Z d5 d6 „  Z d7 d8 „  Z d9 d: „  Z d  d; d< „ Z d= d> „  Z  d? d@ „  Z! dA dB „  Z" dC S)Dr   ú!ztag:yaml.org,2002:z!!c             C   s=   d  |  _  d  |  _ i  |  _ g  |  _ g  |  _ |  j |  _ d  S)N)Úcurrent_eventÚyaml_versionÚtag_handlesÚstatesÚmarksÚparse_stream_startÚstate)Úselfr	   r	   r
   Ú__init__Q   s    					zParser.__init__c             C   s   g  |  _  d  |  _ d  S)N)r   r   )r   r	   r	   r
   ÚdisposeY   s    	zParser.disposec             G   st   |  j  d  k r- |  j r- |  j ƒ  |  _  q- n  |  j  d  k	 rp | sF d Sx' | D] } t |  j  | ƒ rM d SqM Wn  d S)NTF)r   r   Ú
isinstance)r   ÚchoicesÚchoicer	   r	   r
   Úcheck_event^   s    	zParser.check_eventc             C   s4   |  j  d  k r- |  j r- |  j ƒ  |  _  q- n  |  j  S)N)r   r   )r   r	   r	   r
   Ú
peek_eventk   s    	zParser.peek_eventc             C   sC   |  j  d  k r- |  j r- |  j ƒ  |  _  q- n  |  j  } d  |  _  | S)N)r   r   )r   Úvaluer	   r	   r
   Ú	get_eventr   s    			zParser.get_eventc             C   s:   |  j  ƒ  } t | j | j d | j ƒ} |  j |  _ | S)NÚencoding)Ú	get_tokenZStreamStartEventÚ
start_markÚend_markr   Úparse_implicit_document_startr   )r   ÚtokenÚeventr	   r	   r
   r      s
    zParser.parse_stream_startc             C   s€   |  j  t t t ƒ sr |  j |  _ |  j ƒ  } | j } } t | | d d ƒ} |  j	 j
 |  j ƒ |  j |  _ | S|  j ƒ  Sd  S)NÚexplicitF)Úcheck_tokenÚDirectiveTokenÚDocumentStartTokenÚStreamEndTokenÚDEFAULT_TAGSr   Ú
peek_tokenr   ÚDocumentStartEventr   ÚappendÚparse_document_endÚparse_block_noder   Úparse_document_start)r   r"   r   r    r#   r	   r	   r
   r!   ‹   s    		z$Parser.parse_implicit_document_startc          	   C   s9  x |  j  t ƒ r |  j ƒ  q W|  j  t ƒ së |  j ƒ  } | j } |  j ƒ  \ } } |  j  t ƒ s“ t d  d  d |  j ƒ  j	 |  j ƒ  j ƒ ‚ n  |  j ƒ  } | j
 } t | | d d d | d | ƒ} |  j j |  j ƒ |  j |  _ nJ |  j ƒ  } t | j | j
 ƒ } |  j st ‚ |  j s,t ‚ d  |  _ | S)Nz)expected '<document start>', but found %rr$   TÚversionÚtags)r%   ÚDocumentEndTokenr   r(   r*   r   Úprocess_directivesr'   r   Úidr    r+   r   r,   r-   Úparse_document_contentr   ZStreamEndEventÚAssertionErrorr   )r   r"   r   r0   r1   r    r#   r	   r	   r
   r/   Ÿ   s.    				zParser.parse_document_startc             C   sq   |  j  ƒ  } | j } } d } |  j t ƒ rL |  j ƒ  } | j } d } n  t | | d | ƒ} |  j |  _ | S)NFTr$   )	r*   r   r%   r2   r   r    ZDocumentEndEventr/   r   )r   r"   r   r    r$   r#   r	   r	   r
   r-   ¾   s    			zParser.parse_document_endc             C   sT   |  j  t t t t ƒ rF |  j |  j ƒ  j ƒ } |  j j	 ƒ  |  _
 | S|  j ƒ  Sd  S)N)r%   r&   r'   r2   r(   Úprocess_empty_scalarr*   r   r   Úpopr   r.   )r   r#   r	   r	   r
   r5   Ð   s    	zParser.parse_document_contentc             C   s  d  |  _  i  |  _ xù |  j t ƒ r|  j ƒ  } | j d k r® |  j  d  k	 ri t d  d  d | j ƒ ‚ n  | j \ } } | d k rŸ t d  d  d | j ƒ ‚ n  | j |  _  q | j d k r | j \ } } | |  j k rú t d  d  d | | j ƒ ‚ n  | |  j | <q q W|  j r2|  j  |  j j	 ƒ  f } n |  j  d  f } x7 |  j
 D], } | |  j k rK|  j
 | |  j | <qKqKW| S)NZYAMLzfound duplicate YAML directiver   z:found incompatible YAML document (version 1.* is required)ZTAGzduplicate tag handle %r)r   r   r%   r&   r   Únamer   r   r   Úcopyr)   )r   r"   ÚmajorÚminorÚhandleÚprefixr   Úkeyr	   r	   r
   r3   Ù   s8    						zParser.process_directivesc             C   s   |  j  d d ƒ S)NÚblockT)Ú
parse_node)r   r	   r	   r
   r.     s    zParser.parse_block_nodec             C   s
   |  j  ƒ  S)N)rA   )r   r	   r	   r
   Úparse_flow_node  s    zParser.parse_flow_nodec             C   s   |  j  d d d d ƒ S)Nr@   TÚindentless_sequence)rA   )r   r	   r	   r
   Ú'parse_block_node_or_indentless_sequence  s    z.Parser.parse_block_node_or_indentless_sequenceFc          	   C   s®  |  j  t ƒ rK |  j ƒ  } t | j | j | j ƒ } |  j j ƒ  |  _	 n_d  } d  } d  } } }	 |  j  t
 ƒ r× |  j ƒ  } | j } | j } | j } |  j  t ƒ rD|  j ƒ  } | j }	 | j } | j } qDnm |  j  t ƒ rD|  j ƒ  } | j } }	 | j } | j } |  j  t
 ƒ rD|  j ƒ  } | j } | j } qDn  | d  k	 r°| \ }
 } |
 d  k	 r§|
 |  j k r“t d | d |
 |	 ƒ ‚ n  |  j |
 | } q°| } n  | d  k rÒ|  j ƒ  j } } n  d  } | d  k pí| d k } | r;|  j  t ƒ r;|  j ƒ  j } t | | | | | ƒ } |  j |  _	 no|  j  t ƒ rà|  j ƒ  } | j } | j rt| d  k s€| d k r‰d } n | d  k ržd } n d } t | | | | j | | d | j ƒ} |  j j ƒ  |  _	 nÊ|  j  t ƒ r+|  j ƒ  j } t | | | | | d d ƒ} |  j |  _	 n|  j  t ƒ rv|  j ƒ  j } t | | | | | d d ƒ} |  j |  _	 n4| rÇ|  j  t ƒ rÇ|  j ƒ  j } t | | | | | d d ƒ} |  j |  _	 nã | r|  j  t ƒ r|  j ƒ  j } t | | | | | d d ƒ} |  j |  _	 n’ | d  k	 s0| d  k	 rft | | | d f d | | ƒ } |  j j ƒ  |  _	 nD | rud	 } n d
 } |  j ƒ  } t d | | d | j | j ƒ ‚ | S)Nzwhile parsing a nodezfound undefined tag handle %rr   TFÚstyleÚ
flow_styleÚ r@   Zflowzwhile parsing a %s nodez'expected the node content, but found %r)TF)FT)FF) r%   Z
AliasTokenr   Z
AliasEventr   r   r    r   r8   r   ZAnchorTokenZTagTokenr   r   r*   ÚBlockEntryTokenZSequenceStartEventÚparse_indentless_sequence_entryZScalarTokenÚplainÚScalarEventrE   ZFlowSequenceStartTokenÚparse_flow_sequence_first_entryZFlowMappingStartTokenÚMappingStartEventÚparse_flow_mapping_first_keyZBlockSequenceStartTokenÚ parse_block_sequence_first_entryZBlockMappingStartTokenÚparse_block_mapping_first_keyr4   )r   r@   rC   r"   r#   ÚanchorÚtagr   r    Ztag_markr=   ÚsuffixZimplicitÚnoder	   r	   r
   rA     s®    											!			
zParser.parse_nodec             C   s)   |  j  ƒ  } |  j j | j ƒ |  j ƒ  S)N)r   r   r,   r   Úparse_block_sequence_entry)r   r"   r	   r	   r
   rO   x  s    z'Parser.parse_block_sequence_first_entryc             C   sñ   |  j  t ƒ ri |  j ƒ  } |  j  t t ƒ sJ |  j j |  j ƒ |  j ƒ  S|  j |  _ |  j	 | j
 ƒ Sn  |  j  t ƒ s­ |  j ƒ  } t d |  j d d | j | j ƒ ‚ n  |  j ƒ  } t | j | j
 ƒ } |  j j ƒ  |  _ |  j j ƒ  | S)Nz while parsing a block collectionr   z"expected <block end>, but found %réÿÿÿÿ)r%   rH   r   ÚBlockEndTokenr   r,   rU   r.   r   r7   r    r*   r   r   r4   r   ÚSequenceEndEventr8   )r   r"   r#   r	   r	   r
   rU   }  s     
z!Parser.parse_block_sequence_entryc             C   s¦   |  j  t ƒ ro |  j ƒ  } |  j  t t t t ƒ sP |  j j |  j ƒ |  j	 ƒ  S|  j |  _
 |  j | j ƒ Sn  |  j ƒ  } t | j | j ƒ } |  j j ƒ  |  _
 | S)N)r%   rH   r   ÚKeyTokenÚ
ValueTokenrW   r   r,   rI   r.   r   r7   r    r*   rX   r   r8   )r   r"   r#   r	   r	   r
   rI   ’  s    	
z&Parser.parse_indentless_sequence_entryc             C   s)   |  j  ƒ  } |  j j | j ƒ |  j ƒ  S)N)r   r   r,   r   Úparse_block_mapping_key)r   r"   r	   r	   r
   rP   ¦  s    z$Parser.parse_block_mapping_first_keyc             C   sô   |  j  t ƒ rl |  j ƒ  } |  j  t t t ƒ sM |  j j |  j ƒ |  j ƒ  S|  j |  _	 |  j
 | j ƒ Sn  |  j  t ƒ s° |  j ƒ  } t d |  j d d | j | j ƒ ‚ n  |  j ƒ  } t | j | j ƒ } |  j j ƒ  |  _	 |  j j ƒ  | S)Nzwhile parsing a block mappingr   z"expected <block end>, but found %rrV   )r%   rY   r   rZ   rW   r   r,   Úparse_block_mapping_valuerD   r   r7   r    r*   r   r   r4   r   ÚMappingEndEventr8   )r   r"   r#   r	   r	   r
   r[   «  s     
zParser.parse_block_mapping_keyc             C   s˜   |  j  t ƒ rl |  j ƒ  } |  j  t t t ƒ sM |  j j |  j ƒ |  j ƒ  S|  j |  _	 |  j
 | j ƒ Sn( |  j |  _	 |  j ƒ  } |  j
 | j ƒ Sd  S)N)r%   rZ   r   rY   rW   r   r,   r[   rD   r   r7   r    r*   r   )r   r"   r	   r	   r
   r\   ¾  s    
z Parser.parse_block_mapping_valuec             C   s/   |  j  ƒ  } |  j j | j ƒ |  j d d ƒ S)NÚfirstT)r   r   r,   r   Úparse_flow_sequence_entry)r   r"   r	   r	   r
   rL   ×  s    z&Parser.parse_flow_sequence_first_entryc             C   s(  |  j  t ƒ sä | sf |  j  t ƒ r1 |  j ƒ  qf |  j ƒ  } t d |  j d d | j | j ƒ ‚ n  |  j  t	 ƒ rµ |  j ƒ  } t
 d  d  d | j | j d d ƒ} |  j |  _ | S|  j  t ƒ sä |  j j |  j ƒ |  j ƒ  Sn  |  j ƒ  } t | j | j ƒ } |  j j ƒ  |  _ |  j j ƒ  | S)Nzwhile parsing a flow sequencer   zexpected ',' or ']', but got %rTrF   rV   )r%   ÚFlowSequenceEndTokenÚFlowEntryTokenr   r*   r   r   r4   r   rY   rM   r    Ú%parse_flow_sequence_entry_mapping_keyr   r   r,   r_   rB   rX   r8   )r   r^   r"   r#   r	   r	   r
   r_   Ü  s,    	z Parser.parse_flow_sequence_entryc             C   s^   |  j  ƒ  } |  j t t t ƒ s> |  j j |  j ƒ |  j ƒ  S|  j |  _	 |  j
 | j ƒ Sd  S)N)r   r%   rZ   ra   r`   r   r,   Ú'parse_flow_sequence_entry_mapping_valuerB   r   r7   r    )r   r"   r	   r	   r
   rb   ö  s    	
z,Parser.parse_flow_sequence_entry_mapping_keyc             C   s•   |  j  t ƒ ri |  j ƒ  } |  j  t t ƒ sJ |  j j |  j ƒ |  j ƒ  S|  j |  _	 |  j
 | j ƒ Sn( |  j |  _	 |  j ƒ  } |  j
 | j ƒ Sd  S)N)r%   rZ   r   ra   r`   r   r,   Ú%parse_flow_sequence_entry_mapping_endrB   r   r7   r    r*   r   )r   r"   r	   r	   r
   rc      s    
z.Parser.parse_flow_sequence_entry_mapping_valuec             C   s+   |  j  |  _ |  j ƒ  } t | j | j ƒ S)N)r_   r   r*   r]   r   )r   r"   r	   r	   r
   rd     s    z,Parser.parse_flow_sequence_entry_mapping_endc             C   s/   |  j  ƒ  } |  j j | j ƒ |  j d d ƒ S)Nr^   T)r   r   r,   r   Úparse_flow_mapping_key)r   r"   r	   r	   r
   rN     s    z#Parser.parse_flow_mapping_first_keyc             C   sE  |  j  t ƒ s| sf |  j  t ƒ r1 |  j ƒ  qf |  j ƒ  } t d |  j d d | j | j ƒ ‚ n  |  j  t	 ƒ rÒ |  j ƒ  } |  j  t
 t t ƒ s³ |  j j |  j ƒ |  j ƒ  S|  j |  _ |  j | j ƒ Sq|  j  t ƒ s|  j j |  j ƒ |  j ƒ  Sn  |  j ƒ  } t | j | j ƒ } |  j j ƒ  |  _ |  j j ƒ  | S)Nzwhile parsing a flow mappingr   zexpected ',' or '}', but got %rrV   )r%   ÚFlowMappingEndTokenra   r   r*   r   r   r4   r   rY   rZ   r   r,   Úparse_flow_mapping_valuerB   r   r7   r    Úparse_flow_mapping_empty_valuer]   r8   )r   r^   r"   r#   r	   r	   r
   re     s.    	
zParser.parse_flow_mapping_keyc             C   s•   |  j  t ƒ ri |  j ƒ  } |  j  t t ƒ sJ |  j j |  j ƒ |  j ƒ  S|  j |  _	 |  j
 | j ƒ Sn( |  j |  _	 |  j ƒ  } |  j
 | j ƒ Sd  S)N)r%   rZ   r   ra   rf   r   r,   re   rB   r   r7   r    r*   r   )r   r"   r	   r	   r
   rg   9  s    
zParser.parse_flow_mapping_valuec             C   s"   |  j  |  _ |  j |  j ƒ  j ƒ S)N)re   r   r7   r*   r   )r   r	   r	   r
   rh   G  s    z%Parser.parse_flow_mapping_empty_valuec             C   s   t  d  d  d d | | ƒ S)NTFrG   )TF)rK   )r   Úmarkr	   r	   r
   r7   K  s    zParser.process_empty_scalarN)#r   r   r   r)   r   r   r   r   r   r   r!   r/   r-   r5   r3   r.   rB   rD   rA   rO   rU   rI   rP   r[   r\   rL   r_   rb   rc   rd   rN   re   rg   rh   r7   r	   r	   r	   r
   r   H   sD   
	/g
N)Ú__all__Úerrorr   ÚtokensÚeventsÚscannerr   r   r	   r	   r	   r
   Ú<module>>   s   


