3
QfXE                 @   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 )
SerializerSerializerError   )	YAMLError)*c               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r	   r	   X/home/psgendb/BIRCHDEV/pkg/SPAdes-3.15.4/linux-x86_64/share/spades/pyyaml3/serializer.pyr      s   c               @   sJ   e Zd ZdZdddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )r   zid%03dNc             C   s:   || _ || _|| _|| _|| _i | _i | _d| _d | _d S )N    )	use_encodinguse_explicit_startuse_explicit_enduse_versionuse_tagsserialized_nodesanchorslast_anchor_idclosed)selfencodingexplicit_startexplicit_endversiontagsr	   r	   r
   __init__   s    zSerializer.__init__c             C   s@   | j d kr$| jt| jd d| _ n| j r4tdntdd S )N)r   Fzserializer is closedzserializer is already opened)r   emitStreamStartEventr   r   )r   r	   r	   r
   open   s    

zSerializer.openc             C   s0   | j d krtdn| j s,| jt  d| _ d S )Nzserializer is not openedT)r   r   r   StreamEndEvent)r   r	   r	   r
   close$   s
    

zSerializer.closec             C   s|   | j d krtdn| j r"td| jt| j| j| jd | j| | j|d d  | jt	| j
d i | _i | _d| _d S )Nzserializer is not openedzserializer is closed)explicitr   r   )r!   r   )r   r   r   DocumentStartEventr   r   r   anchor_nodeserialize_nodeDocumentEndEventr   r   r   r   )r   noder	   r	   r
   	serialize.   s    



zSerializer.serializec             C   s   || j kr*| j | d kr| j|| j |< nbd | j |< t|trZxL|jD ]}| j| qFW n2t|trx&|jD ]\}}| j| | j| qlW d S )N)r   generate_anchor
isinstanceSequenceNodevaluer#   MappingNode)r   r&   itemkeyr+   r	   r	   r
   r#   <   s    




zSerializer.anchor_nodec             C   s   |  j d7  _ | j| j  S )Nr   )r   ANCHOR_TEMPLATE)r   r&   r	   r	   r
   r(   J   s    zSerializer.generate_anchorc             C   s  | j | }|| jkr&| jt| njd| j|< | j|| t|tr| jt|jd}| jt|jd}|j	|k|j	|kf}| jt
||j	||j|jd nt|tr|j	| jt|jdk}| jt||j	||jd d}x$|jD ]}| j||| |d7 }qW | jt  nzt|tr|j	| jt|jdk}| jt||j	||jd x0|jD ]&\}	}
| j|	|d  | j|
||	 qRW | jt  | j  d S )	NTF)style)
flow_styler   r   )TF)FT)r   r   r   
AliasEventdescend_resolverr)   
ScalarNoderesolver+   tagScalarEventr0   r*   SequenceStartEventr1   r$   SequenceEndEventr,   MappingStartEventMappingEndEventascend_resolver)r   r&   parentindexaliasZdetected_tagZdefault_tagimplicitr-   r.   r+   r	   r	   r
   r$   N   s>    



zSerializer.serialize_node)NNNNN)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
   