a
    ͝Gd                    @   s   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 ddgZG dd deZG dd	 d	ZG d
d dZG dd dZdS )    N)	YAMLErrorYAMLStreamError)*)_Fnprintdbg	DBG_EVENTcheck_anchorname_charnprintfEmitterEmitterErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   O/var/www/html/django/DPS/env/lib/python3.9/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
dZdd ZdS )Indentsc                 C   s
   g | _ d S r   )valuesr   r   r   r   r   7   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&   ?   s    zIndents.popc                 C   s*   z| j d d W S  ty$   Y dS 0 d S )N   F)r    
IndexErrorr!   r   r   r   last_seqC   s    zIndents.last_seqFc                 C   sr   t | jdk s| jd d s2t | jdks.|s2dS | jd d d urR| jd d nd}|rb|| S || | d S )N   r(   r   lenr    )r   Z
seq_indentcolumnZpre_commentbaser   r   r   seq_flow_alignL   s    $zIndents.seq_flow_alignc                 C   s
   t | jS r   r-   r!   r   r   r   __len__Z   s    zIndents.__len__N)F)	r   r   r   r   r"   r&   r*   r1   r2   r   r   r   r   r   5   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dd,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!!)r3   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 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v rx|| _)d | _*d | _+d | _,d | _-d | _.d| _/d| _0d S )N_emitterFr   T:i  r+   r(   
   P   
)r9   z
null)1dumpergetattrr5   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scalar_after_indicatoralt_null)r   r>   rW   rG   widthrX   Z
line_breakZblock_seq_indentr]   Zprefix_colonrV   r<   r   r   r   r   i   sh    "
zEmitter.__init__c                 C   s(   z| j W S  ty"   tdY n0 d S )Nz output stream needs to specified)_streamAttributeErrorr   r!   r   r   r   r>      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   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y6   |  Y S 0 d S )Ntyp)rn   r<   
serializerZ_serializerrl   r!   r   r   r   rp      s    

zEmitter.serializerc                 C   s
   t | jS r   )r.   rH   r!   r   r   r   
flow_level   s    zEmitter.flow_levelc                 C   s   g | _ d | _d S r   )rA   rC   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   rD   r"   need_more_eventsr&   rE   rC   r   rE   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)rD   
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)rD   rw   rx   CollectionStartEventDocumentEndEventZCollectionEndEventStreamEndEventr.   )r   countlevelrE   r   r   r   ry     s    


zEmitter.need_eventsFc                 C   sX   | j | j| | jd u r0|r(| j| _qTd| _n$|sT|  j| j  rJ| jn| j7  _d S r%   )rF   r"   rG   r_   r*   r^   r`   )r   flowsequence
indentlessr   r   r   increase_indent#  s    

zEmitter.increase_indentc                 C   sR   t | jtr<| jjr*t| jds*| jj| _|   | j| _nt	t
d| jdd S )Nr?   z1expected StreamStartEvent, but got {self_event!s}Z
self_event)rw   rE   ZStreamStartEventr?   rn   r>   write_stream_startexpect_first_document_startrC   r   r   r!   r   r   r   rB   >  s    

zEmitter.expect_stream_startc                 C   s   t td| jdd S )Nz(expected nothing, but got {self_event!s}r   )r   r   rE   r!   r   r   r   expect_nothingJ  s    zEmitter.expect_nothingc                 C   s   | j ddS NT)first)expect_document_startr!   r   r   r   r   R  s    z#Emitter.expect_first_document_startc           	      C   sv  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| _nNt | jtr`| jrN| dd |   |   | j| _nttd| jdd S )N...T---z3expected DocumentStartEvent, but got {self_event!s}r   )rw   rE   rx   versiontagsrS   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyrc   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitrW   check_empty_documentexpect_document_rootrC   r~   write_stream_endr   r   r   )	r   r   version_textZhandleshandleprefixhandle_textprefix_textimplicitr   r   r   r   V  sZ    





zEmitter.expect_document_startc                 C   sX   t | jtrB|   | jjr0| dd |   |   | j| _nt	t
d| jdd S )Nr   Tz1expected DocumentEndEvent, but got {self_event!s}r   )rw   rE   r}   r   r   r   flush_streamr   rC   r   r   r!   r   r   r   expect_document_end  s    
zEmitter.expect_document_endc                 C   s   | j | j | jdd d S )NT)root)rA   r"   r   expect_noder!   r   r   r   r     s    zEmitter.expect_document_rootc           	      C   sR  || _ || _d}|| _|| _t| jtr4|   nt| jtt	fr<| 
drht| jtrh| jrhd| _|rt| jtr| js|   |   t| jtr|   qNt| jtr| j| j }}| jjrJ| jjdu r| | jrd| _d| _| jjr | j}| | jr:| jjr*| jjd d  }|| _| j | _| jjrJ|| _| jsn| jsn| jjsn|  rz| | n|   nt| jtrN| jjdu r| jjr| | j | jjr| jjd r| | j | jjr| jjd d  }| js| js| jjs|  r2| j | jj!dk|d n| "  nt#t$d| jdd S )	NF&Tr,   r(   )singleforce_flow_indentz*expected NodeEvent, but got {self_event!s}r   )%rI   rJ   rK   rL   rw   rE   
AliasEventexpect_aliasScalarEventr|   process_anchorrh   r   process_tagexpect_scalarrz   rO   rR   comment
flow_stylewrite_post_commentr/   write_pre_commentrF   r    rq   rW   check_empty_sequenceexpect_flow_sequenceexpect_block_sequencer{   check_empty_mappingexpect_flow_mappingZnr_itemsexpect_block_mappingr   r   )	r   r   r   mapping
simple_keyr   i2Zn2r/   r   r   r   r     s    









zEmitter.expect_nodec                 C   s.   | j jd u rtd| d | j | _d S )Nz!anchor is not specified for aliasr   )rE   anchorr   r   rA   r&   rC   r!   r   r   r   r     s    
zEmitter.expect_aliasc                 C   s0   | j dd |   | j | _| j | _d S )NT)r   )r   process_scalarrF   r&   rG   rA   rC   r!   r   r   r   r     s    zEmitter.expect_scalarc                 C   sh   |r| j ddd | j| j| j|}| jd| d ddd |sP| j ddd | jd | j| _	d S )NTr   r    [rN   )
r   rF   r1   r^   r/   r   rH   r"   expect_first_flow_sequence_itemrC   )r   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rn|   | j | _n4| js| j| jkr|   | j| j | jdd d S )Nr   ]Fr   Tr   )rw   rE   SequenceEndEventrF   r&   rG   rH   r   r   r   rq   write_line_breakrA   rC   rW   r/   ra   r   r"   expect_flow_sequence_itemr   r   poppedr   r   r   r      s    

z'Emitter.expect_first_flow_sequence_itemc                 C   s   t | jtr| j | _| j }|dks.J | 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   rE   r   rF   r&   rG   rH   rW   r   r   r   r   rR   rA   rC   r/   ra   r"   r   r   r   r   r   r   r     s"    
z!Emitter.expect_flow_sequence_itemc                 C   s   |r| j ddd | j| j| j|}d}|rR| jrR| jd dkrR| jsR| jsRd}| j	d| | ddd	 | j
| |s| j ddd | j| _d S )
NTFr   {r,   r    r   r   )r   rF   r1   r^   r/   rq   rH   rW   rV   r   r"   expect_first_flow_mapping_keyrC   )r   r   r   r   Z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rn|   | j | _nl| 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 )	Nr   }Fr   Tr   r   ?r   )rw   rE   MappingEndEventrF   r&   rG   rH   r   r   r   rq   r   rA   rC   rW   r/   ra   r   check_simple_keyr"    expect_flow_mapping_simple_valuer   expect_flow_mapping_valuer   r   r   r   r   B  s$    

z%Emitter.expect_first_flow_mapping_keyc                 C   s  t | jtr| j | _| j }|dv s.J | jrH| dd | 	  |dkr\| dd | jj
r~| jj
d r~| | j nd| _| 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   rE   r   rF   r&   rG   rH   rW   r   r   r   r   rR   rA   rC   r/   ra   r   r"   r   r   r   r   r   r   r   expect_flow_mapping_keyZ  s,    
zEmitter.expect_flow_mapping_keyc                 C   s,   |  | jd | j| j | jdd d S )NFTr   )r   rU   rA   r"   r   r   r!   r   r   r   r   y  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   )
rW   r/   ra   r   r   rU   rA   r"   r   r   r!   r   r   r   r     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   )rK   rO   rP   r/   r   r    expect_first_block_sequence_itemrC   )r   r   r   r   r   r     s    
zEmitter.expect_block_sequencec                 C   s   | j ddS r   )expect_block_sequence_itemr!   r   r   r   r     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rO   r+   r   )rw   rE   r   r   r   rF   r&   rG   rA   rC   rR   r/   r   r\   r   r^   r"   r   r   )r   r   Znonlr   r   r   r   r     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   )rK   rQ   r/   r   r   expect_first_block_mapping_keyrC   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   s4  |sJt | jtrJ| jjr0| jjd r0| | j | j | _| j | _	n| jjrj| jjd rj| | j | 
  |  rt | jttfsz | jjdkr| jdddd W n ty   Y n0 | j| j | jddd t | jtr0| jjdks0| jd n*| jdddd | j| j | jdd d S )Nr(   r   Tr   r   r   r   )rw   rE   r   r   r   rF   r&   rG   rA   rC   r   r   rz   r{   rg   r   rl   r"   !expect_block_mapping_simple_valuer   r   r>   rm   expect_block_mapping_value)r   r   r   r   r   r     s0    

z Emitter.expect_block_mapping_keyc                 C   sn   t | jdd dkrP| jdkr>| jd ur>d| j| j  | j }n| j}| |d | j	| j
 | jdd d S )Nrg   r   r   r   FTr   )r=   rE   rG   r]   r/   rT   rU   r   rA   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   rU   rA   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   rE   rz   boolrD   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   rE   r{   r   rD   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 u oL|jd u oL|joL|jdkS )NFr   r   )	rw   rE   rx   rD   r   r   tagr   valuert   r   r   r   r      s    

zEmitter.check_empty_documentc                 C   sZ  d}t | jtrD| jjd urD| jd u r6| | jj| _|t| j7 }t | jttfr| jj	d ur| j
d u rz| | jj	| _
|t| j
7 }t | jtr| jd u r| | jj| _|t| jj7 }|| jk oXt | jtpXt | jtr| jjdu pXt | jtr| jjdu pXt | jtrH| jjo6| jo6| jdv rH| jj pX|  pX|  S )Nr   Tz'")rw   rE   Z	NodeEventr   rd   prepare_anchorr.   r   r|   r   re   prepare_tagrf   analyze_scalarr   r   MAX_SIMPLE_KEY_LENGTHr   rz   r   r{   r   rg   r   r   r   )r   lengthr   r   r   r     s>    



	
zEmitter.check_simple_keyc                 C   sX   | j jd u rd | _dS | jd u r0| | j j| _| jrN| || j d d| _d | _dS )NFT)rE   r   rd   r   r   rR   )r   	indicatorr   r   r   r   /  s    
zEmitter.process_anchorc                 C   sZ  | j j}t| j tr| jd u rj|  | _| j jdkrj| jdkrj|dkrj| jd urj| j| j _d | _|  | _| j	rx|d u r| jdkr| j j
d s| jdkr| j j
d rd | _d S | j j
d r|d u rd}d | _n | j	r|d u r| j j
rd | _d S |d u rtd| jd u r| || _| jrP| | jd | jrP| jsPt| j trPd| _d | _d S )	Nr   'ztag:yaml.org,2002:nullr   r(   r3   ztag is not specifiedT)rE   r   rw   r   rg   choose_scalar_styler   ri   rf   rW   r   re   r   r   r   rJ   rq   rR   )r   r   r   r   r   r   =  s\    







zEmitter.process_tagc                 C   s2  | j d u 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v r| j
s| js| j jr| jjS | jjs| j jrd| jjv sd	| jjv 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   r9   )rf   r   rE   r   rg   rW   r   rL   r   r   rq   r   r   r   r   r   r!   r   r   r   r   g  sX    



zEmitter.choose_scalar_stylec              	   C   s  | j d u r| | jj| _ | jd u r.|  | _| j }| jrJ| jsJ| 	  | jdkrh| 
| j j| n| jdkr| | j j| n| jdkr| | j j | jjr| jjd r| jjd j| jkr| jd | jjd _n| jdkrlz| jjd d }W n ttfy   d}Y n0 | | j j| | jjr|| jjd r|| jjd j| jkr|| jd | jjd _n| | j j| d | _ d | _| jjr| | j d S )Nr   r   >r   r(   |r   )rf   r   rE   r   rg   r   rL   rJ   rq   r   write_double_quotedr   write_single_quotedwrite_foldedr   r/   rG   r)   	TypeErrorwrite_literalwrite_plainr   )r   splitZcmxr   r   r   r     sL    









zEmitter.process_scalarc                 C   s0   |\}}|dkr"t td||dtd||dS )Nr(   z-unsupported YAML version: {major:d}.{minor:d})majorminorz{major:d}.{minor:d}r   r   )r   r   r   r   r   r   r   r     s    zEmitter.prepare_versionc                 C   s   |st d|d dks$|d dkr4t td|d|dd D ]`}d|  krXd	ks@n d
|  krndks@n d|  krdks@n |dv s@t td||dq@|S )Nztag handle must not be emptyr   r3   r,   z2tag handle must start and end with '!': {handle!r})r   r(   09AZazz-_z6invalid character {ch!r} in the tag handle: {handle!r})chr   r   )r   r   r  r   r   r   r     s     
JzEmitter.prepare_tag_handlec           	      C   s4  |st dg }d }}|d dkr(d}d}| jrXt| jdd}|d u sP|dkrX|d7 }|t|k r|| }d	|  krd
ksn d|  krdksn d|  krdksn ||v r|d7 }qX||k r||||  |d  }}|}|D ]}|tdt|d qqX||k r*||||  d|S )Nztag prefix must not be emptyr   r3   r(   -;/?:@&=+$,_.~*'()[]r   r(   r+   #r   r   r   r   r   r  %{ord_ch:02X}Zord_chr   )r   r<   r=   r.   r"   r   ordjoin)	r   r   chunksstartendch_setr   r  datar   r   r   r     s0    J

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 }}d}	| jrt| jdd}
|
d u s|
dkr|	d7 }	|t|k r|| }d|  krd	ks.n d
|  krdks.n d|  krdks.n ||	v s.|dkr8|dkr8|d7 }q||k rT||||  |d  }}|}|D ]}|t	dt
|d qhq||k r||||  d|}|rt	d||dS t	d|dS d S )Nztag must not be emptyr3   r   r  r   r  r  r   r   r   r   r   r  r(   r  r  r   z{handle!s}{suffix_text!s})r   suffix_textz!<{suffix_text!s}>)r  )r   r   rc   r   
startswithr.   r<   r=   r"   r   r  r	  )r   r   r   suffixprefixesr   r
  r  r  r  r   r  r  r  r   r   r   r     sf    "








zEmitter.prepare_tagc                 C   s4   |st d|D ]}t|st td||dq|S )Nzanchor must not be emptyz2invalid character {ch!r} in the anchor: {anchor!r})r  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v }d}d}d}|t|k r|| }|dkr|d	v rd}d}|d
v r| jjdkrd}nt|dkrd}|rd}|dkr|rd}d}nZ|dv rd}|dkr(| jjdkr(d}|dkr@|r@d}d}|dkrX|rXd}d}|dv 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v r|dkrbd}|t|d krxd}	|rd}d}d}nd}d}|d7 }|dv }|d t|kp||d  dv }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   r6   r  	   
  r9   r   ~          ퟿      �u   𐀀u   􏿿   ﻿)r   r  r.   rp   Zuse_versionr[   rX   r@   )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  )r?   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)
rN   rO   r/   r.   rS   r   r?   r  r>   rm   )r   r   Zneed_whitespacerN   rO   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   )rG   rO   r/   rN   r   rR   r   r?   r  r>   rm   )r   rG   r  r   r   r   r     s&    


zEmitter.write_indentc                 C   sT   |d u r| j }d| _d| _|  jd7  _d| _t| jrD|| j}| j	| d S )NTr(   r   )
rb   rN   rO   rM   r/   r   r?   r  r>   rm   )r   r  r   r   r   r     s    
zEmitter.write_line_breakc                 C   s6   t d|d}| jr|| j}| j| |   d S )Nz%YAML {version_text!s})r   r   r?   r  r>   rm   r   )r   r   r  r   r   r   r   !  s
    zEmitter.write_version_directivec                 C   s8   t d||d}| jr || j}| j| |   d S )Nz$%TAG {handle_text!s} {prefix_text!s})r   r   r  )r   r   r   r  r   r   r   r   )  s    zEmitter.write_tag_directiveTc           
      C   s^  | j r*| jd ur*|   | jdkr*|   | dd d}d}d }}|t|krNd }|t|k rl|| }|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	r|
| j	}| j| |}n|rt|d u s|dvr|| dkr4|   ||| D ]$}	|	dkrX|   n
| |	 q@|   |}nn|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rD|dk}|dv }|d7 }qF| dd d S )Nr   r   TFr   r(   r  r9   
    
  z''r+   )rI   r_   r   r   r   r.   r/   ra   r   r?   r  r>   rm   )
r   textr   spacesbreaksr  r  r  r  brr   r   r   r   7  s|    












zEmitter.write_single_quotedr   r   btnvfrer   \N_LP) 	r9   r:   r   r,  r  r  u    u    c                 C   s  | j r*| jd ur*|   | jdkr*|   | dd d }}|t|krd }|t|k rd|| }|d u s|dv 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 ur|| jv r8d| j|  }nH|dkrTtdt|d}n,|dkrptdt|d}ntdt|d}|  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 r0|}|  jt|7  _t| j	rZ|
| 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{ord_ch:02X}r  u   ￿z\u{ord_ch:04X}z\U{ord_ch:08X}r(   F)rI   r_   r   r   r   r.   rX   r/   r   r?   r  r>   rm   ESCAPE_REPLACEMENTSr   r  ra   rN   rO   )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v r0| j }|t|7 }nz| jrdD ]`}d}|||}|dkrXqz||d  dv rnW qW n ty   Y n0 |d7 }qB|dkr: qq:|dkr| j }|d d	vrd
}nt|dks|d d	v rd}||7 }|||fS )Nr   r   r   )z
---z
...r,      z 
r(   r  r   r'   +)r^   strrI   findr)   r.   )r   r!  rG   r   hintsr  posr   r   r   determine_block_hints  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 u s|
dvr|s|
d ur|
dkr|| dkr|   |
dk}|||	 D ] }|dkr|   q| | q|
d ur|   |	}n:|rx|
dkr4|d	 |	kr0| j| jkr0|   nB|||	 }|  jt|7  _t| j	rf|
| j	}| j| |	}n|
d u s|
d
v r4|||	 }|  jt|7  _t| j	r|
| j	}| j| |
dkr|	t|d	 k r||	d   s|   |   |	d7 }	ntd|
d u r0|   |	}|
d urN|
dv }|
dk}|	d	7 }	qJd S )Nr   Tr;  Fr   u
   
  r   r9   r(   u    
  r2  r+   z*unexcpected fold indicator \a before spacer  )r@  r   rS   r   r.   r   r/   ra   r   r?   r  r>   rm   isspacer   )r   r!  r>  _indent
_indicatorr  r"  r#  r  r  r  r$  r  r   r   r   r     sz    




$


zEmitter.write_foldedc                 C   s  |  |\}}}t|tsd}| d| | d |dkr@d| _|   d}d }}|t|kr~d }	|t|k rz|| }	|r|	d u s|	dvrb||| D ] }
|
dkr|   q| |
 q|	d ur| jr| jd ur| jnd}| j	
d||   n|   |}nZ|	d u s|	dv rb||| }t| jr@|| j}| j	
| |	d u r^|   |}|	d urt|	dv }|d	7 }qTd S )
Nr   r   Tr;  r   r  r9   r   r(   )r@  rw   r<  r   rS   r   r.   rI   rG   r>   rm   r   r   r?   r  )r   r!  r   r>  rB  rC  r#  r  r  r  r$  Zidnxr  r   r   r   r   3  sH    




zEmitter.write_literalc           
      C   sT  | j r2| jd u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vr,|| dkrb|   ||| D ]$}	|	dkr|   n
| |	 qn|   d| _d| _|}n~|d u s|dv r,||| }|  jt|7  _| jr|	| j}z| j
| W n"   tjt|d   Y n0 |}|d urF|dk}|dv }|d7 }qd S )	Nr   Tr   Fr(   r  r9   r   )rI   r_   r   r   rS   rN   r/   r.   r?   r  r>   rm   rO   ra   rY   stdoutrepr)
r   r!  r   r  r"  r#  r  r  r  r$  r   r   r   r   i  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yv   | jd }Y n0 zz|| j }| jr| r|dk r|d dkrd}d| | }zt| jr|| j}W n t	y   Y n0 | j
| W n ty    Y n0 |s|   d S )Nr,   r9   r(   r   r   )r   Z
start_markr/   r  
ValueErrorstripr   r?   r  UnicodeDecodeErrorr>   rm   r   r   )r   r   prer   colZ	nr_spacesr   r   r   write_comment  s4    
"
zEmitter.write_commentc              	   C   s   |j d }|d u 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	y   t
jdt||  Y n0 dS )Nr(   Fpre_doner   T)rI  zeventtt {} {})r   r{   rz   rw   r=   r/   r   rK  rL  r   rY   rD  rm   formattype)r   rE   commentsZstart_eventsr   r   r   r   r     s"    


zEmitter.write_pre_commentc                 C   s,   | j jd d u rdS |jd }| | dS )Nr   FT)rE   r   rK  )r   rE   r   r   r   r   r     s
    

zEmitter.write_post_comment)
NNNNNNNNNN)FNF)F)FFFF)F)FF)F)F)FF)N)T)T)N)T)F)Ir   r   r   r   r   r   propertyr>   setterrp   rq   rr   ru   rs   ry   r   rB   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   r9  r   r@  r   r   r   rK  r   r   r   r   r   r   r   _   s             
l


	


.
K	




 	"*#1	- 6


B
F!B
6
E
$)rY   Zruamel.yaml.errorr   r   Zruamel.yaml.eventsZruamel.yaml.compatr   r   r   r   r	   r
   AnyDictListUnionTextTupleOptionalZ
StreamType__all__r   r   r   r   r   r   r   r   <module>
   s    *