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   úM/home/ubuntu/.local/lib/python3.10/site-packages/srsly/ruamel_yaml/emitter.pyr      s    c                   @   s   e Zd Zdd„ ZdS )ÚScalarAnalysisc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S ©N©ÚscalarÚemptyÚ	multilineÚallow_flow_plainÚallow_block_plainÚallow_single_quotedÚallow_double_quotedÚallow_block)	Úselfr!   r"   r#   r$   r%   r&   r'   r(   r   r   r   Ú__init__"   s   
zScalarAnalysis.__init__N)r   r   r   r*   r   r   r   r   r   !   s    r   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ 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   r3   B   s   zIndents.popc                 C   s&   z| j d d W S  ty   Y dS w )Néþÿÿÿr   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é   éÿÿÿÿr   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/   r3   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 S )NÚ_emitterFr   Tú:iÿÿ  r7   r   é
   éP   Ú
)úrG   z
)0Ú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)r)   rK   rd   rT   Úwidthre   Ú
line_breakÚblock_seq_indentrj   Úprefix_colonrc   rI   r   r   r   r*   g   sh   ÿÿ
zEmitter.__init__c                 C   s    z| j W S  ty   tdƒ‚w )Nz output stream needs to specified)Ú_streamÚAttributeErrorr   r-   r   r   r   rK   Ó   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   rz   )r)   r0   r   r   r   rK   Û   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}   rI   Ú
serializerÚ_serializerr{   r-   r   r   r   r   ä   s   

ÿzEmitter.serializerc                 C   r?   r   )r:   rU   r-   r   r   r   Ú
flow_levelî   s   
zEmitter.flow_levelc                 C   s   g | _ d | _d S r   )rN   rP   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 r2   )	r   r   r   rQ   r/   Úneed_more_eventsr3   rR   rP   ©r)   rR   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   r   r7   é   F)rQ   Ú
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   r   r8   F)rQ   r‡   rˆ   ÚCollectionStartEventÚDocumentEndEventÚCollectionEndEventÚStreamEndEventr:   )r)   ÚcountÚlevelrR   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 r2   )rS   r/   rT   rl   r6   rk   rm   )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 ƒ‚)NrL   z%expected StreamStartEvent, but got %s)r‡   rR   ÚStreamStartEventr
   rL   rJ   rK   r}   Úwrite_stream_startÚexpect_first_document_startrP   r   r-   r   r   r   rO   >  s   
€
zEmitter.expect_stream_startc                 C   s   t d| jf ƒ‚)Nzexpected nothing, but got %s)r   rR   r-   r   r   r   Úexpect_nothingL  s   zEmitter.expect_nothingc                 C   ó   | j ddS ©NT)Úfirst)Úexpect_document_startr-   r   r   r   r˜   R  ó   z#Emitter.expect_first_document_startc           	      C   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‡   rR   rˆ   ÚversionÚtagsr`   Úwrite_indicatorÚwrite_indentÚprepare_versionÚwrite_version_directiveÚDEFAULT_TAG_PREFIXESÚcopyrp   ÚsortedÚkeysÚprepare_tag_handleÚprepare_tag_prefixÚwrite_tag_directiveÚexplicitrd   Úcheck_empty_documentÚexpect_document_rootrP   r   Úwrite_stream_endr™   r   )	r)   rœ   Úversion_textÚhandlesÚhandleÚprefixÚhandle_textÚprefix_textÚimplicitr   r   r   r   V  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‡   rR   r   r¤   r®   r£   Úflush_streamr   rP   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)rN   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ú&FTr   )Úsinglezexpected NodeEvent, but got %s)!rV   rW   rX   rY   r‡   rR   Ú
AliasEventÚexpect_aliasÚScalarEventrŒ   Úprocess_anchorru   r¤   Úprocess_tagÚexpect_scalarrŠ   r\   r_   ÚcommentÚ
flow_styleÚwrite_post_commentÚwrite_pre_commentr   rd   Ú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   )rR   Úanchorr   rÂ   rN   r3   rP   r-   r   r   r   rÀ   Ò  s   
zEmitter.expect_aliasc                 C   s0   | j dd |  ¡  | j ¡ | _| j ¡ | _d S )NT)r’   )r•   Úprocess_scalarrS   r3   rT   rN   rP   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“   )
rS   r>   rk   r<   r£   r•   rU   r/   Úexpect_first_flow_sequence_itemrP   )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‡   rR   ÚSequenceEndEventrS   r3   rT   rU   r£   rÅ   rÇ   r   Úwrite_line_breakrN   rP   rd   r<   rn   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‡   rR   rÞ   rS   r3   rT   rU   rd   r£   r¤   rÅ   rÇ   r_   rN   rP   r<   rn   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Ù   )rS   r>   rk   r<   r   rU   rd   rc   r£   r/   r•   Úexpect_first_flow_mapping_keyrP   )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‡   rR   ÚMappingEndEventrS   r3   rT   rU   r£   rÅ   rÇ   r   rß   rN   rP   rd   r<   rn   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‡   rR   rì   rS   r3   rT   rU   rd   r£   r¤   rÅ   rÇ   r_   rN   rP   r<   rn   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£   rb   rN   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   r<   rn   r¤   r£   rb   rN   r/   rð   r¼   r-   r   r   r   rï   e  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”   )rX   r\   r]   r<   rß   r•   Ú expect_first_block_sequence_itemrP   )r)   r”   r   r   r   rË   o  s   
zEmitter.expect_block_sequencec                 C   rš   r›   )Úexpect_block_sequence_itemr-   r   r   r   rñ   z  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 )
Nr   Fr   rÖ   ú-T©r\   r7   rÝ   )r‡   rR   rÞ   rÅ   rÈ   rS   r3   rT   rN   rP   r_   r<   r¤   ri   r£   rk   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Ù   )rX   r^   r<   rß   r•   Úexpect_first_block_mapping_keyrP   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 )Nr   rê   Trô   ré   rÖ   rë   )r‡   rR   rì   rÅ   rÈ   rS   r3   rT   rN   rP   r¤   rí   rŠ   r‹   rt   r£   r{   r/   Ú!expect_block_mapping_simple_valuer¼   r¿   rK   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 )Nrt   rê   r   rÖ   FTrë   )rJ   rR   rT   rj   r<   ra   rb   r£   rN   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£   rb   rN   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 r2   )r‡   rR   rŠ   ÚboolrQ   rÞ   r-   r   r   r   rÉ   Õ  ó
   ÿýzEmitter.check_empty_sequencec                 C   rû   r2   )r‡   rR   r‹   rü   rQ   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‡   rR   rˆ   rQ   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‡   rR   Ú	NodeEventrÔ   rq   Úprepare_anchorr:   rÁ   rŒ   rþ   rr   Úprepare_tagrs   Úanalyze_scalarrÿ   r!   ÚMAX_SIMPLE_KEY_LENGTHr¿   rŠ   rÆ   r‹   r"   rt   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)rR   rÔ   rq   r  r£   r_   )r)   Ú	indicatorr   r   r   rÂ     s   
zEmitter.process_anchorc                 C   s  | j j}t| j tƒrF| jd u r|  ¡ | _| jr|d u r6| jdkr&| j jd s1| jdkr6| j jd r6d | _d S | j jd rE|d u rEd}d | _n| jrM|d u rV| j jrVd | _d S |d u r^t	dƒ‚| jd u ri|  
|¡| _| jr‚|  | jd¡ | jr‚| js‚t| j tƒr‚d| _d | _d S )Nrå   r   r   rA   ztag is not specifiedT)rR   rþ   r‡   rÁ   rt   Úchoose_scalar_stylerd   r¸   rr   r   r  r£   rW   r   r_   )r)   rþ   r   r   r   rÃ   (  s<   

€
ÿþ
ý
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|>ú'rG   )rs   r  rR   rÿ   rt   rd   r¸   rY   r"   r#   r   r$   r%   r(   r'   r&   r-   r   r   r   r  I  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	  ú>ú|)rs   r  rR   rÿ   rt   r  rY   rW   r   r¤   Úwrite_double_quotedr!   Úwrite_single_quotedÚwrite_foldedÚwrite_literalrÅ   Úwrite_plainrÇ   )r)   Úsplitr   r   r   rÕ   m  s*   






ÿzEmitter.process_scalarc                 C   s,   |\}}|dkrt d||f ƒ‚d||f S )Nr   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 '!': %rr   Ú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   r   ú-;/?:@&=+$,_.~*'()[]r¡   ©r   r7   ú#r  r  r  r  r  r  ú%%%02Xrå   )r   rI   rJ   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  r   r  rå   z%s%sz!<%s>)r   r©   rp   rª   Ú
startswithr:   rI   rJ   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Ÿ   r   u     	
Â…â€¨â€©r   z#,[]{}&*!|>'"%@`z?:)r   r   ró   z,[]{}rê   rD   r  õ	   
Â…â€¨â€©rG   rÖ   ú~õ   Â…õ   Â õ   íŸ¿õ   î€€õ   ï¿½u   ð€€u   ô¿¿õ   ï»¿)r   r&  r:   r   Úuse_versionrh   re   rM   )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}   rK   rB  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-16r1  )rL   r&  rK   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:   r`   rü   rL   rC  rK   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Ö   )rT   r\   r<   r[   rü   r_   rß   rL   rC  rK   r|   )r)   rT   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 )NTr   r   )
ro   r[   r\   rZ   r<   rü   rL   rC  rK   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©rL   rC  rK   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 %srE  )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Ö   r   r*  rG   õ
    
Â…â€¨â€©z''r7   )rV   rl   rß   r¤   r£   r:   r<   rn   rü   rL   rC  rK   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  rR  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-  r.  r/  r0  rR  õ   Ã¿z\x%02Xu   ï¿¿z\u%04Xz\U%08Xr   F)rV   rl   rß   r¤   r£   r:   re   r<   rü   rL   rC  rK   r|   ÚESCAPE_REPLACEMENTSr  rn   r[   r\   )r)   rG  r  r"  r#  r  r%  r   r   r   r  a  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å   rF  )z
---z
...Tr8   é   z 
r   r*  ró   r4   ú+)rk   r	   rV   Úfindr5   r:   )r)   rG  rT   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
  Tra  Fr   u
   
Â…â€¨â€©rÖ   rG   r   u    
Â…â€¨â€©rX  r7   z*unexcpected fold indicator \a before spacer*  )re  r£   r`   rß   r:   r¤   r<   rn   rü   rL   rC  rK   r|   Úisspacer   )r)   rG  rc  Ú_indentÚ
_indicatorr7  rH  rI  r"  r#  r  rJ  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  Tr   r   ra  r*  rG   rÖ   )re  r£   rK   r|   Ú	TypeErrorr5   r`   rß   r:   rV   rT   r¤   rü   rL   rC  )r)   rG  rÅ   rc  rg  rh  rI  r"  r#  r  rJ  Ú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Ö   Fr   r*  rG   rF  )rV   rl   rß   r¤   r`   r[   r<   r:   rL   rC  rK   r|   r\   rn   rf   ÚstdoutÚrepr)
r)   rG  r  r%  rH  rI  r"  r#  r  rJ  r   r   r   r  :  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   r   r   rÖ   )rÿ   Ú
start_markr<   r&  Ú
ValueErrorÚstriprü   rL   rC  ÚUnicodeDecodeErrorrK   r|   ri  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 )Nr   FÚpre_doner   T)rq  zeventtt {} {})rÅ   r‹   rŠ   r‡   rJ   r<   rß   rt  ru  ri  rf   rk  r|   ÚformatÚtype)r)   rR   Ú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)rR   rÅ   rt  )r)   rR   rÅ   r   r   r   rÇ   ¹  s
   

zEmitter.write_post_comment)
NNNNNNNNNN)FNF)F)FFFF)FFr   )T)Ir   r   r   r§   r  r*   ÚpropertyrK   Úsetterr   r   r‚   r…   rƒ   r‰   r•   rO   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  re  r  r  r  rt  rÈ   rÇ   r   r   r   r   r   ]   sÎ    þ
ôl


	


+
>	



	(!$!- >
ÿ


Bñ
F!
D
.
E$)Ú
__future__r   r   rf   Úerrorr   r   rQ   Ú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   	$%