o
    `E                     @   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	   1/usr/lib/python3/dist-packages/yaml/serializer.pyr      s    c                   @   sN   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encodingZexplicit_startZexplicit_endversiontagsr	   r	   r
   __init__   s   
zSerializer.__init__c                 C   s<   | j d u r| t| jd d| _ d S | j rtdtd)N)r   Fserializer is closedzserializer is already opened)r   emitZStreamStartEventr   r   r   r	   r	   r
   open   s   

zSerializer.openc                 C   s2   | j d u r	td| j s| t  d| _ d S d S )Nserializer is not openedT)r   r   r   ZStreamEndEventr   r	   r	   r
   close$   s   

zSerializer.closec                 C   sz   | j d u r	td| j rtd| t| j| j| jd | | | |d d  | t	| j
d i | _i | _d| _d S )Nr   r   )explicitr   r   )r    r   )r   r   r   ZDocumentStartEventr   r   r   anchor_nodeserialize_nodeZDocumentEndEventr   r   r   r   r   noder	   r	   r
   	serialize.   s   



zSerializer.serializec                 C   s   || j v r| j | d u r| || j |< d S d S d | j |< t|tr/|jD ]}| | q%d S t|trF|jD ]\}}| | | | q7d S 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_TEMPLATEr#   r	   r	   r
   r&   J   s   zSerializer.generate_anchorc              	   C   s  | j | }|| jv r| t| d S d| j|< | || t|trM| t|jd}| t|jd}|j	|k|j	|kf}| t
||j	||j|jd npt|tr|j	| t|jdk}| t||j	||jd d}|jD ]}| ||| |d7 }qo| t  n9t|tr|j	| t|jdk}| t||j	||jd |jD ]\}	}
| |	|d  | |
||	 q| t  |   d S )NT)TF)FT)style)
flow_styler   r   )r   r   r   Z
AliasEventZdescend_resolverr'   Z
ScalarNodeZresolver)   tagZScalarEventr.   r(   ZSequenceStartEventr/   r"   ZSequenceEndEventr*   ZMappingStartEventZMappingEndEventZascend_resolver)r   r$   parentindexaliasZdetected_tagZdefault_tagZimplicitr+   r,   r)   r	   r	   r
   r"   N   sH   








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   ZeventsZnodesr   r   r	   r	   r	   r
   <module>   s   