B
    |?_[ó  ã               @   s¤   d dl mZ d dl mZ d dlZd dlmZmZ d dlmZ d dl	m
Z
mZmZmZmZmZmZmZ d dlmZmZmZ dd	gZG d
d	„ d	eƒZG dd„ deƒZdS )é    )Úabsolute_import)Úprint_functionN)ÚMarkedYAMLErrorÚReusedAnchorWarning)Úutf8)ÚStreamStartEventÚStreamEndEventÚMappingStartEventÚMappingEndEventÚSequenceStartEventÚSequenceEndEventÚ
AliasEventÚScalarEvent)ÚMappingNodeÚ
ScalarNodeÚSequenceNodeÚComposerÚComposerErrorc               @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú3lib/python3.7/site-packages/ruamel_yaml/composer.pyr      s   c               @   sv   e Zd Zddd„Zedd„ ƒZe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S )r   Nc             C   s4   || _ | j d k	r*t| j dd ƒd kr*| | j _i | _d S )NÚ	_composer)ÚloaderÚgetattrr   Úanchors)Úselfr   r   r   r   Ú__init__   s    zComposer.__init__c             C   s   t | jdƒr| jj | jjS )NÚtyp)Úhasattrr   ÚparserZ_parser)r   r   r   r   r!   %   s    zComposer.parserc             C   s   t | jdƒr| jj | jjS )Nr   )r    r   ÚresolverZ	_resolver)r   r   r   r   r"   ,   s    zComposer.resolverc             C   s$   | j  t¡r| j  ¡  | j  t¡ S )N)r!   Úcheck_eventr   Ú	get_eventr   )r   r   r   r   Ú
check_node4   s    
zComposer.check_nodec             C   s   | j  t¡s|  ¡ S d S )N)r!   r#   r   Úcompose_document)r   r   r   r   Úget_node=   s    zComposer.get_nodec             C   sX   | j  ¡  d }| j  t¡s"|  ¡ }| j  t¡sJ| j  ¡ }td|jd|jƒ‚| j  ¡  |S )Nz(expected a single document in the streamzbut found another document)r!   r$   r#   r   r&   r   Ú
start_mark)r   ZdocumentÚeventr   r   r   Úget_single_nodeC   s    


zComposer.get_single_nodec             C   s*   | j  ¡  |  d d ¡}| j  ¡  i | _|S )N)r!   r$   Úcompose_noder   )r   Únoder   r   r   r&   Z   s
    

zComposer.compose_documentc             C   sð   | j  t¡rH| j  ¡ }|j}|| jkr>td d dt|ƒ |jƒ‚| j| S | j  	¡ }|j}|d k	rŽ|| jkrŽd 
|| j| j|j¡}t |t¡ | j ||¡ | j  t¡r´|  |¡}n.| j  t¡rÌ|  |¡}n| j  t¡râ|  |¡}| j ¡  |S )Nzfound undefined alias %rzE
found duplicate anchor {!r}
first occurrence {}
second occurrence {})r!   r#   r   r$   Úanchorr   r   r   r(   Z
peek_eventÚformatÚwarningsÚwarnr   r"   Zdescend_resolverr   Úcompose_scalar_noder   Úcompose_sequence_noder	   Úcompose_mapping_nodeZascend_resolver)r   ÚparentÚindexr)   Úaliasr-   Zwsr,   r   r   r   r+   h   s0    






zComposer.compose_nodec             C   sh   | j  ¡ }|j}|d ks |dkr4| j t|j|j¡}t||j|j|j	|j
|jd}|d k	rd|| j|< |S )Nú!)ÚstyleÚcomment)r!   r$   Útagr"   Úresolver   ÚvalueÚimplicitr(   Úend_markr8   r9   r   )r   r-   r)   r:   r,   r   r   r   r1   ˆ   s    


zComposer.compose_scalar_nodec          	   C   sê   | j  ¡ }|j}|d ks |dkr2| j td |j¡}t|g |jd |j|j	|d}|d k	r`|| j
|< d}x,| j  t¡s|j |  ||¡¡ |d7 }qfW | j  ¡ }|jdkrÒ|j	d k	rÒ|j	d k	rÊtd |j¡ƒ |j	|_	|j|_|  ||¡ |S )Nr7   )Ú
flow_styler9   r-   r   é   Tz:Warning: unexpected end_event commment in sequence node {})r!   r$   r:   r"   r;   r   r=   r(   r?   r9   r   r#   r   r<   Úappendr+   Úprintr.   r>   Úcheck_end_doc_comment)r   r-   Ústart_eventr:   r,   r5   Ú	end_eventr   r   r   r2   •   s.    




zComposer.compose_sequence_nodec          	   C   sØ   | j  ¡ }|j}|d ks |dkr2| j td |j¡}t|g |jd |j|j	|d}|d k	r`|| j
|< x8| j  t¡s˜|  |d ¡}|  ||¡}|j ||f¡ qbW | j  ¡ }|jdkrÀ|j	d k	rÀ|j	|_	|j|_|  ||¡ |S )Nr7   )r?   r9   r-   T)r!   r$   r:   r"   r;   r   r=   r(   r?   r9   r   r#   r
   r+   r<   rA   r>   rC   )r   r-   rD   r:   r,   Zitem_keyZ
item_valuerE   r   r   r   r3   ¯   s(    


zComposer.compose_mapping_nodec             C   sR   |j rN|j d rN|j d kr$d d g|_ t|tƒr2t‚|j  |j d ¡ d |j d< d S )Nr@   )r9   Ú
isinstancer   ÚAssertionErrorrA   )r   rE   r,   r   r   r   rC   Ì   s    

zComposer.check_end_doc_comment)N)r   r   r   r   Úpropertyr!   r"   r%   r'   r*   r&   r+   r1   r2   r3   rC   r   r   r   r   r      s   
	 )Z
__future__r   r   r/   Zruamel_yaml.errorr   r   Zruamel_yaml.compatr   Zruamel_yaml.eventsr   r   r	   r
   r   r   r   r   Zruamel_yaml.nodesr   r   r   Ú__all__r   Úobjectr   r   r   r   r   Ú<module>   s   (