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   