
    R                         d dl mZ d dl mZ d dlZd dlmZmZ d dl d dlm	Z	m
Z
mZmZmZmZmZ 	 ddgZ G d	 de      Z G d
 de      Z G d de      Z G d de      Zy)    )absolute_import)print_functionN)	YAMLErrorYAMLStreamError)*)utf8	text_typePY2nprintdbg	DBG_EVENTcheck_anchorname_charEmitterEmitterErrorc                       e Zd Zy)r   N)__name__
__module____qualname__     &lib/third_party/ruamel/yaml/emitter.pyr   r      s    r   c                       e Zd Zd Zy)ScalarAnalysisc	                 t    || _         || _        || _        || _        || _        || _        || _        || _        y 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$   s	            r   __init__zScalarAnalysis.__init__"   sA     
" 0!2#6 #6 &r   N)r   r   r   r&   r   r   r   r   r   !   s    'r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Indentsc                     g | _         y r   )valuesr%   s    r   r&   zIndents.__init__:   s	    r   c                 >    | j                   j                  ||f       y r   )r*   append)r%   valseqs      r   r-   zIndents.append>   s    C:&r   c                 <    | j                   j                         d   S Nr   )r*   popr+   s    r   r2   zIndents.popB   s    {{ ##r   c                 F    	 | j                   d   d   S # t        $ r Y yw xY w)N   F)r*   
IndexErrorr+   s    r   last_seqzIndents.last_seqF   s,    	;;r?1%% 		s    	  c                     t        | j                        dk  s| j                  d   d   sy| j                  d   d   | j                  d   d   nd}||z   |z
  dz
  S )N   r5   r   lenr*   )r%   
seq_indentcolumnbases       r   seq_flow_alignzIndents.seq_flow_alignO   sb     t{{at{{2q'9%)[[_Q%7%Ct{{2q!j 6)A--r   c                 ,    t        | j                        S r   r;   r+   s    r   __len__zIndents.__len__X   s    4;;r   N)	r   r   r   r&   r-   r2   r7   r@   rB   r   r   r   r(   r(   8   s     '$. r   r(   c                   6   e Zd ZdddZdZ	 	 	 	 	 	 	 	 	 	 dXdZed        Zej                  d        Zed	        Z	ed
        Z
d Zd Zd Zd ZdYdZd Zd Zd ZdZdZd Zd Zd[dZd Zd Zd Zd Zd ZdZdZd Zd Zd Zd  Z d! Z!d" Z"dZd#Z#d$ Z$d% Z%dZd&Z&d' Z'd( Z(d) Z)d* Z*d+ Z+d, Z,d- Z-d. Z.d/ Z/d0 Z0d1 Z1d2 Z2d3 Z3d4 Z4d5 Z5d6 Z6d7 Z7d8 Z8d9 Z9d\d:Z:d; Z;d]d<Z<d= Z=d> Z>d^d?Z?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOZ@d^dPZAdQ ZBdR ZCd]dSZDd^dTZEdZdUZFdV ZGdW ZHy)_r   !z!!)rD   ztag:yaml.org,2002:   Nc                    || _         | j                   (t        | j                   dd       | | j                   _        || _        d | _        d | _        g | _        | j                  | _        g | _	        d | _
        t               | _        d | _        g | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _        d| _        |	| j6                  n|	| j6                  z   | _        |
| _        || _        || _        t@        jB                  dkD  | _"        |r|nd| _#        || _$        d| _%        || _&        |rd|cxk  rd	k  r
n n|| _%        | jJ                  | _'        d
| _(        |r|| jJ                  dz  kD  r|| _(        d| _)        |dv r|| _)        d | _*        d | _+        d | _,        d | _-        d | _.        y )N_emitterFr   T:i  r9   r5   
   P   
)rK   z
)/dumpergetattrrG   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)r%   rO   rh   rX   widthri   
line_breakblock_seq_indentrn   prefix_colonrg   rM   s               r   r&   zEmitter.__init__g   s    ;;"wt{{J'M'U#'DKK  !% --
 
 y  " %$"' 	##   
,8,@djjlUYU_U_F_ 8 	8
 #*%(^^f%<"8H$4a!%:"$%! &a&o2o(.D%#88 UT66::#DO$00#-D  !  $  
r   c                 L    	 | j                   S # t        $ r t        d      w xY w)Nz output stream needs to specified)_streamAttributeErrorr   r+   s    r   rO   zEmitter.stream   s/    	F<< 	F!"DEE	Fs    #c                 F    |y t        |d      st        d      || _        y )Nwritez.stream argument needs to have a write() method)hasattrr   r~   )r%   r.   s     r   rO   zEmitter.stream   s)     ;sG$!"RSSr   c                     	 t        | j                  d      r| j                  j                  S | j                  j                  S # t        $ r | cY S w xY w)Ntyp)r   rM   
serializer_serializerr   r+   s    r   r   zEmitter.serializer   sI    	t{{E*{{---;;*** 	K	s   +A A AAc                 ,    t        | j                        S r   )r<   rY   r+   s    r   
flow_levelzEmitter.flow_level   s     4$$%%r   c                      g | _         d | _        y r   )rR   rT   r+   s    r   disposezEmitter.dispose   s     
r   c                     t        t              rt        |       | j                  j	                  |       | j                         sI| j                  j                  d      | _        | j                          d | _        | j                         sHy y r1   )	r   r   r   rU   r-   need_more_eventsr2   rV   rT   r%   rV   s     r   emitzEmitter.emit   s`    y>5M5!'')+DJJJLDJ '')r   c                    | j                   sy| j                   d   }t        |t              r| j                  d      S t        |t              r| j                  d      S t        |t
              r| j                  d      S y)NTr   r5   r9      F)rU   
isinstanceDocumentStartEventneed_eventsSequenceStartEventMappingStartEventr   s     r   r   zEmitter.need_more_events  sp    {{Ae/0##A&&12##A&&01##A&&r   c                    d}| j                   dd  D ]S  }t        |t        t        f      r|dz  }n.t        |t        t
        f      r|dz  }nt        |t              rd}|dk  sS y t        | j                         |dz   k  S )Nr   r5   r:   F)rU   r   r   CollectionStartEventDocumentEndEventCollectionEndEventStreamEndEventr<   )r%   countlevelrV   s       r   r   zEmitter.need_events  s    [[_E%"46J!KL
E$46H#IJ
E>2qy % 4;;%!)++r   c                 0   | j                   j                  | j                  |       | j                  |r| j                  | _        y d| _        y |sF| xj                  | j                   j	                         r| j
                  n| j                  z  c_        y y r1   )rW   r-   rX   rp   r7   ro   rq   )r%   flowsequence
indentlesss       r   increase_indentzEmitter.increase_indent  ss    DKK2;; #33KK-1\\-B-B-D))$J^J^K r   c                    t        | j                  t              rt        rI| j                  j                  rzt        | j                  dd       sc| j                  j                  | _        nG| j                  j                  r1t        | j                  d      s| j                  j                  | _        | j                          | j                  | _
        y t        d| j                        )NrP   z#expected StreamStartEvent, but got )r   rV   StreamStartEventr
   rP   rN   rO   r   write_stream_startexpect_first_document_startrT   r   r+   s    r   rS   zEmitter.expect_stream_start8  s    djj"23::&&wt{{JPT/U$(JJ$7$7DM::&&wt{{J/O$(JJ$7$7DM##%99DJ$**VWWr   c                 2    t        d| j                        )Nzexpected nothing, but got )r   rV   r+   s    r   expect_nothingzEmitter.expect_nothingF  s    TZZIJJr   c                 &    | j                  d      S NT)first)expect_document_startr+   s    r   r   z#Emitter.expect_first_document_startL  s    )))55r   c                    t        | j                  t              r,| j                  j                  s| j                  j                  r.| j
                  r"| j                  dd       | j                          | j                  j                  r6| j                  | j                  j                        }| j                  |       | j                  j                         | _        | j                  j                  rt        | j                  j                  j                               }|D ]^  }| j                  j                  |   }|| j                  |<   | j                  |      }| j!                  |      }| j#                  ||       ` |xrk | j                  j$                   xrR | j&                   xrC | j                  j                   xr* | j                  j                   xr | j)                          }|s>| j                          | j                  dd       | j&                  r| j                          | j*                  | _        y t        | j                  t.              rP| j
                  r"| j                  dd       | j                          | j1                          | j2                  | _        y t5        d| j                        )N...T---z%expected DocumentStartEvent, but got )r   rV   r   versiontagsrd   write_indicatorwrite_indentprepare_versionwrite_version_directiveDEFAULT_TAG_PREFIXEScopyrt   sortedkeysprepare_tag_handleprepare_tag_prefixwrite_tag_directiveexplicitrh   check_empty_documentexpect_document_rootrT   r   write_stream_endr   r   )	r%   r   version_texthandleshandleprefixhandle_textprefix_textimplicits	            r   r   zEmitter.expect_document_startP  s%   djj"45

""djjoo4??$$VT2!!#zz!!#33DJJ4F4FG,,\: $ 9 9 > > @Dzz !5!5!78%F!ZZ__V4F06D%%f-"&"9"9&"AK"&"9"9&"AK,,[+F &  4

+++4&4 

***4 

'	4
 1133  !!#$$VT2>>%%'22DJ

N3$$VT2!!#!!#,,DJDJJXYYr   c                 :   t        | j                  t              rj| j                          | j                  j                  r"| j                  dd       | j                          | j                          | j                  | _        y t        d| j                        )Nr   Tz#expected DocumentEndEvent, but got )
r   rV   r   r   r   r   flush_streamr   rT   r   r+   s    r   expect_document_endzEmitter.expect_document_endy  sq    djj"23zz""$$VT2!!#33DJ$**VWWr   c                 r    | j                   j                  | j                         | j                  d       y )NT)root)rR   r-   r   expect_noder+   s    r   r   zEmitter.expect_document_root  s+    4334d#r   c                    || _         || _        || _        || _        t	        | j
                  t              r| j                          y t	        | j
                  t        t        f      r| j                  d      r-t	        | j
                  t              r| j                  rd| _        | j                          t	        | j
                  t              r| j                          y t	        | j
                  t              r| j                  | j                  }}| j
                  j                   r| j
                  j"                  du r?| j
                  j                   r)| j%                  | j
                        rd| _        d| _        | j'                  | j
                        r	 || _        | j                   | _        | j(                  s2| j*                  s&| j
                  j"                  s| j-                         r| j/                          y | j1                          y t	        | j
                  t2              r| j
                  j"                  du r1| j
                  j                   r| j%                  | j
                         | j
                  j                   r4| j
                  j                   d   r| j'                  | j
                         | j(                  s2| j*                  s&| j
                  j"                  s| j5                         r*| j7                  | j
                  j8                  dk(         y | j;                          y y t=        d| j
                        )N&FTr5   )singlezexpected NodeEvent, but got )rZ   r[   r\   r]   r   rV   
AliasEventexpect_aliasScalarEventr   process_anchorprocess_tagexpect_scalarr   r`   rc   comment
flow_stylewrite_post_commentwrite_pre_commentr   rh   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n2s          r   r   zEmitter.expect_node  sR     (&",djj*-

[2F$GH##D)tzz;7))(-%$**k2""$DJJ(:;B::%%zz,,5$**:L:L224::>-2DN.2DO--djj9)+.2nn*<OO~~zz,,002--/..0DJJ(9:::((E1djj6H6H++DJJ7::%%$***<*<Q*?**4::6OO~~zz,,//1,,DJJ4G4G14L,M--/ ; 4::OPPr   c                     | j                   j                  t        d      | j                  d       | j                  j                         | _        y )Nz!anchor is not specified for aliasr   )rV   anchorr   r   rR   r2   rT   r+   s    r   r   zEmitter.expect_alias  s>    ::$BCCD![[__&
r   c                     | j                  d       | j                          | j                  j                         | _        | j
                  j                         | _        y )NT)r   )r   process_scalarrW   r2   rX   rR   rT   r+   s    r   r   zEmitter.expect_scalar  sE    $'ll&&([[__&
r   c                    | j                   j                  | j                  | j                        }| j	                  d|z  dz   dd       | j                  dd       | j                  j                  d       | j                  | _	        y )N [Tr_   r   r   )
rW   r@   ro   r>   r   r   rY   r-   expect_first_flow_sequence_itemrT   )r%   inds     r   r   zEmitter.expect_flow_sequence  st    ll))$*C*CT[[QTCZ$.F$6  %99
r   c                    t        | j                  t              r| j                  j	                         | _        | j                  j	                         }|dk(  sJ | j                  dd       | j                  j                  r5| j                  j                  d   r| j                  | j                         n| j                  dk(  r| j                          | j                  j	                         | _        y | j                  s| j                  | j                   kD  r| j#                          | j                  j%                  | j&                         | j)                  d       y )Nr   ]Fr   Tr   )r   rV   SequenceEndEventrW   r2   rX   rY   r   r   r   r   write_line_breakrR   rT   rh   r>   rr   r   r-   expect_flow_sequence_itemr   r%   poppeds     r   r   z'Emitter.expect_first_flow_sequence_item  s    djj"23,,**,DK&&**,FS= =  u-zz!!djj&8&8&;''

3A%%%'*DJ~~t!>!!#KKt==>d+r   c                    t        | j                  t              r| j                  j	                         | _        | j                  j	                         }|dk(  sJ | j                  r"| j                  dd       | j                          | j                  dd       | j                  j                  r5| j                  j                  d   r| j                  | j                         nd| _        | j                  j	                         | _        y | j                  dd       | j                  s| j                  | j                   kD  r| j                          | j                  j#                  | j$                         | j'                  d       y )Nr   ,Fr   r   Tr   )r   rV   r   rW   r2   rX   rY   rh   r   r   r   r   rc   rR   rT   r>   rr   r-   r   r   r   s     r   r   z!Emitter.expect_flow_sequence_item  s   djj"23,,**,DK&&**,FS= =~~$$T51!!#  u-zz!!djj&8&8&;''

3"'*DJ  u-~~t!>!!#KKt==>d+r   c                    | j                   j                  | j                  | j                        }d}|r8| j                  r,| j
                  d   dk(  r| j                  s| j                  sd}| j                  d|z  |z   dd       | j
                  j                  |       | j                  dd	       | j                  | _        y )
N{r:   r    r   Tr   Fr   )rW   r@   ro   r>   r   rY   rh   rg   r   r-   r   expect_first_flow_mapping_keyrT   )r%   r   r   map_inits       r   r   zEmitter.expect_flow_mapping	  s    ll))$*C*CT[[Q!!"%,NNDD HTCZ(2DTJ  *$777
r   c                    t        | j                  t              r| j                  j	                         | _        | j                  j	                         }|dk(  sJ | j                  dd       | j                  j                  r5| j                  j                  d   r| j                  | j                         n| j                  dk(  r| j                          | j                  j	                         | _        y | j                  s| j                  | j                   kD  r| j#                          | j                  sI| j%                         r9| j                  j'                  | j(                         | j+                  dd       y | j                  dd       | j                  j'                  | j,                         | j+                  d       y )	Nr   }Fr   Tr   r   ?r   )r   rV   MappingEndEventrW   r2   rX   rY   r   r   r   r   r   rR   rT   rh   r>   rr   r   check_simple_keyr-    expect_flow_mapping_simple_valuer   expect_flow_mapping_valuer   s     r   r   z%Emitter.expect_first_flow_mapping_key  sF   djj/2,,**,DK&&**,FS= =  u-zz!!djj&8&8&;''

3A%%%'*DJ~~t!>!!#>>d&;&;&=""4#H#HI  $ ?$$T40""4#A#AB   .r   c                    t        | j                  t              r| j                  j	                         | _        | j                  j	                         }|dv sJ | j                  r"| j                  dd       | j                          |dk7  r| j                  dd       | j                  j                  r5| j                  j                  d   r| j                  | j                         nd| _        | j                  j	                         | _        y | j                  dd       | j                  s| j                  | j                   kD  r| j                          | j                  sI| j#                         r9| j                  j%                  | j&                         | j)                  dd       y | j                  d	d       | j                  j%                  | j*                         | j)                  d
       y )N)r   r   r   Fr   r   r   Tr  r  r  )r   rV   r  rW   r2   rX   rY   rh   r   r   r   r   rc   rR   rT   r>   rr   r  r-   r  r   r  r   s     r   expect_flow_mapping_keyzEmitter.expect_flow_mapping_key3  ss   djj/2 ,,**,DK&&**,F[(((~~$$T51!!#}$$T51zz!!djj&8&8&;''

3"'*DJ  u-~~t!>!!#>>d&;&;&=""4#H#HI  $ ?$$T40""4#A#AB   .r   c                     | j                  | j                  d       | j                  j                  | j                         | j                  d       y )NFTr  )r   rf   rR   r-   r	  r   r+   s    r   r  z(Emitter.expect_flow_mapping_simple_valueR  sA    T00%84778&r   c                    | j                   s| j                  | j                  kD  r| j                          | j	                  | j
                  d       | j                  j                  | j                         | j                  d       y )NTr  )
rh   r>   rr   r   r   rf   rR   r-   r	  r   r+   s    r   r  z!Emitter.expect_flow_mapping_valueX  sc    >>T[[4??:T00$74778&r   c                     | j                   r| j                   }n-d}| j                  s| j                  dk7  r| j	                          | j                  dd|       | j                  | _        y )NFr   T)r   r   r   )r\   r`   ra   r>   r   r    expect_first_block_sequence_itemrT   )r%   r   s     r   r   zEmitter.expect_block_sequenceb  s^    !^^+JJ''DKK1,<%%'%$:N::
r   c                 &    | j                  d      S r   )expect_block_sequence_itemr+   s    r   r  z(Emitter.expect_first_block_sequence_itemm  s    ..T.::r   c                 N   |st        | j                  t              r| j                  j                  r4| j                  j                  d   r| j	                  | j                         | j
                  j                         | _        | j                  j                         | _	        d| _
        y | j                  j                  r4| j                  j                  d   r| j	                  | j                         | j                  dk(  r| j                  nd}| j                          | j                  }| j                  d|z  dz   dd       |s| j                  dz   | j                  kD  rd| _
        | j                  j!                  | j"                         | j%                  d	       y )
Nr5   Fr   r   -Tr`   r9   r   )r   rV   r   r   r   rW   r2   rX   rR   rT   rc   r>   r   rm   r   ro   r-   r  r   )r%   r   nonlr   s       r   r  z"Emitter.expect_block_sequence_itemq  s6   DJJ0@Azz!!djj&8&8&;&&tzz2,,**,DK*DJ#DOzz!!djj&8&8&;&&tzz2&*kkQ&64??ED++C  d!2DD It0014t7P7PP"&KKt>>?d+r   c                     | j                   s+| j                  s| j                  dk(  s| j                          | j	                  dd       | j
                  | _        y )Nr   Fr   )r\   rb   r>   r   r   expect_first_block_mapping_keyrT   r+   s    r   r   zEmitter.expect_block_mapping  sK    ##T-A-AT[[TUEU!!#%%888
r   c                 &    | j                  d      S r   )expect_block_mapping_keyr+   s    r   r  z&Emitter.expect_first_block_mapping_key  s    ,,4,88r   c                 P   |st        | j                  t              r| j                  j                  r4| j                  j                  d   r| j	                  | j                         | j
                  j                         | _        | j                  j                         | _	        y | j                  j                  r4| j                  j                  d   r| j	                  | j                         | j                          | j                         rt        | j                  t        t        f      s.	 | j                  j                  dk(  r| j                  ddd       | j                  j#                  | j$                         | j'                  dd       t        | j                  t(              r| j*                  j-                  d       y y | j                  ddd       | j                  j#                  | j.                         | j'                  d       y # t         $ r Y w xY w)Nr5   r  Tr  r  r   r  )r   rV   r  r   r   rW   r2   rX   rR   rT   r   r  r   r   rx   r   r   r-   !expect_block_mapping_simple_valuer   r   rO   r   expect_block_mapping_value)r%   r   s     r   r  z Emitter.expect_block_mapping_key  s   DJJ@zz!!djj&8&8&;&&tzz2,,**,DK*DJzz!!djj&8&8&;&&tzz2$$&!JJ!35F G::++s2 00tt0L ""4#I#IJ  $ ?djj*5KK%%d+ 6 $$T44$@""4#B#BC   . * s   1-H 	H%$H%c                 l   t        | j                  dd       dk7  rc| j                  dk(  r6| j                  *d| j                  | j                  z
  z  | j
                  z   }n| j                  }| j                  |d       | j                  j                  | j                         | j                  d       y )Nrx   r  r   r   FTr  )rN   rV   rX   rn   r>   re   rf   r   rR   r-   r  r   )r%   cs     r   r  z)Emitter.expect_block_mapping_simple_value  s    4::w-4{{aD$>$>$JD66DE

R''  E*4889&r   c                     | j                          | j                  | j                  dd       | j                  j	                  | j
                         | j                  d       y )NTr  r  )r   r   rf   rR   r-   r  r   r+   s    r   r  z"Emitter.expect_block_mapping_value  sR    T00$$G4889&r   c                     t        | j                  t              xr4 t        | j                        xr t        | j                  d   t
              S r1   )r   rV   r   boolrU   r   r+   s    r   r   zEmitter.check_empty_sequence  sA     tzz#56 =T[[!=4;;q>+;<	
r   c                     t        | j                  t              xr4 t        | j                        xr t        | j                  d   t
              S r1   )r   rV   r   r  rU   r  r+   s    r   r   zEmitter.check_empty_mapping  s@     tzz#45 <T[[!<4;;q>?;	
r   c                    t        | j                  t              r| j                  sy| j                  d   }t        |t              xr= |j
                  d u xr- |j                  d u xr |j                  xr |j                  dk(  S )NFr   r   )	r   rV   r   rU   r   r   tagr   valuer   s     r   r   zEmitter.check_empty_document  sy    $**&89Auk* "$"		T!" " r!	
r   c                     d}t        | j                  t              rd| j                  j                  N| j                  *| j                  | j                  j                        | _        |t        | j                        z  }t        | j                  t        t        f      rd| j                  j                  N| j                  *| j                  | j                  j                        | _
        |t        | j                        z  }t        | j                  t              rX| j                  *| j                  | j                  j                        | _        |t        | j                  j                        z  }|| j                   k  xr t        | j                  t"              xs t        | j                  t$              xr | j                  j&                  du xs t        | j                  t(              xr | j                  j&                  du xsp t        | j                  t              xr0 | j                  j*                   xr | j                  j,                   xs" | j/                         xs | j1                         S )Nr   T)r   rV   	NodeEventr   ru   prepare_anchorr<   r   r   r"  rv   prepare_tagrw   analyze_scalarr#  r   MAX_SIMPLE_KEY_LENGTHr   r   r   r   r   r   r   r   )r%   lengths     r   r  zEmitter.check_simple_key  s   djj),1B1B1N##+'+':':4::;L;L'M$c$..//FtzzK1E#FG

*  ($($4$4TZZ^^$D!c$++,,Fdjj+.}}$ $ 3 3DJJ4D4D Ec$--..//F222 
tzz:. 	*4::'9:\tzz?T?TX\?\	*4::'89[djj>S>SW[>[	* 4::{3 0+++0///	* ((*	* '')	
r   c                    | j                   j                  d | _        y| j                  *| j                  | j                   j                        | _        | j                  r| j	                  || j                  z   d       d | _        y)NFT)rV   r   ru   r&  r   )r%   	indicators     r   r   zEmitter.process_anchor  su    ::$#'D '#'#6#6tzz7H7H#ID   T-A-A!A4H#r   c                 B   | j                   j                  }t        | j                   t              r| j                  | j                         | _        | j                  r|X| j                  dk(  r| j                   j                  d   s(| j                  dk7  r!| j                   j                  d   rd | _        y | j                   j                  d   r8|6d}d | _        n,| j                  r|| j                   j                  rd | _        y |t        d      | j                  | j                  |      | _        | j                  rU| j                  | j                  d       | j                  r-| j                  s!t        | j                   t              rd| _        d | _        y )Nr   r   r5   rD   ztag is not specifiedT)rV   r"  r   r   rx   choose_scalar_stylerh   r   rv   r   r'  r   r[   r   rc   )r%   r"  s     r   r   zEmitter.process_tag  sH   jjnndjj+.zz!!557
NNckr!djj&9&9!&<JJ"$)<)<Q)?$(!zz""1%#+$(!NNcktzz7J7J$(!;566$ $ 0 0 5D  !2!2D9%%tzz;7"& r   c                    | j                   *| j                  | j                  j                        | _         | j                  j                  dk(  s| j
                  ry| j                  j                  r| j                  j                  dk(  r| j                  j                  d   s| j                  j                  d   s}| j                  r,| j                   j                  s[| j                   j                  sE| j                  r| j                   j                  s"| j                  s| j                   j                  ryd| j                   _        | j                  j                  r\| j                  j                  dv rD| j                  s8| j                  s,| j                   j                  r| j                  j                  S | j                  j                  sG| j                   j                  r1d| j                  j                  v sd	| j                  j                  v ry| j                  j                  r| j                  j                  dk(  r9| j                   j                  r#| j                  r| j                   j                  syy)
N"r  r   r9   r   Tz|>'rK   )rw   r(  rV   r#  rx   rh   r   r]   r   r   r   r    r!   r$   r#   r"   r+   s    r   r.  zEmitter.choose_scalar_style3  s   ==  //

0@0@ADM::s"dnn

  DJJ$4$4$;JJ"$***=*=a*@ ''T]]-@-@DMMD[D[MM22DMM,K,K$(!::

 0 0D 8OO//MM--zz'''zzDMM$E$Edjj&&&$$**2B2B*Bzz4::#3#3s#:}}00''DMM,C,Cr   c                    | j                   *| j                  | j                  j                        | _         | j                  | j                         | _        | j                   }| j                  r| j                  s| j                          | j                  dk(  r'| j                  | j                   j                  |       n| j                  dk(  r'| j                  | j                   j                  |       n| j                  dk(  r&| j                  | j                   j                         np| j                  dk(  r;| j                  | j                   j                  | j                  j                         n&| j!                  | j                   j                  |       d | _         d | _        | j                  j                  r| j#                  | j                         y y )Nr0  r1  >|)rw   r(  rV   r#  rx   r.  r]   r[   r   r   write_double_quotedr   write_single_quotedwrite_foldedwrite_literalr   write_plainr   )r%   splits     r   r   zEmitter.process_scalarV  sY   ==  //

0@0@ADM::113DJ+++
   ::$$T]]%9%95AZZ3$$T]]%9%95AZZ3dmm223ZZ3t}}33TZZ5G5GHT]]1159
::##DJJ/ r   c                 D    |\  }}|dk7  rt        d||fz        d||fz  S )Nr5   zunsupported YAML version: %d.%dz%d.%d)r   )r%   r   majorminors       r   r   zEmitter.prepare_versiont  s6    uA:@E5>QRR5%.((r   c           	      $   |st        d      |d   dk7  s|d   dk7  rt        dt        |      z        |dd D ]S  }d|cxk  rdk  rn d	|cxk  rd
k  rn d|cxk  rdk  r+n |dv r2t        dt        |      dt        |             |S )Nztag handle must not be emptyr   rD   r:   z*tag handle must start and end with '!': %rr5   09AZazz-_invalid character z in the tag handle: )r   r   )r%   r   chs      r   r   zEmitter.prepare_tag_handle{  s    =>>!9r
d 2KtTZ|\]]2,B"d"db&8D&8DB<N$<NRTX]R]"DHHdSYl[ 	  r   c                    |st        d      g }dx}}|d   dk(  rd}|t        |      k  r||   }d|cxk  rdk  s n d|cxk  rdk  sn d	|cxk  rd
k  sn |dv r|dz  }nO||k  r|j                  |||        |dz   x}}t        |      }|D ]  }|j                  dt	        |      z         ! |t        |      k  r||k  r|j                  |||        dj                  |      S )Nztag prefix must not be emptyr   rD   r5   r?  r@  rA  rB  rC  rD  z-;/?!:@&=+$,_.~*'()[]%%%02Xr   )r   r<   r-   r   ordjoin)r%   r   chunksstartendrF  datas          r   r   zEmitter.prepare_tag_prefix  s   =>>!9CCKB"d"2%%2%%11q3;MM&s"34!Ag%BxBMM)c"g"56  CK  3;MM&s+,wwvr   c                    |st        d      |dk(  r|S d }|}t        | j                  j                               }|D ]N  }|j	                  |      s|dk(  st        |      t        |      k  s2| j                  |   }|t        |      d  }P g }dx}}|t        |      k  r||   }	d|	cxk  rdk  s*n d|	cxk  rdk  sn d|	cxk  rd	k  sn |	d
v s
|	dk(  r|dk7  r|dz  }nO||k  r|j                  |||        |dz   x}}t        |	      }
|
D ]  }	|j                  dt        |	      z         ! |t        |      k  r||k  r|j                  |||        dj                  |      }|r||S d|z  S )Nztag must not be emptyrD   r   r?  r@  rA  rB  rC  rD  z-;/?:@&=+$,_.~*'()[]r5   rH  r   z!<%s>)
r   r   rt   r   
startswithr<   r-   r   rI  rJ  )r%   r"  r   suffixprefixesr   rK  rL  rM  rF  rN  suffix_texts               r   r'  zEmitter.prepare_tag  s   677$;J$++0023F~~f%6T>S[3s8=S**62S[]+  CKB"d"2%%2%%00$J6T>q3;MM&s"34!Ag%BxBMM)c"g"56  CK" 3;MM&s+,ggfo$k22k))r   c           	          |st        d      |D ]0  }t        |      rt        dt        |      dt        |             |S )Nzanchor must not be emptyrE  z in the anchor: )r   r   r   )r%   r   rF  s      r   r&  zEmitter.prepare_anchor  sG    9::B(,"@DR$v,W  
 r   c           
         |st        |ddddddd      S d}d}d}d}d}d}d}d}	d}
d}|j                  d      s|j                  d      rd}d}d}t        |      dk(  xs |d   dv }d}d}d}|t        |      k  r~||   }|dk(  rH|d	v rd}d}|d
v r0| j                  j                  dk(  rd}nt        |      dk(  rd}|rd}|dk(  rC|rAd}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|cxk  rdk  sQn |dk(  s4d|cxk  rdk  s)n d|cxk  rdk  sn | j
                  r"d|cxk  rdk  rn n|dk7  r| j                  sd}nd}|dk(  r#|dk(  rd}|t        |      dz
  k(  rd}|rd}
d}d}n+|dv r#|dk(  rd}|t        |      dz
  k(  rd}	|rd}d}d}nd}d}|dz  }|dv }|dz   t        |      k\  xs
 ||dz      dv }|t        |      k  r~d}d}d}d}d}|s|s|s|	rdx}}|rd}|
rdx}x}}|r	dx}x}x}}n|rdx}x}}| j                  sd}|rdx}}|rd}|rd}t        |d||||||      S )NTFr   r   r   r5   u     	
  r   z#,[]{}&*!|>'"%@`z?:)r5   r5   r  z,[]{}r  rH   #	   
  rK   r   ~          ퟿      �u   𐀀u   􏿿   ﻿)r   rP  r<   r   use_versionrl   ri   rQ   )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indexrF  r    r!   r"   r#   r$   s                          r   r(  zEmitter.analyze_scalar  s    !!&"&$($(!	 	 !"  V$(9(9&(A#"O #' "%V!1!^VAYB^5^  c&k!B z--&*O'+$;22f<*.V)*.-+/(:"8&*O'+$ >&*O:$//"="="G&*O:-*.+/(:"9&*O'+$ **"%K7b#;G#;'M"1	1 B3)3228\}8\Io---1*)-& TzA:$(MCK!O+%)N!"&K!%!&,,A:$(MCK!O+%)N!"&K!&!%!&!& QJE&(,H&H#	S[(]F519,=A],] #W c&k!`   "" M^~3880 K INNN03F W\\\0\3FINNN03F))# 3880 $  %!-/ 3 3#	
 		
r   c                 f    t        | j                  d      r| j                  j                          y y )Nflush)r   rO   rp  r+   s    r   r   zEmitter.flush_stream  s%    4;;(KK )r   c                     | j                   rQ| j                   j                  d      r5| j                  j                  dj	                  | j                                y y y )Nzutf-16r^  )rP   rP  rO   r   encoder+   s    r   r   zEmitter.write_stream_start  sE     ==T]]55h?KKi..t}}=> @=r   c                 $    | j                          y r   )r   r+   s    r   r   zEmitter.write_stream_end  s    r   c                 H   | j                   s|s|}nd|z   }|| _         | j                  xr || _        | xj                  t        |      z  c_        d| _        t        | j                        r|j                  | j                        }| j                  j                  |       y )Nr   F)
r_   r`   r>   r<   rd   r  rP   rr  rO   r   )r%   r,  need_whitespacer_   r`   rN  s         r   r   zEmitter.write_indicator  sz    ??/D)#D$5Is4y ;;t}}-D$r   c                    | j                   xs d}| j                  r*| j                  |kD  s| j                  |k(  r9| j                  s-t	        | j
                        rd| _        n| j                          | j                  |k  rcd| _        d|| j                  z
  z  }|| _        | j                  r|j                  | j                        }| j                  j                  |       y y )Nr   FTr   )rX   r`   r>   r_   r  rc   r   rP   rr  rO   r   )r%   rX   rN  s      r   r   zEmitter.write_indent  s    !{{V#v%dooDOO$"'%%';;"DO6DKK/0D DK}}{{4==1KKd#  r   c                 
   || j                   }d| _        d| _        | xj                  dz  c_        d| _        t        | j                        r|j                  | j                        }| j                  j                  |       y )NTr5   r   )
rs   r_   r`   r^   r>   r  rP   rr  rO   r   )r%   rN  s     r   r   zEmitter.write_line_break  sd    <''D		Q	;;t}}-D$r   c                     d|z  }| j                   r|j                  | j                         }| j                  j                  |       | j	                          y )Nz	%%YAML %srP   rr  rO   r   r   )r%   r   rN  s      r   r   zEmitter.write_version_directive  sC    l*==;;t}}-D$r   c                     d|d|}| j                   r|j                  | j                         }| j                  j                  |       | j	                          y )Nz%TAG r   ry  )r%   r   r   rN  s       r   r   zEmitter.write_tag_directive  sC    !,k:==;;t}}-D$r   c                    | j                   r;| j                  /| j                          | j                  dk7  r| j                          | j	                  dd       d}d}dx}}|t        |      k  rGd }|t        |      k  r||   }|r||dk7  r|dz   |k(  r?| j                  | j                  kD  r&|r$|dk7  r|t        |      k7  r| j                          nn||| }| xj                  t        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |}n|rb||dvr||   dk(  r| j                          ||| D ])  }	|	dk(  r| j                          | j                  |	       + | j                          |}n|	|d	v s|dk(  ru||k  rp||| }| xj                  t        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |}|dk(  rgd
}| xj                  dz  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |dz   }|	|dk(  }|dv }|dz  }|t        |      k  rG| j	                  dd       y )Nr   r1  TFr   r5   rW  rK   
    
  z''r9   )rZ   rp   r   r   r   r<   r>   rr   r  rP   rr  rO   r   )
r%   textr:  spacesbreaksrL  rM  rF  rN  brs
             r   r6  zEmitter.write_single_quoted  s   $$0%%'((A-%%'T4(SYBSY#Y:t	S( KK$//9!!QJ3t9,))+#E#s4y0.#';;t}}#=D))$/E:+@!@E{e+--/"5o; 113 11"5	 .
 %%'E:'=!=ts{#E#s4y0.#';;t}}#=D))$/ #Tzq &;;t}}5D!!$'a~t441HCg SYh 	T5)r   r?  rC  btnvfrer0  \N_LP) 	rK   rL   r0  r  rY  rZ  u    u    c                    | j                   r;| j                  /| j                          | j                  dk7  r| j                          | j	                  dd       dx}}|t        |      k  rd }|t        |      k  r||   }|:|dv s6d|cxk  rdk  sfn | j                  rd|cxk  rdk  sLn d	|cxk  rd
k  s>n ||k  rp||| }| xj                  t        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |}||| j                  v rd| j                  |   z   }n6|dk  rdt        |      z  }n"|dk  rdt        |      z  }ndt        |      z  }| xj                  t        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |dz   }d|cxk  rt        |      dz
  k  r;n n7|dk(  s||k\  r,| j                  ||z
  z   | j                  kD  r|r	||| dz   }||k  r|}| xj                  t        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       | j                          d| _        d| _        ||   dk(  rkd}| xj                  t        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |dz  }|t        |      k  r| j	                  dd       y )Nr   r0  Tu   "\  ﻿r   rX  rZ  r[  r\  r]  r     ÿz\x%02Xu   ￿z\u%04Xz\U%08Xr5   F)rZ   rp   r   r   r   r<   ri   r>   r  rP   rr  rO   r   ESCAPE_REPLACEMENTSrI  rr   r_   r`   )r%   r}  r:  rL  rM  rF  rN  s          r   r5  zEmitter.write_double_quoted0  s   $$0%%'((A-%%'T4(SYBSY#Y
55r,W,**$7i79;Wi;W 3;c?DKK3t9,KDMM*#{{4==9KK%%d+E>T555$t'?'?'CCw)CG3y)CG3)CG3KK3t9,KDMM*#{{4==9KK%%d+!GEC'#d)a-'4Z5C<KK3;/$//AE#.3;Es4y(&;;t}}5D!!$'!!#"'!&;$& DKK3t9,KDMM*#{{4==9KK%%d+1HCu SYv 	T5)r   c                 |   d}d}d}|r|d   dv r| j                   }|t        |      z  }nY| j                  rMdD ]7  }d}	 |j                  ||      }|dk(  rn	 ||dz      dv rn	 |dz  }+|dkD  s7 n dkD  r| j                   }|d   d	vrd
}nt        |      dk(  s|d   d	v rd}||z  }|||fS # t        $ r Y Vw xY w)Nr   r   r|  )z
---z
...r:      z 
r5   rW  r  r4   +)ro   r	   rZ   findr6   r<   )r%   r}  rX   r,  hintsrM  poss          r   determine_block_hintszEmitter.determine_block_hintsv  s   	Aw00226**""-CC"iiS1"9!!#C!G}7 %  8 q  Rx . 7!66FBx44 	Ta48/D#D 	fi''  * ! !s   
B//	B;:B;c                 :   | j                  |      \  }}}| j                  d|z   d       |dk(  rd| _        | j                          d}d}d}dx}}	|	t	        |      k  r<d }
|	t	        |      k  r||	   }
|rt|
|
dvr|s|
|
dk7  r||   dk(  r| j                          |
dk(  }|||	 D ])  }|dk(  r| j                          | j                  |       + |
| j                          |	}n|r|
dk7  r|d	z   |	k(  r*| j                  | j                  kD  r| j                          nn|||	 }| xj                  t	        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |	}n|
|
d
v r|||	 }| xj                  t	        |      z  c_        t        | j                        r|j                  | j                        }| j                  j                  |       |
dk(  rX|	t	        |      d	z
  k  r<||	dz      j                         s&| j                          | j                          |	dz  }	nt        d      |
| j                          |	}|
	|
dv }|
dk(  }|	d	z  }	|	t	        |      k  r;y y )Nr3  Tr  Fr   u
   
  r   rK   r5   u    
  r  r9   z*unexcpected fold indicator \a before spacerW  )r  r   rd   r   r<   r   r>   rr   r  rP   rr  rO   r   isspacer   )r%   r}  r  _indent
_indicatorrd  r~  r  rL  rM  rF  r  rN  s                r   r7  zEmitter.write_folded  s   %)%?%?%E"w
TE\40"DOSYBSY#Y:+B!B)N$J K50--/$&$JM"5o; 113 11"5	 .
 ~))+E:qyC'DKK$//,I))+#E#s4y0.#';;t}}#=D))$/E:'?!?c?DKK3t9,KDMM*#{{4==9KK%%d+U{#d)a-0cAg9N9N9P 113 --/1HC"./\"]]z--/E~44t1HCk SYr   c                    | j                  |      \  }}}| j                  d|z   d       	 |d   d   }|r| j                  j                  |       |dk(  rd| _        | j                          d}dx}}|t        |      k  r1d }	|t        |      k  r||   }	|r|	|	dvr||| D ])  }
|
dk(  r| j                          | j                  |
       + |	X| j                  r<| j                  | j                  nd}| j                  j                  d||z   z         n| j                          |}nj|	|	dv rd||| }t        | j                        r|j                  | j                        }| j                  j                  |       |	| j                          |}|	|	dv }|dz  }|t        |      k  r0y y # t        t
        f$ r Y uw xY w)	Nr4  Tr5   r   r  rW  rK   r   )r  r   rO   r   	TypeErrorr6   rd   r   r<   rZ   rX   r   r  rP   rr  )r%   r}  r   r  r  r  r  rL  rM  rF  r  idnxrN  s                r   r8  zEmitter.write_literal  s   %)%?%?%E"w
TE\40	ajmG!!'* "DOSYBSY#Y:+@!@"5o; 113 11"5	 .
 ~,,26++2I4;;qD KK--dgn.EF --/E:'<!<c?DDMM*#{{4==9KK%%d+z--/E~441HC; SY :& 		s   %F4 4GGc                    | j                   rC| j                  0| j                          | j                  dk7  r| j                          nd| _        |sy | j
                  sbd}| xj                  t        |      z  c_        | j                  r|j                  | j                        }| j                  j                  |       d| _        d| _        d}d}dx}}|t        |      k  rd }|t        |      k  r||   }|r|dk7  r|dz   |k(  r:| j                  | j                  kD  r!|r| j                          d| _        d| _        ne||| }| xj                  t        |      z  c_        | j                  r|j                  | j                        }| j                  j                  |       |}n|rn|dvr||   dk(  r| j                          ||| D ])  }	|	dk(  r| j                          | j                  |	       + | j                          d| _        d| _        |}nn||dv rh||| }| xj                  t        |      z  c_        | j                  r|j                  | j                        }	 | j                  j                  |       |}|	|dk(  }|dv }|dz  }|t        |      k  ry y #  t        j                  j                  t!        |      dz           xY w)	Nr   Tr   Fr5   rW  rK   r|  )rZ   rp   r   r   rd   r_   r>   r<   rP   rr  rO   r   r`   rr   rj   stdoutrepr)
r%   r}  r:  rN  r~  r  rL  rM  rF  r  s
             r   r9  zEmitter.write_plain  s   $$0%%'((A-%%'"&DKK3t9$K}}{{4==1KKd#SYBSY#Y:qyC'DKK$//,Ie))+*/).#E#s4y0==#';;t}}#=D))$/E22E{e+--/"5o; 113 11"5	 .
 %%'&+DO%*DNE:'=!=c?DKK3t9,K}}#{{4==9))$/  E~t441HC[ SYL

((dd):;s   .J- -.Kc                    |j                   }|s|d   dk(  r|d d }	 |j                  j                  }|j                   r(|j                   j                  d      r| j                  }n|| j                  dz   k  rt         	 || j                  z
  }| j                  r|j                         r|dk  rd}d|z  |z   }	 t        | j                        r|j                  | j                        }| j                  j                  |       |s| j                          y y # t        $ r | j                  dz   }Y w xY w# t        $ r Y Xw xY w# t        $ r  w xY w)Nr:   rK   r5   r   )r#  
start_markr>   rP  
ValueErrorstripr  rP   rr  UnicodeDecodeErrorrO   r   r  r   )r%   r   prer#  col	nr_spacess         r   write_commentzEmitter.write_commentL  s>   uRyD(#2JE
	"$$++C}}!9!9$!? kkt{{Q&	 dkk)I{{u{{}Q	)Oe+E&!LL7E KKe$ !!# %  	"++/C	" &   		sB   A"D  :E ;0D8 +E D54D58	EE EE Ec                    |j                   d   }|y	 t        t        f}|D ]b  }t        ||      rt	        |dd       r| j
                  dk7  r| j                          | j                  |d       t        ||      s\d|_        d 	 y# t        $ r: t        j                  j                  dj                  t        |      |              w xY w)Nr5   Fpre_doner   T)r  zeventtt {} {})r   r   r   r   rN   r>   r   r  r  r  rj   r  r   formattype)r%   rV   commentsstart_eventsr   s        r   r   zEmitter.write_pre_commentp  s    ==#	-/ABL#e\2ww
TX7Y;;!#))+""7"5e\2'+G$ $   	JJ_33DKGH	s   A)B	 >	B	 	ACc                 x    | j                   j                  d   y|j                  d   }| j                  |       y)Nr   FT)rV   r   r  )r%   rV   r   s      r   r   zEmitter.write_post_comment  s9    ::a (--"7#r   )
NNNNNNNNNN)FNF)F)FFFF)FFr   )T)Ir   r   r   r   r)  r&   propertyrO   setterr   r   r   r   r   r   r   rS   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   r6  r  r5  r  r7  r8  r9  r  r   r   r   r   r   r   r   ]   s    $  
 "48fP F F ]]    & &,6XK6'ZR
X$7Qr'':,&,28$/0/>''	;;,.99/>''



B
!B!F0<)8&*P	q
j 
? $(
   ?*D $D*L(B@D,\CJ"$H(r   )
__future__r   r   rj   ruamel.yaml.errorr   r   ruamel.yaml.eventsruamel.yaml.compatr   r	   r
   r   r   r   r   typingAnyDictListUnionTextTupleOptional
StreamType__all__r   objectr   r(   r   r   r   r   <module>r     sk    ' %  8     	 n
%	9 	'V '." f " Jmf mr   