a
    å“r^—c  ã                   @   sN   d dgZ ddlmZ ddlT ddlT ddlT G dd„ deƒZG dd „ d ƒZdS )ÚParserÚParserErroré   )ÚMarkedYAMLError)Ú*c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú-/usr/lib/python3/dist-packages/yaml/parser.pyr   E   s   c                   @   s  e Zd Zd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dDd!d"„Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ ZdEd1d2„Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ ZdFd;d<„Zd=d>„ Z d?d@„ Z!dAdB„ Z"dCS )Gr   ú!ztag:yaml.org,2002:)r   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 r   )r   r   r   r	   r	   r
   ÚdisposeY   s    zParser.disposec                 G   sL   | j d u r| jr|  ¡ | _ | j d urH|s,dS |D ]}t| j |ƒr0 dS q0dS )NTF)r   r   Ú
isinstance)r   ÚchoicesZchoicer	   r	   r
   Úcheck_event^   s    


zParser.check_eventc                 C   s    | j d u r| jr|  ¡ | _ | j S r   ©r   r   r   r	   r	   r
   Ú
peek_eventk   s    

zParser.peek_eventc                 C   s*   | j d u r| jr|  ¡ | _ | j }d | _ |S r   r   )r   Úvaluer	   r	   r
   Ú	get_eventr   s    

zParser.get_eventc                 C   s(   |   ¡ }t|j|j|jd}| 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\   |   ttt¡sP| j| _|  ¡ }|j }}t||dd}| j	 
| j¡ | j| _|S |  ¡ S d S )NF©Úexplicit)Ú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   sÌ   |   t¡r|  ¡  q |   t¡s˜|  ¡ }|j}|  ¡ \}}|   t¡s`td d d|  ¡ j	 |  ¡ jƒ‚|  ¡ }|j
}t||d||d}| j | j¡ | j| _n0|  ¡ }t|j|j
ƒ}| jr¸J ‚| jrÂJ ‚d | _|S )Nz)expected '<document start>', but found %rT)r(   ÚversionÚtags)r)   ÚDocumentEndTokenr    r,   r.   r!   Úprocess_directivesr+   r   Úidr"   r/   r   r0   r1   Úparse_document_contentr   ZStreamEndEventr   )r   r%   r!   r4   r5   r"   r&   r	   r	   r
   r3   Ÿ   s4    



ÿýÿ


zParser.parse_document_startc                 C   sL   |   ¡ }|j }}d}|  t¡r2|  ¡ }|j}d}t|||d}| j| _|S )NFTr'   )	r.   r!   r)   r6   r    r"   ZDocumentEndEventr3   r   )r   r%   r!   r"   r(   r&   r	   r	   r
   r1   ¾   s    

ÿzParser.parse_document_endc                 C   s<   |   tttt¡r0|  |  ¡ j¡}| j 	¡ | _
|S |  ¡ S d S r   )r)   r*   r+   r6   r,   Úprocess_empty_scalarr.   r!   r   Úpopr   r2   )r   r&   r	   r	   r
   r9   Ð   s    ÿzParser.parse_document_contentc                 C   sø   d | _ i | _|  t¡r¬|  ¡ }|jdkrn| j d urBtd d d|jƒ‚|j\}}|dkrdtd d d|jƒ‚|j| _ q|jdkr|j\}}|| jv r td d d| |jƒ‚|| j|< q| jrÄ| j | j 	¡ f}n
| j d f}| j
D ]}|| jvrÔ| j
| | j|< qÔ|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
   r7   Ù   s>    


ÿ
þ



þ


zParser.process_directivesc                 C   s   | j ddS )NT)Úblock©Ú
parse_noder   r	   r	   r
   r2     s    zParser.parse_block_nodec                 C   s   |   ¡ S r   rD   r   r	   r	   r
   Úparse_flow_node  s    zParser.parse_flow_nodec                 C   s   | j dddS )NT)rC   Úindentless_sequencerD   r   r	   r	   r
   Ú'parse_block_node_or_indentless_sequence  s    z.Parser.parse_block_node_or_indentless_sequenceFc              	   C   sR  |   t¡r4|  ¡ }t|j|j|jƒ}| j ¡ | _	nd }d }d  } }}	|   t
¡r’|  ¡ }|j}|j}|j}|   t¡rØ|  ¡ }|j}	|j}|j}nF|   t¡rØ|  ¡ }|j }}	|j}|j}|   t
¡rØ|  ¡ }|j}|j}|d ur&|\}
}|
d ur"|
| jvrtd|d|
 |	ƒ‚| j|
 | }n|}|d u r>|  ¡ j }}d }|d u pR|dk}|rŒ|   t¡rŒ|  ¡ j}t|||||ƒ}| j| _	nÂ|   t¡r|  ¡ }|j}|jr¸|d u sÂ|dkrÈd}n|d u rØd}nd}t||||j|||jd}| j ¡ | _	nH|   t¡r<|  ¡ j}t|||||dd	}| j| _	n|   t¡rp|  ¡ j}t|||||dd	}| j| _	nÞ|rª|   t¡rª|  ¡ j}t|||||d
d	}| j| _	n¤|rä|   t¡rä|  ¡ j}t|||||d
d	}| j| _	nj|d usø|d urt|||d
fd||ƒ}| j ¡ | _	n2|r(d}nd}|  ¡ }td| |d|j |jƒ‚|S )Nzwhile parsing a nodezfound undefined tag handle %rr   ©TF)FT)FF)ÚstyleT©Z
flow_styleFÚ rC   Zflowzwhile parsing a %s nodez'expected the node content, but found %r) r)   Z
AliasTokenr    Z
AliasEventr   r!   r"   r   r;   r   ZAnchorTokenZTagTokenr   r   r.   ÚBlockEntryTokenZSequenceStartEventÚparse_indentless_sequence_entryZScalarTokenZplainÚScalarEventrJ   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_keyr8   )r   rC   rG   r%   r&   ZanchorÚtagr!   r"   Ztag_markr@   ÚsuffixZimplicitZnoder	   r	   r
   rE     sÀ    







þ

ÿ
ÿ
ÿ
ÿ

ÿ

ÿ
ÿ
þzParser.parse_nodec                 C   s   |   ¡ }| j |j¡ |  ¡ S r   )r    r   r0   r!   Úparse_block_sequence_entry©r   r%   r	   r	   r
   rS   x  s    z'Parser.parse_block_sequence_first_entryc                 C   s¦   |   t¡rH|  ¡ }|   tt¡s4| j | j¡ |  ¡ S | j| _|  	|j
¡S |   t¡sv|  ¡ }td| jd d|j |jƒ‚|  ¡ }t|j|j
ƒ}| j ¡ | _| j ¡  |S )Nz while parsing a block collectionéÿÿÿÿú"expected <block end>, but found %r)r)   rM   r    ÚBlockEndTokenr   r0   rW   r2   r   r:   r"   r.   r   r   r8   r!   ÚSequenceEndEventr;   r$   r	   r	   r
   rW   }  s"    

ÿ
z!Parser.parse_block_sequence_entryc                 C   sr   |   t¡rL|  ¡ }|   tttt¡s8| j | j¡ |  	¡ S | j| _
|  |j¡S |  ¡ }t|j|jƒ}| j ¡ | _
|S r   )r)   rM   r    ÚKeyTokenÚ
ValueTokenr[   r   r0   rN   r2   r   r:   r"   r.   r\   r!   r;   r$   r	   r	   r
   rN   ’  s    
ÿz&Parser.parse_indentless_sequence_entryc                 C   s   |   ¡ }| j |j¡ |  ¡ S r   )r    r   r0   r!   Úparse_block_mapping_keyrX   r	   r	   r
   rT   ¦  s    z$Parser.parse_block_mapping_first_keyc                 C   s¨   |   t¡rJ|  ¡ }|   ttt¡s6| j | j¡ |  ¡ S | j| _	|  
|j¡S |   t¡sx|  ¡ }td| jd d|j |jƒ‚|  ¡ }t|j|jƒ}| j ¡ | _	| j ¡  |S )Nzwhile parsing a block mappingrY   rZ   )r)   r]   r    r^   r[   r   r0   Úparse_block_mapping_valuerH   r   r:   r"   r.   r   r   r8   r!   ÚMappingEndEventr;   r$   r	   r	   r
   r_   «  s"    

ÿ
zParser.parse_block_mapping_keyc                 C   sl   |   t¡rL|  ¡ }|   ttt¡s6| j | j¡ |  ¡ S | j| _	|  
|j¡S n| j| _	|  ¡ }|  
|j¡S d S r   )r)   r^   r    r]   r[   r   r0   r_   rH   r   r:   r"   r.   r!   rX   r	   r	   r
   r`   ¾  s    
z Parser.parse_block_mapping_valuec                 C   s"   |   ¡ }| j |j¡ | jddS ©NT)Úfirst)r    r   r0   r!   Úparse_flow_sequence_entryrX   r	   r	   r
   rP   ×  s    z&Parser.parse_flow_sequence_first_entryc                 C   sÌ   |   t¡sœ|sF|   t¡r"|  ¡  n$|  ¡ }td| jd d|j |jƒ‚|   t	¡r||  ¡ }t
d d d|j|jdd}| j| _|S |   t¡sœ| j | j¡ |  ¡ S |  ¡ }t|j|jƒ}| j ¡ | _| j ¡  |S )Nzwhile parsing a flow sequencerY   zexpected ',' or ']', but got %rTrK   )r)   ÚFlowSequenceEndTokenÚFlowEntryTokenr    r.   r   r   r8   r!   r]   rQ   r"   Ú%parse_flow_sequence_entry_mapping_keyr   r   r0   rd   rF   r\   r;   ©r   rc   r%   r&   r	   r	   r
   rd   Ü  s0    


ÿ
þ

z Parser.parse_flow_sequence_entryc                 C   sD   |   ¡ }|  ttt¡s,| j | j¡ |  ¡ S | j| _	|  
|j¡S d S r   )r    r)   r^   rf   re   r   r0   Ú'parse_flow_sequence_entry_mapping_valuerF   r   r:   r"   rX   r	   r	   r
   rg   ö  s    ÿz,Parser.parse_flow_sequence_entry_mapping_keyc                 C   sj   |   t¡rJ|  ¡ }|   tt¡s4| j | j¡ |  ¡ S | j| _	|  
|j¡S n| j| _	|  ¡ }|  
|j¡S d S r   )r)   r^   r    rf   re   r   r0   Ú%parse_flow_sequence_entry_mapping_endrF   r   r:   r"   r.   r!   rX   r	   r	   r
   ri      s    
z.Parser.parse_flow_sequence_entry_mapping_valuec                 C   s   | j | _|  ¡ }t|j|jƒS r   )rd   r   r.   ra   r!   rX   r	   r	   r
   rj     s    z,Parser.parse_flow_sequence_entry_mapping_endc                 C   s"   |   ¡ }| j |j¡ | jddS rb   )r    r   r0   r!   Úparse_flow_mapping_keyrX   r	   r	   r
   rR     s    z#Parser.parse_flow_mapping_first_keyc                 C   sâ   |   t¡s²|sF|   t¡r"|  ¡  n$|  ¡ }td| jd d|j |jƒ‚|   t	¡r’|  ¡ }|   t
tt¡s|| j | j¡ |  ¡ S | j| _|  |j¡S n |   t¡s²| j | j¡ |  ¡ S |  ¡ }t|j|jƒ}| j ¡ | _| j ¡  |S )Nzwhile parsing a flow mappingrY   zexpected ',' or '}', but got %r)r)   ÚFlowMappingEndTokenrf   r    r.   r   r   r8   r!   r]   r^   r   r0   Úparse_flow_mapping_valuerF   r   r:   r"   Úparse_flow_mapping_empty_valuera   r;   rh   r	   r	   r
   rk     s2    


ÿ
ÿ

zParser.parse_flow_mapping_keyc                 C   sj   |   t¡rJ|  ¡ }|   tt¡s4| j | j¡ |  ¡ S | j| _	|  
|j¡S n| j| _	|  ¡ }|  
|j¡S d S r   )r)   r^   r    rf   rl   r   r0   rk   rF   r   r:   r"   r.   r!   rX   r	   r	   r
   rm   9  s    
zParser.parse_flow_mapping_valuec                 C   s   | j | _|  |  ¡ j¡S r   )rk   r   r:   r.   r!   r   r	   r	   r
   rn   G  s    z%Parser.parse_flow_mapping_empty_valuec                 C   s   t d d dd||ƒS )NrI   rL   )rO   )r   Zmarkr	   r	   r
   r:   K  s    zParser.process_empty_scalarN)FF)F)F)#r   r   r   r-   r   r   r   r   r   r   r#   r3   r1   r9   r7   r2   rF   rH   rE   rS   rW   rN   rT   r_   r`   rP   rd   rg   ri   rj   rR   rk   rm   rn   r:   r	   r	   r	   r
   r   H   sD   þ	/
g


N)Ú__all__Úerrorr   ÚtokensZeventsÚscannerr   r   r	   r	   r	   r
   Ú<module>>   s   