U
    e                      @   s   d dl mZ d dlmZ d dlmZ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nprintf)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.8/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   r6   C   s    zSerializer.emitterc                 C   s   t | jdr| jj | jjS r3   )r5   r   resolverZ	_resolverr7   r   r   r   r8   J   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/   Fserializer is closedzserializer is already opened)r-   r6   emitr
   r    r   r7   r   r   r   openQ   s    

zSerializer.openc                 C   s2   | j d krtdn| j s.| jt  d| _ d S )Nserializer is not openedT)r-   r   r6   r:   r   r7   r   r   r   close[   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 nodesr<   r9   )explicitr0   r1   )r>   r   )r   r   r   dumpr-   r   r6   r:   r   r!   r(   r)   anchor_nodeserialize_noder   r"   r*   r+   r,   )r.   noder   r   r   	serializef   s(    

  
zSerializer.serializec                 C   s   || j kr*| j | d kr| || j |< nd }z|jjr@|jj}W n   Y nX || j |< t|tr||jD ]}| | qjn.t|tr|jD ]\}}| | | | qd S N)	r+   generate_anchoranchorZalways_dumpvaluer#   r   r@   r   )r.   rB   rF   itemkeyrG   r   r   r   r@   {   s"    





zSerializer.anchor_nodec                 C   sD   z|j j}W n   d }Y nX |d kr@|  jd7  _| j| j S |S )N   )rF   rG   r,   ANCHOR_TEMPLATE)r.   rB   rF   r   r   r   rE      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}|j
D ]}| ||| |d	7 }qH| 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t|j
d |j
D ]&\}}| ||d  | ||| q| jt||	gd
 | j  d S )NT)TF)FTztag:yaml.org,2002:)stylecommentr      )
flow_stylerM   rJ   )rM   )rO   rM   Znr_items)r+   r*   r6   r:   r   r8   Zdescend_resolverr#   r   ZresolverG   tag
startswithr   rL   rM   r   rO   lenr   rA   r   r   r   r   Zascend_resolver)r.   rB   parentindexaliasZdetected_tagZdefault_tagZimplicitrM   Zend_commentZseq_commentrH   Zmap_commentrI   rG   r   r   r   rA      s    







	

zSerializer.serialize_node)NNNNNN)r   r   r   rK   r	   	ANCHOR_REr2   propertyr6   r8   r;   r=   rC   r@   rE   rA   r   r   r   r   r   "   s&         



c                 C   s   t j| S rD   )r   rV   match)sr   r   r   templated_id   s    rZ   N)&Z
__future__r   Zruamel_yaml.errorr   Zruamel_yaml.compatr   r   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   ZAnyZDictZUnionZTextZOptionalZVersionType__all__r   objectr   rZ   r   r   r   r   <module>   s   0 M