U
    ïûeI   ã                   @   s¤   d dl mZmZ 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eƒZdS )é    )Úabsolute_importÚprint_functionN)ÚMarkedYAMLErrorÚReusedAnchorWarning)Úutf8Ú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   ú3lib/python3.8/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 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_node7   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   ZdocumentÚeventr   r   r   Úget_single_nodeF   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ð   | 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.   Úaliasr2   Zwsr1   r   r   r   r0   m   s>    

  
 ÿ


 
 ÿÿ

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_markr=   r>   r   )r   r2   r.   r?   r1   r   r   r   r6   Ž   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_styler>   r2   r   é   Tz:Warning: unexpected end_event commment in sequence node {})r$   r)   r?   r&   r@   r   rB   r-   rE   r>   r   r(   r   rA   Úappendr0   r   r3   rC   Úcheck_end_doc_comment)r   r2   Ústart_eventr?   r1   r:   Ú	end_eventr   r   r   r7       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<   rD   T)r$   r)   r?   r&   r@   r   rB   r-   rE   r>   r   r(   r   r0   rA   rG   rC   rH   )r   r2   rI   r?   r1   Zitem_keyZ
item_valuerJ   r   r   r   r8   Á   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 )NrF   )r>   Ú
isinstancer   ÚAssertionErrorrG   )r   rJ   r1   r   r   r   rH   ã   s    

zComposer.check_end_doc_comment)N)r   r   r   r    Úpropertyr$   r&   r*   r,   r/   r+   r0   r6   r7   r8   rH   r   r   r   r   r       s   


	!!") Z
__future__r   r   r4   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   ZAnyZDictZOptionalZListÚ__all__r   Úobjectr   r   r   r   r   Ú<module>   s   (
