o
    R                     @   s   d dl mZ d dl mZ d dlZd dlmZmZ d dlT d dlm	Z	m
Z
mZmZmZmZmZ 	 d
dgZG dd deZG dd deZG dd deZG dd
 d
eZdS )    )absolute_import)print_functionN)	YAMLErrorYAMLStreamError)*)utf8	text_typePY2nprintdbg	DBG_EVENTcheck_anchorname_charF)AnyDictListUnionTextTupleOptional)
StreamTypeEmitterEmitterErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   </tmp/google-cloud-sdk/lib/third_party/ruamel/yaml/emitter.pyr      s    c                   @   s   e Zd Zdd ZdS )ScalarAnalysisc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S Nscalarempty	multilineallow_flow_plainallow_block_plainallow_single_quotedallow_double_quotedallow_block)	selfr    r!   r"   r#   r$   r%   r&   r'   r   r   r   __init__"   s   
zScalarAnalysis.__init__N)r   r   r   r)   r   r   r   r   r   !   s    r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Indentsc                 C   s
   g | _ d S r   )valuesr(   r   r   r   r)   :      
zIndents.__init__c                 C   s   | j ||f d S r   )r+   append)r(   valseqr   r   r   r.   >   s   zIndents.appendc                 C   s   | j  d S Nr   )r+   popr,   r   r   r   r2   B   s   zIndents.popc                 C   s&   z| j d d W S  ty   Y dS w )N   F)r+   
IndexErrorr,   r   r   r   last_seqF   s
   zIndents.last_seqc                 C   sT   t | jdk s| jd d sdS | jd d d ur | jd d nd}|| | d S )N   r4   r   lenr+   )r(   
seq_indentcolumnbaser   r   r   seq_flow_alignO   s   $zIndents.seq_flow_alignc                 C   
   t | jS r   r9   r,   r   r   r   __len__X   r-   zIndents.__len__N)	r   r   r   r)   r.   r2   r6   r>   r@   r   r   r   r   r*   8   s    		r*   c                   @   s  e Zd ZdddZdZ										dddZedd	 Zejd
d	 Zedd Z	edd Z
dd Zdd Zdd Zdd ZdddZdd Zdd Zdd Zdd d!Zd"d# Zd$d% Zdd&d'Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zdd2d3Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"dd@dAZ#dBdC Z$dDdE Z%ddFdGZ&dHdI Z'dJdK Z(dLdM Z)dNdO Z*dPdQ Z+dRdS Z,dTdU Z-dVdW Z.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6dhdi Z7djdk Z8dldm Z9ddndoZ:dpdq Z;ddrdsZ<dtdu Z=dvdw Z>ddydzZ?d{d|d}d~ddddddddddddZ@dddZAdd ZBdd ZCdddZDdddZEdddZFdd ZGdd ZHdS )r   !z!!)rA   ztag:yaml.org,2002:   Nc                 C   s  || _ | j d urt| j dd d u r| | j _|| _d | _d | _g | _| j| _g | _	d | _
t | _d | _g | _d| _d| _d| _d| _d| _d| _d| _d| _d| _d| _d | _d| _d| _|	d u rc| jn|	| j | _|
| _|| _|| _t j!dk| _"|r||nd| _#|| _$d| _%|| _&|rd|  k rd	k rn n|| _%| j%| _'d
| _(|r|| j%d kr|| _(d| _)|dv r|| _)d | _*d | _+d | _,d | _-d | _.d S )N_emitterFr   T:i  r7   r4   
   P   
)rG   z
)/dumpergetattrrC   streamencodingallow_space_breakstatesexpect_stream_startstateeventseventr*   indentsindentflow_contextroot_contextsequence_contextmapping_contextsimple_key_contextliner<   
whitespace	indentioncompact_seq_seqcompact_seq_map
no_newline
open_endedcolonprefixed_colon+brace_single_entry_mapping_in_flow_sequence	canonicalallow_unicodesys
maxunicodeunicode_supplementarysequence_dash_offsettop_level_colon_alignbest_sequence_indentrequested_indentbest_map_indent
best_widthbest_line_breaktag_prefixesprepared_anchorprepared_taganalysisstyle)r(   rK   rd   rT   widthre   
line_breakblock_seq_indentrj   prefix_colonrc   rI   r   r   r   r)   g   sd   
zEmitter.__init__c                 C   s    z| j W S  ty   tdw )Nz output stream needs to specified)_streamAttributeErrorr   r,   r   r   r   rK      s
   zEmitter.streamc                 C   s(   |d u rd S t |dstd|| _d S )Nwritez.stream argument needs to have a write() method)hasattrr   ry   )r(   r/   r   r   r   rK      s
   

c                 C   s8   zt | jdr| jjW S | jjW S  ty   |  Y S w )Ntyp)r|   rI   
serializer_serializerrz   r,   r   r   r   r~      s   

zEmitter.serializerc                 C   r?   r   )r:   rU   r,   r   r   r   
flow_level   s   
zEmitter.flow_levelc                 C   s   g | _ d | _d S r   )rN   rP   r,   r   r   r   dispose   s   
zEmitter.disposec                 C   sP   t trt| | j| |  s&| jd| _|   d | _|  rd S d S r1   )	r   r   r
   rQ   r.   need_more_eventsr2   rR   rP   r(   rR   r   r   r   emit   s   zEmitter.emitc                 C   sT   | j sdS | j d }t|tr| dS t|tr| dS t|tr(| dS dS )NTr   r4   r7      F)rQ   
isinstanceDocumentStartEventneed_eventsSequenceStartEventMappingStartEventr   r   r   r   r     s   






zEmitter.need_more_eventsc                 C   sv   d}| j dd  D ](}t|ttfr|d7 }nt|ttfr#|d8 }nt|tr*d}|dk r1 dS q	t| j |d k S )Nr   r4   r8   F)rQ   r   r   CollectionStartEventDocumentEndEventCollectionEndEventStreamEndEventr:   )r(   countlevelrR   r   r   r   r     s   


zEmitter.need_eventsFc                 C   s`   | j | j| | jd u r|r| j| _d S d| _d S |s.|  j| j  r'| jn| j7  _d S d S r1   )rS   r.   rT   rl   r6   rk   rm   )r(   flowsequence
indentlessr   r   r   increase_indent  s   


zEmitter.increase_indentc                 C   st   t | jtr2tr| jjrt| jdd s| jj| _n| jjr(t| jds(| jj| _|   | j	| _
d S td| jf )NrL   z%expected StreamStartEvent, but got %s)r   rR   StreamStartEventr	   rL   rJ   rK   r|   write_stream_startexpect_first_document_startrP   r   r,   r   r   r   rO   8  s   

zEmitter.expect_stream_startc                 C   s   t d| jf )Nzexpected nothing, but got %s)r   rR   r,   r   r   r   expect_nothingF  s   zEmitter.expect_nothingc                 C      | j ddS NT)first)expect_document_startr,   r   r   r   r   L     z#Emitter.expect_first_document_startc           	      C   sj  t | jtr| jjs| jjr| jr| dd |   | jjr+| | jj}| 	| | j
 | _| jjr]t| jj }|D ]}| jj| }|| j|< | |}| |}| || q?|ov| jj ov| j ov| jj ov| jj ov|   }|s|   | dd | jr|   | j| _d S t | jtr| jr| dd |   |   | j| _d S td| jf )N...T---z'expected DocumentStartEvent, but got %s)r   rR   r   versiontagsr`   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyrp   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitrd   check_empty_documentexpect_document_rootrP   r   write_stream_endr   r   )	r(   r   version_texthandleshandleprefixhandle_textprefix_textimplicitr   r   r   r   P  sP   



zEmitter.expect_document_startc                 C   sT   t | jtr"|   | jjr| dd |   |   | j| _d S t	d| jf )Nr   Tz%expected DocumentEndEvent, but got %s)
r   rR   r   r   r   r   flush_streamr   rP   r   r,   r   r   r   expect_document_endy  s   zEmitter.expect_document_endc                 C   s   | j | j | jdd d S )NT)root)rN   r.   r   expect_noder,   r   r   r   r     s   zEmitter.expect_document_rootc                 C   s  || _ || _|| _|| _t| jtr|   d S t| jtt	fr| 
dr1t| jtr1| jr1d| _|   t| jtrA|   d S t| jtr| j| j}}| jjrw| jjdu rh| jjrh| | jrhd| _d| _| | jrw	 || _| j | _| js| js| jjs|  r|   d S |   d S t| jtr| jjdu r| jjr| | j | jjr| jjd r| | j | js| js| jjs|  r| j| jjdkd d S |   d S d S td| jf )N&FTr4   )singlezexpected NodeEvent, but got %s)rV   rW   rX   rY   r   rR   
AliasEventexpect_aliasScalarEventr   process_anchorprocess_tagexpect_scalarr   r\   r_   comment
flow_stylewrite_post_commentwrite_pre_commentr   rd   check_empty_sequenceexpect_flow_sequenceexpect_block_sequencer   check_empty_mappingexpect_flow_mappingnr_itemsexpect_block_mappingr   )r(   r   r   mapping
simple_keyi2n2r   r   r   r     sn   

zEmitter.expect_nodec                 C   s.   | j jd u r
td| d | j | _d S )Nz!anchor is not specified for aliasr   )rR   anchorr   r   rN   r2   rP   r,   r   r   r   r     s   
zEmitter.expect_aliasc                 C   s0   | j dd |   | j | _| j | _d S )NT)r   )r   process_scalarrS   r2   rT   rN   rP   r,   r   r   r   r     s   zEmitter.expect_scalarc                 C   sP   | j | j| j}| jd| d ddd | jddd | jd | j| _	d S )N [Tr[   r   r   )
rS   r>   rk   r<   r   r   rU   r.   expect_first_flow_sequence_itemrP   )r(   indr   r   r   r     s
   zEmitter.expect_flow_sequencec                 C   s   t | jtr?| j | _| j }|dksJ | dd | jjr.| jjd r.| 	| j n	| j
dkr7|   | j | _d S | jsH| j| jkrL|   | j| j | jdd d S )Nr   ]Fr   Tr   )r   rR   SequenceEndEventrS   r2   rT   rU   r   r   r   r   write_line_breakrN   rP   rd   r<   rn   r   r.   expect_flow_sequence_itemr   r(   poppedr   r   r   r     s   

z'Emitter.expect_first_flow_sequence_itemc                 C   s   t | jtrF| j | _| j }|dksJ | jr$| dd | 	  | dd | jj
r;| jj
d r;| | j nd| _| j | _d S | dd | jsU| j| jkrY| 	  | j| j | jdd d S )Nr   ,Fr   r   Tr   )r   rR   r   rS   r2   rT   rU   rd   r   r   r   r   r_   rN   rP   r<   rn   r.   r   r   r   r   r   r   r     s"   
z!Emitter.expect_flow_sequence_itemc                 C   s|   | j | j| j}d}|r| jr| jd dkr| js| jsd}| jd| | ddd | j	| | j
ddd	 | j| _d S )
N{r8   r    r   Tr   Fr   )rS   r>   rk   r<   r   rU   rd   rc   r   r.   r   expect_first_flow_mapping_keyrP   )r(   r   r   map_initr   r   r   r   	  s    zEmitter.expect_flow_mappingc                 C   s   t | jtr?| j | _| j }|dksJ | dd | jjr.| jjd r.| 	| j n	| j
dkr7|   | j | _d S | jsH| j| jkrL|   | jsc|  rc| j| j | jddd d S | dd | j| j | jdd d S )	Nr   }Fr   Tr   r   ?r   )r   rR   MappingEndEventrS   r2   rT   rU   r   r   r   r   r   rN   rP   rd   r<   rn   r   check_simple_keyr.    expect_flow_mapping_simple_valuer   expect_flow_mapping_valuer   r   r   r   r     s$   

z%Emitter.expect_first_flow_mapping_keyc                 C   s  t | jtrJ| j | _| j }|dv sJ | jr$| dd | 	  |dkr.| dd | jj
r?| jj
d r?| | j nd| _| j | _d S | dd | jsY| j| jkr]| 	  | jst|  rt| j| j | jddd d S | d	d | j| j | jdd
 d S )N)r   r   r   Fr   r   r   Tr   r   r   )r   rR   r   rS   r2   rT   rU   rd   r   r   r   r   r_   rN   rP   r<   rn   r   r.   r   r   r   r   r   r   r   expect_flow_mapping_key3  s,   
zEmitter.expect_flow_mapping_keyc                 C   s,   |  | jd | j| j | jdd d S )NFTr   )r   rb   rN   r.   r   r   r,   r   r   r   r   R  s   z(Emitter.expect_flow_mapping_simple_valuec                 C   sF   | j s	| j| jkr|   | | jd | j| j | j	dd d S )NTr   )
rd   r<   rn   r   r   rb   rN   r.   r   r   r,   r   r   r   r   X  s
   z!Emitter.expect_flow_mapping_valuec                 C   sH   | j r| j }nd}| js| jdkr|   | jdd|d | j| _d S )NFr   T)r   r   r   )rX   r\   r]   r<   r   r    expect_first_block_sequence_itemrP   )r(   r   r   r   r   r   b  s   
zEmitter.expect_block_sequencec                 C   r   r   )expect_block_sequence_itemr,   r   r   r   r   m  r   z(Emitter.expect_first_block_sequence_itemc                 C   s   |s)t | jtr)| jjr| jjd r| | j | j | _| j | _	d| _
d S | jjr9| jjd r9| | j | jdkrA| j
nd}|   | j}| jd| d ddd |s`| jd | jkrcd| _
| j| j | jdd	 d S )
Nr4   Fr   r   -Tr\   r7   r   )r   rR   r   r   r   rS   r2   rT   rN   rP   r_   r<   r   ri   r   rk   r.   r   r   )r(   r   nonlr   r   r   r   r   q  s    
z"Emitter.expect_block_sequence_itemc                 C   s8   | j s| js| jdks|   | jddd | j| _d S )Nr   Fr   )rX   r^   r<   r   r   expect_first_block_mapping_keyrP   r,   r   r   r   r     s   zEmitter.expect_block_mappingc                 C   r   r   )expect_block_mapping_keyr,   r   r   r   r     r   z&Emitter.expect_first_block_mapping_keyc                 C   s*  |s&t | jtr&| jjr| jjd r| | j | j | _| j | _	d S | jjr6| jjd r6| | j | 
  |  r~t | jttfs`z| jjdkrU| jdddd W n	 ty_   Y nw | j| j | jddd t | jtr|| jd d S d S | jdddd | j| j | jdd d S )Nr4   r   Tr   r   r   r   )r   rR   r   r   r   rS   r2   rT   rN   rP   r   r   r   r   rt   r   rz   r.   !expect_block_mapping_simple_valuer   r   rK   r{   expect_block_mapping_value)r(   r   r   r   r   r     s6   
z Emitter.expect_block_mapping_keyc                 C   sn   t | jdd dkr(| jdkr| jd urd| j| j  | j }n| j}| |d | j	| j
 | jdd d S )Nrt   r   r   r   FTr   )rJ   rR   rT   rj   r<   ra   rb   r   rN   r.   r   r   )r(   cr   r   r   r     s   z)Emitter.expect_block_mapping_simple_valuec                 C   s8   |    | j| jddd | j| j | jdd d S )NTr   r   )r   r   rb   rN   r.   r   r   r,   r   r   r   r     s   z"Emitter.expect_block_mapping_valuec                 C   &   t | jtot| jot | jd tS r1   )r   rR   r   boolrQ   r   r,   r   r   r   r     
   zEmitter.check_empty_sequencec                 C   r   r1   )r   rR   r   r   rQ   r   r,   r   r   r   r     r   zEmitter.check_empty_mappingc                 C   sN   t | jtr	| jsdS | jd }t |to&|jd u o&|jd u o&|jo&|jdkS )NFr   r   )	r   rR   r   rQ   r   r   tagr   valuer   r   r   r   r     s   

zEmitter.check_empty_documentc                 C   s4  d}t | jtr"| jjd ur"| jd u r| | jj| _|t| j7 }t | jttfrD| jj	d urD| j
d u r=| | jj	| _
|t| j
7 }t | jtr_| jd u rW| | jj| _|t| jj7 }|| jk ot | jtpt | jtou| jjdu pt | jto| jjdu pt | jto| jj o| jj p|  p|  S )Nr   T)r   rR   	NodeEventr   rq   prepare_anchorr:   r   r   r   rr   prepare_tagrs   analyze_scalarr   r    MAX_SIMPLE_KEY_LENGTHr   r   r   r   r!   r"   r   r   )r(   lengthr   r   r   r     s<   



	zEmitter.check_simple_keyc                 C   sR   | j jd u rd | _dS | jd u r| | j j| _| jr$| || j d d | _dS )NFT)rR   r   rq   r   r   )r(   	indicatorr   r   r   r     s   
zEmitter.process_anchorc                 C   s  | j j}t| j trF| jd u r|  | _| jr|d u r6| jdkr&| j jd s1| jdkr6| j jd r6d | _d S | j jd rE|d u rEd}d | _n| jrM|d u rV| j jrVd | _d S |d u r^t	d| jd u ri| 
|| _| jr| | jd | jr| jst| j trd| _d | _d S )Nr   r   r4   rA   ztag is not specifiedT)rR   r   r   r   rt   choose_scalar_stylerd   r   rr   r   r  r   rW   r   r_   )r(   r   r   r   r   r     s<   




zEmitter.process_tagc                 C   s(  | j d u r| | jj| _ | jjdks| jrdS | jjr"| jjdkrI| jjd s.| jjd sI| jr9| j jsI| j j	sI| j
r@| j jsG| j
sI| j jrIdS d| j _| jjre| jjdv re| j
se| jse| j jre| jjS | jjs{| j jr{d| jjv syd	| jjv r{dS | jjr| jjdkr| j jr| jr| j j	sdS dS )
N"r   r   r7   r   Tz|>'rG   )rs   r  rR   r   rt   rd   r   rY   r!   r"   r   r#   r$   r'   r&   r%   r,   r   r   r   r  3  sX   


zEmitter.choose_scalar_stylec                 C   s   | j d u r| | jj| _ | jd u r|  | _| j }| jr%| js%| 	  | jdkr3| 
| j j| n3| jdkrA| | j j| n%| jdkrN| | j j n| jdkr^| | j j| jj n| | j j| d | _ d | _| jjrx| | j d S d S )Nr  r  >|)rs   r  rR   r   rt   r  rY   rW   r   r   write_double_quotedr    write_single_quotedwrite_foldedwrite_literalr   write_plainr   )r(   splitr   r   r   r   V  s*   






zEmitter.process_scalarc                 C   s,   |\}}|dkrt d||f d||f S )Nr4   zunsupported YAML version: %d.%dz%d.%d)r   )r(   r   majorminorr   r   r   r   t  s   zEmitter.prepare_versionc                 C   s   |st d|d dks|d dkrt dt| |dd D ]3}d|  kr,dksSn d	|  kr7d
ksSn d|  krBdksSn |dv sSt dt|t|f q |S )Nztag handle must not be emptyr   rA   r8   z*tag handle must start and end with '!': %rr4   09AZazz-_z*invalid character %r in the tag handle: %r)r   r   )r(   r   chr   r   r   r   {  s   JzEmitter.prepare_tag_handlec                 C   s
  |st dg }d }}|d dkrd}|t|k rs|| }d|  kr(dksCn d|  kr3dksCn d	|  kr>d
ksCn |dv rH|d7 }n%||k rU||||  |d  }}t|}|D ]}|dt|  qa|t|k s||k r||||  d|S )Nztag prefix must not be emptyr   rA   r4   r  r  r  r  r  r  z-;/?!:@&=+$,_.~*'()[]%%%02Xr   )r   r:   r.   r   ordjoin)r(   r   chunksstartendr  datar   r   r   r     s.   

zEmitter.prepare_tag_prefixc                 C   s  |st d|dkr|S d }|}t| j }|D ] }||r9|dks,t|t|k r9| j| }|t|d  }qg }d }}|t|k r|| }	d|	  krTdkswn d|	  kr_dkswn d|	  krjd	kswn |	d
v sw|	dkr||dkr||d7 }n%||k r||||  |d  }}t|	}
|
D ]}	|dt|	  q|t|k sF||k r||||  d	|}|rd||f S d| S )Nztag must not be emptyrA   r   r  r  r  r  r  r  z-;/?:@&=+$,_.~*'()[]r4   r  r   z%s%sz!<%s>)
r   r   rp   r   
startswithr:   r.   r   r  r  )r(   r   r   suffixprefixesr   r  r  r  r  r   suffix_textr   r   r   r    sF   "


zEmitter.prepare_tagc                 C   s:   |st d|D ]}t|st dt|t|f q|S )Nzanchor must not be emptyz&invalid character %r in the anchor: %r)r   r   r   )r(   r   r  r   r   r   r     s   zEmitter.prepare_anchorc              
   C   sf  |st |ddddddddS d}d}d}d}d}d}d}d}	d}
d}|ds,|dr0d}d}d}t|dkp=|d dv }d}d}d}|t|k rS|| }|dkr|d	v r[d}d}|d
v rt| jjdkrhd}nt|dkrpd}|rtd}|dkr~|r~d}d}n&|dv rd}|dkr| jjdkrd}|dkr|rd}d}|dkr|rd}d}|dv rd}|dksd|  krdksn |dksd|  krdksn d|  krdksn | jrd|  krdkrn n
|dkr| jsd}nd}|dkr|dkrd}|t|d krd}|r
d}
d}d}n%|dv r0|dkrd}|t|d kr&d}	|r+d}d}d}nd}d}|d7 }|dv }|d t|kpL||d  dv }|t|k sKd}d}d}d}d}|si|si|si|	rmd }}|rrd}|
r{d } }}|rd } } }}n|rd } }}| jsd}|rd }}|rd}|rd}t |d||||||dS )NTFr   r   r   r4   u     	
  r   z#,[]{}&*!|>'"%@`z?:)r4   r4   r   z,[]{}r   rD   #	   
  rG   r   ~          ퟿      �u   𐀀u   􏿿   ﻿)r   r!  r:   r~   use_versionrh   re   rM   )r(   r    block_indicatorsflow_indicatorsline_breaksspecial_charactersleading_spaceleading_breaktrailing_spacetrailing_breakbreak_spacespace_breakpreceeded_by_whitespacefollowed_by_whitespaceprevious_spaceprevious_breakindexr  r#   r$   r%   r&   r'   r   r   r   r    s  


 PzEmitter.analyze_scalarc                 C   s   t | jdr| j  d S d S )Nflush)r|   rK   r>  r,   r   r   r   r     s   zEmitter.flush_streamc                 C   s2   | j r| j dr| jd| j  d S d S d S )Nzutf-16r-  )rL   r!  rK   r{   encoder,   r   r   r   r     s   zEmitter.write_stream_startc                 C   s   |    d S r   )r   r,   r   r   r   r     r   zEmitter.write_stream_endc                 C   sh   | j s|s|}nd| }|| _ | jo|| _|  jt|7  _d| _t| jr,|| j}| j	| d S )Nr   F)
r[   r\   r<   r:   r`   r   rL   r?  rK   r{   )r(   r  need_whitespacer[   r\   r   r   r   r   r     s   

zEmitter.write_indicatorc                 C   s   | j pd}| jr| j|ks| j|kr"| js"t| jrd| _n|   | j|k rEd| _d|| j  }|| _| jr=|| j}| j	
| d S d S )Nr   FTr   )rT   r\   r<   r[   r   r_   r   rL   r?  rK   r{   )r(   rT   r   r   r   r   r     s    



zEmitter.write_indentc                 C   sT   |d u r| j }d| _d| _|  jd7  _d| _t| jr"|| j}| j	| d S )NTr4   r   )
ro   r[   r\   rZ   r<   r   rL   r?  rK   r{   )r(   r   r   r   r   r     s   
zEmitter.write_line_breakc                 C   s2   d| }| j r|| j }| j| |   d S )Nz	%%YAML %srL   r?  rK   r{   r   )r(   r   r   r   r   r   r     s
   zEmitter.write_version_directivec                 C   s6   d||f }| j r|| j }| j| |   d S )Nz%%TAG %s %srA  )r(   r   r   r   r   r   r   r     s
   zEmitter.write_tag_directiveTc           
      C   sL  | j r| jd ur|   | jdkr|   | dd d}d}d }}|t|krd }|t|k r6|| }|r|d u s@|dkr|d |kr]| j| jkr]|r]|dkr]|t|kr]|   n ||| }|  jt|7  _t| j	rw|
| j	}| j| |}nd|r|d u s|dvr|| dkr|   ||| D ]}	|	dkr|   q| |	 q|   |}n2|d u s|d	v s|dkr||k r||| }|  jt|7  _t| j	r|
| j	}| j| |}|dkrd
}|  jd7  _t| j	r|
| j	}| j| |d }|d ur|dk}|dv }|d7 }|t|ks*| dd d S )Nr   r  TFr   r4   r&  rG   
    
  z''r7   )rV   rl   r   r   r   r:   r<   rn   r   rL   r?  rK   r{   )
r(   textr  spacesbreaksr  r  r  r   brr   r   r   r    sz   








4zEmitter.write_single_quotedr  r  btnvfrer  \N_LP) 	rG   rH   r  rN  r(  r)  u    u    c                 C   s  | j r| jd ur|   | jdkr|   | dd d }}|t|krYd }|t|k r2|| }|d u s^|dv s^d|  krDdksn | jr^d|  krRdksn d	|  kr]d
ksn ||k r||| }|  jt|7  _t| j	r||
| j	}| j| |}|d ur|| jv rd| j|  }n|dkrdt| }n|dkrdt| }ndt| }|  jt|7  _t| j	r|
| j	}| j| |d }d|  k rt|d k rOn no|dks||krO| j||  | jkrO|rO||| d }||k r|}|  jt|7  _t| j	r|
| j	}| j| |   d| _d| _|| dkrOd}|  jt|7  _t| j	rI|
| j	}| j| |d7 }|t|ks&| dd d S )Nr   r  Tu   "\  ﻿r   r'  r)  r*  r+  r,  rN     ÿz\x%02Xu   ￿z\u%04Xz\U%08Xr4   F)rV   rl   r   r   r   r:   re   r<   r   rL   r?  rK   r{   ESCAPE_REPLACEMENTSr  rn   r[   r\   )r(   rC  r  r  r  r  r   r   r   r   r  0  sz   

,


"
;zEmitter.write_double_quotedc              	   C   s   d}d}d}|rm|d dv r| j }|t|7 }n>| jrVdD ]1}d}	 |||}|dkr-nz||d  dv r8W nW n	 tyB   Y nw |d	7 }q"|dkrN nq|dkrV| j }|d d
vr_d}nt|d	ksk|d d
v rmd}||7 }|||fS )Nr   r   rB  )z
---z
...Tr8      z 
r4   r&  r   r3   +)rk   r   rV   findr5   r:   )r(   rC  rT   r  hintsr  posr   r   r   determine_block_hintsv  sD   

zEmitter.determine_block_hintsc                 C   sZ  |  |\}}}| d| d |dkrd| _|   d}d}d}d }}	|	t|kr+d }
|	t|k r8||	 }
|r||
d u sB|
dvr{|sV|
d urV|
dkrV|| dkrV|   |
dk}|||	 D ]}|dkrk|   q`| | q`|
d ury|   |	}n|r|
dkr|d	 |	kr| j| jkr|   n |||	 }|  jt|7  _t| j	r|
| j	}| j| |	}n\|
d u s|
d
v r|||	 }|  jt|7  _t| j	r|
| j	}| j| |
dkr|	t|d	 k r||	d   s|   |   |	d7 }	ntd|
d u r|   |	}|
d ur|
dv }|
dk}|	d	7 }	|	t|ks,d S d S )Nr	  Tr]  Fr   u
   
  r   rG   r4   u    
  rT  r7   z*unexcpected fold indicator \a before spacer&  )ra  r   r`   r   r:   r   r<   rn   r   rL   r?  rK   r{   isspacer   )r(   rC  r_  _indent
_indicatorr3  rD  rE  r  r  r  rF  r   r   r   r   r    sz   




$


zEmitter.write_foldedc              	   C   s  |  |\}}}| d| d z|d d }|r| j| W n ttfy+   Y nw |dkr3d| _|   d}d }}|t|krd }	|t|k rO|| }	|r|	d u sY|	dvr||| D ]}
|
dkrj|   q_| |
 q_|	d ur| j	r| j
d ur| j
nd}| jd||   n|   |}n)|	d u s|	dv r||| }t| jr|| j}| j| |	d u r|   |}|	d ur|	dv }|d7 }|t|ksCd S d S )	Nr
  Tr4   r   r]  r&  rG   r   )ra  r   rK   r{   	TypeErrorr5   r`   r   r:   rV   rT   r   r   rL   r?  )r(   rC  r   r_  rc  rd  rE  r  r  r  rF  idnxr   r   r   r   r    sX   

zEmitter.write_literalc           
      C   sH  | j r| jd ur|   | jdkr|   nd| _|sd S | js:d}|  jt|7  _| jr4|	| j}| j
| d| _d| _d}d}d }}|t|kr"d }|t|k r[|| }|r|dkr|d |krz| j| jkrz|rz|   d| _d| _n||| }|  jt|7  _| jr|	| j}| j
| |}nn|r|dvr|| dkr|   ||| D ]}	|	dkr|   q| |	 q|   d| _d| _|}n:|d u s|dv r	||| }|  jt|7  _| jr|	| j}z| j
| W n   tjt|d   |}|d ur|dk}|dv }|d7 }|t|ksOd S d S )	Nr   Tr   Fr4   r&  rG   rB  )rV   rl   r   r   r`   r[   r<   r:   rL   r?  rK   r{   r\   rn   rf   stdoutrepr)
r(   rC  r  r   rD  rE  r  r  r  rF  r   r   r   r    s   



zEmitter.write_plainc                 C   s  |j }|s|d dkr|d d }z|jj}|j r#|j dr#| j}n	|| jd k r,t W n ty;   | jd }Y nw z7|| j }| jrO| rO|dk rOd}d| | }zt| jra|| j}W n	 t	yk   Y nw | j
| W n ty{    w |s|   d S d S )Nr8   rG   r4   r   )r   
start_markr<   r!  
ValueErrorstripr   rL   r?  UnicodeDecodeErrorrK   r{   re  r   )r(   r   prer   col	nr_spacesr   r   r   write_commentL  s@   

zEmitter.write_commentc              	   C   s   |j d }|d u rdS z0ttf}|D ]&}t||r t|dd r q| jdkr)|   | j|dd t||r8d|_qW dS  t	yO   t
jdt||  w )Nr4   Fpre_doner   T)rm  zeventtt {} {})r   r   r   r   rJ   r<   r   rp  rq  re  rf   rg  r{   formattype)r(   rR   commentsstart_eventsr   r   r   r   r   p  s(   


zEmitter.write_pre_commentc                 C   s,   | j jd d u r
dS |jd }| | dS )Nr   FT)rR   r   rp  )r(   rR   r   r   r   r   r     s
   

zEmitter.write_post_comment)
NNNNNNNNNN)FNF)F)FFFF)FFr   )T)Ir   r   r   r   r  r)   propertyrK   setterr~   r   r   r   r   r   r   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r  r   r  r   r   r   r   r   r   r   r   r  r[  r  ra  r  r  r  rp  r   r   r   r   r   r   r   ]   s    
h


	


)
9	



	!!#( 6



B
F!
B
.
E$)
__future__r   r   rf   ruamel.yaml.errorr   r   ruamel.yaml.eventsruamel.yaml.compatr   r   r	   r
   r   r   r   typingr   r   r   r   r   r   r   r   __all__r   objectr   r*   r   r   r   r   r   <module>   s   	$%