U
    Æ½„bÑ ã                   @   s†   d dl Z d dlmZmZ d dlT d dlmZmZmZm	Z	m
Z
mZ ddgZG dd„ deƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZdS )é    N)Ú	YAMLErrorÚYAMLStreamError)Ú*)Ú_FÚnprintÚdbgÚ	DBG_EVENTÚcheck_anchorname_charÚnprintfÚEmitterÚEmitterErrorc                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú7/tmp/pip-unpacked-wheel-ctuyz3qg/ruamel/yaml/emitter.pyr      s   c                   @   s   e Zd Zdd„ ZdS )ÚScalarAnalysisc	           	      C   s4   || _ || _|| _|| _|| _|| _|| _|| _d S ©N©ÚscalarÚemptyÚ	multilineÚallow_flow_plainÚallow_block_plainÚallow_single_quotedÚallow_double_quotedÚallow_block)	Úselfr   r   r   r   r   r   r   r   r   r   r   Ú__init__   s    zScalarAnalysis.__init__N)r   r   r   r   r   r   r   r   r      s   r   c                   @   s>   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zdd
d„Zdd„ ZdS )ÚIndentsc                 C   s
   g | _ d S r   )Úvalues©r   r   r   r   r   7   s    zIndents.__init__c                 C   s   | j  ||f¡ d S r   )r    Úappend)r   ÚvalÚseqr   r   r   r"   ;   s    zIndents.appendc                 C   s   | j  ¡ d S ©Nr   )r    Úpopr!   r   r   r   r&   ?   s    zIndents.popc                 C   s,   z| j d d W S  tk
r&   Y dS X d S )Néþÿÿÿé   F)r    Ú
IndexErrorr!   r   r   r   Úlast_seqC   s    zIndents.last_seqFc                 C   sr   t | jƒdk s| jd d s2t | jƒdks.|s2dS | jd d d k	rR| jd d nd}|rb|| S || | d S )Né   éÿÿÿÿr(   r   ©Úlenr    )r   Z
seq_indentÚcolumnZpre_commentÚbaser   r   r   Úseq_flow_alignL   s    $zIndents.seq_flow_alignc                 C   s
   t | jƒS r   r-   r!   r   r   r   Ú__len__Z   s    zIndents.__len__N)F)	r   r   r   r   r"   r&   r*   r1   r2   r   r   r   r   r   5   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d�d d!„Zd"d#„ Zd$d%„ Zdžd&d'„Zd(d)„ Zd*d+„ ZdŸd,d-„Zd.d/„ Zd0d1„ Zd d2d3„Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"d¡d@dA„Z#dBdC„ Z$dDdE„ Z%d¢dFdG„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„ Z9d£dndo„Z:dpdq„ Z;d¤drds„Z<dtdu„ Z=dvdw„ Z>d¥dydz„Z?d{d|d}d~dd€d�d‚dƒd„d…d†d‡dˆd‰dŠœZ@d¦d‹dŒ„ZAd�dŽ„ ZBd�d�„ ZCd§d‘d’„ZDd¨d“d”„ZEd©d•d–„ZFd—d˜„ ZGd™dš„ ZHdS )ªr   ú!z!!)r3   ztag:yaml.org,2002:é€   Nc                 C   s¦  || _ | j d k	r*t| j dd ƒd k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 k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k�rx|| _)d | _*d | _+d | _,d | _-d | _.d| _/d| _0d S )NÚ_emitterFr   Tú:iÿÿ  r+   r(   é
   éP   Ú
)úr9   z
Únull)1ÚdumperÚgetattrr5   Ú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   r>   rW   rG   ÚwidthrX   Z
line_breakZblock_seq_indentr]   Zprefix_colonrV   r<   r   r   r   r   i   sh    ÿ"
zEmitter.__init__c                 C   s*   z| j W S  tk
r$   tdƒ‚Y nX d S )Nz output stream needs to specified)Ú_streamÚAttributeErrorr   r!   r   r   r   r>   Õ   s    zEmitter.streamc                 C   s(   |d krd S t |dƒstdƒ‚|| _d S )NÚwritez.stream argument needs to have a write() method)Úhasattrr   rk   )r   r#   r   r   r   r>   Ý   s
    
c                 C   s>   z t | jdƒr| jjW S | jjW S  tk
r8   |  Y S X d S )NÚtyp)rn   r<   Ú
serializerZ_serializerrl   r!   r   r   r   rp   æ   s    

zEmitter.serializerc                 C   s
   t | jƒS r   )r.   rH   r!   r   r   r   Ú
flow_levelð   s    zEmitter.flow_levelc                 C   s   g | _ d | _d S r   )rA   rC   r!   r   r   r   Údisposeõ   s    zEmitter.disposec                 C   sF   t tƒrt|ƒ | j |¡ |  ¡ sB| j d¡| _|  ¡  d | _qd S r%   )	r   r   r   rD   r"   Úneed_more_eventsr&   rE   rC   ©r   rE   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   r(   r+   é   F)rD   Ú
isinstanceÚDocumentStartEventÚneed_eventsÚSequenceStartEventÚMappingStartEventrt   r   r   r   rs     s    






zEmitter.need_more_eventsc                 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   r(   r,   F)rD   rw   rx   ÚCollectionStartEventÚDocumentEndEventZCollectionEndEventÚStreamEndEventr.   )r   ÚcountÚlevelrE   r   r   r   ry     s    


zEmitter.need_eventsFc                 C   sX   | j  | j|¡ | jd kr0|r(| j| _qTd| _n$|sT|  j| j  ¡ rJ| jn| j7  _d S r%   )rF   r"   rG   r_   r*   r^   r`   )r   ÚflowÚsequenceÚ
indentlessr   r   r   Úincrease_indent#  s    

ÿzEmitter.increase_indentc                 C   sR   t | jtƒr<| jjr*t| jdƒs*| jj| _|  ¡  | j| _nt	t
d| jd�ƒ‚d S )Nr?   z1expected StreamStartEvent, but got {self_event!s}©Z
self_event)rw   rE   ZStreamStartEventr?   rn   r>   Úwrite_stream_startÚexpect_first_document_startrC   r   r   r!   r   r   r   rB   >  s    

ÿzEmitter.expect_stream_startc                 C   s   t td| jd�ƒ‚d S )Nz(expected nothing, but got {self_event!s}r…   )r   r   rE   r!   r   r   r   Úexpect_nothingJ  s    ÿzEmitter.expect_nothingc                 C   s   | j dd�S ©NT)Úfirst)Úexpect_document_startr!   r   r   r   r‡   R  s    z#Emitter.expect_first_document_startc           	      C   sv  t | jtƒ�r$| jjs| jjr8| jr8|  dd¡ |  ¡  | jjrX|  | jj¡}|  	|¡ | j
 ¡ | _| jjr¼t| 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| _nNt | jtƒ�r`| j�rN|  dd¡ |  ¡  |  ¡  | j| _nttd| jd�ƒ‚d S )Nú...Tú---z3expected DocumentStartEvent, but got {self_event!s}r…   )rw   rE   rx   ÚversionÚtagsrS   Úwrite_indicatorÚwrite_indentÚprepare_versionÚwrite_version_directiveÚDEFAULT_TAG_PREFIXESÚcopyrc   ÚsortedÚkeysÚprepare_tag_handleÚprepare_tag_prefixÚwrite_tag_directiveÚexplicitrW   Úcheck_empty_documentÚexpect_document_rootrC   r~   Úwrite_stream_endrˆ   r   r   )	r   rŠ   Úversion_textZhandlesÚhandleÚprefixÚhandle_textÚprefix_textÚimplicitr   r   r   r‹   V  sZ    



ÿþýüú

þÿzEmitter.expect_document_startc                 C   sX   t | jtƒrB|  ¡  | jjr0|  dd¡ |  ¡  |  ¡  | j| _nt	t
d| jd�ƒ‚d S )NrŒ   Tz1expected DocumentEndEvent, but got {self_event!s}r…   )rw   rE   r}   r‘   r›   r�   Úflush_streamr‹   rC   r   r   r!   r   r   r   Úexpect_document_end„  s    
ÿzEmitter.expect_document_endc                 C   s   | j  | j¡ | jdd� d S )NT)Úroot)rA   r"   r¦   Úexpect_noder!   r   r   r   r�   ’  s    zEmitter.expect_document_rootc           	      C   sR  || _ || _d}|| _|| _t| jtƒr4|  ¡  �nt| jtt	fƒ�r<|  
d¡rht| jtƒrh| jrhd| _|r†t| jtƒr†| js†|  ¡  |  ¡  t| jtƒr¦|  ¡  �qNt| jtƒ�r„| j| j }}| jj�rJ| jjdkrð|  | j¡rðd| _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|  ¡  n¶t| jtƒ�rN| jjdk�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#t$d| jd�ƒ‚d S )	NFú&Tr,   r(   )ÚsingleÚforce_flow_indentz*expected NodeEvent, but got {self_event!s}r…   )%rI   rJ   rK   rL   rw   rE   Ú
AliasEventÚexpect_aliasÚScalarEventr|   Úprocess_anchorrh   r‘   Úprocess_tagÚexpect_scalarrz   rO   rR   ÚcommentÚ
flow_styleÚwrite_post_commentr/   Úwrite_pre_commentrF   r    rq   rW   Úcheck_empty_sequenceÚexpect_flow_sequenceÚexpect_block_sequencer{   Úcheck_empty_mappingÚexpect_flow_mappingZnr_itemsÚexpect_block_mappingr   r   )	r   r§   r‚   ÚmappingÚ
simple_keyr«   Úi2Zn2r/   r   r   r   r¨   ™  s’    ÿ
þýÿ
þý




ÿþýü

ÿþýüÿ
ÿzEmitter.expect_nodec                 C   s.   | j jd krtdƒ‚|  d¡ | j ¡ | _d S )Nz!anchor is not specified for aliasr   )rE   Úanchorr   r¯   rA   r&   rC   r!   r   r   r   r­   ä  s    
zEmitter.expect_aliasc                 C   s0   | j dd� |  ¡  | j ¡ | _| j ¡ | _d S )NT)r�   )r„   Úprocess_scalarrF   r&   rG   rA   rC   r!   r   r   r   r±   ë  s    zEmitter.expect_scalarc                 C   sh   |r| j ddd� | j | j| j|¡}| jd| d ddd� |sP| j ddd� | j d¡ | j| _	d S )NT©r�   r‚   ú ú[©rN   )
r„   rF   r1   r^   r/   r�   rH   r"   Úexpect_first_flow_sequence_itemrC   )r   r«   Úindr   r   r   r·   ô  s    ÿzEmitter.expect_flow_sequencec                 C   s´   t | jtƒr|| j ¡ | _| j ¡ }|dks.t‚|  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‚   )rw   rE   ÚSequenceEndEventrF   r&   rG   rH   ÚAssertionErrorr�   r²   r´   rq   Úwrite_line_breakrA   rC   rW   r/   ra   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.t‚| 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È   )rw   rE   rÉ   rF   r&   rG   rH   rÊ   rW   r�   r‘   r²   r´   rR   rA   rC   r/   ra   r"   rÌ   r¨   rÍ   r   r   r   rÌ     s"    
z!Emitter.expect_flow_sequence_itemc                 C   s”   |r| j ddd� | j | j| j|¡}d}|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Á   Ú{r,   rÃ   Ú rÂ   rÄ   )r„   rF   r1   r^   r/   rq   rH   rW   rV   r�   r"   Úexpect_first_flow_mapping_keyrC   )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.t‚|  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¼   )rw   rE   ÚMappingEndEventrF   r&   rG   rH   rÊ   r�   r²   r´   rq   rË   rA   rC   rW   r/   ra   r‘   Úcheck_simple_keyr"   Ú expect_flow_mapping_simple_valuer¨   Úexpect_flow_mapping_valuerÍ   r   r   r   rÒ   B  s$    

z%Emitter.expect_first_flow_mapping_keyc                 C   s  t | jtƒr’| j ¡ | _| j ¡ }|dks.t‚| 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Ö   )rw   rE   r×   rF   r&   rG   rH   rÊ   rW   r�   r‘   r²   r´   rR   rA   rC   r/   ra   rØ   r"   rÙ   r¨   rÚ   rÍ   r   r   r   Úexpect_flow_mapping_keyZ  s,    
zEmitter.expect_flow_mapping_keyc                 C   s,   |   | jd¡ | j | j¡ | jdd� d S )NFTrÖ   )r�   rU   rA   r"   rÛ   r¨   r!   r   r   r   rÙ   y  s    z(Emitter.expect_flow_mapping_simple_valuec                 C   sF   | j s| j| jkr|  ¡  |  | jd¡ | j | j¡ | j	dd� d S )NTrÖ   )
rW   r/   ra   r‘   r�   rU   rA   r"   rÛ   r¨   r!   r   r   r   rÚ     s
    z!Emitter.expect_flow_mapping_valuec                 C   sH   | j r| j }nd}| js,| jdkr,|  ¡  | jdd|d� | j| _d S )NFr   T)r�   r‚   rƒ   )rK   rO   rP   r/   rË   r„   Ú expect_first_block_sequence_itemrC   )r   rƒ   r   r   r   r¸   ‰  s    
zEmitter.expect_block_sequencec                 C   s   | j dd�S r‰   )Úexpect_block_sequence_itemr!   r   r   r   rÜ   ”  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rÄd| _
| j | j¡ | jdd	� d S )
Nr(   Fr   rÂ   ú-T©rO   r+   rÈ   )rw   rE   rÉ   r²   rµ   rF   r&   rG   rA   rC   rR   r/   r‘   r\   r�   r^   r"   rÝ   r¨   )r   rŠ   ZnonlrÆ   r   r   r   rÝ   ˜  s     z"Emitter.expect_block_sequence_itemc                 C   s8   | j s| js| jdks|  ¡  | jddd� | j| _d S )Nr   FrÁ   )rK   rQ   r/   rË   r„   Úexpect_first_block_mapping_keyrC   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   s6  |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ƒsÂz | jjdkrª| jdddd� W n tk
rÀ   Y nX | j | j¡ | jddd� t | jtƒ�r2| jjdk�s2| j d¡ n*| jdddd� | j | j¡ | jdd� d S )Nr(   rÕ   Trß   rÔ   rÂ   rÖ   )rw   rE   r×   r²   rµ   rF   r&   rG   rA   rC   r‘   rØ   rz   r{   rg   r�   rl   r"   Ú!expect_block_mapping_simple_valuer¨   r¬   r>   rm   Úexpect_block_mapping_value)r   rŠ   r   r   r   rá   º  s2    
 ÿz Emitter.expect_block_mapping_keyc                 C   sn   t | jdd ƒdkrP| jdkr>| jd k	r>d| j| j  | j }n| j}|  |d¡ | j 	| j
¡ | jdd� d S )Nrg   rÕ   r   rÂ   FTrÖ   )r=   rE   rG   r]   r/   rT   rU   r�   rA   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�   rU   rA   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%   )rw   rE   rz   ÚboolrD   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%   )rw   rE   r{   rå   rD   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 koL|jd koL|joL|jdkS )NFr   rÑ   )	rw   rE   rx   rD   r®   r¿   Útagr¤   Úvaluert   r   r   r   rœ      s    

ÿþýûzEmitter.check_empty_documentc                 C   sZ  d}t | jtƒrD| jjd k	rD| jd kr6|  | jj¡| _|t| jƒ7 }t | jttfƒrˆ| jj	d k	rˆ| j
d krz|  | jj	¡| _
|t| j
ƒ7 }t | jtƒr¾| jd kr®|  | jj¡| _|t| jjƒ7 }|| jk �oXt | jtƒ�pXt | jtƒrò| jjdk�pXt | jtƒ�r| jjdk�pXt | jtƒ�rH| jj�o6| j�o6| jdk �rH| jj �pX|  ¡ �pX|  ¡ S )Nr   Tz'")rw   rE   Z	NodeEventr¿   rd   Úprepare_anchorr.   r®   r|   ræ   re   Úprepare_tagrf   Úanalyze_scalarrç   r   ÚMAX_SIMPLE_KEY_LENGTHr¬   rz   r³   r{   r   rg   r   r¶   r¹   )r   Úlengthr   r   r   rØ     s>    
ÿ
þ

ÿþþù	÷
õzEmitter.check_simple_keyc                 C   sX   | j jd krd | _dS | jd kr0|  | j j¡| _| jrN|  || j d¡ d| _d | _dS )NFT)rE   r¿   rd   rè   r�   rR   )r   Ú	indicatorr   r   r   r¯   /  s    
zEmitter.process_anchorc                 C   sZ  | j j}t| j tƒrÎ| jd krj|  ¡ | _| j jdkrj| jdkrj|dkrj| jd k	rj| j| j _d | _|  ¡ | _| j	rx|d kr®| jdkrŽ| j j
d s¤| jdkr®| j j
d r®d | _d S | j j
d rî|d krîd}d | _n | j	rÜ|d krî| j j
rîd | _d S |d krþtdƒ‚| jd k�r|  |¡| _| j�rP|  | jd¡ | j�rP| j�sPt| j tƒ�rPd| _d | _d S )	NrÑ   ú'ztag:yaml.org,2002:nullr   r(   r3   ztag is not specifiedT)rE   ræ   rw   r®   rg   Úchoose_scalar_stylerç   ri   rf   rW   r¤   re   r   ré   r�   rJ   rq   rR   )r   ræ   r   r   r   r°   =  s\    


ÿþýü

ÿ
ÿþ
þÿþ
ýzEmitter.process_tagc                 C   s2  | j d k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r’dS d| j _| jjrÊ| jjdkrÊ| j
sÊ| jsÊ| j jrÊ| jjS | jjsö| j jröd| jjksòd	| jjk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   r+   rÑ   Tz|>rî   r9   )rf   rê   rE   rç   rg   rW   r¤   rL   r   r   rq   r   r   r   r   r   r!   r   r   r   rï   g  sX    

ÿ
ÿÿÿÿýüûûÿþý
ÿÿzEmitter.choose_scalar_stylec              	   C   s¤  | j d kr|  | jj¡| _ | jd kr.|  ¡ | _| j }| jrJ| jsJ|  	¡  | jdkrh|  
| j j|¡ �n| jdkr„|  | j j|¡ nú| jdkrÚ|  | 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�rnz| jjd d }W n ttfk
�r   d}Y nX |  | 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î   ú>r   r(   ú|rÑ   )rf   rê   rE   rç   rg   rï   rL   rJ   rq   r‘   Úwrite_double_quotedr   Úwrite_single_quotedÚwrite_foldedr²   r/   rG   r)   Ú	TypeErrorÚwrite_literalÚwrite_plainr´   )r   ÚsplitZcmxr   r   r   rÀ   Š  sL    





ÿ
þý
ÿ
þý
zEmitter.process_scalarc                 C   s0   |\}}|dkr"t td||d�ƒ‚td||d�S )Nr(   z-unsupported YAML version: {major:d}.{minor:d})ÚmajorÚminorz{major:d}.{minor:d}©r   r   )r   rŽ   rú   rû   r   r   r   r’   »  s    ÿzEmitter.prepare_versionc                 C   s¦   |st dƒ‚|d dks$|d dkr4t td|d�ƒ‚|dd… D ]`}d|  krXd	ks@n d
|  krndks@n d|  kr„dks@n |dks@t td||d�ƒ‚q@|S )Nztag handle must not be emptyr   r3   r,   z2tag handle must start and end with '!': {handle!r})r    r(   Ú0Ú9ÚAÚZÚaÚzz-_z6invalid character {ch!r} in the tag handle: {handle!r})Úchr    rü   )r   r    r  r   r   r   r˜   Ä  s     
ÿJýÿzEmitter.prepare_tag_handlec           	      C   s4  |st dƒ‚g }d }}|d dkr(d}d}| jrXt| jddƒ}|d ksP|dkrX|d7 }|t|ƒk �r|| }d	|  kr‚d
ks¸n d|  kr˜dks¸n d|  kr®dks¸n ||krÂ|d7 }qX||k rÜ| |||… ¡ |d  }}|}|D ]}| tdt|ƒd�¡ qðqX||k �r*| |||… ¡ d |¡S )Nztag prefix must not be emptyr   r3   r(   ú-;/?:@&=+$,_.~*'()[]rŽ   ©r(   r+   ú#rý   rþ   rÿ   r   r  r  ú%{ord_ch:02X}©Zord_chrÑ   )r   r<   r=   r.   r"   r   ÚordÚjoin)	r   r¡   ÚchunksÚstartÚendÚch_setrŽ   r  Údatar   r   r   r™   ×  s0    J

zEmitter.prepare_tag_prefixc                 C   sÒ  |st dƒ‚|dkr|S d }|}t| j ¡ ƒ}|D ]@}| |¡r2|dksXt|ƒt|ƒk r2| j| }|t|ƒd … }q2g }d }}d}	| jr°t| jddƒ}
|
d ks¨|
dkr°|	d7 }	|t|ƒk �rˆ|| }d|  krÜd	k�s.n d
|  krôdk�s.n d|  k�rdk�s.n ||	k�s.|dk�r8|dk�r8|d7 }q°||k �rT| |||… ¡ |d  }}|}|D ]}| t	dt
|ƒd�¡ �qhq°||k �r¤| |||… ¡ d |¡}|�rÂt	d||d�S t	d|d�S d S )Nztag must not be emptyr3   r   r  rŽ   r  r  rý   rþ   rÿ   r   r  r  r(   r  r  rÑ   z{handle!s}{suffix_text!s})r    Úsuffix_textz!<{suffix_text!s}>)r  )r   r–   rc   r—   Ú
startswithr.   r<   r=   r"   r   r	  r
  )r   ræ   r    ÚsuffixÚprefixesr¡   r  r  r  r  rŽ   r  r  r  r   r   r   ré   ó  sl    "
 ÿÿ
 þþ
 ý
ý
üûû



zEmitter.prepare_tagc                 C   s4   |st dƒ‚|D ]}t|ƒst td||d�ƒ‚q|S )Nzanchor must not be emptyz2invalid character {ch!r} in the anchor: {anchor!r})r  r¿   )r   r	   r   )r   r¿   r  r   r   r   rè      s    ýÿzEmitter.prepare_anchorc              
   C   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k}d}d}d}|t|ƒk �rÈ|| }|dkrþ|d	kr¶d}d}|d
krè| jjdkrÐd}nt|ƒdkràd}|rèd}|dkrü|rüd}d}nZ|dk�rd}|dk�r(| jjdk�r(d}|dk�r@|�r@d}d}|dk�rX|�rXd}d}|dk�rfd}|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�rJ|dk�r d}|t|ƒd k�r6d}|�r@d}
d}d}nJ|dk�rŒ|dk�rbd}|t|ƒd k�rxd}	|�r‚d}d}d}nd}d}|d7 }|dk}|d t|ƒk�pÄ||d  dk}qˆd}d}d}d}d}|�sô|�sô|�sô|	�rüd }}|�rd}|
�rd } }}|�r0d } } }}n|�rNd } }}| j�sNd}|�r\d }}|�rfd}|�rpd}t |d||||||d�S )NTFr   r�   rŒ   r(   u     	
Â…â€¨â€©r   z#,[]{}&*!|>'"%@`z?:)r(   r(   rÞ   z,[]{}rÕ   r6   r  õ	   
Â…â€¨â€©r9   rÂ   ú~õ   Â…õ   Â õ   íŸ¿õ   î€€õ   ï¿½u   ð�€€u   ô�¿¿õ   ï»¿)r   r  r.   rp   Zuse_versionr[   rX   r@   )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)rn   r>   r  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  )r?   r  r>   rm   Ú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_endc                 C   sh   | j s
|s|}nd| }|| _ | jo&|| _|  jt|ƒ7  _d| _t| jƒrX| | j¡}| j 	|¡ d S )NrÂ   F)
rN   rO   r/   r.   rS   rå   r?   r  r>   rm   )r   rí   Zneed_whitespacerN   rO   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 r†d| _d|| j  }|| _| jrz| | j¡}| j	 
|¡ d S )Nr   FTrÂ   )rG   rO   r/   rN   rå   rR   rË   r?   r  r>   rm   )r   rG   r  r   r   r   r‘     s&    
ÿþýý

zEmitter.write_indentc                 C   sT   |d kr| j }d| _d| _|  jd7  _d| _t| jƒrD| | j¡}| j 	|¡ d S )NTr(   r   )
rb   rN   rO   rM   r/   rå   r?   r  r>   rm   )r   r  r   r   r   rË     s    
zEmitter.write_line_breakc                 C   s6   t d|d�}| jr| | j¡}| j |¡ |  ¡  d S )Nz%YAML {version_text!s})rŸ   ©r   r?   r  r>   rm   rË   )r   rŸ   r  r   r   r   r“   !  s
    zEmitter.write_version_directivec                 C   s8   t d||d�}| jr | | j¡}| j |¡ |  ¡  d S )Nz$%TAG {handle_text!s} {prefix_text!s})r¢   r£   r   )r   r¢   r£   r  r   r   r   rš   )  s    ýzEmitter.write_tag_directiveTc           
      C   s^  | j r*| jd k	r*|  ¡  | jdkr*|  ¡  |  dd¡ d}d}d }}|t|ƒk�rNd }|t|ƒk rl|| }|�r|d k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 k�s|dk�râ|| dk�r4|  ¡  |||… D ]$}	|	dk�rX|  ¡  n
|  |	¡ �q@|  ¡  |}nn|d k�s’|d	k�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 k	�rD|dk}|dk}|d7 }qF|  dd¡ d S )Nr   rî   TFrÂ   r(   r  r9   õ
    
Â…â€¨â€©z''r+   )rI   r_   rË   r‘   r�   r.   r/   ra   rå   r?   r  r>   rm   )
r   Útextrù   ÚspacesÚbreaksr  r  r  r  Úbrr   r   r   rô   7  s|    


ÿ
þýü
û







zEmitter.write_single_quotedrý   r  ÚbÚtÚnÚvÚfÚrÚerð   ú\ÚNÚ_ÚLÚP)ú úúú	r9   úúr:   úrð   r-  r  r  u   â€¨u   â€©c                 C   sÜ  | j r*| jd k	r*|  ¡  | jdkr*|  ¡  |  dd¡ d }}|t|ƒk�rÌd }|t|ƒk rd|| }|d ksÂ|dksÂd|  krŠdk�s¾n | jrÂd|  kr¨dk�s¾n d	|  krÀd
k�s¾n ||k �r|||… }|  jt|ƒ7  _t| j	ƒ�r| 
| j	¡}| j |¡ |}|d k	�r¾|| jk�r8d| j|  }nH|dk�rTtdt|ƒd�}n,|dk�rptdt|ƒd�}ntdt|ƒd�}|  jt|ƒ7  _t| j	ƒ�rª| 
| j	¡}| j |¡ |d }d|  k �rÞt|ƒd k �rÂn nà|dk�sö||k�rÂ| j||  | jk�rÂ|�rÂ|||… d }||k �r0|}|  jt|ƒ7  _t| j	ƒ�rZ| 
| j	¡}| j |¡ |  ¡  d| _d| _|| dk�rÂd}|  jt|ƒ7  _t| j	ƒ�r¶| 
| j	¡}| j |¡ |d7 }q>|  dd¡ d S )Nr   rð   Tu   "\Â…â€¨â€©ï»¿rÂ   r  r  r  r  r  r-  õ   Ã¿z\x{ord_ch:02X}r  u   ï¿¿z\u{ord_ch:04X}z\U{ord_ch:08X}r(   F)rI   r_   rË   r‘   r�   r.   rX   r/   rå   r?   r  r>   rm   ÚESCAPE_REPLACEMENTSr   r	  ra   rN   rO   )r   r"  rù   r  r  r  r  r   r   r   ró   Š  s¦    

ÿþ üü
ú ùù
 ùù




 ÿ

ÿþþýü

zEmitter.write_double_quotedc              	   C   sì   d}d}d}|rÚ|d dkr0| j }|t|ƒ7 }n|| jr¬dD ]b}d}| ||¡}|dkrXq�z||d  dkrnW q�W n tk
r„   Y nX |d7 }qB|dkr: qžq:|dkr¬| j }|d d	kr¾d
}nt|ƒdksÖ|d d	krÚd}||7 }|||fS )Nr   rÑ   r!  )z
---z
...r,   é   z 
r(   r  rÞ   r'   ú+)r^   ÚstrrI   Úfindr)   r.   )r   r"  rG   rí   Úhintsr  Úposr   r   r   Údetermine_block_hintsÐ  s:    
zEmitter.determine_block_hintsc                 C   s\  |   |¡\}}}|  d| d¡ |dkr.d| _|  ¡  d}d}d}d }}	|	t|ƒk�rXd }
|	t|ƒk rp||	 }
|rú|
d ks„|
dkrö|s¬|
d k	r¬|
dkr¬|| dkr¬|  ¡  |
dk}|||	… D ] }|dkrÖ|  ¡  qÀ|  |¡ qÀ|
d k	rò|  ¡  |	}�n:|�rx|
dk�r4|d	 |	k�r0| j| jk�r0|  ¡  nB|||	… }|  jt|ƒ7  _t| j	ƒ�rf| 
| j	¡}| j |¡ |	}n¼|
d k�sŒ|
d
k�r4|||	… }|  jt|ƒ7  _t| j	ƒ�rÂ| 
| j	¡}| j |¡ |
dk�r|	t|ƒd	 k �r||	d   ¡ �s|  ¡  |  ¡  |	d7 }	ntdƒ‚|
d k�r0|  ¡  |	}|
d k	�rN|
dk}|
dk}|	d	7 }	qJd S )Nrñ   Tr<  Fr   u
   
Â…â€¨â€©rÂ   r9   r(   u    
Â…â€¨â€©r3  r+   z*unexcpected fold indicator \a before spacer  )rA  r�   rS   rË   r.   r‘   r/   ra   rå   r?   r  r>   rm   Úisspacer   )r   r"  r?  Ú_indentÚ
_indicatorr  r#  r$  r  r  r  r%  r  r   r   r   rõ   ñ  sz    ÿþý
ü



$


zEmitter.write_foldedc                 C   s‚  |   |¡\}}}t|tƒsd}|  d| | d¡ |dkr@d| _|  ¡  d}d }}|t|ƒk�r~d }	|t|ƒk rz|| }	|�r|	d ks’|	dk�rb|||… D ] }
|
dkr´|  ¡  qž|  |
¡ qž|	d k	�r| jrú| jd k	rà| jnd}| j	 
d||  ¡ n|  ¡  |}nZ|	d k�s|	dk�rb|||… }t| jƒ�r@| | j¡}| j	 
|¡ |	d k�r^|  ¡  |}|	d k	�rt|	dk}|d	7 }qTd S )
NrÑ   rò   Tr<  r   r  r9   rÂ   r(   )rA  rw   r=  r�   rS   rË   r.   rI   rG   r>   rm   r‘   rå   r?   r  )r   r"  r²   r?  rC  rD  r$  r  r  r  r%  Zidnxr  r   r   r   r÷   3  sH    




zEmitter.write_literalc           
      C   sT  | j r2| jd k	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�rPd }|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k�r,|| dk�rb|  ¡  |||… D ]$}	|	dk�r†|  ¡  n
|  |	¡ �qn|  ¡  d| _d| _|}n~|d k�sÂ|dk�r,|||… }|  jt|ƒ7  _| j�rô| 	| j¡}z| j
 |¡ W n"   tj t|ƒd ¡ ‚ Y nX |}|d k	�rF|dk}|dk}|d7 }q�d S )	Nr   TrÂ   Fr(   r  r9   r!  )rI   r_   rË   r‘   rS   rN   r/   r.   r?   r  r>   rm   rO   ra   rY   ÚstdoutÚrepr)
r   r"  rù   r  r#  r$  r  r  r  r%  r   r   r   rø   i  s|    







zEmitter.write_plainc                 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k
rx   | jd }Y nX z||| j }| jr¬| ¡ r¬|dk r¬|d dkr¬d}d| | }zt| jƒrÐ| | j¡}W n t	k
ræ   Y nX | j
 |¡ W n tk
�r   ‚ Y nX |�s|  ¡  d S )Nr,   r9   r(   r   rÂ   )rç   Z
start_markr/   r  Ú
ValueErrorÚstriprå   r?   r  ÚUnicodeDecodeErrorr>   rm   rö   rË   )r   r²   Úprerç   ÚcolZ	nr_spacesr   r   r   Úwrite_comment®  s4    
"
zEmitter.write_commentc              	   C   s¨   |j d }|d k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 n. t	k
r¢   t
j d t|ƒ|¡¡ ‚ Y nX dS )Nr(   FÚpre_doner   T)rJ  zeventtt {} {})r²   r{   rz   rw   r=   r/   rË   rL  rM  rö   rY   rE  rm   ÚformatÚtype)r   rE   ÚcommentsZstart_eventsr²   r   r   r   rµ   Ò  s"    


zEmitter.write_pre_commentc                 C   s,   | j jd d krdS |jd }|  |¡ dS )Nr   FT)rE   r²   rL  )r   rE   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)Ir   r   r   r”   rë   r   Úpropertyr>   Úsetterrp   rq   rr   ru   rs   ry   r„   rB   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ó   rA  rõ   r÷   rø   rL  rµ   r´   r   r   r   r   r   _   sÊ   þ          ô
l


	


.
K	




 	"*#1	- 6


Bñ
F!B
6
E
$)rY   Zruamel.yaml.errorr   r   Zruamel.yaml.eventsZruamel.yaml.compatr   r   r   r   r	   r
   ÚAnyÚDictÚListÚUnionÚTextÚTupleÚOptionalZ
StreamTypeÚ__all__r   r   r   r   r   r   r   r   Ú<module>
   s    *