U
    Æ½„bÃ   ã                   @   s’   d dl Z d dlmZmZ d dlmZmZ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ƒZdS )
é    N)ÚMarkedYAMLErrorÚReusedAnchorWarning)Ú_FÚnprintÚnprintf)Ú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   ú8/tmp/pip-unpacked-wheel-ctuyz3qg/ruamel/yaml/composer.pyr      s   c                   @   s~   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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   ÚparserÚ_parser©r   r   r   r   r"   &   s    zComposer.parserc                 C   s   t | jdƒr| jj | jjS r   )r!   r   ÚresolverZ	_resolverr$   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_node5   s    
zComposer.check_nodec                 C   s   | j  t¡s|  ¡ S d S r&   )r"   r'   r   Úcompose_documentr$   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   ÚdocumentÚeventr   r   r   Úget_single_nodeD   s    

ü
zComposer.get_single_nodec                 C   s*   | j  ¡  |  d d ¡}| j  ¡  i | _|S r&   )r"   r(   Úcompose_noder   )r   Únoder   r   r   r*   ]   s
    

zComposer.compose_documentc                 C   s   |S r&   r   )r   Úar   r   r   Úreturn_aliask   s    zComposer.return_aliasc                 C   sö   | j  t¡rN| j  ¡ }|j}|| jkr>td d td|d|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 {alias!r})ÚaliaszE
found duplicate anchor {!r}
first occurrence {}
second occurrence {})r"   r'   r   r(   Úanchorr   r   r   r,   r3   Z
peek_eventÚformatÚwarningsÚwarnr   r%   Zdescend_resolverr   Úcompose_scalar_noder   Úcompose_sequence_noder	   Úcompose_mapping_nodeZascend_resolver)r   ÚparentÚindexr.   r4   r5   Úwsr1   r   r   r   r0   o   s>    


ü

 
 ÿÿ

zComposer.compose_nodec              	   C   sj   | j  ¡ }|j}|d ks |dkr4| j t|j|j¡}t||j|j|j	|j
|j|d}|d k	rf|| j|< |S )Nú!)ÚstyleÚcommentr5   )r"   r(   Útagr%   Úresolver   ÚvalueÚimplicitr,   Úend_markr@   rA   r   )r   r5   r.   rB   r1   r   r   r   r9   “   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}| j  t¡sŽ|j |  ||¡¡ |d7 }qd| j  ¡ }|jdkrÎ|j	d k	rÎ|j	d k	rÆtd |j¡ƒ |j	|_	|j|_|  ||¡ |S )Nr?   ©Ú
flow_stylerA   r5   r   é   Tz:Warning: unexpected end_event commment in sequence node {})r"   r(   rB   r%   rC   r   rE   r,   rH   rA   r   r'   r   rD   Úappendr0   r   r6   rF   Úcheck_end_doc_comment)r   r5   Ústart_eventrB   r1   r=   Ú	end_eventr   r   r   r:   ¦   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
|< | j  t¡s–|  |d ¡}|  ||¡}|j ||f¡ q`| j  ¡ }|jdkr¼|j	d k	r¼|j	|_	|j|_|  ||¡ |S )Nr?   rG   T)r"   r(   rB   r%   rC   r   rE   r,   rH   rA   r   r'   r
   r0   rD   rJ   rF   rK   )r   r5   rL   rB   r1   Zitem_keyZ
item_valuerM   r   r   r   r;   Ç   s2    
ù	

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 )NrI   )rA   Ú
isinstancer   ÚAssertionErrorrJ   )r   rM   r1   r   r   r   rK   é   s    

zComposer.check_end_doc_comment)N)r   r   r   r   Úpropertyr"   r%   r)   r+   r/   r*   r3   r0   r9   r:   r;   rK   r   r   r   r   r      s   


	$!")r7   Zruamel.yaml.errorr   r   Zruamel.yaml.compatr   r   r   Zruamel.yaml.eventsr   r   r	   r
   r   r   r   r   Zruamel.yaml.nodesr   r   r   ÚAnyÚDictÚOptionalÚListÚ__all__r   r   r   r   r   r   Ú<module>   s   (
