B
    |?_[+                 @   s   d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ ddgZG d	d deZG d
d deZdd ZdS )    )absolute_import)	YAMLError)nprintDBG_NODEdbgstring_types)RegExp)
StreamStartEventStreamEndEventMappingStartEventMappingEndEventSequenceStartEventSequenceEndEvent
AliasEventScalarEventDocumentStartEventDocumentEndEvent)MappingNode
ScalarNodeSequenceNode
SerializerSerializerErrorc               @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   5lib/python3.7/site-packages/ruamel_yaml/serializer.pyr      s   c               @   sj   e Zd ZdZedZdddZedd Ze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%03dzid(?!000$)\d{3,}Nc             C   sz   || _ | j d k	r| | j _|| _|| _|| _t|trLttt	|
d| _n|| _|| _i | _i | _d| _d | _d | _d S )N.r   )dumperZ_serializeruse_encodinguse_explicit_startuse_explicit_end
isinstancer   tuplemapintsplituse_versionuse_tagsserialized_nodesanchorslast_anchor_idclosedZ_templated_id)selfencodingZexplicit_startZexplicit_endversiontagsr   r   r   r   __init__#   s    

zSerializer.__init__c             C   s   t | jdr| jjS | jjS )Ntyp)hasattrr   emitterZ_emitter)r-   r   r   r   r4   7   s    zSerializer.emitterc             C   s   t | jdr| jj | jjS )Nr2   )r3   r   resolverZ	_resolver)r-   r   r   r   r5   >   s    zSerializer.resolverc             C   sB   | j d kr&| jt| jd d| _ n| j r6tdntdd S )N)r.   Fzserializer is closedzserializer is already opened)r,   r4   emitr	   r   r   )r-   r   r   r   openE   s    

zSerializer.openc             C   s2   | j d krtdn| j s.| jt  d| _ d S )Nzserializer is not openedT)r,   r   r4   r6   r
   )r-   r   r   r   closeO   s
    

zSerializer.closec             C   s   t trtd |  | jd kr,tdn| jr:td| jt| j	| j
| jd | | | |d d  | jt| jd i | _i | _d| _d S )NzSerializing nodeszserializer is not openedzserializer is closed)explicitr/   r0   )r9   r   )r   r   r   dumpr,   r   r4   r6   r   r    r'   r(   anchor_nodeserialize_noder   r!   r)   r*   r+   )r-   noder   r   r   	serializeZ   s     


zSerializer.serializec             C   s   || j kr*| j | d kr| || j |< nd }y|jjr@|jj}W n   Y nX || j |< t|trxL|jD ]}| | qlW n2t|trx&|jD ]\}}| | | | qW d S )N)	r*   generate_anchoranchorZalways_dumpvaluer"   r   r;   r   )r-   r=   r@   itemkeyrA   r   r   r   r;   m   s"    




zSerializer.anchor_nodec             C   sD   y|j j}W n   d }Y nX |d kr@|  jd7  _| j| j S |S )N   )r@   rA   r+   ANCHOR_TEMPLATE)r-   r=   r@   r   r   r   r?      s    
zSerializer.generate_anchorc          
   C   s`  | j | }|| jkr(| jt| n4d| j|< | j|| t|tr| j	t|j
d}| j	t|j
d}|j|k|j|k|jdf}| jt||j||j
|j|jd nt|tr|j| j	t|j
dk}|j}d }	d }
|jdkr|r|d }
|rt|dkr|d }	nd }	| jt||j||j|jd d}x&|j
D ]}| ||| |d	7 }qJW | jt|
|	gd
 nt|trR|j| j	t|j
dk}|j}d }	d }|jdkr|r|d }|rt|dkr|d }	| jt||j||j|jd x0|j
D ]&\}}| ||d  | ||| qW | jt||	gd
 | j  d S )NT)TF)FTztag:yaml.org,2002:)stylecommentr      )
flow_stylerG   rD   )rG   )r*   r)   r4   r6   r   r5   Zdescend_resolverr"   r   ZresolverA   tag
startswithr   rF   rG   r   rI   lenr   r<   r   r   r   r   Zascend_resolver)r-   r=   parentindexaliasZdetected_tagZdefault_tagZimplicitrG   Zend_commentZseq_commentrB   Zmap_commentrC   rA   r   r   r   r<      sb    





zSerializer.serialize_node)NNNNNN)r   r   r   rE   r   	ANCHOR_REr1   propertyr4   r5   r7   r8   r>   r;   r?   r<   r   r   r   r   r      s    

c             C   s   t j| S )N)r   rP   match)sr   r   r   templated_id   s    rT   N)Z
__future__r   Zruamel_yaml.errorr   Zruamel_yaml.compatr   r   r   r   Zruamel_yaml.utilr   Zruamel_yaml.eventsr	   r
   r   r   r   r   r   r   r   r   Zruamel_yaml.nodesr   r   r   __all__r   objectr   rT   r   r   r   r   <module>   s   0 ,