o
    ¬£`þ§  ã                   @   sL   d dgZ ddlmZ ddlT G dd„ deƒZG dd„ dƒZG dd „ d ƒZd	S )
ÚEmitterÚEmitterErroré   )Ú	YAMLError)Ú*c                   @   s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú./usr/lib/python3/dist-packages/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                   @   s2  e Zd ZdddœZ		dd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		ddd„Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zdd8d9„Zd:d;„ Zd<d=„ Zdd>d?„Z d@dA„ Z!dBdC„ Z"dDdE„ Z#dFdG„ Z$dHdI„ Z%dJdK„ Z&dLdM„ Z'dNdO„ Z(dPdQ„ Z)dRdS„ Z*dTdU„ Z+dVdW„ Z,dXdY„ Z-dZd[„ Z.d\d]„ Z/d^d_„ Z0d`da„ Z1dbdc„ Z2ddde„ Z3	dŽdfdg„Z4dhdi„ Z5d‘djdk„Z6dldm„ Z7dndo„ Z8d’dqdr„Z9dsdtdudvdwdxdydzd{d|d}d~dd€dd‚œZ:d’dƒd„„Z;d…d†„ Z<d‡dˆ„ Z=d‰dŠ„ Z>d’d‹dŒ„Z?dS )“r   ú!z!!)r   ztag:yaml.org,2002:Nc                 C   sö   || _ d | _g | _| j| _g | _d | _g | _d | _d| _	d| _
d| _d| _d| _d| _d| _d| _d| _d| _|| _|| _d| _|rQd|  k rLdk rQn n|| _d| _|r`|| jd kr`|| _d| _|d	v rj|| _d | _d | _d | _d | _d | _d S )
Né    FTé   r   é
   éP   Ú
)úr   z
)ÚstreamÚencodingÚstatesÚexpect_stream_startÚstateÚeventsÚeventÚindentsÚindentÚ
flow_levelÚroot_contextÚsequence_contextÚmapping_contextÚsimple_key_contextÚlineÚcolumnÚ
whitespaceÚ	indentionÚ
open_endedÚ	canonicalÚallow_unicodeÚbest_indentÚ
best_widthÚbest_line_breakÚtag_prefixesÚprepared_anchorÚprepared_tagÚanalysisÚstyle)r   r   r2   r'   Úwidthr3   Z
line_breakr	   r	   r
   r   &   sD   
zEmitter.__init__c                 C   s   g | _ d | _d S r   )r!   r#   ©r   r	   r	   r
   Údisposej   s   
zEmitter.disposec                 C   s@   | j  |¡ |  ¡ s| j  d¡| _|  ¡  d | _|  ¡ r
d S d S ©Nr   )r$   ÚappendÚneed_more_eventsÚpopr%   r#   ©r   r%   r	   r	   r
   Úemito   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   r   é   F)r$   Ú
isinstanceÚDocumentStartEventÚneed_eventsÚSequenceStartEventÚMappingStartEventrC   r	   r	   r
   rA   x   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   éÿÿÿÿF)r$   rF   rG   ÚCollectionStartEventÚDocumentEndEventZCollectionEndEventÚStreamEndEventÚlen)r   ÚcountÚlevelr%   r	   r	   r
   rH   …   s   


ÿzEmitter.need_eventsFc                 C   sN   | j  | j¡ | jd u r|r| j| _d S d| _d S |s%|  j| j7  _d S d S r?   )r&   r@   r'   r4   )r   ÚflowÚ
indentlessr	   r	   r
   Úincrease_indent’   s   

ÿzEmitter.increase_indentc                 C   sL   t | jtƒr| jjrt| jdƒs| jj| _|  ¡  | j| _d S t	d| j ƒ‚)Nr    z%expected StreamStartEvent, but got %s)
rF   r%   ZStreamStartEventr    Úhasattrr   Úwrite_stream_startÚexpect_first_document_startr#   r   r=   r	   r	   r
   r"       s   
ÿzEmitter.expect_stream_startc                 C   s   t d| j ƒ‚)Nzexpected nothing, but got %s)r   r%   r=   r	   r	   r
   Úexpect_nothingª   s   zEmitter.expect_nothingc                 C   ó   | j ddS ©NT)Úfirst)Úexpect_document_startr=   r	   r	   r
   rW   ¯   ó   z#Emitter.expect_first_document_startc           	      C   sh  t | jtƒr| jjs| jjr| jr|  dd¡ |  ¡  | jjr+|  | jj¡}|  	|¡ | j
 ¡ | _| jjr]t| jj ¡ ƒ}|D ]}| jj| }|| j|< |  |¡}|  |¡}|  ||¡ q?|ov| jj ov| j ov| jj ov| jj ov|  ¡  }|sŠ|  ¡  |  dd¡ | jrŠ|  ¡  | j| _d S t | jtƒr­| jr£|  dd¡ |  ¡  |  ¡  | j| _d S td| j ƒ‚)Nú...Tú---z'expected DocumentStartEvent, but got %s)rF   r%   rG   ÚversionZtagsr1   Úwrite_indicatorÚwrite_indentÚprepare_versionÚwrite_version_directiveÚDEFAULT_TAG_PREFIXESÚcopyr7   ÚsortedÚkeysÚprepare_tag_handleÚprepare_tag_prefixÚwrite_tag_directiveÚexplicitr2   Úcheck_empty_documentÚexpect_document_rootr#   rN   Úwrite_stream_endrX   r   )	r   r[   Úversion_textZhandlesÚhandleÚprefixÚhandle_textÚprefix_textÚimplicitr	   r	   r
   r\   ²   sL   



ÿÿþÿzEmitter.expect_document_startc                 C   sR   t | jtƒr"|  ¡  | jjr|  dd¡ |  ¡  |  ¡  | j| _d S t	d| j ƒ‚)Nr^   Tz%expected DocumentEndEvent, but got %s)
rF   r%   rM   rb   rl   ra   Úflush_streamr\   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)r!   r@   rw   Úexpect_noder=   r	   r	   r
   rn   â   s   zEmitter.expect_document_rootc                 C   sü   || _ || _|| _|| _t| jtƒr|  ¡  d S t| jtt	fƒrw|  
d¡ |  ¡  t| jtƒr5|  ¡  d S t| jtƒrU| jsI| jsI| jjsI|  ¡ rO|  ¡  d S |  ¡  d S t| jtƒru| jsi| jsi| jjsi|  ¡ ro|  ¡  d S |  ¡  d S d S td| j ƒ‚)Nú&zexpected NodeEvent, but got %s)r)   r*   r+   r,   rF   r%   Ú
AliasEventÚexpect_aliasÚScalarEventrL   Úprocess_anchorÚprocess_tagÚexpect_scalarrI   r(   r2   Z
flow_styleÚcheck_empty_sequenceÚexpect_flow_sequenceÚexpect_block_sequencerJ   Úcheck_empty_mappingÚexpect_flow_mappingÚexpect_block_mappingr   )r   rx   ÚsequenceÚmappingÚ
simple_keyr	   r	   r
   ry   è   s2   
ÿÿûzEmitter.expect_nodec                 C   s.   | j jd u r
tdƒ‚|  d¡ | j ¡ | _d S )Nz!anchor is not specified for aliasr   )r%   Úanchorr   r~   r!   rB   r#   r=   r	   r	   r
   r|     s   
zEmitter.expect_aliasc                 C   s0   | j dd |  ¡  | j ¡ | _| j ¡ | _d S )NT©rR   )rT   Úprocess_scalarr&   rB   r'   r!   r#   r=   r	   r	   r
   r€   
  s   zEmitter.expect_scalarc                 C   ó6   | j dddd |  jd7  _| jdd | j| _d S )Nú[T©r/   r   r‹   )ra   r(   rT   Úexpect_first_flow_sequence_itemr#   r=   r	   r	   r
   r‚     ó   zEmitter.expect_flow_sequencec                 C   sz   t | jtƒr!| j ¡ | _|  jd8  _|  dd¡ | j ¡ | _	d S | j
s*| j| jkr.|  ¡  | j | j¡ | jdd d S )Nr   ú]FT©r‡   )rF   r%   ÚSequenceEndEventr&   rB   r'   r(   ra   r!   r#   r2   r.   r5   rb   r@   Úexpect_flow_sequence_itemry   r=   r	   r	   r
   r     s   z'Emitter.expect_first_flow_sequence_itemc                 C   s    t | jtƒr.| j ¡ | _|  jd8  _| jr |  dd¡ |  	¡  |  dd¡ | j
 ¡ | _d S |  dd¡ | js=| j| jkrA|  	¡  | j
 | j¡ | jdd d S )Nr   ú,Fr’   Tr“   )rF   r%   r”   r&   rB   r'   r(   r2   ra   rb   r!   r#   r.   r5   r@   r•   ry   r=   r	   r	   r
   r•   $  s   z!Emitter.expect_flow_sequence_itemc                 C   r   )Nú{Tr   r   r‹   )ra   r(   rT   Úexpect_first_flow_mapping_keyr#   r=   r	   r	   r
   r…   6  r‘   zEmitter.expect_flow_mappingc                 C   s´   t | jtƒr!| j ¡ | _|  jd8  _|  dd¡ | j ¡ | _	d S | j
s*| j| jkr.|  ¡  | j
sE|  ¡ rE| j | j¡ | jddd d S |  dd¡ | j | j¡ | jdd d S )Nr   ú}FT©rˆ   r‰   ú?©rˆ   )rF   r%   ÚMappingEndEventr&   rB   r'   r(   ra   r!   r#   r2   r.   r5   rb   Úcheck_simple_keyr@   Ú expect_flow_mapping_simple_valuery   Úexpect_flow_mapping_valuer=   r	   r	   r
   r˜   <  s   z%Emitter.expect_first_flow_mapping_keyc                 C   sÚ   t | jtƒr.| j ¡ | _|  jd8  _| jr |  dd¡ |  	¡  |  dd¡ | j
 ¡ | _d S |  dd¡ | js=| j| jkrA|  	¡  | jsX|  ¡ rX| j
 | j¡ | jddd d S |  dd¡ | j
 | j¡ | jdd d S )	Nr   r–   Fr™   Trš   r›   rœ   )rF   r%   r   r&   rB   r'   r(   r2   ra   rb   r!   r#   r.   r5   rž   r@   rŸ   ry   r    r=   r	   r	   r
   Úexpect_flow_mapping_keyM  s"   zEmitter.expect_flow_mapping_keyc                 C   ó*   |   dd¡ | j | j¡ | jdd d S ©Nú:FTrœ   )ra   r!   r@   r¡   ry   r=   r	   r	   r
   rŸ   b  ó   z(Emitter.expect_flow_mapping_simple_valuec                 C   sD   | j s	| j| jkr|  ¡  |  dd¡ | j | j¡ | jdd d S )Nr¤   Trœ   )	r2   r.   r5   rb   ra   r!   r@   r¡   ry   r=   r	   r	   r
   r    g  s
   z!Emitter.expect_flow_mapping_valuec                 C   s(   | j o| j }| jd|d | j| _d S )NF)rR   rS   )r+   r0   rT   Ú expect_first_block_sequence_itemr#   )r   rS   r	   r	   r
   rƒ   p  s   zEmitter.expect_block_sequencec                 C   rY   rZ   )Úexpect_block_sequence_itemr=   r	   r	   r
   r¦   u  r]   z(Emitter.expect_first_block_sequence_itemc                 C   sb   |st | jtƒr| j ¡ | _| j ¡ | _d S |  ¡  | j	dddd | j 
| j¡ | jdd d S )Nú-T©r0   r“   )rF   r%   r”   r&   rB   r'   r!   r#   rb   ra   r@   r§   ry   ©r   r[   r	   r	   r
   r§   x  s   z"Emitter.expect_block_sequence_itemc                 C   s   | j dd | j| _d S )NFr‹   )rT   Úexpect_first_block_mapping_keyr#   r=   r	   r	   r
   r†   „  s   zEmitter.expect_block_mappingc                 C   rY   rZ   )Ú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 ¡ | _d S |  ¡  |  	¡ r.| j 
| j¡ | jddd d S | jdddd | j 
| j¡ | jdd d S )NTrš   r›   r©   rœ   )rF   r%   r   r&   rB   r'   r!   r#   rb   rž   r@   Ú!expect_block_mapping_simple_valuery   ra   Úexpect_block_mapping_valuerª   r	   r	   r
   r¬   ‹  s   z Emitter.expect_block_mapping_keyc                 C   r¢   r£   )ra   r!   r@   r¬   ry   r=   r	   r	   r
   r­   ™  r¥   z)Emitter.expect_block_mapping_simple_valuec                 C   s6   |   ¡  | jdddd | j | j¡ | jdd d S )Nr¤   Tr©   rœ   )rb   ra   r!   r@   r¬   ry   r=   r	   r	   r
   r®   ž  s   z"Emitter.expect_block_mapping_valuec                 C   ó"   t | jtƒo| jot | jd tƒS r?   )rF   r%   rI   r$   r”   r=   r	   r	   r
   r   ¦  ó   ÿzEmitter.check_empty_sequencec                 C   r¯   r?   )rF   r%   rJ   r$   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   Ú )	rF   r%   rG   r$   r}   rŠ   Útagru   ÚvaluerC   r	   r	   r
   rm   ®  s   
ÿÿÿzEmitter.check_empty_documentc                 C   s  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 }|dk o€t | jtƒp€t | jtƒox| jj ox| jj p€|  ¡ p€|  ¡ S )Nr   é€   )rF   r%   Z	NodeEventrŠ   r8   Úprepare_anchorrO   r}   rL   r²   r9   Úprepare_tagr:   Úanalyze_scalarr³   r   r{   r   r   r   r„   )r   Úlengthr	   r	   r
   rž   µ  s2   

ÿ

ÿþýýzEmitter.check_simple_keyc                 C   sR   | j jd u rd | _d S | jd u r|  | j j¡| _| jr$|  || j d¡ d | _d S )NT)r%   rŠ   r8   rµ   ra   )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rs|  | jd¡ d | _d S )Nr±   r   r   r   ztag is not specifiedT)r%   r²   rF   r}   r;   Úchoose_scalar_styler2   ru   r9   r   r¶   ra   )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s=| jjd r=| jr-| j js=| j j	s=| j
r4| j js;| j
s=| j jr=dS | jjrU| jjdv rU| j
sU| jsU| j jrU| jjS | jjr_| jjdkrl| j jrl| jrj| j j	sldS dS )Nú"r   r±   z|>ú')r:   r·   r%   r³   r;   r2   ru   r,   r   r   r(   r   r   r   r   r=   r	   r	   r
   rº   î  s@   
ÿÿþþýýÿÿÿzEmitter.choose_scalar_stylec                 C   sÂ   | j d u r|  | jj¡| _ | jd u r|  ¡ | _| j }| jdkr)|  | j j|¡ n0| jdkr7|  	| j j|¡ n"| jdkrD|  
| j j¡ n| jdkrQ|  | j j¡ n|  | j j|¡ d | _ d | _d S )Nr»   r¼   ú>ú|)r:   r·   r%   r³   r;   rº   r,   Úwrite_double_quotedr   Úwrite_single_quotedÚwrite_foldedÚwrite_literalÚwrite_plain)r   Úsplitr	   r	   r
   rŒ     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
   rc     s   zEmitter.prepare_versionc                 C   s    |st dƒ‚|d dks|d dkrt d| ƒ‚|dd… D ]/}d|  kr*dksMn d	|  kr5d
ksMn d|  kr@dksMn |dv sMt d||f ƒ‚q|S )Nztag handle must not be emptyr   r   rK   z*tag handle must start and end with '!': %rr   Ú0Ú9ÚAÚZÚaÚzú-_z*invalid character %r in the tag handle: %rrÅ   )r   rq   Úchr	   r	   r
   ri   !  s   Bÿÿ€zEmitter.prepare_tag_handlec                 C   s  |st dƒ‚g }d }}|d dkrd}|t|ƒk rt|| }d|  kr(dksCn d|  kr3dksCn d	|  kr>d
ksCn |dv rH|d7 }n&||k rU| |||… ¡ |d  }}| d¡}|D ]}| dt|ƒ ¡ qb|t|ƒk s||k r| |||… ¡ d |¡S )Nztag prefix must not be emptyr   r   r   rÈ   rÉ   rÊ   rË   rÌ   rÍ   z-;/?!:@&=+$,_.~*'()[]úutf-8ú%%%02Xr±   )r   rO   r@   ÚencodeÚordÚjoin)r   rr   ÚchunksÚstartÚendrÏ   Údatar	   r	   r
   rj   -  s,   Bÿ

õ
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 }}|t|ƒk r¦|| }	d|	  krTdkswn d|	  kr_dkswn d|	  krjd	kswn |	d
v sw|	dkr||dkr||d7 }n$||k r‰| |||… ¡ |d  }}|	 d¡}
|
D ]	}	| d|	 ¡ q–|t|ƒk sF||k r³| |||… ¡ d |¡}|rÀd||f S d| S )Nztag must not be emptyr   r   rÈ   rÉ   rÊ   rË   rÌ   rÍ   z-;/?:@&=+$,_.~*'()[]r   rÐ   rÑ   r±   z%s%sz!<%s>)	r   rg   r7   rh   Ú
startswithrO   r@   rÒ   rÔ   )r   r²   rq   ÚsuffixÚprefixesrr   rÕ   rÖ   r×   rÏ   rØ   Zsuffix_textr	   r	   r
   r¶   D  sR   
ÿÿ
€Bÿþþ

ô
zEmitter.prepare_tagc                 C   st   |st dƒ‚|D ]/}d|  krdks7n d|  krdks7n d|  kr*dks7n |dv s7t d	||f ƒ‚q|S )
Nzanchor must not be emptyrÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   z&invalid character %r in the anchor: %rrÅ   )r   rŠ   rÏ   r	   r	   r
   rµ   h  s   Bÿÿ€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¡s,| d¡r0d}d}d}t|ƒdkp=|d dv }d}d}d}|t|ƒk r3|| }|dkrp|d	v r[d}d}|d
v red}|red}|dkro|rod}d}n|dv rvd}|dkr€d}|r€d}|dkrŠ|rŠd}d}|dv rd}|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 d|  krÃdk rÑn n|dkrÑd}| jsÐd}nd}|dkrð|dkrÝd}|t|ƒd krçd}|rëd}
d}d}n$|dv r|dkrûd}|t|ƒd krd}	|rd}d}d}nd}d}|d7 }|dv }|d t|ƒkp,||d  dv }|t|ƒk sKd}d}d}d}d}|sI|sI|sI|	rMd }}|rRd}|
r[d } }}|sa|rid } } }}|rpd }}|rud}|rzd}t |d||||||dS )NTFr   r_   r^   r   u     	
Â…â€¨â€©r   z#,[]{}&*!|>'"%@`z?:r¨   z,?[]{}r¤   ú#õ	   
Â…â€¨â€©r   ú ú~õ   Â…õ   Â õ   íŸ¿õ   î€€õ   ï¿½u   ð€€u   ô¿¿õ   ï»¿)r   rÙ   rO   r3   )r   r   Zblock_indicatorsZflow_indicatorsZline_breaksZspecial_charactersÚleading_spaceZleading_breakZtrailing_spaceZtrailing_breakZbreak_spaceZspace_breakZpreceded_by_whitespaceZfollowed_by_whitespaceZprevious_spaceZprevious_breakÚindexrÏ   Zunicode_charactersr   r   r   r   r   r	   r	   r
   r·   r  sþ   ý
ÿ€ÿÿþ
þþ€
ÿ½Gÿÿ
ÿúzEmitter.analyze_scalarc                 C   s   t | jdƒr| j ¡  d S d S )NÚflush)rU   r   rè   r=   r	   r	   r
   rv     s   ÿzEmitter.flush_streamc                 C   s2   | j r| j  d¡r| j d | j ¡¡ d S d S d S )Nzutf-16rå   )r    rÙ   r   ÚwriterÒ   r=   r	   r	   r
   rV     s   ÿzEmitter.write_stream_startc                 C   s   |   ¡  d S r   )rv   r=   r	   r	   r
   ro     r]   zEmitter.write_stream_endc                 C   sd   | j s|s|}nd| }|| _ | jo|| _|  jt|ƒ7  _d| _| jr*| | j¡}| j |¡ d S )NrÞ   F)	r/   r0   r.   rO   r1   r    rÒ   r   ré   )r   r¹   Zneed_whitespacer/   r0   rØ   r	   r	   r
   ra      s   
zEmitter.write_indicatorc                 C   s|   | j pd}| jr| j|ks| j|kr| js|  ¡  | j|k r<d| _d|| j  }|| _| jr4| | j¡}| j |¡ d S d S )Nr   TrÞ   )	r'   r0   r.   r/   Úwrite_line_breakr    rÒ   r   ré   )r   r'   rØ   r	   r	   r
   rb   .  s   
ÿÿ
úzEmitter.write_indentc                 C   sP   |d u r| j }d| _d| _|  jd7  _d| _| jr | | j¡}| j |¡ d S )NTr   r   )	r6   r/   r0   r-   r.   r    rÒ   r   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©r    rÒ   r   ré   rê   )r   rp   rØ   r	   r	   r
   rd   F  s
   zEmitter.write_version_directivec                 C   s6   d||f }| j r| | j ¡}| j |¡ |  ¡  d S )Nz%%TAG %s %srë   )r   rs   rt   rØ   r	   r	   r
   rk   M  s
   zEmitter.write_tag_directiveTc           
      C   s  |   dd¡ d}d}d }}|t|ƒkrd }|t|ƒk r!|| }|ri|d u s+|dkrh|d |krH| j| jkrH|rH|dkrH|t|ƒkrH|  ¡  n|||… }|  jt|ƒ7  _| jr`| | j¡}| j |¡ |}nb|r›|d u ss|dvrš|| dkr}|  	¡  |||… D ]}	|	dkrŽ|  	¡  qƒ|  	|	¡ qƒ|  ¡  |}n0|d u s§|d	v s§|dkrË||k rË|||… }|  jt|ƒ7  _| jrÃ| | j¡}| j |¡ |}|dkrëd
}|  jd7  _| jrá| | j¡}| j |¡ |d }|d ur÷|dk}|dv }|d7 }|t|ƒks|   dd¡ d S )Nr¼   TFr   rÞ   r   rÝ   r   õ
    
Â…â€¨â€©z''r   )
ra   rO   r.   r5   rb   r    rÒ   r   ré   rê   )
r   ÚtextrÄ   ÚspacesÚbreaksrÖ   r×   rÏ   rØ   Úbrr	   r	   r
   rÀ   V  sn   ÿ
ÿ
€
€Ò/zEmitter.write_single_quotedrÈ   rÌ   ÚbÚtÚnÚvÚfÚrÚer»   ú\ÚNÚ_ÚLÚP)ú úúú	r   úúr   úr»   rø   rà   rá   u   â€¨u   â€©c                 C   s„  |   dd¡ d }}|t|ƒkr:d }|t|ƒk r|| }|d u sI|dv sId|  kr/dks¶n | jrId|  kr=dks¶n d	|  krHd
ks¶n ||k rm|||… }|  jt|ƒ7  _| jre| | 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  _| jr¬| | j¡}| j |¡ |d }d|  k rÅt|ƒd k r0n ni|dksÐ||kr0| j||  | j
kr0|r0|||… d }||k rì|}|  jt|ƒ7  _| jrþ| | j¡}| j |¡ |  ¡  d| _d| _|| dkr0d}|  jt|ƒ7  _| jr*| | j¡}| j |¡ |d7 }|t|ƒks|   dd¡ d S )Nr»   Tr   u   "\Â…â€¨â€©ï»¿rÞ   rß   rá   râ   rã   rä   rø   õ   Ã¿z\x%02Xu   ï¿¿z\u%04Xz\U%08Xr   F)ra   rO   r3   r.   r    rÒ   r   ré   ÚESCAPE_REPLACEMENTSrÓ   r5   rb   r/   r0   )r   rí   rÄ   rÖ   r×   rÏ   rØ   r	   r	   r
   r¿   ž  s‚   ÿÿþýýüü
4ÿÿÐ1zEmitter.write_double_quotedc                 C   s^   d}|r-|d dv r|t | jƒ7 }|d dvr|d7 }|S t|ƒdks)|d dv r-|d	7 }|S )
Nr±   r   rì   rK   rÝ   r¨   r   éþÿÿÿú+)Ústrr4   rO   )r   rí   Úhintsr	   r	   r
   Údetermine_block_hintsÔ  s   þzEmitter.determine_block_hintsc                 C   sü  |   |¡}|  d| d¡ |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|  ¡  |}nh|r´|dkr³|d
 |kr“| j| jkr“|  ¡  n|||… }
|  jt|
ƒ7  _| jr«|
 	| j¡}
| j
 |
¡ |}n0|d u s¼|dv rä|||… }
|  jt|
ƒ7  _| jrÔ|
 	| j¡}
| j
 |
¡ |d u râ|  ¡  |}|d urð|dv }|dk}|d
7 }|t|ƒks,d S d S )Nr½   TrK   r  Fr   rÝ   rÞ   r   r   rì   )r
  ra   r1   rê   rO   rb   r.   r5   r    rÒ   r   ré   )r   rí   r	  ræ   rî   rï   rÖ   r×   rÏ   rð   rØ   r	   r	   r
   rÁ   ß  sj   

ÿ
€
€ÖzEmitter.write_foldedc           	      C   s:  |   |¡}|  d| d¡ |dd … dkrd| _|  ¡  d}d }}|t|ƒkr›d }|t|ƒk r4|| }|r`|d u s>|dvr_|||… D ]}|dkrO|  ¡  qD|  |¡ qD|d ur]|  ¡  |}n'|d u sh|dv r‡|||… }| jrw| | j¡}| j 	|¡ |d u r…|  ¡  |}|d ur|dv }|d7 }|t|ƒks(d S d S )	Nr¾   TrK   r  r   rÝ   r   r   )
r
  ra   r1   rê   rO   rb   r    rÒ   r   ré   )	r   rí   r	  rï   rÖ   r×   rÏ   rð   rØ   r	   r	   r
   rÂ     sB   

€çzEmitter.write_literalc           
      C   sú  | j rd| _|s
d S | js'd}|  jt|ƒ7  _| jr!| | j¡}| j |¡ d| _d| _	d}d}d }}|t|ƒkrûd }|t|ƒk rG|| }|r‡|dkr†|d |krf| j| j
krf|rf|  ¡  d| _d| _	n|||… }|  jt|ƒ7  _| jr~| | j¡}| j |¡ |}n\|r»|dvrº|| dkr—|  ¡  |||… D ]}	|	dkr¨|  ¡  q|  |	¡ q|  ¡  d| _d| _	|}n(|d u sÃ|dv rã|||… }|  jt|ƒ7  _| jrÛ| | j¡}| j |¡ |}|d urï|dk}|dv }|d7 }|t|ƒks;d S d S )	NTrÞ   Fr   r   rÝ   r   rì   )r)   r1   r/   r.   rO   r    rÒ   r   ré   r0   r5   rb   rê   )
r   rí   rÄ   rØ   rî   rï   rÖ   r×   rÏ   rð   r	   r	   r
   rÃ   8  sr   €
€×zEmitter.write_plain)NNNNN)FF)F)FFFFr   )T)@r   r   r   re   r   r>   rD   rA   rH   rT   r"   rX   rW   r\   rw   rn   ry   r|   r€   r‚   r   r•   r…   r˜   r¡   rŸ   r    rƒ   r¦   r§   r†   r«   r¬   r­   r®   r   r„   rm   rž   r~   r   rº   rŒ   rc   ri   rj   r¶   rµ   r·   rv   rV   ro   ra   rb   rê   rd   rk   rÀ   r  r¿   r
  rÁ   rÂ   rÃ   r	   r	   r	   r
   r      sª    þ
ÿD	


$
ÿ	


$
 #
ÿ

	7ñ
66#N)Ú__all__Úerrorr   r$   r   r   r   r	   r	   r	   r
   Ú<module>   s   