o
                          @   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"   ?/tmp/google-cloud-sdk/lib/third_party/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r6   r"   r"   r#   r@   C      zSerializer.emitterc                 C   s   t | jdr
| jj | jjS r=   )r?   r%   resolver	_resolverrB   r"   r"   r#   rD   J   rC   zSerializer.resolverc                 C   s>   | j d u r| jt| jd d| _ d S | j rtdtd)N)r7   Fserializer is closedzserializer is already opened)r4   r@   emitr
   r'   r   rB   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)r4   r   r@   rG   r   rB   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 nodesrI   rF   )explicitr:   r;   )rK   r   )r   r   r   dumpr4   r   r@   rG   r   r(   r/   r0   anchor_nodeserialize_noder   r)   r1   r2   r3   )r6   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)	r2   generate_anchoranchoralways_dumpvaluer*   r   rM   r   )r6   rO   rS   itemkeyrU   r"   r"   r#   rM   {   s,   





zSerializer.anchor_nodec                 C   s@   z|j j}W n   d }Y |d u r|  jd7  _| j| j S |S )N   )rS   rU   r3   ANCHOR_TEMPLATE)r6   rO   rS   r"   r"   r#   rR      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[   rX   )r[   )r]   r[   nr_items)r2   r1   r@   rG   r   rD   descend_resolverr*   r   resolverU   tag
startswithr   rZ   r[   r   r]   lenr   rN   r   r   r   r   ascend_resolver)r6   rO   parentindexaliasdetected_tagdefault_tagimplicitr[   end_commentseq_commentrV   map_commentrW   rU   r"   r"   r#   rN      s   








	



zSerializer.serialize_node)NNNNNN)r   r    r!   rY   r	   	ANCHOR_REr<   propertyr@   rD   rH   rJ   rP   rM   rR   rN   r"   r"   r"   r#   r   "   s(    



c                 C   s   t j| S rQ   )r   rn   match)sr"   r"   r#   templated_id   s   rr   N)'
__future__r   ruamel.yaml.errorr   ruamel.yaml.compatr   r   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   objectr   rr   r"   r"   r"   r#   <module>   s   0 M