U
    e}                     @   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_charEmitterEmitterErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   2lib/python3.8/site-packages/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!   :   s    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   r)   B   s    zIndents.popc                 C   s,   z| j d d W S  tk
r&   Y dS X d S )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 k	r@| jd d nd}|| | d S )N   r+   r   lenr#   )r    Z
seq_indentcolumnbaser   r   r   seq_flow_alignO   s    $zIndents.seq_flow_alignc                 C   s
   t | jS r   r0   r$   r   r   r   __len__X   s    zIndents.__len__N)	r   r   r   r!   r%   r)   r-   r4   r5   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!!)r6   ztag:yaml.org,2002:   Nc                 C   s  || _ | j d k	r*t| j dd d k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 kr| jn|	| j | _|
| _|| _|| _t j!dk| _"|r|nd| _#|| _$d| _%|| _&|r8d|  k r.d	k r8n n|| _%| j%| _'d
| _(|rb|| j%d krb|| _(d| _)|dkrx|| _)d | _*d | _+d | _,d | _-d | _.d S )N_emitterFr   T:i  r.   r+   
   P   
)r<   z
)/dumpergetattrr8   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liner2   
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    r@   rY   rI   widthrZ   Z
line_breakZblock_seq_indentr_   Zprefix_colonrX   r>   r   r   r   r!   g   sd    "
zEmitter.__init__c                 C   s*   z| j W S  tk
r$   tdY nX d S )Nz output stream needs to specified)_streamAttributeErrorr   r$   r   r   r   r@      s    zEmitter.streamc                 C   s(   |d krd S t |dstd|| _d S )Nwritez.stream argument needs to have a write() method)hasattrr   rk   )r    r&   r   r   r   r@      s
    
c                 C   s>   z t | jdr| jjW S | jjW S  tk
r8   |  Y S X d S )Ntyp)rn   r>   
serializerZ_serializerrl   r$   r   r   r   rp      s    

zEmitter.serializerc                 C   s
   t | jS r   )r1   rJ   r$   r   r   r   
flow_level   s    zEmitter.flow_levelc                 C   s   g | _ d | _d S r   )rC   rE   r$   r   r   r   dispose   s    zEmitter.disposec                 C   sF   t trt| | j| |  sB| jd| _|   d | _qd S r(   )	r   r   r
   rF   r%   need_more_eventsr)   rG   rE   r    rG   r   r   r   emit   s    zEmitter.emitc                 C   sX   | j s
dS | j d }t|tr(| dS t|tr<| dS t|trP| dS dS d S )NTr   r+   r.      F)rF   
isinstanceDocumentStartEventneed_eventsSequenceStartEventMappingStartEventrt   r   r   r   rs     s    






zEmitter.need_more_eventsc                 C   sv   d}| j dd  D ]P}t|ttfr.|d7 }n&t|ttfrF|d8 }nt|trTd}|dk r dS qt| j |d k S )Nr   r+   r/   F)rF   rw   rx   CollectionStartEventDocumentEndEventZCollectionEndEventStreamEndEventr1   )r    countlevelrG   r   r   r   ry     s    


zEmitter.need_eventsFc                 C   sX   | j | j| | jd kr0|r(| j| _qTd| _n$|sT|  j| j  rJ| jn| j7  _d S r(   )rH   r%   rI   ra   r-   r`   rb   )r    flowsequence
indentlessr   r   r   increase_indent  s    

zEmitter.increase_indentc                 C   st   t | jtrbtr2| jjrPt| jdd sP| jj| _n| jjrPt| jdsP| jj| _|   | j	| _
ntd| j d S )NrA   z%expected StreamStartEvent, but got %s)rw   rG   ZStreamStartEventr	   rA   r?   r@   rn   write_stream_startexpect_first_document_startrE   r   r$   r   r   r   rD   8  s    

zEmitter.expect_stream_startc                 C   s   t d| j d S )Nzexpected nothing, but got %s)r   rG   r$   r   r   r   expect_nothingF  s    zEmitter.expect_nothingc                 C   s   | j ddS NT)first)expect_document_startr$   r   r   r   r   L  s    z#Emitter.expect_first_document_startc           	      C   sr  t | jtr$| jjs| jjr8| jr8| dd |   | jjrX| | jj}| 	| | j
 | _| jjrt| jj }|D ]:}| jj| }|| j|< | |}| |}| || q|o| jj o| j o| jj o| jj o|   }|s|   | dd | jr|   | j| _nJt | jtr`| jrN| dd |   |   | j| _ntd| j d S )N...T---z'expected DocumentStartEvent, but got %s)rw   rG   rx   versionZtagsrU   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyre   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitrY   check_empty_documentexpect_document_rootrE   r~   write_stream_endr   r   )	r    r   version_textZhandleshandleprefixhandle_textprefix_textimplicitr   r   r   r   P  sP    





zEmitter.expect_document_startc                 C   sT   t | jtrB|   | jjr0| dd |   |   | j| _nt	d| j d S )Nr   Tz%expected DocumentEndEvent, but got %s)
rw   rG   r}   r   r   r   flush_streamr   rE   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)rC   r%   r   expect_noder$   r   r   r   r     s    zEmitter.expect_document_rootc                 C   s  || _ || _|| _|| _t| jtr0|   nt| jtt	fr| 
d |   t| jtrl|   qt| jtr
| j| j }}| jjr| jjdkr| jjr| | jrd| _d| _| | jr|| _| j | _| js| js| jjs|  r |   n|   nt| jtr| jjdk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 n|   ntd| j d S )N&FTr+   )singlezexpected NodeEvent, but got %s)rK   rL   rM   rN   rw   rG   
AliasEventexpect_aliasScalarEventr|   process_anchorprocess_tagexpect_scalarrz   rQ   rT   comment
flow_stylewrite_post_commentwrite_pre_commentrq   rY   check_empty_sequenceexpect_flow_sequenceexpect_block_sequencer{   check_empty_mappingexpect_flow_mappingZnr_itemsexpect_block_mappingr   )r    r   r   mapping
simple_keyZi2Zn2r   r   r   r     s^    




zEmitter.expect_nodec                 C   s.   | j jd krtd| d | j | _d S )Nz!anchor is not specified for aliasr   )rG   anchorr   r   rC   r)   rE   r$   r   r   r   r     s    
zEmitter.expect_aliasc                 C   s0   | j dd |   | j | _| j | _d S )NT)r   )r   process_scalarrH   r)   rI   rC   rE   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rP   r   r   )
rH   r4   r`   r2   r   r   rJ   r%   expect_first_flow_sequence_itemrE   )r    indr   r   r   r     s
    zEmitter.expect_flow_sequencec                 C   s   t | jtr|| j | _| j }|dks.t| dd | jj	r\| jj	d r\| 
| j n| jdkrn|   | j | _n4| js| j| jkr|   | j| j | jdd d S )Nr   ]Fr   Tr   )rw   rG   SequenceEndEventrH   r)   rI   rJ   AssertionErrorr   r   r   rq   write_line_breakrC   rE   rY   r2   rc   r   r%   expect_flow_sequence_itemr   r    Zpoppedr   r   r   r     s    

z'Emitter.expect_first_flow_sequence_itemc                 C   s   t | jtr| j | _| j }|dks.t| jrH| 	dd | 
  | 	dd | jjrv| jjd rv| | j nd| _| j | _n@| 	dd | js| j| jkr| 
  | j| j | jdd d S )Nr   ,Fr   r   Tr   )rw   rG   r   rH   r)   rI   rJ   r   rY   r   r   r   r   rT   rC   rE   r2   rc   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{r/   r    r   Tr   Fr   )rH   r4   r`   r2   rq   rJ   rY   rX   r   r%   r   expect_first_flow_mapping_keyrE   )r    r   r   Zmap_initr   r   r   r     s"    zEmitter.expect_flow_mappingc                 C   s   t | jtrh| j | _| j }|dks.t| dd | jj	rZ| jj	d rZ| 
| j | j | _nl| jsz| j| jkr|   | js|  r| j| j | jddd n&| dd | j| j | jdd d S )	Nr   }Fr   Tr   r   ?r   )rw   rG   MappingEndEventrH   r)   rI   rJ   r   r   r   r   rC   rE   rY   r2   rc   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r| j | _| j }|dks.t| jrH| 	dd | 
  |dkr\| 	dd | jjr|| jjd r|| | j | j | _nx| 	dd | js| j| jkr| 
  | js|  r| j| j | jddd n&| 	d	d | j| j | jdd
 d S )N)r   r   r   Fr   r   r   Tr   r   r   )rw   rG   r   rH   r)   rI   rJ   r   rY   r   r   r   r   rC   rE   r2   rc   r   r%   r   r   r   r   r   r   r   expect_flow_mapping_key+  s*    
zEmitter.expect_flow_mapping_keyc                 C   s,   |  | jd | j| j | jdd d S )NFTr   )r   rW   rC   r%   r   r   r$   r   r   r   r   H  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   )
rY   r2   rc   r   r   rW   rC   r%   r   r   r$   r   r   r   r   N  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   )rM   rQ   rR   r2   r   r    expect_first_block_sequence_itemrE   )r    r   r   r   r   r   X  s    
zEmitter.expect_block_sequencec                 C   s   | j ddS r   )expect_block_sequence_itemr$   r   r   r   r   c  s    z(Emitter.expect_first_block_sequence_itemc                 C   s   |sPt | jtrP| jjr0| jjd r0| | j | j | _| j | _	d| _
n| jjrp| jjd rp| | j | jdkr| j
nd}|   | j}| jd| d ddd |s| jd | jkrd| _
| j| j | jdd	 d S )
Nr+   Fr   r   -TrQ   r.   r   )rw   rG   r   r   r   rH   r)   rI   rC   rE   rT   r2   r   r^   r   r`   r%   r   r   )r    r   Znonlr   r   r   r   r   g  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   )rM   rS   r2   r   r   expect_first_block_mapping_keyrE   r$   r   r   r   r   ~  s    zEmitter.expect_block_mappingc                 C   s   | j ddS r   )expect_block_mapping_keyr$   r   r   r   r     s    z&Emitter.expect_first_block_mapping_keyc                 C   s   |sJt | jtrJ| jjr0| jjd r0| | j | j | _| j | _	n| jjrj| jjd rj| | j | 
  |  rt | jttfs| jjdkr| jdddd | j| j | jddd n*| jdddd | j| j | jdd d S )Nr+   r   Tr   r   r   )rw   rG   r   r   r   rH   r)   rI   rC   rE   r   r   rz   r{   ri   r   r%   !expect_block_mapping_simple_valuer   expect_block_mapping_value)r    r   r   r   r   r     s(     z Emitter.expect_block_mapping_keyc                 C   sn   t | jdd dkrP| jdkr>| jd k	r>d| j| j  | j }n| j}| |d | j	| j
 | jdd d S )Nri   r   r   r   FTr   )r?   rG   rI   r_   r2   rV   rW   r   rC   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   rW   rC   r%   r   r   r$   r   r   r   r     s    z"Emitter.expect_block_mapping_valuec                 C   s&   t | jto$t| jo$t | jd tS r(   )rw   rG   rz   boolrF   r   r$   r   r   r   r     s
    zEmitter.check_empty_sequencec                 C   s&   t | jto$t| jo$t | jd tS r(   )rw   rG   r{   r   rF   r   r$   r   r   r   r     s
    zEmitter.check_empty_mappingc                 C   sN   t | jtr| jsdS | jd }t |toL|jd koL|jd koL|joL|jdkS )NFr   r   )	rw   rG   rx   rF   r   r   tagr   valuert   r   r   r   r     s    

zEmitter.check_empty_documentc                 C   sF  d}t | jtrD| jjd k	rD| jd kr6| | jj| _|t| j7 }t | jttfr| jj	d k	r| j
d krz| | jj	| _
|t| j
7 }t | jtr| jd kr| | jj| _|t| jj7 }|| jk oDt | jtpDt | jtr| jjdkpDt | jtr| jjdkpDt | jtr4| jj r4| jj pD|  pD|  S )Nr   T)rw   rG   Z	NodeEventr   rf   prepare_anchorr1   r   r|   r   rg   prepare_tagrh   analyze_scalarr   r   MAX_SIMPLE_KEY_LENGTHr   rz   r   r{   r   r   r   r   )r    Zlengthr   r   r   r     s>    



	zEmitter.check_simple_keyc                 C   sR   | j jd krd | _d S | jd kr0| | j j| _| jrH| || j d d | _d S )NT)rG   r   rf   r   r   )r    	indicatorr   r   r   r     s    
zEmitter.process_anchorc                 C   s  | j j}t| j tr| jd kr(|  | _| jr6|d krl| jdkrL| j jd sb| jdkrl| j jd rld | _d S | j jd r|d krd}d | _n | jr|d kr| j jrd | _d S |d krt	d| jd kr| 
|| _| jr| | jd | jr| jst| j trd| _d | _d S )Nr   r   r+   r6   ztag is not specifiedT)rG   r   rw   r   ri   choose_scalar_stylerY   r   rg   r   r   r   rL   rq   rT   )r    r   r   r   r   r     sF    





zEmitter.process_tagc                 C   s2  | j d kr| | jj| _ | jjdks,| jr0dS | jjrD| jjdkr| jjd s\| jjd s| jrr| j js| j j	s| j
r| j js| j
s| j jrdS d| j _| jjr| jjdkr| j
s| js| j jr| jjS | jjs| j jrd| jjksd	| jjkrdS | jjr| jjdkr.| j jr.| jr*| j j	s.dS dS )
N"r   r   r.   r   Tz|>'r<   )rh   r   rG   r   ri   rY   r   rN   r   r   rq   r   r   r   r   r   r$   r   r   r   r   #  sX    



zEmitter.choose_scalar_stylec                 C   s   | j d kr| | jj| _ | jd kr.|  | _| j }| jrJ| jsJ| 	  | jdkrf| 
| j j| nf| jdkr| | j j| nJ| jdkr| | j j n0| jdkr| | j j| jj n| | j j| d | _ d | _| jjr| | j d S )Nr   r   >|)rh   r   rG   r   ri   r   rN   rL   rq   r   write_double_quotedr   write_single_quotedwrite_foldedwrite_literalr   write_plainr   )r    splitr   r   r   r   F  s(    






zEmitter.process_scalarc                 C   s,   |\}}|dkr t d||f d||f S )Nr+   zunsupported YAML version: %d.%dz%d.%d)r   )r    r   majorminorr   r   r   r   c  s    zEmitter.prepare_versionc                 C   s   |st d|d dks$|d dkr4t dt| |dd D ]f}d|  krXdks@n d	|  krnd
ks@n d|  krdks@n |dks@t dt|t|f q@|S )Nztag handle must not be emptyr   r6   r/   z*tag handle must start and end with '!': %rr+   09AZazz-_z*invalid character %r in the tag handle: %r)r   r   )r    r   chr   r   r   r   j  s4       zEmitter.prepare_tag_handlec                 C   s   |st dg }d }}|d dkr(d}|t|k r|| }d|  krPdksn d|  krfdksn d	|  kr|d
ksn |dkr|d7 }q(||k r||||  |d  }}t|}|D ]}|dt|  qq(||k r||||  d|S )Nztag prefix must not be emptyr   r6   r+   r   r   r   r   r   r   z-;/?!:@&=+$,_.~*'()[]%%%02Xr   )r   r1   r%   r   ordjoin)r    r   chunksstartendr   datar   r   r   r   y  sF       
zEmitter.prepare_tag_prefixc                 C   s  |st d|dkr|S d }|}t| j }|D ]@}||r2|dksXt|t|k r2| j| }|t|d  }q2g }d }}|t|k rJ|| }	d|	  krdksn d|	  krdksn d|	  krd	ksn |	d
ks|	dkr|dkr|d7 }q||k r||||  |d  }}t|	}
|
D ]}	|dt|	  q.q||k rf||||  d	|}|rd||f S d| S d S )Nztag must not be emptyr6   r   r   r   r   r   r   r   z-;/?:@&=+$,_.~*'()[]r+   r   r   z%s%sz!<%s>)
r   r   re   r   
startswithr1   r%   r   r   r   )r    r   r   suffixprefixesr   r   r   r  r   r  Zsuffix_textr   r   r   r     sb    "
   



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   s  |st |ddddddddS d}d}d}d}d}d}d}d}	d}
d}|dsX|dr`d}d}d}t|dkpz|d dk}d}d}d}|t|k r|| }|dkr|d	krd}d}|d
kr| jjdkrd}nt|dkrd}|rd}|dkr|rd}d}nZ|dkrd}|dkr(| jjdkr(d}|dkr@|r@d}d}|dkrX|rXd}d}|dkrfd}|dksd|  krdksn |dksd|  krdksn d|  krdksn | jrd|  krdkrn n|dkr| jsd}nd}|dkrJ|dkr d}|t|d kr6d}|r@d}
d}d}nJ|dkr|dkrbd}|t|d krxd}	|rd}d}d}nd}d}|d7 }|dk}|d t|kp||d  dk}qd}d}d}d}d}|s|s|s|	rd }}|rd}|
rd } }}|r0d } } }}n|rNd } }}| jsNd}|r\d }}|rfd}|rpd}t |d||||||dS )NTFr   r   r   r+   u     	
  r   z#,[]{}&*!|>'"%@`z?:)r+   r+   r   z,[]{}r   r9   #	   
  r<   r   ~          ퟿      �u   𐀀u   􏿿   ﻿)r   r  r1   rp   Zuse_versionr]   rZ   rB   )r    r   Zblock_indicatorsZflow_indicatorsZline_breaksZspecial_charactersleading_spaceZleading_breakZtrailing_spaceZtrailing_breakZbreak_spaceZspace_breakZpreceeded_by_whitespaceZfollowed_by_whitespaceZprevious_spaceZprevious_breakindexr   r   r   r   r   r   r   r   r   r     s   


$ 

 

 




 zEmitter.analyze_scalarc                 C   s   t | jdr| j  d S )Nflush)rn   r@   r  r$   r   r   r   r   }  s    zEmitter.flush_streamc                 C   s*   | j r&| j dr&| jd| j  d S )Nzutf-16r  )rA   r  r@   rm   encoder$   r   r   r   r     s    zEmitter.write_stream_startc                 C   s   |    d S r   )r   r$   r   r   r   r     s    zEmitter.write_stream_endc                 C   sh   | j s
|s|}nd| }|| _ | jo&|| _|  jt|7  _d| _t| jrX|| j}| j	| d S )Nr   F)
rP   rQ   r2   r1   rU   r   rA   r  r@   rm   )r    r   Zneed_whitespacerP   rQ   r  r   r   r   r     s    

zEmitter.write_indicatorc                 C   s   | j pd}| jr*| j|ks*| j|krD| jsDt| jr<d| _n|   | j|k rd| _d|| j  }|| _| jrz|| j}| j	
| d S )Nr   FTr   )rI   rQ   r2   rP   r   rT   r   rA   r  r@   rm   )r    rI   r  r   r   r   r     s&    


zEmitter.write_indentc                 C   sT   |d kr| j }d| _d| _|  jd7  _d| _t| jrD|| j}| j	| d S )NTr+   r   )
rd   rP   rQ   rO   r2   r   rA   r  r@   rm   )r    r  r   r   r   r     s    
zEmitter.write_line_breakc                 C   s2   d| }| j r|| j }| j| |   d S )Nz	%%YAML %srA   r  r@   rm   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 %sr  )r    r   r   r  r   r   r   r     s
    zEmitter.write_tag_directiveTc           
      C   s^  | j r*| jd k	r*|   | jdkr*|   | dd d}d}d }}|t|krNd }|t|k rl|| }|r|d ks|dkr|d |kr| j| jkr|r|dkr|t|kr|   n@||| }|  jt|7  _t| j	r|
| j	}| j| |}n|rt|d ks|dkr|| dkr4|   ||| D ]$}	|	dkrX|   n
| |	 q@|   |}nn|d ks|d	k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 k	rD|dk}|dk}|d7 }qF| dd d S )Nr   r   TFr   r+   r  r<   
    
  z''r.   )rK   ra   r   r   r   r1   r2   rc   r   rA   r  r@   rm   )
r    textr   spacesbreaksr   r  r   r  brr   r   r   r     s|    












zEmitter.write_single_quotedr   r   btnvfrer   \N_LP) 	r<   r=   r   r   r	  r
  u    u    c                 C   s  | j r*| jd k	r*|   | jdkr*|   | dd d }}|t|krd }|t|k rd|| }|d ks|dksd|  krdksn | jrd|  krdksn d	|  krd
ksn ||k r||| }|  jt|7  _t| j	r|
| j	}| j| |}|d k	r|| jkr8d| j|  }n<|dkrPdt| }n$|dkrhdt| }ndt| }|  jt|7  _t| j	r|
| j	}| j| |d }d|  k rt|d k rn n|dks||kr| j||  | jkr|r||| d }||k r$|}|  jt|7  _t| j	rN|
| j	}| j| |   d| _d| _|| dkrd}|  jt|7  _t| j	r|
| j	}| j| |d7 }q>| dd d S )Nr   r   Tu   "\  ﻿r   r  r
  r  r  r  r      ÿz\x%02Xu   ￿z\u%04Xz\U%08Xr+   F)rK   ra   r   r   r   r1   rZ   r2   r   rA   r  r@   rm   ESCAPE_REPLACEMENTSr   rc   rP   rQ   )r    r  r   r   r  r   r  r   r   r   r     s    

 
 
 




 



zEmitter.write_double_quotedc              	   C   s   d}d}d}|r|d dkr0| j }|t|7 }n|| jrdD ]b}d}|||}|dkrXqz||d  dkrnW qW n tk
r   Y nX |d7 }qB|dkr: qq:|dkr| j }|d d	krd
}nt|dks|d d	krd}||7 }|||fS )Nr   r   r  )z
---z
...r/      z 
r+   r  r   r*   +)r`   r   rK   findr,   r1   )r    r  rI   r   hintsr  posr   r   r   determine_block_hintse  s:    
zEmitter.determine_block_hintsc                 C   s\  |  |\}}}| d| d |dkr.d| _|   d}d}d}d }}	|	t|krXd }
|	t|k rp||	 }
|r|
d ks|
dkr|s|
d k	r|
dkr|| dkr|   |
dk}|||	 D ] }|dkr|   q| | q|
d k	r|   |	}n:|rx|
dkr4|d	 |	kr0| j| jkr0|   nB|||	 }|  jt|7  _t| j	rf|
| j	}| j| |	}n|
d ks|
d
kr4|||	 }|  jt|7  _t| j	r|
| j	}| j| |
dkr|	t|d	 k r||	d   s|   |   |	d7 }	ntd|
d kr0|   |	}|
d k	rN|
dk}|
dk}|	d	7 }	qJd S )Nr   Tr/  Fr   u
   
  r   r<   r+   u    
  r&  r.   z*unexcpected fold indicator \a before spacer  )r3  r   rU   r   r1   r   r2   rc   r   rA   r  r@   rm   isspacer   )r    r  r1  _indent
_indicatorr  r  r  r   r  r   r  r  r   r   r   r     sz    




$


zEmitter.write_foldedc              	   C   s  |  |\}}}| d| d z |d d }|r>| j| W n ttfk
rX   Y nX |dkrhd| _|   d}d }}|t|krd }	|t|k r|| }	|r4|	d ks|	dkr||| D ] }
|
dkr|   q| |
 q|	d k	r.| j	r&| j
d k	r| j
nd}| jd||   n|   |}nZ|	d ksH|	dkr||| }t| jrl|| j}| j| |	d kr|   |}|	d k	r|	dk}|d7 }q|d S )	Nr   Tr+   r   r/  r  r<   r   )r3  r   r@   rm   	TypeErrorr,   rU   r   r1   rK   rI   r   r   rA   r  )r    r  r   r1  r5  r6  r  r   r  r   r  Zidnxr  r   r   r   r     sP    



zEmitter.write_literalc           
      C   sT  | j r2| jd k	r,|   | jdkr2|   nd| _|s:d S | jstd}|  jt|7  _| jrh|	| j}| j
| d| _d| _d}d}d }}|t|krPd }|t|k r|| }|r<|dkr,|d |kr| j| jkr|r|   d| _d| _n>||| }|  jt|7  _| jr*|	| j}| j
| |}n|r|dkr,|| dkrb|   ||| D ]$}	|	dkr|   n
| |	 qn|   d| _d| _|}n~|d ks|dkr,||| }|  jt|7  _| jr|	| j}z| j
| W n"   tjt|d   Y nX |}|d k	rF|dk}|dk}|d7 }qd S )	Nr   Tr   Fr+   r  r<   r  )rK   ra   r   r   rU   rP   r2   r1   rA   r  r@   rm   rQ   rc   r[   stdoutrepr)
r    r  r   r  r  r  r   r  r   r  r   r   r   r     s|    







zEmitter.write_plainc                 C   s  |j }|s"|d dkr"|d d }z8|jj}|j rF|j drF| j}n|| jd k rXt W n tk
rx   | jd }Y nX zp|| j }| jr| r|dk rd}d| | }zt| jr|| j}W n t	k
r   Y nX | j
| W n tk
r    Y nX |s|   d S )Nr/   r<   r+   r   )r   Z
start_markr2   r  
ValueErrorstripr   rA   r  UnicodeDecodeErrorr@   rm   r7  r   )r    r   prer   colZ	nr_spacesr   r   r   write_comment;  s4    

zEmitter.write_commentc              	   C   s   |j d }|d krdS z^ttf}|D ]L}t||r@t|dd r@q$| jdkrR|   | j|dd t||r$d|_q$W n. t	k
r   t
jdt||  Y nX dS )Nr+   Fpre_doner   T)r=  zeventtt {} {})r   r{   rz   rw   r?   r2   r   r?  r@  r7  r[   r8  rm   formattype)r    rG   ZcommentsZstart_eventsr   r   r   r   r   _  s"    


zEmitter.write_pre_commentc                 C   s,   | j jd d krdS |jd }| | dS )Nr   FT)rG   r   r?  )r    rG   r   r   r   r   r   s  s
    

zEmitter.write_post_comment)
NNNNNNNNNN)FNF)F)FFFF)F)F)F)FF)N)T)T)N)T)F)Ir   r   r   r   r   r!   propertyr@   setterrp   rq   rr   ru   rs   ry   r   rD   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   r3  r   r   r   r?  r   r   r   r   r   r   r   ]   s             
h


	


)
3	



	!!#( 6



B
F!B
.
E
$)Z
__future__r   r   r[   Zruamel_yaml.errorr   r   Zruamel_yaml.eventsZruamel_yaml.compatr   r   r	   r
   r   r   r   ZAnyZDictZListZUnionZTextZTupleZOptionalZ
StreamType__all__r   objectr   r"   r   r   r   r   r   <module>   s   	$%