o
    d                      @   s   d dl mZmZ d dlZd dlmZmZ d dlmZm	Z	m
Z
 d dl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S )    )absolute_importprint_functionN)MarkedYAMLErrorReusedAnchorWarning)utf8nprintnprintf)StreamStartEventStreamEndEventMappingStartEventMappingEndEventSequenceStartEventSequenceEndEvent
AliasEventScalarEvent)MappingNode
ScalarNodeSequenceNodeF)AnyDictOptionalListComposerComposerErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   =/tmp/google-cloud-sdk/lib/third_party/ruamel/yaml/composer.pyr      s    c                   @   sv   e Z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d Zdd Zdd ZdS )r   Nc                 C   s4   || _ | j d urt| j dd d u r| | j _i | _d S )N	_composer)loadergetattrr   anchors)selfr    r   r   r   __init__!   s   
zComposer.__init__c                 C      t | jdr
| jj | jjS Ntyp)hasattrr    parser_parserr#   r   r   r   r)   (   s   zComposer.parserc                 C   r%   r&   )r(   r    resolver	_resolverr+   r   r   r   r,   /   s   zComposer.resolverc                 C   s$   | j tr| j   | j t S N)r)   check_eventr	   	get_eventr
   r+   r   r   r   
check_node7   s   
zComposer.check_nodec                 C   s   | j ts
|  S d S r.   )r)   r/   r
   compose_documentr+   r   r   r   get_node@   s   zComposer.get_nodec                 C   sX   | j   d }| j ts|  }| j ts%| j  }td|jd|j| j   |S )Nz(expected a single document in the streamzbut found another document)r)   r0   r/   r
   r2   r   
start_mark)r#   documenteventr   r   r   get_single_nodeF   s   


zComposer.get_single_nodec                 C   s*   | j   | d d }| j   i | _|S r.   )r)   r0   compose_noder"   )r#   noder   r   r   r2   _   s
   

zComposer.compose_documentc                 C   s   | j tr$| j  }|j}|| jvrtd d dt| |j| j| S | j 	 }|j}|d urG|| jv rGd
|| j| j|j}t|t | j|| | j trZ| |}n| j trf| |}n| j trq| |}| j  |S )Nzfound undefined alias %rzE
found duplicate anchor {!r}
first occurrence {}
second occurrence {})r)   r/   r   r0   anchorr"   r   r   r4   
peek_eventformatwarningswarnr   r,   descend_resolverr   compose_scalar_noder   compose_sequence_noder   compose_mapping_nodeascend_resolver)r#   parentindexr6   aliasr:   wsr9   r   r   r   r8   m   s2   






zComposer.compose_nodec              	   C   sj   | j  }|j}|d u s|dkr| jt|j|j}t||j|j|j	|j
|j|d}|d ur3|| j|< |S )N!)stylecommentr:   )r)   r0   tagr,   resolver   valueimplicitr4   end_markrI   rJ   r"   )r#   r:   r6   rK   r9   r   r   r   r@      s    
	
zComposer.compose_scalar_nodec              	   C   s   | j  }|j}|d u s|dkr| jtd |j}t|g |jd |j|j	|d}|d ur0|| j
|< d}| j tsL|j| || |d7 }| j tr8| j  }|jdu rl|j	d url|j	d urhtd|j |j	|_	|j|_| || |S )NrH   
flow_stylerJ   r:   r      Tz:Warning: unexpected end_event commment in sequence node {})r)   r0   rK   r,   rL   r   rN   r4   rQ   rJ   r"   r/   r   rM   appendr8   r   r<   rO   check_end_doc_comment)r#   r:   start_eventrK   r9   rE   	end_eventr   r   r   rA      s>   
	


zComposer.compose_sequence_nodec              	   C   s   | j  }|j}|d u s|dkr| jtd |j}t|g |jd |j|j	|d}|d ur0|| j
|< | j tsP| |d }| ||}|j||f | j tr6| j  }|jdu rc|j	d urc|j	|_	|j|_| || |S )NrH   rP   T)r)   r0   rK   r,   rL   r   rN   r4   rQ   rJ   r"   r/   r   r8   rM   rS   rO   rT   )r#   r:   rU   rK   r9   item_key
item_valuerV   r   r   r   rB      s4   
	


zComposer.compose_mapping_nodec                 C   sZ   |j r)|j d r+|j d u rd d g|_ t|trJ |j |j d  d |j d< d S d S d S )NrR   )rJ   
isinstancer   rS   )r#   rV   r9   r   r   r   rT      s   

zComposer.check_end_doc_commentr.   )r   r   r   r$   propertyr)   r,   r1   r3   r7   r2   r8   r@   rA   rB   rT   r   r   r   r   r       s    


	!!")!
__future__r   r   r=   ruamel.yaml.errorr   r   ruamel.yaml.compatr   r   r   ruamel.yaml.eventsr	   r
   r   r   r   r   r   r   ruamel.yaml.nodesr   r   r   typingr   r   r   r   __all__r   objectr   r   r   r   r   <module>   s   (
