o
    QŽfX  ã                   @   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	   úd/oak/stanford/groups/akundaje/marinovg/programs/SPAdes-3.15.4-Linux/share/spades/pyyaml3/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_eventÚ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 occurencezsecond occurence)r   Ú
AliasEventr   Úanchorr   r   r   Ú
peek_eventZdescend_resolverÚScalarEventÚcompose_scalar_nodeÚSequenceStartEventÚcompose_sequence_nodeÚ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ÚresolveÚ
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*   ÚSequenceNoder-   r   r0   r   r   Ú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*   ÚMappingNoder-   r   r0   r   r   ÚMappingEndEventr   r,   r4   r.   )r   r   r5   r)   r   Zitem_keyÚ
item_valuer6   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   ÚeventsÚnodesr   r   r	   r	   r	   r
   Ú<module>   s   