o
    h                    @   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nprintfF)AnyDictListUnionTextTupleOptional)
StreamTypeEmitterEmitterErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   [/var/www/html/magazine_api/magazine_env/lib/python3.10/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      
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 w )N   F)r(   
IndexErrorr)   r   r   r   last_seqC   s
   zIndents.last_seqFc                 C   sr   t | jdk s| jd d st | jdks|sdS | jd d d ur)| jd d nd}|r1|| S || | d S )N   r1   r   lenr(   )r%   Z
seq_indentcolumnZpre_commentbaser   r   r   seq_flow_alignL   s   $zIndents.seq_flow_alignc                 C   
   t | jS r   r6   r)   r   r   r   __len__Z   r*   zIndents.__len__NF)	r   r   r   r&   r+   r/   r3   r:   r<   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!!)r>   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| _/d| _0d S )N_emitterFr   T:i  r4   r1   
   P   
)rD   z
null)1dumpergetattrr@   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liner8   
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%   rI   rb   rR   widthrc   Z
line_breakZblock_seq_indentrh   Zprefix_colonra   rG   r   r   r   r&   i   sh   
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   rI      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   rv   )r%   r,   r   r   r   rI      s
   

c                 C   s8   zt | jdr| jjW S | jjW S  ty   |  Y S w )Ntyp)ry   rG   
serializerZ_serializerrw   r)   r   r   r   r{      s   

zEmitter.serializerc                 C   r;   r   )r7   rS   r)   r   r   r   
flow_level   s   
zEmitter.flow_levelc                 C   s   g | _ d | _d S r   )rL   rN   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 r.   )	r   r   r   rO   r+   need_more_eventsr/   rP   rN   r%   rP   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   r1   r4      F)rO   
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   r1   r5   F)rO   r   r   CollectionStartEventDocumentEndEventZCollectionEndEventStreamEndEventr7   )r%   countlevelrP   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 r.   )rQ   r+   rR   rj   r3   ri   rk   )r%   flowsequence
indentlessr   r   r   increase_indent#  s   


zEmitter.increase_indentc                 C   sP   t | jtr| jjrt| jds| jj| _|   | j| _d S t	t
d| jd)NrJ   z1expected StreamStartEvent, but got {self_event!s}Z
self_event)r   rP   ZStreamStartEventrJ   ry   rI   write_stream_startexpect_first_document_startrN   r   r   r)   r   r   r   rM   >  s   
zEmitter.expect_stream_startc                 C   s   t td| jd)Nz(expected nothing, but got {self_event!s}r   )r   r   rP   r)   r   r   r   expect_nothingJ  s   zEmitter.expect_nothingc                 C      | j ddS NT)first)expect_document_startr)   r   r   r   r   R     z#Emitter.expect_first_document_startc           	      C   sl  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td| jd)N...T---z3expected DocumentStartEvent, but got {self_event!s}r   )r   rP   r   versiontagsr^   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyrn   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitrb   check_empty_documentexpect_document_rootrN   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   sV   t | jtr"|   | jjr| dd |   |   | j| _d S t	t
d| jd)Nr   Tz1expected DocumentEndEvent, but got {self_event!s}r   )r   rP   r   r   r   r   flush_streamr   rN   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)rL   r+   r   expect_noder)   r   r   r   r     s   zEmitter.expect_document_rootc           	      C   s6  || _ || _d}|| _|| _t| jtr|   d S t| jtt	fr| 
dr4t| jtr4| jr4d| _|rCt| jtrC| jsC|   |   t| jtrS|   d S t| jtr| j| j}}| jjr| jjdu rv| | jrvd| _d| _| jjr}| j}| | jr| jjr| jjd d  }|| _| j | _| jjr|| _| 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jr| jjd d  }| js| js| jjs|  r
| j | jj!dk|d d S | "  d S d S t#t$d| jd)	NF&Tr5   r1   )singleforce_flow_indentz*expected NodeEvent, but got {self_event!s}r   )%rT   rU   rV   rW   r   rP   
AliasEventexpect_aliasScalarEventr   process_anchorrs   r   process_tagexpect_scalarr   rZ   r]   comment
flow_stylewrite_post_commentr8   write_pre_commentrQ   r(   r|   rb   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n2r8   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   )rP   anchorr   r   rL   r/   rN   r)   r   r   r   r     s   
zEmitter.expect_aliasc                 C   s0   | j dd |   | j | _| j | _d S )NT)r   )r   process_scalarrQ   r/   rR   rL   rN   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 |s(| j ddd | jd | j| _	d S )NTr   r    [rY   )
r   rQ   r:   ri   r8   r   rS   r+   expect_first_flow_sequence_itemrN   )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r7|   | j | _d S | jsH| j| jkrL|   | j| j | jdd d S )Nr   ]Fr   Tr   )r   rP   SequenceEndEventrQ   r/   rR   rS   r   r   r   r|   write_line_breakrL   rN   rb   r8   rl   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   rP   r   rQ   r/   rR   rS   rb   r   r   r   r   r]   rL   rN   r8   rl   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}|r)| jr)| jd dkr)| js)| js)d}| j	d| | ddd	 | j
| |sD| j ddd | j| _d S )
NTFr   {r5   r    r   r   )r   rQ   r:   ri   r8   r|   rS   rb   ra   r   r+   expect_first_flow_mapping_keyrN   )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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   rP   MappingEndEventrQ   r/   rR   rS   r   r   r   r|   r   rL   rN   rb   r8   rl   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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   rP   r   rQ   r/   rR   rS   rb   r   r   r   r   r]   rL   rN   r8   rl   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   r`   rL   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   )
rb   r8   rl   r   r   r`   rL   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   )rV   rZ   r[   r8   r   r    expect_first_block_sequence_itemrN   )r%   r   r   r   r   r     s   
zEmitter.expect_block_sequencec                 C   r   r   )expect_block_sequence_itemr)   r   r   r   r     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 )
Nr1   Fr   r   -TrZ   r4   r   )r   rP   r   r   r   rQ   r/   rR   rL   rN   r]   r8   r   rg   r   ri   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   )rV   r\   r8   r   r   expect_first_block_mapping_keyrN   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 | 
  |  rt | 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jdks| jd d S d S d S | jdddd | j| j | jdd d S )Nr1   r   Tr   r   r   r   )r   rP   r   r   r   rQ   r/   rR   rL   rN   r   r   r   r   rr   r   rw   r+   !expect_block_mapping_simple_valuer   r   rI   rx   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 )Nrr   r   r   r   FTr   )rH   rP   rR   rh   r8   r_   r`   r   rL   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   r`   rL   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 r.   )r   rP   r   boolrO   r   r)   r   r   r   r     
   zEmitter.check_empty_sequencec                 C   r   r.   )r   rP   r   r   rO   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   rP   r   rO   r   r   tagr   valuer   r   r   r   r      s   

zEmitter.check_empty_documentc                 C   sD  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o| jdv o| jj p|  p|  S )Nr   Tz'")r   rP   Z	NodeEventr   ro   prepare_anchorr7   r   r   r   rp   prepare_tagrq   analyze_scalarr   r   MAX_SIMPLE_KEY_LENGTHr   r   r   r   r   rr   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 r| | j j| _| jr'| || j d d| _d | _dS )NFT)rP   r   ro   r   r   r]   )r%   	indicatorr   r   r   r   /  s   
zEmitter.process_anchorc                 C   sP  | j j}t| j trg| jd u r5|  | _| j jdkr5| jdkr5|dkr5| jd ur5| j| j _d | _|  | _| j	r<|d u rW| jdkrG| j j
d sR| jdkrW| j j
d rWd | _d S | j j
d rf|d u rfd}d | _n| j	rn|d u rw| j j
rwd | _d S |d u rtd| jd u r| || _| jr| | jd | jr| jst| j trd| _d | _d S )	Nr   'ztag:yaml.org,2002:nullr   r1   r>   ztag is not specifiedT)rP   r   r   r   rr   choose_scalar_styler   rt   rq   rb   r   rp   r   r   r   rU   r|   r]   )r%   r   r   r   r   r   =  sJ   








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   r4   r   Tz|>r   rD   )rq   r   rP   r   rr   rb   r   rW   r   r   r|   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r%| js%| 	  | jdkr3| 
| j j| n| jdkrA| | j j| nw| jdkrl| | j j | jjrk| jjd rk| jjd j| jkrk| jd | jjd _nL| jdkrz
| jjd d }W n ttfy   d}Y nw | | 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 d S )Nr   r   >r   r1   |r   )rq   r   rP   r   rr   r   rW   rU   r|   r   write_double_quotedr   write_single_quotedwrite_foldedr   r8   rR   r2   	TypeErrorwrite_literalwrite_plainr   )r%   splitZcmxr   r   r   r     sP   








zEmitter.process_scalarc                 C   s0   |\}}|dkrt td||dtd||dS )Nr1   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rt td|d|dd D ]0}d|  kr,d	ksPn d
|  kr7dksPn d|  krBdksPn |dv sPt td||dq |S )Nztag handle must not be emptyr   r>   r5   z2tag handle must start and end with '!': {handle!r})r   r1   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   s:  |st dg }d }}|d dkrd}d}| jr,t| jdd}|d u s(|dkr,|d7 }|t|k r|| }d	|  kr@d
ks[n d|  krKdks[n d|  krVdks[n ||v r`|d7 }n%||k rm||||  |d  }}|}|D ]}|tdt|d qw|t|k s2||k r||||  d|S )Nztag prefix must not be emptyr   r>   r1   -;/?:@&=+$,_.~*'()[]r   r1   r4   #r  r  r  r  r  r  %{ord_ch:02X}Zord_chr   )r   rG   rH   r7   r+   r   ordjoin)	r%   r   chunksstartendch_setr   r  datar   r   r   r     s2   J

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 }}d}	| jrXt| jdd}
|
d u sT|
dkrX|	d7 }	|t|k r|| }d|  krld	ksn d
|  krwdksn d|  krdksn ||	v s|dkr|dkr|d7 }n%||k r||||  |d  }}|}|D ]}|t	dt
|d q|t|k s^||k r||||  d|}|rt	d||dS t	d|dS )Nztag must not be emptyr>   r   r  r   r  r  r  r  r  r  r  r  r1   r  r  r   z{handle!s}{suffix_text!s})r   suffix_textz!<{suffix_text!s}>)r  )r   r   rn   r   
startswithr7   rG   rH   r+   r   r  r  )r%   r   r   suffixprefixesr   r  r  r  r  r   r  r  r  r   r   r   r     sP   "


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   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   r1   u     	
  r   z#,[]{}&*!|>'"%@`z?:)r1   r1   r   z,[]{}r   rA   r  	   
  rD   r   ~          ퟿      �u   𐀀u   􏿿   ﻿)r   r  r7   r{   Zuse_versionrf   rc   rK   )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  


 PzEmitter.analyze_scalarc                 C   s   t | jdr| j  d S d S )Nflush)ry   rI   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)  )rJ   r  rI   rx   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)
rY   rZ   r8   r7   r^   r   rJ   r-  rI   rx   )r%   r   Zneed_whitespacerY   rZ   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   )rR   rZ   r8   rY   r   r]   r   rJ   r-  rI   rx   )r%   rR   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 )NTr1   r   )
rm   rY   rZ   rX   r8   r   rJ   r-  rI   rx   )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   rJ   r-  rI   rx   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   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   r1   r"  rD   
    
  z''r4   )rT   rj   r   r   r   r7   r8   rl   r   rJ   r-  rI   rx   )
r%   textr  spacesbreaksr  r  r  r  brr   r   r   r  7  sz   








4zEmitter.write_single_quotedr  r  btnvfrer   \N_LP) 	rD   rE   r   r;  r$  r%  u    u    c                 C   s  | j r| jd ur|   | jdkr|   | dd d }}|t|kr_d }|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rtdt|d}n|dkrtdt|d}ntdt|d}|  jt|7  _t| j	r|
| j	}| j| |d }d|  k rt|d k rUn no|dks||krU| j||  | jkrU|rU||| d }||k r|}|  jt|7  _t| j	r!|
| j	}| j| |   d| _d| _|| dkrUd}|  jt|7  _t| j	rO|
| j	}| j| |d7 }|t|ks&| 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}r1   F)rT   rj   r   r   r   r7   rc   r8   r   rJ   r-  rI   rx   ESCAPE_REPLACEMENTSr   r  rl   rY   rZ   )r%   r0  r  r  r  r  r  r   r   r   r    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   r/  )z
---z
...Tr5      z 
r1   r"  r   r0   +)ri   strrT   findr2   r7   )r%   r0  rR   r   hintsr  posr   r   r   determine_block_hints  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   TrJ  Fr   u
   
  r   rD   r1   u    
  rA  r4   z*unexcpected fold indicator \a before spacer"  )rO  r   r^   r   r7   r   r8   rl   r   rJ   r-  rI   rx   isspacer   )r%   r0  rM  _indent
_indicatorr*  r1  r2  r  r  r  r3  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rd }	|t|k r<|| }	|r|	d u sF|	dvr||| D ]}
|
dkrW|   qL| |
 qL|	d ur}| jry| jd url| 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s0d S d S )
Nr   r   TrJ  r   r"  rD   r   r1   )rO  r   rK  r   r^   r   r7   rT   rR   rI   rx   r   r   rJ   r-  )r%   r0  r   rM  rQ  rR  r2  r  r  r  r3  Zidnxr  r   r   r   r  3  sL   


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   Fr1   r"  rD   r/  )rT   rj   r   r   r^   rY   r8   r7   rJ   r-  rI   rx   rZ   rl   rd   stdoutrepr)
r%   r0  r  r  r1  r2  r  r  r  r3  r   r   r   r  i  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 z=|| j }| jrU| rU|dk rU|d dkrUd}d| | }zt| jrg|| j}W n	 t	yq   Y nw | j
| W n ty    w |s|   d S d S )Nr5   rD   r1   r   r   )r   Z
start_markr8   r  
ValueErrorstripr   rJ   r-  UnicodeDecodeErrorrI   rx   r  r   )r%   r   prer   colZ	nr_spacesr   r   r   write_comment  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 )Nr1   Fpre_doner   T)rX  zeventtt {} {})r   r   r   r   rH   r8   r   rZ  r[  r  rd   rS  rx   formattype)r%   rP   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)rP   r   rZ  )r%   rP   r   r   r   r   r     s
   

zEmitter.write_post_comment)
NNNNNNNNNN)FNFr=   )FFFF)FFr   )T)Ir   r   r   r   r   r&   propertyrI   setterr{   r|   r}   r   r~   r   r   rM   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  rH  r  rO  r  r  r  rZ  r   r   r   r   r   r   r   _   s    
l


	


.
K
	



 	"*#1	- 6


B
F!
B
6
E$)rd   Zruamel.yaml.errorr   r   Zruamel.yaml.eventsZruamel.yaml.compatr   r   r   r   r	   r
   typingr   r   r   r   r   r   r   r   __all__r   r   r'   r   r   r   r   r   <module>   s   	 *