o
    ei                    @  s   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 	 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G dd deZdS )    )annotationsN)	YAMLErrorYAMLStreamError)*)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   Q/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/ruamel/yaml/emitter.pyr      s    c                   @  s    e Zd ZdddZdddZdS )ScalarAnalysisscalarr   empty	multilineallow_flow_plainboolallow_block_plainallow_single_quotedallow_double_quotedallow_blockreturnNonec	           	      C  s4   || _ || _|| _|| _|| _|| _|| _|| _d S Nr   r   r   r   r    r!   r"   r#   )	selfr   r   r   r   r    r!   r"   r#   r   r   r   __init__!   s   
zScalarAnalysis.__init__strc                 C  sD   d| j d| j d| j d| j d| j d| j d| j d| j S )	Nzscalar=z, empty=z, multiline=z, allow_flow_plain=z, allow_block_plain=z, allow_single_quoted=z, allow_double_quoted=z, allow_block=r'   r(   r   r   r   __repr__5   s   DzScalarAnalysis.__repr__N)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       s    
r   c                   @  sV   e Zd ZdddZddd	Zdd
dZdddZdddZ	d d!ddZd"ddZ	dS )#Indentsr$   r%   c                 C  s
   g | _ d S r&   )valuesr+   r   r   r   r)   ;      
zIndents.__init__valr   seqc                 C  s   | j ||f d S r&   )r.   append)r(   r0   r1   r   r   r   r2   >   s   zIndents.appendc                 C  s   | j  d S Nr   )r.   popr+   r   r   r   r4   A   s   zIndents.popr   c                 C  sD   z| j d d r| j d d rW dS W dS W dS  ty!   Y dS w )N   TFr.   
IndexErrorr+   r   r   r   seq_seqD   s   zIndents.seq_seqc                 C  s&   z| j d d W S  ty   Y dS w )Nr5   r6   Fr8   r+   r   r   r   last_seqL   s
   zIndents.last_seqF
seq_indentintcolumnpre_commentOptional[bool]c                 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   r7   r6   r   lenr.   )r(   r<   r>   r?   baser   r   r   seq_flow_alignT   s   $zIndents.seq_flow_alignc                 C  
   t | jS r&   rB   r+   r   r   r   __len__c   r/   zIndents.__len__Nr$   r%   )r0   r   r1   r   r$   r%   r$   r   r$   r   F)r<   r=   r>   r=   r?   r@   r$   r=   r$   r=   )
r   r   r   r)   r2   r4   r:   r;   rE   rG   r   r   r   r   r-   9   s    




	r-   c                   @  s@  e Zd ZddddZdZdZdZdZdZd	Z	dZ
	
	
	
	
	
	
	
	
	
	
ddddZedddZejdd!dZedd"d#Zedd%d&Zdd'd(Zdd*d+Zdd-d.Zdd0d1Z	2ddd6d7Zdd8d9Zdd:d;Zdd<d=Zddd?d@ZddAdBZddCdDZ	2	2	2	2dddHdIZddJdKZddLdMZdddOdPZddQdRZ ddSdTZ!	2dddVdWZ"ddXdYZ#ddZd[Z$dd\d]Z%dd^d_Z&dd`daZ'ddbdcZ(dddddeZ)ddfdgZ*ddhdiZ+dddjdkZ,ddldmZ-ddndoZ.ddpdqZ/ddrdsZ0ddtduZ1ddvdwZ2ddydzZ3dd{d|Z4dd}d~Z5dddZ6dddZ7dddZ8dddZ9dddZ:dddZ;dddZ<dddZ=dddZ>dddZ?	2	2ddddZ@dddZAddddZBdddZCdddZDddddZEddddddddddddddddZFddddZGdddZHdddńZIddddǄZJddddɄZKdddd̄ZLddd΄ZMdddЄZNd
S )r   !!!)rM   ztag:yaml.org,2002:rN      [],{}Nstreamr   	canonicalr   indentOptional[int]widthallow_unicoder@   
line_breakblock_seq_indenttop_level_colon_alignprefix_colon+brace_single_entry_mapping_in_flow_sequencedumperr$   r%   c                 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  rA   r6   
   P   
)re   z
null)1r`   getattrra   rU   encodingallow_space_breakstatesexpect_stream_startstateeventseventr-   indentsrW   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_colonr_   rV   rZ   sys
maxunicodeunicode_supplementarysequence_dash_offsetr]   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(   rU   rV   rW   rY   rZ   r[   r\   r]   r^   r_   r`   r   r   r   r)   x   sh   
zEmitter.__init__c                 C  s    z| j W S  ty   tdw )Nz#output stream needs to be specified)_streamAttributeErrorr   r+   r   r   r   rU      s
   zEmitter.streamr0   c                 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   r   )r(   r0   r   r   r   rU      s
   

c                 C  s8   zt | jdr| jjW S | jjW S  ty   |  Y S w )Ntyp)r   r`   
serializer_serializerr   r+   r   r   r   r      s   

zEmitter.serializerr=   c                 C  rF   r&   )rC   rq   r+   r   r   r   
flow_level   s   
zEmitter.flow_levelc                 C  s   g | _ d | _d S r&   )rk   rm   r+   r   r   r   dispose   s   
zEmitter.disposero   c                 C  sP   t trt| | j| |  s&| jd| _|   d | _|  rd S d S r3   )	r   r   r   rn   r2   need_more_eventsr4   ro   rm   r(   ro   r   r   r   emit  s   zEmitter.emitr   c                 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   r6   rA      F)rn   
isinstanceDocumentStartEventneed_eventsSequenceStartEventMappingStartEventr   r   r   r   r     s   






zEmitter.need_more_eventscountc                 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   r6   r7   F)rn   r   r   CollectionStartEventDocumentEndEventCollectionEndEventStreamEndEventrC   )r(   r   levelro   r   r   r   r     s   


zEmitter.need_eventsFflowsequence
indentlessc                 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 r3   )rp   r2   rW   r   r;   r   r   )r(   r   r   r   r   r   r   increase_indent*  s   


zEmitter.increase_indentc                 C  sN   t | jtr| jjrt| jds| jj| _|   | j| _d S t	d| j)Nri   z#expected StreamStartEvent, but got )
r   ro   StreamStartEventri   r   rU   write_stream_startexpect_first_document_startrm   r   r+   r   r   r   rl   F  s   
zEmitter.expect_stream_startc                 C  s   t d| j)Nzexpected nothing, but got )r   ro   r+   r   r   r   expect_nothingO  s   zEmitter.expect_nothingc                 C     | j ddS NT)first)expect_document_startr+   r   r   r   r   T     z#Emitter.expect_first_document_startr   c           	      C  sj  t | jtr| jjs| jjr| jr| dd |   | jjr+| | jj}| 	| | j
 | _| jjr]t| jj }|D ]}| jj| }|| j|< | |}| |}| || q?|ov| jj ov| j ov| jj ov| jj ov|   }|s|   | dd | jr|   | j| _d S t | jtr| jr| dd |   |   | j| _d S td| j)N...T---z%expected DocumentStartEvent, but got )r   ro   r   versiontagsr|   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyr   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitrV   check_empty_documentexpect_document_rootrm   r   write_stream_endr   r   )	r(   r   version_texthandleshandleprefixhandle_textprefix_textimplicitr   r   r   r   W  sP   



zEmitter.expect_document_startc                 C  sT   t | jtr"|   | jjr| dd |   |   | j| _d S t	d| j)Nr   Tz#expected DocumentEndEvent, but got )
r   ro   r   r   r   r   flush_streamr   rm   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)rk   r2   r   expect_noder+   r   r   r   r     s   zEmitter.expect_document_rootr   mapping
simple_keyc           	      C  sZ  || _ || _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| | n|   | j rd| _d| _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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$d| j)NF&Tr7   r6   )singleforce_flow_indentzexpected NodeEvent, but got )%rr   rs   rt   ru   r   ro   
AliasEventexpect_aliasScalarEventr   process_anchorr   r   process_tagexpect_scalarr   rx   r{   comment
flow_stylewrite_post_commentr>   write_pre_commentrp   r.   r   rV   check_empty_sequenceexpect_flow_sequenceexpect_block_sequencer:   r   check_empty_mappingexpect_flow_mappingnr_itemsexpect_block_mappingr   )	r(   r   r   r   r   r   i2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   )ro   anchorr   r   rk   r4   rm   r+   r   r   r   r     s   
zEmitter.expect_aliasc                 C  s0   | j dd |   | j | _| j | _d S )NT)r   )r   process_scalarrp   r4   rW   rk   rm   r+   r   r   r   r     s   zEmitter.expect_scalarr   c                 C  sj   |r	| j ddd | j| j| j|}| jd| | j ddd |s)| j ddd | jd | j	| _
d S )NTr   r    rw   rP   )r   rp   rE   r   r>   r   flow_seq_startrq   r2   expect_first_flow_sequence_itemrm   )r(   r   indr   r   r   r     s   
zEmitter.expect_flow_sequencec                 C  s   t | jtr@| j | _| j }|dksJ | | jd | jj	r/| jj	d r/| 
| j n	| jdkr8|   | j | _d S | jsI| j| jkrM|   | j| j | jdd d S NrP   Fr   Tr   )r   ro   SequenceEndEventrp   r4   rW   rq   r   flow_seq_endr   r   r   write_line_breakrk   rm   rV   r>   r   r   r2   expect_flow_sequence_itemr   r(   poppedr   r   r   r     s   

z'Emitter.expect_first_flow_sequence_itemc                 C  s   t | jtrH| j | _| j }|dksJ | jr%| | j	d | 
  | | jd | jjr=| jjd r=| | j nd| _| j | _d S | | j	d | jsX| j| jkr\| 
  | j| j | jdd d S r   )r   ro   r   rp   r4   rW   rq   rV   r   flow_seq_separatorr   r   r   r   r{   rk   rm   r>   r   r2   r   r   r   r   r   r   r     s"   
z!Emitter.expect_flow_sequence_itemr   c                 C  s   |r	| j ddd | j| j| j|}| j}|r*| jr*| jd dkr*| js*| j	s*d}| j
d| | ddd | j| |sE| j ddd | j| _d S )	NTFr   r7   rP    r   r   )r   rp   rE   r   r>   flow_map_startr   rq   rV   r_   r   r2   expect_first_flow_mapping_keyrm   )r(   r   r   r   map_initr   r   r   r   )  s*   
zEmitter.expect_flow_mappingc                 C  s   t | jtr@| j | _| j }|dksJ | | jd | jj	r/| jj	d r/| 
| j n	| jdkr8|   | j | _d S | jsI| j| jkrM|   | jsd|  rd| j| j | jddd d S | dd | j| j | jdd d S )NrS   Fr   Tr   r   ?r   )r   ro   MappingEndEventrp   r4   rW   rq   r   flow_map_endr   r   r   r   rk   rm   rV   r>   r   r   check_simple_keyr2    expect_flow_mapping_simple_valuer   expect_flow_mapping_valuer   r   r   r   r   A  s$   

z%Emitter.expect_first_flow_mapping_keyc                 C  s  t | jtrL| j | _| j }|dv sJ | jr%| | j	d | 
  |dkr0| | jd | jjrA| jjd rA| | j nd| _| j | _d S | | j	d | js\| j| jkr`| 
  | jsw|  rw| j| j | jddd d S | dd | j| j | jdd d S )	N)rS   r   Fr   r   Tr   r   r  )r   ro   r  rp   r4   rW   rq   rV   r   flow_map_separatorr   r  r   r   r{   rk   rm   r>   r   r  r2   r  r   r  r   r   r   r   expect_flow_mapping_keyX  s,   
zEmitter.expect_flow_mapping_keyc                 C  s>   t | jdddkr| | jd | j| j | jdd d S )Nr   r   -FTr  )rh   ro   r   r~   rk   r2   r  r   r+   r   r   r   r  v  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  )
rV   r>   r   r   r   r~   rk   r2   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   )rt   rx   ry   r>   r   r    expect_first_block_sequence_itemrm   )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 )
Nr6   Fr   r   r	  Trx   rA   r   )r   ro   r   r   r   rp   r4   rW   rk   rm   r{   r>   r   r   r   r   r2   r  r   )r(   r   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   )rt   rz   r>   r   r   expect_first_block_mapping_keyrm   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 )Nr6   r   Tr  r   r   r  )r   ro   r  r   r   rp   r4   rW   rk   rm   r   r  r   r   r   r   r   r2   !expect_block_mapping_simple_valuer   r   rU   r   expect_block_mapping_value)r(   r   r   r   r   r    s6   
z Emitter.expect_block_mapping_keyc                 C  sn   t | jdd dkr(| jdkr| jd urd| j| j  | j }n| j}| |d | j	| j
 | jdd d S )Nr   r   r   r   FTr  )rh   ro   rW   r]   r>   r}   r~   r   rk   r2   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~   rk   r2   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 r3   )r   ro   r   r   rn   r   r+   r   r   r   r     
   zEmitter.check_empty_sequencec                 C  r  r3   )r   ro   r   r   rn   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   ro   r   rn   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   ro   	NodeEventr   r   prepare_anchorrC   r   r   r  r   prepare_tagctagr   analyze_scalarr  r   MAX_SIMPLE_KEY_LENGTHr   r   r   r   r   r   r   r   r   )r(   lengthr   r   r   r    s<   



	
zEmitter.check_simple_key	indicatorc                 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)ro   r   r   r  r   r{   )r(   r  r   r   r   r     s   
zEmitter.process_anchorc                 C  sT  | 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 j| _| jr| | jd | jr| jst| j trd| _d | _d S )	Nr   'ztag:yaml.org,2002:nullr   r6   rM   ztag is not specifiedT)ro   r  r   r   r   choose_scalar_styler  r   r   rV   r   r   r   r  r  r   rs   r   r{   )r(   r  r   r   r   r   ,  sJ   








zEmitter.process_tagc                 C  sb  | j jdkr| j jjdkrd S | jd u r| | j j| _| j jdks%| jr'dS | j jr7| j jdks7| j jdkrf| j jd sC| j jd sf| j	rN| jj
s^| jjs^| jrU| jjs\| js^| jjr^dS | j jdkrfd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sd
S dS )Nr   rN   "r   r	  r   rA   Tz|>r  re   )ro   r  r  r   r   r  r   rV   r   ru   r   r   r   r   r    r#   r"   r!   r+   r   r   r   r   U  s`   
 

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| n| jdkrz
| jjd d }W n ttfyf } zd}W Y d }~nd }~ww | | j j| | jjr| jjd r| jjd j| jkr| 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  >r6   r   r   |)r   r  ro   r  r   r   ru   rs   r   r   write_double_quotedr   write_single_quotedr   r9   	TypeErrorwrite_foldedr>   rW   write_literalwrite_plainr   )r(   splitcmxer   r   r   r   |  s\   








zEmitter.process_scalarr   c                 C  s:   |\}}|dkrt d|dd|d|dd|dS )Nr6   zunsupported YAML version: d.r   )r(   r   majorminorr   r   r   r     s   zEmitter.prepare_versionr   c                 C  s   |st d|d dks|d dkrt d||dd D ]1}d|  kr+dksPn d	|  kr6d
ksPn d|  krAdksPn |dv sPt d|d|q|S )Nztag handle must not be emptyr   rM   r7   z(tag handle must start and end with '!': r6   09AZazz-_invalid character z in the tag handle: r/  )r(   r   chr   r   r   r     s   JzEmitter.prepare_tag_handler   c           	      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 ]}|dt|d qw|t|k s2||k r||||  d|S )Nztag prefix must not be emptyr   rM   r6   -;/?:@&=+$,_.~*'()[]r   r6   rA   #r2  r3  r4  r5  r6  r7  %02Xr   )r   r`   rh   rC   r2   ordjoin)	r(   r   chunksstartendch_setr   r9  datar   r   r   r     s2   J

zEmitter.prepare_tag_prefixr  c                 C  s  |st dt|}|dks|dkr|S d }|}t| j }|D ] }||rA|dks4t|t|k rA| j| }|t|d  }q!g }d }}d}	| jr`t| jdd}
|
d u s\|
dkr`|	d7 }	|t|k r|| }d	|  krtd
ksn d|  krdksn d|  krdksn ||	v s|dkr|dkr|d7 }n%||k r|	|||  |d  }}|}|D ]}|	dt
|d q|t|k sf||k r|	|||  d|}|r||S d|dS )Ntag must not be emptyrM   rN   r   r:  r   r;  r<  r2  r3  r4  r5  r6  r7  r6   r=  r>  r   !<r"  )r   r*   r   r   r   
startswithrC   r`   rh   r2   r?  r@  )r(   r  r   suffixprefixesr   rA  rB  rC  rD  r   r9  rE  suffix_textr   r   r   r    sR   "


zEmitter.prepare_tagr   c                 C  s6   |st d|D ]}t|st d|d|q|S )Nzanchor must not be emptyr8  z in the anchor: )r   r	   )r(   r   r9  r   r   r   r    s   zEmitter.prepare_anchorr   c              
   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   r6   u     	
  r   z#,[]{}&*!|>'"%@`z?:)r6   r6   r	  z,[]{}r   rb   r<  	   
  re   r   ~          ퟿      �   𐀀   􏿿   ﻿)r   rH  rC   r   use_versionr   rZ   rj   )r(   r   block_indicatorsflow_indicatorsline_breaksspecial_charactersleading_spaceleading_breaktrailing_spacetrailing_breakbreak_spacespace_breakpreceeded_by_whitespacefollowed_by_whitespaceprevious_spaceprevious_breakindexr9  r   r    r!   r"   r#   r   r   r   r    s  


 PzEmitter.analyze_scalarc                 C  s   t | jdr| j  d S d S )Nflush)r   rU   rf  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-16rU  )ri   rH  rU   r   encoder+   r   r   r   r     s   zEmitter.write_stream_startc                 C  s   |    d S r&   )r   r+   r   r   r   r     r   zEmitter.write_stream_endneed_whitespacerw   rx   c                 C  sh   | j s|s|}nd| }|| _ | jo|| _|  jt|7  _d| _t| jr,|| j}| j	| d S )Nr   F)
rw   rx   r>   rC   r|   r   ri   rg  rU   r   )r(   r  rh  rw   rx   rE  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   )rW   rx   r>   rw   r   r{   r   ri   rg  rU   r   )r(   rW   rE  r   r   r   r     s    



zEmitter.write_indentrE  c                 C  sT   |d u r| j }d| _d| _|  jd7  _d| _t| jr"|| j}| j	| d S )NTr6   r   )
r   rw   rx   rv   r>   r   ri   rg  rU   r   )r(   rE  r   r   r   r     s   
zEmitter.write_line_breakr   c                 C  s4   d|}| j r|| j }| j| |   d S )Nz%YAML ri   rg  rU   r   r   )r(   r   rE  r   r   r   r     s
   
zEmitter.write_version_directiver   r   c                 C  s:   d|d|}| j r|| j }| j| |   d S )Nz%TAG r   ri  )r(   r   r   rE  r   r   r   r     s
   zEmitter.write_tag_directiveTtextr*  c           
      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   r6   rL  re   
    
  z''rA   )rr   r   r   r   r   rC   r>   r   r   ri   rg  rU   r   )
r(   rj  r*  spacesbreaksrB  rC  r9  rE  brr   r   r   r%    sz   








4zEmitter.write_single_quotedr2  r6  btnvfrr,  r!  \N_LP) 	re   rf   r!  ru  rN  rO  u    u    c           	   	   C  s  | j r| jdur|   | jdkr|   | dd d }}|t|krd}|t|k r2|| }|du si|dv sid|  krDdksn | jrid|  krRd	ksn d
|  kr]dksn d|  krhdksn ||k r||| }|  jt|7  _t| j	r|
| j	}| j| |}|dur|| jv rd| j|  }n|dkrdt| }n|dkrdt| }ndt| }|  jt|7  _t| j	r|
| j	}| j| |d }d|  k rt|d k rn n|dks||kr| j||  | jkr|rd}t||krvz^|d|}z	|d||}W n ttfy'   Y nw || dkr9||d  dkr9n/d||| vrhd||| vrh||d  dvrh||d |d  dkrh||krhd}W n ttfyu   Y nw ||| |rdnd }||k r|}|  jt|7  _t| j	r|
| j	}| j| |   d| _d| _|| dkr|s|d7 }|rdnd}|  jt|7  _t| j	r|
| j	}| j| |d7 }|t|ks&| dd dS )z
        a newline, as written by self.write_indent(), might need to be escaped with a backslash
        as on reading this will produce a possibly unwanted space.
        Nr   r!  Tu   "\  ﻿r   rM  rO  rP  rQ  rR  rS  rT  ru     ÿz\x%02Xu   ￿z\u%04Xz\U%08Xr6   re   r  z 
z  Fr   )rr   r   r   r   r   rC   rZ   r>   r   ri   rg  rU   r   ESCAPE_REPLACEMENTSr?  r   re  
ValueErrorr9   rw   rx   )	r(   rj  r*  rB  rC  r9  rE  need_backslash	space_posr   r   r   r$  c  s   




" 

[zEmitter.write_double_quotedc              	   C  s"  d}d}d}|r|d dv rd}|t |7 }nZ| jrqdD ]N}d}d}|dkrd|||}|dkr1n3|dkrB||d  dkrB|d7 }q"z||t|  d	v rQ|}W nW n	 ty[   Y nw |d7 }|dks&|dkrj nq|dkrqd}|d d
vrzd}nt|dks|d d
v rd}||7 }|||fS )Nr   r   rk  rA   )r   r   r7   r6   re   z 
rL  r	  r5   +)r*   rr   findrC   r9   )r(   rj  rW   r  hintsrC  positionposr   r   r   determine_block_hints  sP   
zEmitter.determine_block_hintsr   c                 C  sl  |  |\}}}t|tsd}| d| | d |dkr d| _|   d}d}d}d }	}
|
t|kr4d }|
t|k rA||
 }|r|d u sK|dvr|s_|d ur_|dkr_||	 d	kr_|   |dk}||	|
 D ]}|d	krt|   qi| | qi|d ur|   |
}	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s5d S d S )Nr   r"  Tr  Fr   u
   
  r   re   r6   u    
  r{  rA   z*unexcpected fold indicator \a before spacerL  )r  r   r*   r   r|   r   rC   r   r>   r   r   ri   rg  rU   r   isspacer   )r(   rj  r   r  _indent
_indicatorr[  rl  rm  rB  rC  r9  rn  rE  r   r   r   r'    s~   





$


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#  Tr  r   rL  re   r   r6   )r  r   r*   r   r|   r   rC   rr   rW   rU   r   r   r   ri   rg  )r(   rj  r   r  r  r  rm  rB  rC  r9  rn  idnxrE  r   r   r   r(  5  sL   


zEmitter.write_literalc           
      C  s|  | 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
| |}n|r|dvr|| dkr|   ||| D ]}	|	dkr|   q| |	 q|   d| _d| _|}nT|d u s|dv r#||| }t|| j | jkr| jd ur| j| jkr|   |  jt|7  _| jr
|	| j}z| j
| W n   tjt|d   |}|d ur0|dk}|dv }|d7 }|t|ksOd S d S )	Nr   Tr   Fr6   rL  re   rk  )rr   r   r   r   r|   rw   r>   rC   ri   rg  rU   r   rx   r   rW   r   stdoutrepr)
r(   rj  r*  rE  rl  rm  rB  rC  r9  rn  r   r   r   r)  j  s   




zEmitter.write_plainprec                 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 )Nr7   re   r6   r   r   )r  
start_markr>   rH  r  stripr   ri   rg  UnicodeDecodeErrorrU   r   r&  r   )r(   r   r  r  col	nr_spacesr   r   r   write_comment  s@   
"
zEmitter.write_commentc              	   C  s   |j d u rdS |j d }|d u rdS z0ttf}|D ]&}t||r't|dd r'q| jdkr0|   | j|dd t||r?d|_qW dS  t	yX   t
jdt| d|   w )	NFr6   pre_doner   T)r  zeventtt r   )r   r   r   r   rh   r>   r   r  r  r&  r   r  r   type)r(   ro   comments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)ro   r   r  )r(   ro   r   r   r   r   r     s
   

zEmitter.write_post_comment)
NNNNNNNNNN)rU   r   rV   r   rW   rX   rY   rX   rZ   r@   r[   r   r\   rX   r]   r@   r^   r   r_   r@   r`   r   r$   r%   rI   )r0   r   r$   r%   rL   rH   )ro   r   r$   r%   rJ   )r   r=   r$   r   )FNF)r   r   r   r@   r   r   r$   r%   rK   )r   r   r$   r%   )FFFF)
r   r   r   r   r   r   r   r   r$   r%   )r   r@   r$   r%   )FF)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   rw   r   rx   r   r$   r%   r&   )rE  r   r$   r%   )r   r   r$   r%   )r   r   r   r   r$   r%   )T)rj  r   r*  r   r$   r%   )rj  r   r$   r   )rj  r   r   r   r$   r%   )r   r   r  r   r$   r%   )ro   r   r$   r   )Or   r   r   r   r  r   r   r   r   r  r  r)   propertyrU   setterr   r   r   r   r   r   r   rl   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$  r  r'  r(  r)  r  r   r   r   r   r   r   r   g   s    l





	

(

R







	










!

)
'
4




-
 
5




	A
i
&C5M
#c                   @  s   e Zd ZdddZdS )RoundTripEmitterr  r   r$   c                 C  s   |st dt|}|dks|dkr|S |j}|j}t| j }|d u rH|D ] }||rG|dks:t|t|k rG| j| }|t|d  }q'|rP||S d|dS )NrF  rM   rN   rG  r"  )	r   r*   r   rI  r   r   r   rH  rC   )r(   r  r  r   rI  rJ  r   r   r   r   r    s"   "
zRoundTripEmitter.prepare_tagN)r  r   r$   r   )r   r   r   r  r   r   r   r   r    s    r  )
__future__r   r   ruamel.yaml.errorr   r   ruamel.yaml.eventsruamel.yaml.compatr   r   r   r	   r
   typingr   r   r   r   r   r   r   r   __all__r   r   r-   r   r  r   r   r   r   <module>   s2   	.             