o
    ¬£`  ã                   @   sF   d dgZ ddlmZ ddlT ddlT G dd„ deƒZG dd „ d ƒZdS )ÚComposerÚComposerErroré   )ÚMarkedYAMLError)Ú*c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú//usr/lib/python3/dist-packages/yaml/composer.pyr      s    c                   @   sT   e Z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   c                 C   s
   i | _ d S ©N)Úanchors©Úselfr	   r	   r
   Ú__init__   s   
zComposer.__init__c                 C   s   |   t¡r	|  ¡  |   t¡ S r   )Úcheck_eventZStreamStartEventÚ	get_eventÚStreamEndEventr   r	   r	   r
   Ú
check_node   s   
zComposer.check_nodec                 C   s   |   t¡s	|  ¡ S d S r   )r   r   Úcompose_documentr   r	   r	   r
   Úget_node   s   
ÿzComposer.get_nodec                 C   sN   |   ¡  d }|  t¡s|  ¡ }|  t¡s!|   ¡ }td|jd|jƒ‚|   ¡  |S )Nz(expected a single document in the streamzbut found another document)r   r   r   r   r   Ú
start_mark)r   ZdocumentÚeventr	   r	   r
   Úget_single_node   s   

þzComposer.get_single_nodec                 C   s&   |   ¡  |  d d ¡}|   ¡  i | _|S r   )r   Úcompose_noder   )r   Únoder	   r	   r
   r   2   s
   zComposer.compose_documentc                 C   sÔ   |   t¡r |  ¡ }|j}|| jvrtd d d| |jƒ‚| j| S |  ¡ }|j}|d ur>|| jv r>td| | j| jd|jƒ‚|  ||¡ |   t	¡rO|  
|¡}n|   t¡rZ|  |¡}n
|   t¡rd|  |¡}|  ¡  |S )Nzfound undefined alias %rz+found duplicate anchor %r; first occurrencezsecond occurrence)r   Z
AliasEventr   Úanchorr   r   r   Z
peek_eventZdescend_resolverZScalarEventÚcompose_scalar_nodeZSequenceStartEventÚcompose_sequence_nodeZMappingStartEventÚcompose_mapping_nodeZascend_resolver)r   ÚparentÚindexr   r   r   r	   r	   r
   r   ?   s:   

ÿÿ

ÿ
þ



zComposer.compose_nodec                 C   s`   |   ¡ }|j}|d u s|dkr|  t|j|j¡}t||j|j|j|jd}|d ur.|| j	|< |S )Nú!)Ústyle)
r   ÚtagÚresolveZ
ScalarNodeÚvalueÚimplicitr   Úend_markr"   r   )r   r   r   r#   r   r	   r	   r
   r   X   s   ÿ
zComposer.compose_scalar_nodec                 C   sž   |   ¡ }|j}|d u s|dkr|  td |j¡}t|g |jd |jd}|d ur+|| j|< d}|  t	¡sE|j
 |  ||¡¡ |d7 }|  t	¡r2|   ¡ }|j|_|S )Nr!   ©Ú
flow_styleé    r   )r   r#   r$   ZSequenceNoder&   r   r)   r   r   ZSequenceEndEventr%   Úappendr   r'   )r   r   Ústart_eventr#   r   r    Ú	end_eventr	   r	   r
   r   c   s$   þ


þzComposer.compose_sequence_nodec                 C   s¦   |   ¡ }|j}|d u s|dkr|  td |j¡}t|g |jd |jd}|d ur+|| j|< |  t	¡sI|  
|d ¡}|  
||¡}|j ||f¡ |  t	¡r0|   ¡ }|j|_|S )Nr!   r(   )r   r#   r$   ZMappingNoder&   r   r)   r   r   ZMappingEndEventr   r%   r+   r'   )r   r   r,   r#   r   Zitem_keyZ
item_valuer-   r	   r	   r
   r   u   s$   þ


ø	zComposer.compose_mapping_nodeN)r   r   r   r   r   r   r   r   r   r   r   r   r	   r	   r	   r
   r      s    N)Ú__all__Úerrorr   ZeventsZnodesr   r   r	   r	   r	   r
   Ú<module>   s   