o
    wi                      @  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
Z#dddZ$dS )    )annotations)	YAMLError)nprintDBG_NODEdbg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!   S/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/ruamel/yaml/serializer.pyr      s    c                   @  s   e Zd ZdZedZ						d$d%ddZed&ddZed&ddZ	d'ddZ
d'ddZd(ddZd(ddZd)ddZd*d"d#ZdS )+r   zid{:03d}zid(?!000$)\d{3,}Nencodingr   explicit_startOptional[bool]explicit_endversionOptional[VersionType]tagsdumperreturnNonec                 C  sz   || _ | j d ur| | j _|| _|| _|| _t|tr&ttt	|
d| _n|| _|| _i | _i | _d| _d | _d | _d S )N.r   )r*   _serializeruse_encodinguse_explicit_startuse_explicit_end
isinstancestrtuplemapintsplituse_versionuse_tagsserialized_nodesanchorslast_anchor_idclosed_templated_id)selfr#   r$   r&   r'   r)   r*   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r?   r!   r!   r"   rD   B      zSerializer.emitterc                 C  s   t | jdr
| jj | jjS rA   )rC   r*   resolver	_resolverrF   r!   r!   r"   rH   H   rG   zSerializer.resolverc                 C  s>   | j d u r| jt| jd d| _ d S | j rtdtd)N)r#   Fserializer is closedzserializer is already opened)r=   rD   emitr	   r/   r   rF   r!   r!   r"   openN   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)r=   r   rD   rK   r
   rF   r!   r!   r"   closeW   s   

zSerializer.closenodec                 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 nodesrM   rJ   )explicitr'   r)   )rP   r   )r   r   r   dumpr=   r   rD   rK   r   r0   r8   r9   anchor_nodeserialize_noder   r1   r:   r;   r<   )r?   rO   r!   r!   r"   	serializea   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)	r;   generate_anchoranchoralways_dumpvaluer2   r   rR   r   )r?   rO   rW   itemkeyrY   r!   r!   r"   rR   u   s,   





zSerializer.anchor_nodec                 C  sB   z|j j}W n   d }Y |d u r|  jd7  _| j| jS |S )N   )rW   rY   r<   ANCHOR_TEMPLATEformat)r?   rO   rW   r!   r!   r"   rV      s   zSerializer.generate_anchorparentindexc              
   C  sj  | j | }|| jv r"t|dd }|dkrd }| jt||d d S d| j|< | j|| t|t	rg| 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 )Nstyle?)ra   T)TF)FTztag:yaml.org,2002:)ra   commentr      )
flow_stylerc   r\   )rc   )re   rc   nr_items)r;   r:   getattrrD   rK   r   rH   descend_resolverr2   r   resolverY   ctagtag
startswithr   ra   rc   r   re   lenr   rS   r   r   r   r   ascend_resolver)r?   rO   r_   r`   alias
node_styledetected_tagdefault_tagimplicitrc   end_commentseq_commentrZ   map_commentr[   rY   r!   r!   r"   rS      s   








	



zSerializer.serialize_node)NNNNNN)r#   r   r$   r%   r&   r%   r'   r(   r)   r   r*   r   r+   r,   )r+   r   )r+   r,   )rO   r   r+   r,   )rO   r   r+   r   )rO   r   r_   r   r`   r   r+   r,   )r   r   r    r]   r   	ANCHOR_REr@   propertyrD   rH   rL   rN   rT   rR   rV   rS   r!   r!   r!   r"   r   !   s(    

	




sr   r+   r   c                 C  s   t j| S rU   )r   rw   match)ry   r!   r!   r"   templated_id   s   r{   N)ry   r   r+   r   )%
__future__r   ruamel.yaml.errorr   ruamel.yaml.compatr   r   r   r   ruamel.yaml.utilr   ruamel.yaml.eventsr	   r
   r   r   r   r   r   r   r   r   ruamel.yaml.nodesr   r   r   typingr   r   r   r   r   r   __all__r   r   r{   r!   r!   r!   r"   <module>   s   0 H