o
    ¨¸¢i‰þ  ã                   @   sª   d dl mZ d dl mZ d dlZd dlmZmZ d dlT d dlm	Z	m
Z
mZmZmZmZmZ 	 d
dgZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd
„ d
eƒZdS )é    )Úabsolute_import)Úprint_functionN)Ú	YAMLErrorÚYAMLStreamError)Ú*)Úutf8Ú	text_typeÚPY2ÚnprintÚdbgÚ	DBG_EVENTÚcheck_anchorname_charF)ÚAnyÚDictÚListÚUnionÚTextÚTupleÚOptional)Ú
StreamTypeÚEmitterÚEmitterErrorc                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   úW/home/ubuntu/transcripts/venv/lib/python3.10/site-packages/strictyaml/ruamel/emitter.pyr      s    c                   @   s   e Zd Zdd„ ZdS )ÚScalarAnalysisc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S ©N©ÚscalarÚemptyÚ	multilineÚallow_flow_plainÚallow_block_plainÚallow_single_quotedÚallow_double_quotedÚallow_block)	Úselfr    r!   r"   r#   r$   r%   r&   r'   r   r   r   Ú__init__"   s   
zScalarAnalysis.__init__N)r   r   r   r)   r   r   r   r   r   !   s    r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚIndentsc                 C   s
   g | _ d S r   )Úvalues©r(   r   r   r   r)   :   ó   
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   r2   B   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_seqF   s
   ÿzIndents.last_seqc                 C   sT   t | jƒdk s| jd d sdS | jd d d ur | jd d nd}|| | d S )Né   éÿÿÿÿr4   r   ©Úlenr+   )r(   Ú
seq_indentÚcolumnÚbaser   r   r   Úseq_flow_alignO   s   $zIndents.seq_flow_alignc                 C   ó
   t | jƒS r   r9   r,   r   r   r   Ú__len__X   r-   zIndents.__len__N)	r   r   r   r)   r.   r2   r6   r>   r@   r   r   r   r   r*   8   s    		r*   c                   @   s’  e Zd ZdddœZdZ										d›d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dœdd„Zdd„ Zdd„ Zdd„ Zdd d!„Zd"d#„ Zd$d%„ Zdžd&d'„Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zdd2d3„Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"dd@dA„Z#dBdC„ Z$dDdE„ Z%ddFdG„Z&dHdI„ Z'dJdK„ Z(dLdM„ Z)dNdO„ Z*dPdQ„ Z+dRdS„ Z,dTdU„ Z-dVdW„ Z.dXdY„ Z/dZd[„ Z0d\d]„ Z1d^d_„ Z2d`da„ Z3dbdc„ Z4ddde„ Z5dfdg„ Z6dhdi„ Z7djdk„ Z8dldm„ Z9	dŸdndo„Z:dpdq„ Z;d drds„Z<dtdu„ Z=dvdw„ Z>d¡dydz„Z?d{d|d}d~dd€dd‚dƒd„d…d†d‡dˆd‰dŠœZ@d¡d‹dŒ„ZAddŽ„ ZBdd„ ZCd d‘d’„ZDd¡d“d”„ZEdd•d–„ZFd—d˜„ ZGd™dš„ ZHdS )¢r   ú!z!!)rA   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| _%|| _&|r™d|  k r”d	k r™n 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ÿÿ  r7   r4   é
   éP   Ú
)úrG   z
Únull)1ÚdumperÚgetattrrC   ÚstreamÚencodingÚallow_space_breakÚstatesÚexpect_stream_startÚstateÚeventsÚeventr*   ÚindentsÚindentÚflow_contextÚroot_contextÚsequence_contextÚmapping_contextÚsimple_key_contextÚliner<   Ú
whitespaceÚ	indentionÚcompact_seq_seqÚcompact_seq_mapÚ
no_newlineÚ
open_endedÚcolonÚprefixed_colonÚ+brace_single_entry_mapping_in_flow_sequenceÚ	canonicalÚallow_unicodeÚsysÚ
maxunicodeÚunicode_supplementaryÚsequence_dash_offsetÚtop_level_colon_alignÚbest_sequence_indentÚrequested_indentÚbest_map_indentÚ
best_widthÚbest_line_breakÚtag_prefixesÚprepared_anchorÚprepared_tagÚanalysisÚstyleÚscalar_after_indicatorÚalt_null)r(   rL   re   rU   Úwidthrf   Ú
line_breakÚblock_seq_indentrk   Úprefix_colonrd   rJ   r   r   r   r)   g   sj   ÿÿ
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   rL   Õ   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   r|   )r(   r/   r   r   r   rL   Ý   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   rJ   Ú
serializerÚ_serializerr}   r,   r   r   r   r   æ   s   

ÿzEmitter.serializerc                 C   r?   r   )r:   rV   r,   r   r   r   Ú
flow_levelð   s   
zEmitter.flow_levelc                 C   s   g | _ d | _d S r   )rO   rQ   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 r1   )	r   r   r
   rR   r.   Úneed_more_eventsr2   rS   rQ   ©r(   rS   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   r4   r7   é   F)rR   Ú
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   r4   r8   F)rR   r‰   rŠ   ÚCollectionStartEventÚDocumentEndEventÚCollectionEndEventÚStreamEndEventr:   )r(   ÚcountÚlevelrS   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 r1   )rT   r.   rU   rm   r6   rl   rn   )r(   ÚflowÚsequenceÚ
indentlessr   r   r   Úincrease_indent#  s   

ÿ
ýÿzEmitter.increase_indentc                 C   st   t | jtƒr2tr| jjrt| jdd ƒs| jj| _n| jjr(t| jdƒs(| jj| _|  ¡  | j	| _
d S td| jf ƒ‚)NrM   z%expected StreamStartEvent, but got %s)r‰   rS   ÚStreamStartEventr	   rM   rK   rL   r   Úwrite_stream_startÚexpect_first_document_startrQ   r   r,   r   r   r   rP   @  s   
€
zEmitter.expect_stream_startc                 C   s   t d| jf ƒ‚)Nzexpected nothing, but got %s)r   rS   r,   r   r   r   Úexpect_nothingN  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_startc           	      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f ƒ‚)Nú...Tú---z'expected DocumentStartEvent, but got %s)r‰   rS   rŠ   ÚversionÚtagsra   Úwrite_indicatorÚwrite_indentÚprepare_versionÚwrite_version_directiveÚDEFAULT_TAG_PREFIXESÚcopyrq   ÚsortedÚkeysÚprepare_tag_handleÚprepare_tag_prefixÚwrite_tag_directiveÚexplicitre   Úcheck_empty_documentÚexpect_document_rootrQ   r‘   Úwrite_stream_endr›   r   )	r(   rž   Úversion_textÚhandlesÚhandleÚprefixÚhandle_textÚprefix_textÚimplicitr   r   r   rŸ   X  sT   



ÿþýüú
ÿzEmitter.expect_document_startc                 C   sT   t | jtƒr"|  ¡  | jjr|  dd¡ |  ¡  |  ¡  | j| _d S t	d| jf ƒ‚)Nr¡   Tz%expected DocumentEndEvent, but got %s)
r‰   rS   r   r¦   r°   r¥   Úflush_streamrŸ   rQ   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)rO   r.   r¼   Úexpect_noder,   r   r   r   r²     s   zEmitter.expect_document_rootc                 C   sÞ  || _ || _|| _|| _t| jtƒr|  ¡  d S t| jtt	fƒrç|  
d¡r1t| jtƒr1| jr1d| _|r@t| jtƒr@| js@|  ¡  |  ¡  t| jtƒrP|  ¡  d S t| jtƒrŸ| j| j}}| jjr…| jjdu rw| jjrw|  | j¡rwd| _d| _|  | j¡r…|| _| j | _| 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sÓ| jsÓ| jjsÓ|  ¡ rß| j| jjdkd d S |  ¡  d S d S t d| jf ƒ‚)Nú&FTr4   )Úsinglezexpected NodeEvent, but got %s)!rW   rX   rY   rZ   r‰   rS   Ú
AliasEventÚexpect_aliasÚScalarEventrŽ   Úprocess_anchorrv   r¦   Úprocess_tagÚexpect_scalarrŒ   r]   r`   ÚcommentÚ
flow_styleÚwrite_post_commentÚwrite_pre_commentrƒ   re   Úcheck_empty_sequenceÚexpect_flow_sequenceÚexpect_block_sequencer   Úcheck_empty_mappingÚexpect_flow_mappingÚnr_itemsÚexpect_block_mappingr   )r(   r½   r•   ÚmappingÚ
simple_keyÚi2Ún2r   r   r   r¾   –  sz   ÿ
þýÿ
þý
ÿþýüÿþýüózEmitter.expect_nodec                 C   s.   | j jd u r
tdƒ‚|  d¡ | j ¡ | _d S )Nz!anchor is not specified for aliasr   )rS   Úanchorr   rÄ   rO   r2   rQ   r,   r   r   r   rÂ   Ô  s   
zEmitter.expect_aliasc                 C   s0   | j dd |  ¡  | j ¡ | _| j ¡ | _d S )NT)r”   )r—   Úprocess_scalarrT   r2   rU   rO   rQ   r,   r   r   r   rÆ   Û  s   zEmitter.expect_scalarc                 C   sP   | j  | j| j¡}| jd| d ddd | jddd | j d¡ | j| _	d S )Nú ú[T©r\   ©r”   r•   )
rT   r>   rl   r<   r¥   r—   rV   r.   Úexpect_first_flow_sequence_itemrQ   )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‰   rS   ÚSequenceEndEventrT   r2   rU   rV   r¥   rÇ   rÉ   rƒ   Úwrite_line_breakrO   rQ   re   r<   ro   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‰   rS   rà   rT   r2   rU   rV   re   r¥   r¦   rÇ   rÉ   r`   rO   rQ   r<   ro   r.   râ   r¾   rã   r   r   r   râ   ÿ  s"   
z!Emitter.expect_flow_sequence_itemc                 C   s|   | j  | j| j¡}d}|r| jr| jd dkr| js| jsd}| jd| | ddd | j 	|¡ | j
ddd	 | j| _d S )
NÚ{r8   rÙ   Ú rØ   TrÚ   FrÛ   )rT   r>   rl   r<   rƒ   rV   re   rd   r¥   r.   r—   Úexpect_first_flow_mapping_keyrQ   )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 ‚|  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‰   rS   ÚMappingEndEventrT   r2   rU   rV   r¥   rÇ   rÉ   rƒ   rá   rO   rQ   re   r<   ro   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ƒ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‰   rS   rî   rT   r2   rU   rV   re   r¥   r¦   rÇ   rÉ   r`   rO   rQ   r<   ro   rï   r.   rð   r¾   rñ   rã   r   r   r   Úexpect_flow_mapping_keyB  s,   
zEmitter.expect_flow_mapping_keyc                 C   s,   |   | jd¡ | j | j¡ | jdd d S )NFTrí   )r¥   rc   rO   r.   rò   r¾   r,   r   r   r   rð   a  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í   )
re   r<   ro   r¦   r¥   rc   rO   r.   rò   r¾   r,   r   r   r   rñ   g  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–   )rY   r]   r^   r<   rá   r—   Ú expect_first_block_sequence_itemrQ   )r(   r–   r   r   r   rÍ   q  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 )
Nr4   Fr   rØ   ú-T©r]   r7   rß   )r‰   rS   rà   rÇ   rÊ   rT   r2   rU   rO   rQ   r`   r<   r¦   rj   r¥   rl   r.   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Û   )rY   r_   r<   rá   r—   Úexpect_first_block_mapping_keyrQ   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¡ |  
¡  |  ¡ r~t | 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 d¡ d S d S | jdddd | j | j¡ | jdd d S )Nr4   rì   Trö   rë   rØ   rí   )r‰   rS   rî   rÇ   rÊ   rT   r2   rU   rO   rQ   r¦   rï   rŒ   r   ru   r¥   r}   r.   Ú!expect_block_mapping_simple_valuer¾   rÁ   rL   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 )Nru   rì   r   rØ   FTrí   )rK   rS   rU   rk   r<   rb   rc   r¥   rO   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¥   rc   rO   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 r1   )r‰   rS   rŒ   ÚboolrR   rà   r,   r   r   r   rË   ×  ó
   ÿýzEmitter.check_empty_sequencec                 C   rý   r1   )r‰   rS   r   rþ   rR   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‰   rS   rŠ   rR   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 o¡t | jtƒp¡t | jtƒou| jjdu p¡t | jtƒo| jjdu p¡t | jtƒo™| jjo“| jo“| jdv o™| jj p¡|  ¡ p¡|  ¡ S )Nr   Tz'")r‰   rS   Ú	NodeEventrÖ   rr   Úprepare_anchorr:   rÃ   rŽ   r   rs   Úprepare_tagrt   Úanalyze_scalarr  r    ÚMAX_SIMPLE_KEY_LENGTHrÁ   rŒ   rÈ   r   r!   ru   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)rS   rÖ   rr   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s£t| j tƒr£d| _d | _d S )	Nrç   ú'ztag:yaml.org,2002:nullr   r4   rA   ztag is not specifiedT)rS   r   r‰   rÃ   ru   Úchoose_scalar_styler  rw   rt   re   rº   rs   r   r  r¥   rX   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	s’dS dS )
Nú"rì   r   r7   rç   Tz|>r	  rG   )rt   r  rS   r  ru   re   rº   rZ   r!   r"   rƒ   r#   r$   r'   r&   r%   r,   r   r   r   r
  T  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|¡ n3| jdkrA|  | j j|¡ n%| jdkrN|  | j j¡ n| jdkr^|  | j j| jj¡ n|  | j j|¡ d | _ d | _| jjrx|  | j¡ d S d S )Nr  r	  ú>ú|)rt   r  rS   r  ru   r
  rZ   rX   rƒ   r¦   Úwrite_double_quotedr    Úwrite_single_quotedÚwrite_foldedÚwrite_literalrÇ   Úwrite_plainrÉ   )r(   Úsplitr   r   r   r×   x  s*   






ÿzEmitter.process_scalarc                 C   s,   |\}}|dkrt d||f ƒ‚d||f S )Nr4   zunsupported YAML version: %d.%dz%d.%d)r   )r(   r£   ÚmajorÚminorr   r   r   r§   –  s   zEmitter.prepare_versionc                 C   s¬   |st dƒ‚|d dks|d dkrt dt|ƒ ƒ‚|dd… D ]3}d|  kr,dksSn d	|  kr7d
ksSn d|  krBdksSn |dv sSt dt|ƒt|ƒf ƒ‚q |S )Nztag handle must not be emptyr   rA   r8   z*tag handle must start and end with '!': %rr4   Ú0Ú9ÚAÚZÚaÚzz-_z*invalid character %r in the tag handle: %r)r   r   )r(   r¶   Úchr   r   r   r­     s$   
ÿÿÿ€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  }}t|ƒ}|D ]}| dt|ƒ ¡ qy|t|ƒk s2||k r˜| |||… ¡ d |¡S )Nztag prefix must not be emptyr   rA   r4   ú-;/?:@&=+$,_.~*'()[]r£   ©r4   r7   ú#r  r  r  r  r  r  ú%%%02Xrç   )r   rJ   rK   r:   r.   r   ÚordÚjoin)	r(   r·   ÚchunksÚstartÚendÚch_setr£   r  Údatar   r   r   r®   ²  s8   
ñ
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r‚dksn ||	v s|dkr”|dkr”|d7 }n%||k r¡| |||… ¡ |d  }}t	|ƒ}|D ]}| dt
|ƒ ¡ q­|t|ƒk s^||k rÌ| |||… ¡ d |¡}|rÙd||f S d| S )Nztag must not be emptyrA   r   r  r£   r  r  r  r  r  r  r  r  r4   r   rç   z%s%sz!<%s>)r   r«   rq   r¬   Ú
startswithr:   rJ   rK   r.   r   r!  r"  )r(   r   r¶   ÚsuffixÚprefixesr·   r#  r$  r%  r&  r£   r  r'  Úsuffix_textr   r   r   r  Ó  sP   "
€
ð
zEmitter.prepare_tagc                 C   s:   |st dƒ‚|D ]}t|ƒst dt|ƒt|ƒf ƒ‚q|S )Nzanchor must not be emptyz&invalid character %r in the anchor: %r)r   r   r   )r(   rÖ   r  r   r   r   r     s   ÿÿzEmitter.prepare_anchorc              
   C   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 r…d}|dkr‘| jjdkr‘d}|dkr›|r›d}d}|dkr¥|r¥d}d}|dv r«d}|dksïd|  kr¹dksïn |dksãd|  krÈdksãn d|  krÓdksãn | jríd|  krádkrín n
|dkrí| jsìd}nd}|dkr|dkrúd}|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 } }}|r‡d } } }}n|r–d } }}| js–d}|rd }}|r¢d}|r§d}t |d||||||dS )NTFr   r¢   r¡   r4   u     	
Â…â€¨â€©r   z#,[]{}&*!|>'"%@`z?:)r4   r4   rõ   z,[]{}rì   rD   r  õ	   
Â…â€¨â€©rG   rØ   ú~õ   Â…õ   Â õ   íŸ¿õ   î€€õ   ï¿½u   ð€€u   ô¿¿õ   ï»¿)r   r(  r:   r   Úuse_versionri   rf   rN   )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Úindexr  r#   r$   r%   r&   r'   r   r   r   r    s  øÿ€þ€


þ²TþÿøzEmitter.analyze_scalarc                 C   s   t | jdƒr| j ¡  d S d S )NÚflush)r   rL   rD  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-16r3  )rM   r(  rL   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_endc                 C   sh   | j s|s|}nd| }|| _ | jo|| _|  jt|ƒ7  _d| _t| jƒr,| | j¡}| j 	|¡ d S )NrØ   F)
r\   r]   r<   r:   ra   rþ   rM   rE  rL   r~   )r(   r  Úneed_whitespacer\   r]   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Ø   )rU   r]   r<   r\   rþ   r`   rá   rM   rE  rL   r~   )r(   rU   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 )NTr4   r   )
rp   r\   r]   r[   r<   rþ   rM   rE  rL   r~   )r(   r'  r   r   r   rá   û  s   
zEmitter.write_line_breakc                 C   s2   d| }| j r| | j ¡}| j |¡ |  ¡  d S )Nz	%%YAML %s©rM   rE  rL   r~   rá   )r(   r´   r'  r   r   r   r¨     s
   zEmitter.write_version_directivec                 C   s6   d||f }| j r| | j ¡}| j |¡ |  ¡  d S )Nz%%TAG %s %srG  )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Ø   r4   r,  rG   õ
    
Â…â€¨â€©z''r7   )rW   rm   rá   r¦   r¥   r:   r<   ro   rþ   rM   rE  rL   r~   )
r(   Útextr  ÚspacesÚbreaksr$  r%  r  r'  Úbrr   r   r   r    sz   

ÿ

€
€



Í4zEmitter.write_single_quotedr  r  ÚbÚtÚnÚvÚfÚrÚer  ú\ÚNÚ_ÚLÚP)ú úúú	rG   úúrH   úr  rT  r.  r/  u   â€¨u   â€©c                 C   sÂ  | j r| jd ur|  ¡  | jdkr|  ¡  |  dd¡ d }}|t|ƒkrYd }|t|ƒk r2|| }|d u s^|dv s^d|  krDdksÏn | jr^d|  krRdksÏn d	|  kr]d
ksÏn ||k r„|||… }|  jt|ƒ7  _t| j	ƒr|| 
| j	¡}| j |¡ |}|d urÏ|| jv r•d| j|  }n|dkr dt|ƒ }n|dkr«dt|ƒ }ndt|ƒ }|  jt|ƒ7  _t| j	ƒrÅ| 
| j	¡}| j |¡ |d }d|  k rÞt|ƒd k rOn no|dksé||krO| j||  | jkrO|rO|||… d }||k r|}|  jt|ƒ7  _t| j	ƒr| 
| j	¡}| j |¡ |  ¡  d| _d| _|| dkrOd}|  jt|ƒ7  _t| j	ƒrI| 
| j	¡}| j |¡ |d7 }|t|ƒks&|  dd¡ d S )Nr   r  Tu   "\Â…â€¨â€©ï»¿rØ   r-  r/  r0  r1  r2  rT  õ   Ã¿z\x%02Xu   ï¿¿z\u%04Xz\U%08Xr4   F)rW   rm   rá   r¦   r¥   r:   rf   r<   rþ   rM   rE  rL   r~   ÚESCAPE_REPLACEMENTSr!  ro   r\   r]   )r(   rI  r  r$  r%  r  r'  r   r   r   r  l  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ç   rH  )z
---z
...Tr8   é   z 
r4   r,  rõ   r3   ú+)rl   r   rW   Úfindr5   r:   )r(   rI  rU   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  Trc  Fr   u
   
Â…â€¨â€©rØ   rG   r4   u    
Â…â€¨â€©rZ  r7   z*unexcpected fold indicator \a before spacer,  )rg  r¥   ra   rá   r:   r¦   r<   ro   rþ   rM   rE  rL   r~   Úisspacer   )r(   rI  re  Ú_indentÚ
_indicatorr9  rJ  rK  r$  r%  r  rL  r'  r   r   r   r  Ó  s~   ÿ
€

€

$
ÿ

ÉzEmitter.write_foldedc              	   C   s¤  |   |¡\}}}|  d| d¡ z|d d }|r| j |¡ W n ttfy+   Y nw |dkr3d| _|  ¡  d}d }}|t|ƒkrÐd }	|t|ƒk rO|| }	|r“|	d u sY|	dvr’|||… D ]}
|
dkrj|  ¡  q_|  |
¡ q_|	d ur| j	rŒ| j
d ur| 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sCd S d S )	Nr  Tr4   r   rc  r,  rG   rØ   )rg  r¥   rL   r~   Ú	TypeErrorr5   ra   rá   r:   rW   rU   r¦   rþ   rM   rE  )r(   rI  rÇ   re  ri  rj  rK  r$  r%  r  rL  Úidnxr'  r   r   r   r    sX   €ÿ
€
ã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Ø   Fr4   r,  rG   rH  )rW   rm   rá   r¦   ra   r\   r<   r:   rM   rE  rL   r~   r]   ro   rg   ÚstdoutÚrepr)
r(   rI  r  r'  rJ  rK  r$  r%  r  rL  r   r   r   r  E  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 )Nr8   rG   r4   r   rØ   )r  Ú
start_markr<   r(  Ú
ValueErrorÚstriprþ   rM   rE  ÚUnicodeDecodeErrorrL   r~   rk  rá   )r(   rÇ   Úprer  ÚcolÚ	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 )Nr4   FÚpre_doner   T)rs  zeventtt {} {})rÇ   r   rŒ   r‰   rK   r<   rá   rv  rw  rk  rg   rm  r~   ÚformatÚtype)r(   rS   Ú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)rS   rÇ   rv  )r(   rS   rÇ   r   r   r   rÉ   Ä  s
   

zEmitter.write_post_comment)
NNNNNNNNNN)FNF)F)FFFF)FFr   )T)Ir   r   r   r©   r  r)   ÚpropertyrL   Úsetterr   rƒ   r„   r‡   r…   r‹   r—   rP   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  ra  r  rg  r  r  r  rv  rÊ   rÉ   r   r   r   r   r   ]   sÎ    þ
ôn


	


+
>	



	(*$!- >
ÿ


Bñ
F!
D
.
E$)Ú
__future__r   r   rg   Ústrictyaml.ruamel.errorr   r   Ústrictyaml.ruamel.eventsÚstrictyaml.ruamel.compatr   r   r	   r
   r   r   r   Útypingr   r   r   r   r   r   r   r   Ú__all__r   Úobjectr   r*   r   r   r   r   r   Ú<module>   s   	$%