o
    
iS!                     @   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SequenceNodeF)AnyDictUnionTextOptional)VersionType
SerializerSerializerErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r#   r#   P/home/ubuntu/.local/lib/python3.10/site-packages/srsly/ruamel_yaml/serializer.pyr      s    c                   @   sv   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 ur| | j _|| _|| _|| _t|tr&ttt	|
d| _n|| _|| _i | _i | _d| _d | _d | _d S )N.r   )dumper_serializeruse_encodinguse_explicit_startuse_explicit_end
isinstancer   tuplemapintsplituse_versionuse_tagsserialized_nodesanchorslast_anchor_idclosed_templated_id)selfencodingexplicit_start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&   emitter_emitterr7   r#   r#   r$   rA   C      zSerializer.emitterc                 C   s   t | jdr
| jj | jjS r>   )r@   r&   resolver	_resolverrC   r#   r#   r$   rE   J   rD   zSerializer.resolverc                 C   s>   | j d u r| jt| jd d| _ d S | j rtdtd)N)r8   Fserializer is closedzserializer is already opened)r5   rA   emitr   r(   r   rC   r#   r#   r$   openQ   s   

zSerializer.openc                 C   s4   | j d u r	td| j s| jt  d| _ d S d S )Nserializer is not openedT)r5   r   rA   rH   r   rC   r#   r#   r$   close[   s   

zSerializer.closec                 C   s   t trtd |  | jd u rtd| jrtd| jt| j	| j
| jd | | | |d d  | jt| jd i | _i | _d| _d S )NzSerializing nodesrJ   rG   )explicitr;   r<   )rL   r   )r   r   r   dumpr5   r   rA   rH   r   r)   r0   r1   anchor_nodeserialize_noder   r*   r2   r3   r4   )r7   noder#   r#   r$   	serializef   s(   


zSerializer.serializec                 C   s   || j v r| j | d u r| || j |< d S d S d }z
|jjr#|jj}W n   Y || j |< t|tr@|jD ]}| | q6d S t|trW|jD ]\}}| | | | qHd S d S N)	r3   generate_anchoranchoralways_dumpvaluer+   r   rN   r   )r7   rP   rT   itemkeyrV   r#   r#   r$   rN   }   s,   





zSerializer.anchor_nodec                 C   s@   z|j j}W n   d }Y |d u r|  jd7  _| j| j S |S )Nr   )rT   rV   r4   ANCHOR_TEMPLATE)r7   rP   rT   r#   r#   r$   rS      s   zSerializer.generate_anchorc              
   C   sN  | j | }|| jv r| jt| d S d| j|< | j|| t|trY| 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u r||r||d }
|rt|dkr|d }	nd }	| jt||j||j|jd d}|j
D ]}| ||| |d	7 }q| jt|
|	gd
 nft|tr |j| j	t|j
dk}|j}d }	d }|jdu 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_styler[   r   )r[   )r]   r[   nr_items)r3   r2   rA   rH   r   rE   descend_resolverr+   r   resolverV   tag
startswithr   rZ   r[   r   r]   lenr   rO   r   r   r   r   ascend_resolver)r7   rP   parentindexaliasdetected_tagdefault_tagimplicitr[   end_commentseq_commentrW   map_commentrX   rV   r#   r#   r$   rO      s   









	




zSerializer.serialize_node)NNNNNN)r    r!   r"   rY   r
   	ANCHOR_REr=   propertyrA   rE   rI   rK   rQ   rN   rS   rO   r#   r#   r#   r$   r   "   s(    



c                 C   s   t j| S rR   )r   rn   match)sr#   r#   r$   templated_id   s   rr   N)'
__future__r   errorr   compatr   r   r   r   r	   utilr
   eventsr   r   r   r   r   r   r   r   r   r   nodesr   r   r   typingr   r   r   r   r   r   __all__r   objectr   rr   r#   r#   r#   r$   <module>   s   0 W