a
    ܌xd0                    @   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
 d dlmZmZmZmZmZmZmZ d dl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)*)nprintdbg	DBG_EVENTcheck_anchorname_charnprintf)AnyDictListUnionTextTupleOptional)
StreamTypeEmitterEmitterErrorc                   @   s   e Zd ZdS )r   N)__name__
__module____qualname__ r   r   K/var/www/html/Ranjet/env/lib/python3.9/site-packages/ruamel/yaml/emitter.pyr      s   c                
   @   s*   e Zd Zeeeeeeeedd	ddZdS )ScalarAnalysisN)	scalarempty	multilineallow_flow_plainallow_block_plainallow_single_quotedallow_double_quotedallow_blockreturnc	           	      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__)r   r   r   r
   boolr&   r   r   r   r   r      s   r   c                   @   sp   e Zd ZddddZeeddddZeddd	Zedd
dZde	e	e
e e	dddZe	dddZdS )IndentsNr"   c                 C   s
   g | _ d S r#   )valuesr%   r   r   r   r&   6   s    zIndents.__init__)valseqr"   c                 C   s   | j ||f d S r#   )r*   append)r%   r,   r-   r   r   r   r.   9   s    zIndents.appendc                 C   s   | j  d S Nr   )r*   popr+   r   r   r   r0   <   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_seq?   s    zIndents.last_seqF)
seq_indentcolumnpre_commentr"   c                 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   r2   r   lenr*   )r%   r5   r6   r7   baser   r   r   seq_flow_alignG   s    $zIndents.seq_flow_alignc                 C   s
   t | jS r#   r:   r+   r   r   r   __len__V   s    zIndents.__len__)F)r   r   r   r&   r
   r.   r0   r'   r4   intr   r=   r>   r   r   r   r   r(   4   s   	 
r(   c                   @   s  e Zd ZddddZdZdeeee ee ee	 eee ee	 eee	 eddddZ
eed	d
dZejeddddZeed	ddZeed	ddZdd	ddZeddddZe	d	ddZee	dddZde	ee	 e	ddddZdd	d d!Zdd	d"d#Zed	d$d%Zde	dd&d'd(Zdd	d)d*Zdd	d+d,Zde	e	e	e	dd-d.d/Zdd	d0d1Zdd	d2d3Zdee	 dd4d5d6Zdd	d7d8Zdd	d9d:Z dee	 ee	 dd;d<d=Z!dd	d>d?Z"dd	d@dAZ#dd	dBdCZ$dd	dDdEZ%dd	dFdGZ&ed	dHdIZ'de	dd&dJdKZ(dd	dLdMZ)dd	dNdOZ*dedd&dPdQZ+dd	dRdSZ,dd	dTdUZ-e	d	dVdWZ.e	d	dXdYZ/e	d	dZd[Z0e	d	d\d]Z1ee	d^d_d`Z2dd	dadbZ3ed	dcddZ4dd	dedfZ5eedgdhdiZ6eedjdkdlZ7eedmdndoZ8eedpdqdrZ9eedsdtduZ:eedvdwdxZ;dd	dydzZ<dd	d{d|Z=dd	d}d~Z>deee	e	ddddZ?dd	ddZ@deddddZAeddddZBeeddddZCdeeddddZDddddddddddddddddZEdeeddddZFeedddZGeeddddZHdeeddddZIdeeddddZJdee	ddddZKee	dddZLee	dddZMdS )r   !!!)r@   ztag:yaml.org,2002:rA      N)stream	canonicalindentwidthallow_unicode
line_breakblock_seq_indenttop_level_colon_alignprefix_colon+brace_single_entry_mapping_in_flow_sequencedumperr"   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 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  r8   r2   
   P   
)rR   z
null)1rM   getattrrN   rC   encodingallow_space_breakstatesexpect_stream_startstateeventseventr(   indentsrE   flow_contextroot_contextsequence_contextmapping_contextsimple_key_contextliner6   
whitespace	indentioncompact_seq_seqcompact_seq_map
no_newline
open_endedcolonprefixed_colonrL   rD   rG   sys
maxunicodeunicode_supplementarysequence_dash_offsetrJ   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%   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   r   r   r   r&   e   sh    "
zEmitter.__init__r)   c                 C   s(   z| j W S  ty"   tdY n0 d S )Nz#output stream needs to be specified)_streamAttributeErrorr   r+   r   r   r   rC      s    zEmitter.stream)r,   r"   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%   r,   r   r   r   rC      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)r   rM   
serializerZ_serializerr}   r+   r   r   r   r      s    

zEmitter.serializerc                 C   s
   t | jS r#   )r;   r^   r+   r   r   r   
flow_level   s    zEmitter.flow_levelc                 C   s   g | _ d | _d S r#   )rX   rZ   r+   r   r   r   dispose   s    zEmitter.dispose)r\   r"   c                 C   sF   t trt| | j| |  sB| jd| _|   d | _qd S r/   )	r   r   r   r[   r.   need_more_eventsr0   r\   rZ   r%   r\   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   r2   r8      F)r[   
isinstanceDocumentStartEventneed_eventsSequenceStartEventMappingStartEventr   r   r   r   r      s    






zEmitter.need_more_events)countr"   c                 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   r2   r9   F)r[   r   r   CollectionStartEventDocumentEndEventZCollectionEndEventStreamEndEventr;   )r%   r   levelr\   r   r   r   r   
  s    


zEmitter.need_eventsF)flowsequence
indentlessr"   c                 C   sX   | j | j| | jd u r0|r(| j| _qTd| _n$|sT|  j| j  rJ| jn| j7  _d S r/   )r]   r.   rE   rq   r4   rp   rr   )r%   r   r   r   r   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| _nt	d| jd S )NrV   z#expected StreamStartEvent, but got )
r   r\   ZStreamStartEventrV   r   rC   write_stream_startexpect_first_document_startrZ   r   r+   r   r   r   rY   3  s    

zEmitter.expect_stream_startc                 C   s   t d| jd S )Nzexpected nothing, but got )r   r\   r+   r   r   r   expect_nothing<  s    zEmitter.expect_nothingc                 C   s   | j ddS NT)first)expect_document_startr+   r   r   r   r   A  s    z#Emitter.expect_first_document_start)r   r"   c           	      C   st  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| _nLt | jtr`| jrN| dd |   |   | j| _ntd| jd S )N...T---z%expected DocumentStartEvent, but got )r   r\   r   versiontagsri   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyru   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitrD   check_empty_documentexpect_document_rootrZ   r   write_stream_endr   r   )	r%   r   version_textZhandleshandleprefixhandle_textprefix_textimplicitr   r   r   r   D  sP    





zEmitter.expect_document_startc                 C   sV   t | jtrB|   | jjr0| dd |   |   | j| _nt	d| jd S )Nr   Tz#expected DocumentEndEvent, but got )
r   r\   r   r   r   r   flush_streamr   rZ   r   r+   r   r   r   expect_document_endl  s    
zEmitter.expect_document_endc                 C   s   | j | j | jdd d S )NT)root)rX   r.   r   expect_noder+   r   r   r   r   w  s    zEmitter.expect_document_root)r   r   mapping
simple_keyr"   c           	      C   sH  || _ || _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|   qDt| 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rD| 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#dd S )NF&Tr9   r2   )singleforce_flow_indentz*expected NodeEvent, but got {self.event!s})$r_   r`   ra   rb   r   r\   
AliasEventexpect_aliasScalarEventr   process_anchorrz   r   process_tagexpect_scalarr   re   rh   comment
flow_stylewrite_post_commentr6   write_pre_commentr]   r*   r   rD   check_empty_sequenceexpect_flow_sequenceexpect_block_sequencer   check_empty_mappingexpect_flow_mappingZnr_itemsexpect_block_mappingr   )	r%   r   r   r   r   r   i2Zn2r6   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   )r\   anchorr   r   rX   r0   rZ   r+   r   r   r   r     s    
zEmitter.expect_aliasc                 C   s0   | j dd |   | j | _| j | _d S )NT)r   )r   process_scalarr]   r0   rE   rX   rZ   r+   r   r   r   r     s    zEmitter.expect_scalar)r   r"   c                 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    [rd   )
r   r]   r=   rp   r6   r   r^   r.   expect_first_flow_sequence_itemrZ   )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   )r   r\   SequenceEndEventr]   r0   rE   r^   r   r   r   r   write_line_breakrX   rZ   rD   r6   rs   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   )r   r\   r   r]   r0   rE   r^   rD   r   r   r   r   rh   rX   rZ   r6   rs   r.   r   r   r   r   r   r   r     s"    
z!Emitter.expect_flow_sequence_item)r   r   r"   c                 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   {r9   r    r   r   )r   r]   r=   rp   r6   r   r^   rD   rL   r   r.   expect_first_flow_mapping_keyrZ   )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   )r   r\   MappingEndEventr]   r0   rE   r^   r   r   r   r   r   rX   rZ   rD   r6   rs   r   check_simple_keyr.    expect_flow_mapping_simple_valuer   expect_flow_mapping_valuer   r   r   r   r   (  s$    

z%Emitter.expect_first_flow_mapping_keyc                 C   s  t | jtr| j | _| j }|d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   )r   r\   r   r]   r0   rE   r^   rD   r   r   r   r   rh   rX   rZ   r6   rs   r   r.   r   r   r   r   r   r   r   expect_flow_mapping_key?  s,    
zEmitter.expect_flow_mapping_keyc                 C   s,   |  | jd | j| j | jdd d S )NFTr   )r   rk   rX   r.   r   r   r+   r   r   r   r   ]  s    z(Emitter.expect_flow_mapping_simple_valuec                 C   sF   | j s| j| jkr|   | | jd | j| j | j	dd d S )NTr   )
rD   r6   rs   r   r   rk   rX   r.   r   r   r+   r   r   r   r   b  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   )ra   re   rf   r6   r   r    expect_first_block_sequence_itemrZ   )r%   r   r   r   r   r   k  s    
zEmitter.expect_block_sequencec                 C   s   | j ddS r   )expect_block_sequence_itemr+   r   r   r   r   u  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 )
Nr2   Fr   r   -Tre   r8   r   )r   r\   r   r   r   r]   r0   rE   rX   rZ   rh   r6   r   ro   r   rp   r.   r   r   )r%   r   Znonlr   r   r   r   r   x  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   )ra   rg   r6   r   r   expect_first_block_mapping_keyrZ   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 )Nr2   r   Tr   r   r   r   )r   r\   r   r   r   r]   r0   rE   rX   rZ   r   r   r   r   ry   r   r}   r.   !expect_block_mapping_simple_valuer   r   rC   r~   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 )Nry   r   r   r   FTr   )rU   r\   rE   rJ   r6   rj   rk   r   rX   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   rk   rX   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/   )r   r\   r   r'   r[   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/   )r   r\   r   r'   r[   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   )	r   r\   r   r[   r   r   tagr   valuer   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'")r   r\   Z	NodeEventr   rv   prepare_anchorr;   r   r   r   rw   prepare_tagrx   analyze_scalarr   r   MAX_SIMPLE_KEY_LENGTHr   r   r   r   r   ry   r   r   r   )r%   lengthr   r   r   r     s>    



	
zEmitter.check_simple_key)	indicatorr"   c                 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)r\   r   rv   r   r   rh   )r%   r   r   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   r2   r@   ztag is not specifiedT)r\   r   r   r   ry   choose_scalar_styler   r{   rx   rD   r   rw   r   r   r   r`   r   rh   )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   r8   r   Tz|>r   rR   )rx   r   r\   r   ry   rD   r   rb   r   r   r   r   r   r!   r    r   r+   r   r   r   r   ;  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| nP| jdkr| | j j| n2| jdkrz| 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dkrz| jjd d }W n ttfyR   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   >r2   r   r   |)rx   r   r\   r   ry   r   rb   r`   r   r   write_double_quotedr   write_single_quotedr   r3   	TypeErrorwrite_foldedr6   rE   write_literalwrite_plainr   )r%   splitZcmxr   r   r   r   ]  sT    









zEmitter.process_scalar)r   r"   c                 C   s:   |\}}|dkr(t d|dd|d|dd|dS )Nr2   zunsupported YAML version: d.r   )r%   r   majorminorr   r   r   r     s    zEmitter.prepare_version)r   r"   c                 C   s   |st d|d dks$|d dkr2t d||dd D ]b}d|  krVdks>n d	|  krld
ks>n d|  krdks>n |dv s>t d|d|q>|S )Nztag handle must not be emptyr   r@   r9   z(tag handle must start and end with '!': r2   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_handle)r   r"   c           	      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 ]}|dt|d qqX||k r*||||  d|S )Nztag prefix must not be emptyr   r@   r2   -;/?:@&=+$,_.~*'()[]r   r2   r8   #r  r  r  r  r  r  %02Xr   )r   rM   rU   r;   r.   ordjoin)	r%   r   chunksstartendch_setr   r  datar   r   r   r     s0    J

zEmitter.prepare_tag_prefix)r   r"   c                 C   s  |st d|dks|dkr |S d }|}t| j }|D ]@}||r:|dks`t|t|k r:| j| }|t|d  }q:g }d }}d}	| jrt| jdd}
|
d u s|
dkr|	d7 }	|t|k r|| }d	|  krd
ks6n d|  krdks6n d|  krdks6n ||	v s6|dkr@|dkr@|d7 }q||k r\||||  |d  }}|}|D ]}|dt	|d qpq||k r||||  d
|}|r||S d|dS d S )Nztag must not be emptyr@   rA   r   r  r   r  r  r  r  r  r  r  r  r2   r  r  r   z!<r   )r   r   ru   r   
startswithr;   rM   rU   r.   r  r  )r%   r   r   suffixprefixesr   r  r  r  r  r   r  r   Zsuffix_textr   r   r   r     sf    "








zEmitter.prepare_tag)r   r"   c                 C   s6   |st d|D ] }t|st d|d|q|S )Nzanchor must not be emptyr  z in the anchor: )r   r   )r%   r   r  r   r   r   r     s    zEmitter.prepare_anchor)r   r"   c              
   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   r2   u     	
  r   z#,[]{}&*!|>'"%@`z?:)r2   r2   r   z,[]{}r   rO   r  	   
  rR   r   ~          ퟿      �   𐀀   􏿿   ﻿)r   r!  r;   r   Zuse_versionrn   rG   rW   )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)r   rC   r0  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-  )rV   r!  rC   r~   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_end)r   need_whitespacerd   re   r"   c                 C   sh   | j s
|s|}nd| }|| _ | jo&|| _|  jt|7  _d| _t| jrX|| j}| j	| d S )Nr   F)
rd   re   r6   r;   ri   r'   rV   r1  rC   r~   )r%   r   r2  rd   re   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   )rE   re   r6   rd   r'   rh   r   rV   r1  rC   r~   )r%   rE   r   r   r   r   r     s&    


zEmitter.write_indent)r   r"   c                 C   sT   |d u r| j }d| _d| _|  jd7  _d| _t| jrD|| j}| j	| d S )NTr2   r   )
rt   rd   re   rc   r6   r'   rV   r1  rC   r~   )r%   r   r   r   r   r     s    
zEmitter.write_line_break)r   r"   c                 C   s4   d|}| j r|| j }| j| |   d S )Nz%YAML rV   r1  rC   r~   r   )r%   r   r   r   r   r   r     s
    
zEmitter.write_version_directive)r   r   r"   c                 C   s:   d|d|}| j r"|| j }| j| |   d S )Nz%TAG r   r3  )r%   r   r   r   r   r   r   r     s
    zEmitter.write_tag_directiveT)textr  r"   c           
      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   r2   r$  rR   
    
  z''r8   )r_   rq   r   r   r   r;   r6   rs   r'   rV   r1  rC   r~   )
r%   r4  r  spacesbreaksr  r  r  r   brr   r   r   r    s|    












zEmitter.write_single_quotedr  r  btnvfrer   \N_LP) 	rR   rS   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 d|  krdksn ||k r*||| }|  jt|7  _t| j	r|
| j	}| j| |}|d ur|| jv rPd| j|  }n<|dkrhd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rzd|d|}d||| vrd||| vr||d  dkr||d |d  dkrd}W n ttfy   Y n0 ||| |rdnd }||k r|}|  jt|7  _t| j	r|
| j	}| j| |   d| _d| _|| dkr|s>|d7 }|rHdnd}|  jt|7  _t| j	rv|
| j	}| j| |d7 }q>| dd d S )Nr   r   Tu   "\  ﻿r   r%  r'  r(  r)  r*  r+  r,  r@     ÿz\x%02Xu   ￿z\u%04Xz\U%08Xr2   r   z  Fr   )r_   rq   r   r   r   r;   rG   r6   r'   rV   r1  rC   r~   ESCAPE_REPLACEMENTSr  rs   r/  
ValueErrorr3   rd   re   )	r%   r4  r  r  r  r  r   Zneed_backquoteZ	space_posr   r   r   r  C  s    



		











zEmitter.write_double_quoted)r4  r"   c              	   C   s   d}d}d}|r|d dv r.d}|t |7 }nx| jrdD ]`}d}|||}|dkrVqz||d  dv rlW qW n ty   Y n0 |d	7 }q@|dkr8 qq8|dkrd}|d d
vrd}nt|d	ks|d d
v rd}||7 }|||fS )Nr   r   r5  r8   )z
---z
...r9      z 
r2   r$  r   r1   +)strr_   findr3   r;   )r%   r4  rE   r   hintsr  posr   r   r   determine_block_hints  s:    
zEmitter.determine_block_hints)r4  r   r"   c                 C   st  |  |\}}}t|tsd}| d| | d |dkr@d| _|   d}d}d}d }	}
|
t|krpd }|
t|k r||
 }|r|d u s|dvrL|s|d ur|dkr||	 d	kr|   |dk}||	|
 D ] }|d	kr|   q| | q|d ur
|   |
}	n:|r|dkrL|	d
 |
krH| j| j	krH|   nB||	|
 }|  jt|7  _t
| jr~|| j}| j| |
}	n|d u s|dv rL||	|
 }|  jt|7  _t
| jr|| j}| j| |dkr6|
t|d
 k r.||
d   s.|   |   |
d7 }
ntd|d u rH|   |
}	|d urf|dv }|dk}|
d
7 }
q\d S )Nr   r   TrP  Fr   u
   
  r   rR   r2   u    
  rF  r8   z*unexcpected fold indicator \a before spacer$  )rU  r   rQ  r   ri   r   r;   r   r6   rs   r'   rV   r1  rC   r~   isspacer   )r%   r4  r   rS  _indent
_indicatorr.  r6  r7  r  r  r  r8  r   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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   TrP  r   r$  rR   r   r2   )rU  r   rQ  r   ri   r   r;   r_   rE   rC   r~   r   r'   rV   r1  )r%   r4  r   rS  rW  rX  r7  r  r  r  r8  Zidnxr   r   r   r   r    sH    




zEmitter.write_literalc           
      C   s  | 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rd }|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rd|   ||| D ]$}	|	dkr|   n
| |	 qp|   d| _d| _|}n|d u s|dv r`||| }t|| 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   Y n0 |}|d urz|dk}|dv }|d7 }qd S )	Nr   Tr   Fr2   r$  rR   r5  )r_   rq   r   r   ri   rd   r6   r;   rV   r1  rC   r~   re   rs   rE   rl   stdoutrepr)
r%   r4  r  r   r6  r7  r  r  r  r8  r   r   r   r  7  s    








zEmitter.write_plain)r   prer"   c                 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 )Nr9   rR   r2   r   r   )r   Z
start_markr6   r!  rN  stripr'   rV   r1  UnicodeDecodeErrorrC   r~   r  r   )r%   r   r[  r   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 n0 t	y   t
jdt| d|   Y n0 dS )	Nr2   Fpre_doner   T)r[  zeventtt r   )r   r   r   r   rU   r6   r   r_  r`  r  rl   rY  r~   type)r%   r\   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)r\   r   r_  )r%   r\   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)Nr   r   r   r   r   r   r
   r   r?   r'   r&   propertyrC   setterr   r   r   r   r   r   r   rY   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  rM  r  rU  r  r  r  r_  r   r   r   r   r   r   r   Z   s            l 
	(    O 	
!)"4
, 5  	A\ C5K#)rl   Zruamel.yaml.errorr   r   Zruamel.yaml.eventsZruamel.yaml.compatr   r   r   r   r	   typingr
   r   r   r   r   r   r   r   __all__r   r   r(   r   r   r   r   r   <module>
   s   $&