3
<zÃWE  ã               @   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               @   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ÚencodingZexplicit_startZ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   ÚemitZ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   Z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   ZDocumentStartEventr   r   r   Úanchor_nodeÚserialize_nodeZ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ƒrŒx&|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ƒ nît|tƒr|j	| jt|jdƒk}| jt||j	||jdƒ d}x$|jD ]}| j|||ƒ |d7 }qâW | 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   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   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   ZeventsZnodesr   r   r	   r	   r	   r
   Ú<module>   s
   