
                         R   d dl mZmZ 	 d dlZd dlZd dlmZmZmZm	Z	 d dl
mZ d dlmZ erd dlmZmZmZmZ nd dlmZmZmZmZ 	 g dZdZd	Zd
ZdZdZ  G d de!      Z"d Z# G d de!      Z$ G d de!      Z% G d de!      Z& G d de!      Z' G d de	e(e'      Z) G d de*e'      Z+ G d de      Z, G d de,e      Z- G d  d!e,e      Z. G d" d#e,      Z/ G d$ d%ee'      Z0e1d&        Z2 G d' d(e'e      Z3 G d) d*e0      Z4 G d+ d,ee'      Z5 G d- d.e'      Z6d/d0ejn                  fd1Z8y)2    )absolute_importprint_functionN)ordereddictPY2string_typesMutableSliceableSequence)ScalarString)Anchor)
MutableSetSizedSetMapping)CommentedSeqCommentedKeySeqCommentedMapCommentedOrderedMapCommentedSetcomment_attribmerge_attrib_yaml_comment_yaml_format_yaml_line_col_yaml_merge	_yaml_tagc                       e Zd ZdZeZd Zd Zed        Z	ed        Z
e
j                  d        Z
ed        Zej                  d        Zy	)
Comment)comment_items_end_startc                 .    d | _         i | _        g | _        y N)r   r   r   selfs    'lib/third_party/ruamel/yaml/comments.py__init__zComment.__init__.   s     	    c                     t        | j                        rdt        | j                        z   }nd}dj                  | j                  | j
                  |      S )Nz,
  end= z$Comment(comment={0},
  items={1}{2}))boolr   strformatr   r   )r$   ends     r%   __str__zComment.__str__8   sB    		?DII.CC6==dllDKKY\]]r'   c                     | j                   S r"   r   r#   s    r%   itemszComment.items@        {{r'   c                     | j                   S r"   r   r#   s    r%   r-   zComment.endE   s     yyr'   c                     || _         y r"   r4   r$   values     r%   r-   zComment.endJ   s     	r'   c                     | j                   S r"   r    r#   s    r%   startzComment.startO   r2   r'   c                     || _         y r"   r9   r6   s     r%   r:   zComment.startT   s     r'   N)__name__
__module____qualname__	__slots__r   attribr&   r.   propertyr1   r-   setterr:    r'   r%   r   r   (   s     6IF^     	ZZ    \\ r'   r   c                       y r"   rC   rC   r'   r%   	NoCommentrE   [   s    r'   c                   .    e Zd ZdZeZd Zd Zd ZddZ	y)Format_flow_stylec                     d | _         y r"   rH   r#   s    r%   r&   zFormat.__init__d   
    r'   c                     d| _         y NTrH   r#   s    r%   set_flow_stylezFormat.set_flow_styleh   rK   r'   c                     d| _         y NFrH   r#   s    r%   set_block_stylezFormat.set_block_stylel   s
     r'   Nc                 6    | j                   |S | j                   S )a  if default (the flow_style) is None, the flow style tacked on to
        the object explicitly will be taken. If that is None as well the
        default flow style rules the format down the line, or the type
        of the constituent values (simple -> flow, map/list -> block)rH   )r$   defaults     r%   
flow_stylezFormat.flow_stylep   s!     #Nr'   r"   )
r<   r=   r>   r?   format_attribr@   r&   rN   rQ   rT   rC   r'   r%   rG   rG   `   s      IF  ! r'   rG   c                   :    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zy)	LineColc                 .    d | _         d | _        d | _        y r"   )linecoldatar#   s    r%   r&   zLineCol.__init__~   s    		r'   c                 H    | j                   i | _         || j                   |<   y r"   r[   r$   keyr[   s      r%   add_kv_line_colzLineCol.add_kv_line_col        99DI		#r'   c                 (    | j                  |dd      S Nr      _kvr$   ks     r%   r_   zLineCol.key       xx1a  r'   c                 (    | j                  |dd      S )N      re   rg   s     r%   r7   zLineCol.value   ri   r'   c                 N    | j                   y | j                   |   }||   ||   fS r"   r]   )r$   rh   x0x1r[   s        r%   rf   zLineCol._kv   s/    99yy|Bxb!!r'   c                 d    | j                   y | j                   |   d   | j                   |   d   fS rc   r]   r$   idxs     r%   itemzLineCol.item   s4    99yy~a $))C."333r'   c                 H    | j                   i | _         || j                   |<   y r"   r]   r^   s      r%   add_idx_line_colzLineCol.add_idx_line_col   ra   r'   N)r<   r=   r>   line_col_attribr@   r&   r`   r_   r7   rf   rs   ru   rC   r'   r%   rW   rW   {   s*    F!!"4r'   rW   c                   $    e Zd ZdZdZeZd Zd Zy)Tagz'store tag information for roundtrippingr7   c                     d | _         y r"   ry   r#   s    r%   r&   zTag.__init__   s	    
r'   c                 $    dj                  |       S )Nz#{0.__class__.__name__}({0.value!r}))r,   r#   s    r%   __repr__zTag.__repr__   s    4;;DAAr'   N)	r<   r=   r>   __doc__r?   
tag_attribr@   r&   r|   rC   r'   r%   rx   rx      s    1IFBr'   rx   c                       e Zd Zed        ZddZddZddZddZ	 ddZ	ed        Z
edfd	Zed
        Zd Zd Zd Zed        Zd ZddZed        Zd ZddZd Zd Zd Zy)CommentedBasec                     t        | t        j                        s#t        | t        j                  t                      t	        | t        j                        S r"   )hasattrr   r@   setattrgetattrr#   s    r%   cazCommentedBase.ca   5     tW^^,D'..')4tW^^,,r'   c                     |y |s| j                   j                  g | j                   _        | j                   j                  j                  |       y r"   )r   r-   extend)r$   r   clears      r%   yaml_end_comment_extendz%CommentedBase.yaml_end_comment_extend   s;    ?DGGKK'DGGK7#r'   c                     | j                   j                  j                  |g d      }|s|d   #|d   t        |d   t              sJ |d   |d<   n|d   j                  |d          |d   |d<   y )NNNNNrd   r   r   r   
setdefault
isinstancelistr   r$   r_   r   r   rs        r%   yaml_key_comment_extendz%CommentedBase.yaml_key_comment_extend   t    GGNN%%c+CDAaDLqz%!'!*d3331:AaDaDKK
#qz!r'   c                     | j                   j                  j                  |g d      }|s|d   #|d   t        |d   t              sJ |d   |d<   n|d   j                  |d          |d   |d<   y )Nr   rl   rd   r   rk   r   r   s        r%   yaml_value_comment_extendz'CommentedBase.yaml_value_comment_extend   r   r'   c                     ddl m} ddlm} | j	                         }|d   dk(  r|dd } ||      }|j                  d      D ]!  }|j                   |d|z   dz   |d             # y)zoverwrites any preceding comment lines on an object
        expects comment to be without `#` and possible have multiple lines
        rd   CommentMarkCommentToken
N# )errorr   tokensr   _yaml_get_pre_commentsplitappend)r$   r   indentr   r   pre_comments
start_markcoms           r%   yaml_set_start_commentz$CommentedBase.yaml_set_start_comment   sl    
 	'(1132;$crlG (
==&CTCZ$->
D QR 'r'   Nc                 &   ddl m} ddlm fd}||dz   }|rt	        |      dkD  r|d   d	k(  r|dd }|r|d   d	k(  r|dd } ||      }| j
                  j                  j                  |dg ddg      }	|d	k(  r|	d   j                   |d
|             n3|r1|j                  d	      D ]  }
|	d   j                   ||
|              |rD ||      }|	d   g |	d<   |j                  d	      D ]  }
|	d   j                   ||
|              yy)zc
        expects comment (before/after) to be without `#` and possible have multiple lines
        r   r   r   c                 ,     | rdnd| z   dz   |d       S )Nr   r)   r   rC   )smarkr   s     r%   comment_tokenzFCommentedBase.yaml_set_comment_before_after_key.<locals>.comment_token   s"      a 7$ >dKKr'   Nrk   rd   r   r   r)   rl   )
ruamel.yaml.errorr   ruamel.yaml.tokensr   lenr   r1   r   r   r   )r$   r_   beforer   afterafter_indentr   r   r   cr   r   s              @r%   !yaml_set_comment_before_after_keyz/CommentedBase.yaml_set_comment_before_after_key   s$    	23	L
 !A:Ls6{QF2J$,>CR[FU2Y$&#2JE (
GGMM$$S4T4*@AT>aDKKb*56||D)!M#z:; *$\2Jt|!{{4(!M#z:; )	 r'   c                     t        | t        j                        s#t        | t        j                  t                      t	        | t        j                        S )z<format attribute

        set_flow_style()/set_block_style())r   rG   r@   r   r   r#   s    r%   fazCommentedBase.fa  s5     tV]]+D&--2tV]]++r'   c                     ddl m} ddlm} |	 | j	                  |      }|d   dk7  rd|z   }||d   dk(  rd|z   }d} ||      } |||d      dg}| j                  ||	       y# t
        $ r d}Y Sw xY w)
z
        there is a problem as eol comments should start with ' #'
        (but at the beginning of the line the space doesn't have to be before
        the #. The column index is for the # mark
        rd   r   r   Nr   #r    r_   )r   r   r   r   _yaml_get_columnAttributeError_yaml_add_eol_comment)r$   r   r_   columnr   r   r   cts           r%   yaml_add_eol_commentz"CommentedBase.yaml_add_eol_comment  s     	)&>..s3 1:WnG>qzS - (
7J5t<""23"/ " s   A' 'A54A5c                     t        | t        j                        s#t        | t        j                  t                      t	        | t        j                        S r"   )r   rW   r@   r   r   r#   s    r%   lczCommentedBase.lc0  r   r'   c                 H    || j                   _        || j                   _        y r"   )r   rY   rZ   )r$   rY   rZ   s      r%   _yaml_set_line_colz CommentedBase._yaml_set_line_col7  s    r'   c                 <    | j                   j                  ||       y r"   )r   r`   r^   s      r%   _yaml_set_kv_line_colz#CommentedBase._yaml_set_kv_line_col<  s    T*r'   c                 <    | j                   j                  ||       y r"   )r   ru   r^   s      r%   _yaml_set_idx_line_colz$CommentedBase._yaml_set_idx_line_col@  s      d+r'   c                     t        | t        j                        s#t        | t        j                  t                      t	        | t        j                        S r"   )r   r
   r@   r   r   r#   s    r%   anchorzCommentedBase.anchorD  s5     tV]]+D&--2tV]]++r'   c                 P    t        | t        j                        sy | j                  S r"   )r   r
   r@   r   r#   s    r%   yaml_anchorzCommentedBase.yaml_anchorK  s    tV]]+{{r'   c                 H    || j                   _        || j                   _        y r"   )r   r7   always_dump)r$   r7   r   s      r%   yaml_set_anchorzCommentedBase.yaml_set_anchorQ  s    !"-r'   c                     t        | t        j                        s#t        | t        j                  t                      t	        | t        j                        S r"   )r   rx   r@   r   r   r#   s    r%   tagzCommentedBase.tagV  s5     tSZZ(D#**ce,tSZZ((r'   c                 &    || j                   _        y r"   )r   r7   r6   s     r%   yaml_set_tagzCommentedBase.yaml_set_tag]  s    r'   c                 T   t         j                  t        j                  t        j                  t        j                  t
        j                  t        fD ]S  }t        | |      s|r+t        ||t        j                  t        | |                   =t        ||t        | |             U y r"   )r   r@   rG   rW   r
   rx   r   r   r   copydeepcopyr   )r$   tdeepas       r%   copy_attributeszCommentedBase.copy_attributesa  sn     ..&--**l,AtQAq$--a0@"ABAq'$"23,r'   c                     t         r"   NotImplementedErrorr$   r   r_   s      r%   r   z#CommentedBase._yaml_add_eol_commentm      !!r'   c                     t         r"   r   r#   s    r%   r   z#CommentedBase._yaml_get_pre_commentq  r   r'   c                     t         r"   r   r$   r_   s     r%   r   zCommentedBase._yaml_get_columnu  r   r'   )F)r   )Nr   NN)r<   r=   r>   rA   r   r   r   r   r   r   r   rE   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   r'   r%   r   r      s    - -$		S  DH!<F , , 1:$ 02 - -
+, , ,.
 ) )	4"""r'   r   c                       e Zd Zej                  dfZd Zd Zd ZddZ	d Z
d Zd	 Zd
 ZefdZd Zd Zd Zd Zd Zd ZddZd Zy)r   _lstc                 6    t        j                  | g|i | y r"   )r   r&   r$   argskws      r%   r&   zCommentedSeq.__init__}  s    d(T(R(r'   c                 .    t         j                  | |      S r"   )r   __getitem__rq   s     r%   __getsingleitem__zCommentedSeq.__getsingleitem__  s    c**r'   c                     |t        |       k  rGt        |t              r7t        |t              s't        | |   t              r t	        | |         |      }t
        j                  | ||       y r"   )r   r   r   r	   typer   __setitem__)r$   rr   r7   s      r%   __setsingleitem__zCommentedSeq.__setsingleitem__  sW     T?5,/"5,7tCy,7'T#Y.sE*r'   Nc                 N   t         j                  | |       | j                  j                  j	                  |d        t        | j                  j                        D ]G  }||k  r	| j                  j                  j	                  |      | j                  j                  |dz
  <   I y Nrd   )r   __delitem__r   r1   popsorted)r$   rr   
list_indexs      r%   __delsingleitem__zCommentedSeq.__delsingleitem__  su    s##t$ /JC,0GGMM,=,=j,IDGGMM*q.) 0r'   c                 ,    t         j                  |       S r"   )r   __len__r#   s    r%   r   zCommentedSeq.__len__  s    ||D!!r'   c                 
   t         j                  | ||       t        | j                  j                  d      D ]H  }||k  r y| j                  j                  j                  |      | j                  j                  |dz   <   J y)z5the comments after the insertion have to move forwardTreverserd   N)r   insertr   r   r1   r   )r$   rr   valr   s       r%   r   zCommentedSeq.insert  sa     	D#s# =JC,0GGMM,=,=j,IDGGMM*q.) >r'   c                 0    t         j                  | |       y r"   )r   r   )r$   r   s     r%   r   zCommentedSeq.extend  s    D#r'   c                 .    t         j                  | |      S r"   )r   __eq__r$   others     r%   r  zCommentedSeq.__eq__  s    {{4''r'   c                 \    |t         ur| j                  ||       y || j                  _        y r"   rE   r   r   r   r   s      r%   _yaml_add_commentzCommentedSeq._yaml_add_comment  %    i((g6%DGGOr'   c                 *    | j                  ||       y Nr   r  r   s      r%   r   z"CommentedSeq._yaml_add_eol_comment      wC0r'   c                 b    | j                   j                  |   d   j                  j                  S Nr   r   r1   r   r   r   s     r%   _yaml_get_columnXzCommentedSeq._yaml_get_columnX  &    ww}}S!!$//666r'   c                    d }d }|dz
  |dz   }}|| j                   j                  v r|}nP|| j                   j                  v r|}n5t        |       D ]'  \  }}||k\  r n|| j                   j                  vr&|}) || j                  |      }|S r   r   r1   	enumerater  r$   r_   r   sel_idxprepostrow_idx_k1s           r%   r   zCommentedSeq._yaml_get_column      !GS1WT$''--GTWW]]"G !*$c>$''--/! !0 ++G4Fr'   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r   r   r   r$   r   s     r%   r   z"CommentedSeq._yaml_get_pre_comment  G    77??"#\2DGGO  ".DGGOOAr'   c                     | j                         }||t        |       <   | D ]9  }|j                  t        j                  |             | j                  |d       ; |S NT)r   )	__class__idr   r   r   r   r$   memoresrh   s       r%   __deepcopy__zCommentedSeq.__deepcopy__  sT    nnRXAJJt}}Q'(  4 0  
r'   c                 .    t         j                  | |      S r"   )r   __add__r  s     r%   r(  zCommentedSeq.__add__  s    ||D%((r'   c                    |Qt        t        | t        t        |                   |      }t        j                  | |D cg c]  }|d   	 c}       nt        t        t        |t        j                  |             t        t        |                   |      }t        j                  | |D cg c]  }t        j                  | |d          c}       | j                  j                  }i | j                  _        t        |      D ]+  \  }}|d   }||v s||   | j                  j                  |<   - y c c}w c c}w )Nr   r   rd   )r   zipranger   r   r&   map__iter__r   r   r1   r   r  )r$   r_   r   tmp_lstxitmrr   	old_indexs           r%   sortzCommentedSeq.sort  s    ;SuSY'78'JGMM$w 7w!1w 78CT]]4015T3CDgG MM$w Ow!!1!1$!!=w OPggmm(FC!IC%(^c" ) !8
 !Ps    D6
. D;
c                 ,    t         j                  |       S r"   )r   r|   r#   s    r%   r|   zCommentedSeq.__repr__  s    }}T""r'   r"   rP   )r<   r=   r>   r   r@   r?   r&   r   r   r   r   r   r   r  rE   r  r   r  r   r   r&  r(  r2  r|   rC   r'   r%   r   r   z  sl    (I)+
+J"J( .7 &17*)4"#r'   r   c                   2    e Zd ZdZefdZd Zd Zd Zd Z	y)r   zEThis primarily exists to be able to roundtrip keys that are sequencesc                 \    |t         ur| j                  ||       y || j                  _        y r"   r  r   s      r%   r  z!CommentedKeySeq._yaml_add_comment  r  r'   c                 *    | j                  ||       y r	  r
  r   s      r%   r   z%CommentedKeySeq._yaml_add_eol_comment	  r  r'   c                 b    | j                   j                  |   d   j                  j                  S r  r  r   s     r%   r  z!CommentedKeySeq._yaml_get_columnX  r  r'   c                    d }d }|dz
  |dz   }}|| j                   j                  v r|}nP|| j                   j                  v r|}n5t        |       D ]'  \  }}||k\  r n|| j                   j                  vr&|}) || j                  |      }|S r   r  r  s           r%   r   z CommentedKeySeq._yaml_get_column  r  r'   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r   r  r  s     r%   r   z%CommentedKeySeq._yaml_get_pre_comment&  r  r'   N)
r<   r=   r>   r}   rE   r  r   r  r   r   rC   r'   r%   r   r     s!    O-6 &17*r'   r   c                       e Zd ZdZd Zd Zy)CommentedMapView_mappingc                     || _         y r"   r<  )r$   mappings     r%   r&   zCommentedMapView.__init__3  s	    r'   c                 0    t        | j                        }|S r"   )r   r=  )r$   counts     r%   r   zCommentedMapView.__len__7  s    DMM"r'   N)r<   r=   r>   r?   r&   r   rC   r'   r%   r;  r;  0  s    I r'   r;  c                   ,    e Zd ZdZed        Zd Zd Zy)CommentedMapKeysViewrC   c                     t        |      S r"   setr$   its     r%   _from_iterablez#CommentedMapKeysView._from_iterable@       2wr'   c                     || j                   v S r"   r<  r   s     r%   __contains__z!CommentedMapKeysView.__contains__E  s    dmm##r'   c              #   6   K   | j                   D ]  }|  y wr"   r<  r$   r/  s     r%   r-  zCommentedMapKeysView.__iter__I  s      AG    Nr<   r=   r>   r?   classmethodrI  rL  r-  rC   r'   r%   rC  rC  =  s#    I $r'   rC  c                   ,    e Zd ZdZed        Zd Zd Zy)CommentedMapItemsViewrC   c                     t        |      S r"   rE  rG  s     r%   rI  z$CommentedMapItemsView._from_iterableS  rJ  r'   c                 T    |\  }}	 | j                   |   }||k(  S # t        $ r Y yw xY wrP   )r=  KeyError)r$   rs   r_   r7   vs        r%   rL  z"CommentedMapItemsView.__contains__X  s>    
U	c"A :  		s    	''c              #   p   K   | j                   j                         D ]  }|| j                   |   f  y wr"   r=  _keysr   s     r%   r-  zCommentedMapItemsView.__iter__b  s1     ==&&(Cc*++ )   46NrP  rC   r'   r%   rS  rS  P  s#    I ,r'   rS  c                       e Zd ZdZd Zd Zy)CommentedMapValuesViewrC   c                 N    | j                   D ]  }|| j                   |   k(  s y y)NTFr<  )r$   r7   r_   s      r%   rL  z#CommentedMapValuesView.__contains__k  s)    ==Cc** ! r'   c              #   l   K   | j                   j                         D ]  }| j                   |     y wr"   rY  r   s     r%   r-  zCommentedMapValuesView.__iter__r  s,     ==&&(C--$$ )s   24N)r<   r=   r>   r?   rL  r-  rC   r'   r%   r]  r]  h  s    I%r'   r]  c                   H   e Zd Zej                  ddfZd ZeefdZd Z	d Z
d Zd Zd	 Zd-dZd.dZd Zd Zd Zd Zd-dZd Zd Zd Zd Zd Zd Zd Zer
d Zd Zd Znd Zerd Z d Z!d Z"d  Z#nd! Z!d" Z$er
d# Z%d$ Z&d% Z'nd& Z%e(d'        Z)d( Z*d) Z+d* Z,d+ Z-d, Z.y
)/r   _ok_refc                 b    t               | _        g | _        t        j                  | g|i | y r"   )rF  ra  rb  r   r&   r   s      r%   r&   zCommentedMap.__init__{  s*    5	T/D/B/r'   c                     |t         ur| j                  ||       y|t         ur| j                  ||       y|| j                  _        yz>values is set to key to indicate a value attachment of commentNrE   r   r   r   r   r$   r   r_   r7   s       r%   r  zCommentedMap._yaml_add_comment  B     i((g6	!**5':%DGGOr'   c                 *    | j                  ||       yz6add on the value line, with value specified by the keyry   Nr
  r   s      r%   r   z"CommentedMap._yaml_add_eol_comment       	wc2r'   c                 b    | j                   j                  |   d   j                  j                  S )Nrk   r  r   s     r%   r  zCommentedMap._yaml_get_columnX  r  r'   c                 4   d }d }d\  }}}| D ]  }|	||k7  r|} n||k(  r|}|} || j                   j                  v r|}nD|| j                   j                  v r|}n)| D ]$  }||k\  r n|| j                   j                  vr#|}& || j                  |      }|S )N)NNN)r   r1   r  )	r$   r_   r   r  r  r  lastr/  k1s	            r%   r   zCommentedMap._yaml_get_column  s    *T4A18CxD  $''--GTWW]]"G 9TWW]]*  ++G4Fr'   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r   r  r  s     r%   r   z"CommentedMap._yaml_get_pre_comment  r  r'   c                 *   	 t        j                  | |       	 | j                  j                  |j	                                y # t        $ r |D ]
  }||   | |<    Y Ew xY w# t
        $ r( |D ]   }| j                  j                  |d          " Y y w xY wr  )r   update	TypeErrorra  keysr   add)r$   valsr/  s      r%   rr  zCommentedMap.update  s    	"tT*
	#HHOODIIK(  	"q'Q 	"  	#QqT" 	#s"   A )A! AA!.BBNc                     t        j                  | |||       | j                  j                  |       || j	                  ||       yy)zPinsert key value into given position
        attach comment if provided
        Nr   )r   r   ra  ru  r   )r$   posr_   r7   r   s        r%   r   zCommentedMap.insert  sF    
 	4c51S%%g3%7 r'   c                     t        |t              s| j                  ||      S fd	  |d|       S # t        $ r |cY S t        t
        f$ r s |cY S w xY w)z/multi-level get that expects dicts within dictsc                     st        |t              sJ |t        |       k\  r|t        |       kD  rt        || |dz
        S  | |dz   || |dz
              S r   )r   dictr   
IndexError)key_listleveldget_one_levellist_oks      r%   r  z)CommentedMap.mlget.<locals>.get_one_level  si    !!T***H%3x=($$%!),-- 519a8K6LMMr'   rd   )r   r   getrV  rs  r|  )r$   r_   rS   r  r  s      `@r%   mlgetzCommentedMap.mlget  sf     #t$88C))	N	 a.. 	N:& 	N	s   	6 AAAc                     	 t        j                  | |      S # t        $ r+ t        | t        g       D ]  }||d   v s|d   |   c cY S   w xY wr   )r   r   rV  r   r   )r$   r_   mergeds      r%   r   zCommentedMap.__getitem__  s[    	**455 	!$b9&)#!!9S>) : 		s    $A
A	Ac                     || v rGt        |t              r7t        |t              s't        | |   t              r t        | |         |      }t	        j
                  | ||       | j                  j                  |       y r"   )r   r   r	   r   r   r   ra  ru  )r$   r_   r7   s      r%   r   zCommentedMap.__setitem__  sc     $;5,/"5,7tCy,7'T#Y.c51Sr'   c                 "    || j                   v ryy rM   )ra  r   s     r%   _unmerged_containszCommentedMap._unmerged_contains  s    $((?r'   c                 @    t        t        j                  | |            S r"   )r*   r   rL  r   s     r%   rL  zCommentedMap.__contains__
  s    K,,T3788r'   c                 8    	 | j                  |      S #  |cY S xY wr"   )r   )r$   r_   rS   s      r%   r  zCommentedMap.get  s$    	##C((	Ns    c                 L    t        j                  |       j                  dd      S )Nr   r   )r   r|   replacer#   s    r%   r|   zCommentedMap.__repr__  s     ##D)11.-PPr'   c              #      K   t        j                  |       D ]+  }|| j                  v s|t        j                  | |      f - y wr"   )r   r-  ra  r   rN  s     r%   non_merged_itemszCommentedMap.non_merged_items  s>     %%d+ADHH}00q999 ,s
   'AAc                     | j                   j                  |       t        j                  | |       | j                  D ]  }|j                  |        y r"   )ra  discardr   r   rb  update_key_value)r$   r_   referers      r%   r   zCommentedMap.__delitem__  sB     	c*yyG$$S) !r'   c              #   H   K   t        j                  |       D ]  }|  y wr"   r   r-  rN  s     r%   r-  zCommentedMap.__iter__3        %%d+AG ,    "c              #   H   K   t        j                  |       D ]  }|  y wr"   r  rN  s     r%   rZ  zCommentedMap._keys8  r  r  c                 ,    t        j                  |       S r"   )r   r   r#   s    r%   r   zCommentedMap.__len__=  s    ""4((r'   c                 0    t        t        |       |k(        S r"   )r*   r{  r  s     r%   r  zCommentedMap.__eq__A  s    DJ%'((r'   c                 4    t        | j                               S r"   )r   rZ  r#   s    r%   rt  zCommentedMap.keysG  s    

%%r'   c                 "    | j                         S r"   )rZ  r#   s    r%   iterkeyszCommentedMap.iterkeysK  s    ::<r'   c                     t        |       S r"   rC  r#   s    r%   viewkeyszCommentedMap.viewkeysO      '--r'   c                     t        |       S r"   r  r#   s    r%   rt  zCommentedMap.keysU  r  r'   c              #   p   K   t        j                  |       D ]  }t        j                  | |        y wr"   r   r-  r   rN  s     r%   _valueszCommentedMap._values[  s.      ))$/!--dA66 0r[  c                 4    t        | j                               S r"   )r   r  r#   s    r%   valueszCommentedMap.values`  s    ''r'   c                 "    | j                         S r"   )r  r#   s    r%   
itervalueszCommentedMap.itervaluesd  s    <<>!r'   c                     t        |       S r"   r]  r#   s    r%   
viewvalueszCommentedMap.viewvaluesh      )$//r'   c                     t        |       S r"   r  r#   s    r%   r  zCommentedMap.valuesn  r  r'   c              #   t   K   t        j                  |       D ]  }|t        j                  | |      f  y wr"   r  rN  s     r%   r   zCommentedMap._itemsr  s3     %%d+A[,,T1555 ,s   68c                 4    t        | j                               S r"   )r   r   r#   s    r%   r1   zCommentedMap.itemsy  s    &&r'   c                 "    | j                         S r"   r0   r#   s    r%   	iteritemszCommentedMap.iteritems}  s    ;;= r'   c                     t        |       S r"   rS  r#   s    r%   	viewitemszCommentedMap.viewitems      (..r'   c                     t        |       S r"   r  r#   s    r%   r1   zCommentedMap.items  r  r'   c                 d    t        | t              st        | t        g        t        | t              S r"   )r   r   r   r   r#   s    r%   mergezCommentedMap.merge  s'     t\*D,+t\**r'   c                      t        |              }| j                         D ]
  \  }}|||<    | j                  |       |S r"   )r   r   r   )r$   r/  rh   rW  s       r%   r   zCommentedMap.copy  s?    DJLKKMDAqAaD "Qr'   c                 X    || j                   vr| j                   j                  |       y y r"   )rb  r   )r$   cms     r%   add_referentzCommentedMap.add_referent  s%    TYYIIR  r'   c                    |D ]_  }|d   j                  |        |d   j                         D ]3  \  }}t        j                  | |      rt        j                  | ||       5 a | j
                  j                  |       y r   )r  r1   r   rL  r   r  r   )r$   r7   rW  rh   s       r%   add_yaml_mergezCommentedMap.add_yaml_merge  so    AaDd#!

1++D!4''a3 %  	

% r'   c                     || j                   v ry | j                  D ](  }||d   v st        j                  | ||d   |           y  t        j                  | |       y r   )ra  r  r   r   r   )r$   r_   rW  s      r%   r  zCommentedMap.update_key_value  sX    $((?Aad{''c1Q49=  	c*r'   c                     | j                         }||t        |       <   | D ]  }t        j                  | |         ||<    | j	                  |d       |S r   )r!  r"  r   r   r   r#  s       r%   r&  zCommentedMap.__deepcopy__  sS    nnRXA]]47+CF St,
r'   r"   rP   )/r<   r=   r>   r   r@   r?   r&   rE   r  r   r  r   r   rr  r   r  r   r   r  rL  r  r|   r  r   r-  rZ  r   r  r   rt  r  r  r  r  r  r  r   r1   r  r  rA   r  r   r  r  r  r&  rC   r'   r%   r   r   x  s   /I0 .7i 	&3
78#849Q:*(

)) 	&	 	.	. 	7
	(	"	0	06
 	'	!	/	/ + +!
!+r'   r   c                 J    t        dj                  | j                              )Nz{} objects are immutable)rs  r,   r<   )clsr   kwargss      r%   raise_immutabler    s     .55cllC
DDr'   c                       e Zd Zej                  dfZ	 d ZexZxZ	xZ
xZxZxZZd Zd Zd Zd Zd Zedd	       Zefd
Zd Zd Zd Zd Zy)CommentedKeyMap_odc                     t        | d      rt        |        	 t        |i || _        y # t        $ r+ t
        r#t        |d   j                               | _        Y y  w xY w)Nr  r   )r   r  r   r  rs  r   r1   r   s      r%   r&   zCommentedKeyMap.__init__  sU    4D!	"D/B/DH 	&tAw}}7		s   * 0AAc                      | j                   |   S r"   )r  )r$   indexs     r%   r   zCommentedKeyMap.__getitem__  s    xxr'   c              #   R   K   | j                   j                         D ]  }|  y wr"   )r  r-  rN  s     r%   r-  zCommentedKeyMap.__iter__  s"     ""$AG %s   %'c                 ,    t        | j                        S r"   )r   r  r#   s    r%   r   zCommentedKeyMap.__len__  s    488}r'   c                 F    t        t        | j                                     S r"   )hashtupler1   r#   s    r%   __hash__zCommentedKeyMap.__hash__  s    E$**,'((r'   c                     t        | t              s| j                  j                         S dt	        t        | j                  j                                     z   dz   S )Nzordereddict())r   r   r  r|   reprr   r1   r#   s    r%   r|   zCommentedKeyMap.__repr__  sD    t\*88$$&&T$((..*:%; <<sBBr'   Nc                 @    t        t        j                  | |            S r"   )r  r{  fromkeys)rt  rW  s     r%   r  zCommentedKeyMap.fromkeys  s     t}}T1566r'   c                 \    |t         ur| j                  ||       y || j                  _        y r"   r  r   s      r%   r  z!CommentedKeyMap._yaml_add_comment  r  r'   c                 *    | j                  ||       y r	  r
  r   s      r%   r   z%CommentedKeyMap._yaml_add_eol_comment  r  r'   c                 b    | j                   j                  |   d   j                  j                  S r  r  r   s     r%   r  z!CommentedKeyMap._yaml_get_columnX  r  r'   c                    d }d }|dz
  |dz   }}|| j                   j                  v r|}nP|| j                   j                  v r|}n5t        |       D ]'  \  }}||k\  r n|| j                   j                  vr&|}) || j                  |      }|S r   r  r  s           r%   r   z CommentedKeyMap._yaml_get_column  r  r'   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r   r  r  s     r%   r   z%CommentedKeyMap._yaml_get_pre_comment  r  r'   r"   )r<   r=   r>   r   r@   r?   r&   r  r   r   r   r   popitemr   rr  r   r-  r   r  r|   rQ  r  rE   r  r   r  r   r   rC   r'   r%   r  r    s    %IN
 O^]K]+]]]g]
V
)C 7 7 .7 &17*r'   r  c                   &    e Zd Zej                  fZy)r   N)r<   r=   r>   r   r@   r?   rC   r'   r%   r   r   !  s    !Ir'   r   c                   f    e Zd Zej                  dfZddZeefdZd Z	d Z
d Zd Zd	 Zd
 Zd Zy)r   odictNc                 \    t               | _        t        j                  |        || |z  } y y r"   )r   r  r   r&   )r$   r  s     r%   r&   zCommentedSet.__init__(  s-     ]
D!FND r'   c                     |t         ur| j                  ||       y|t         ur| j                  ||       y|| j                  _        yre  rf  rg  s       r%   r  zCommentedSet._yaml_add_comment/  rh  r'   c                 *    | j                  ||       yrj  r
  r   s      r%   r   z"CommentedSet._yaml_add_eol_comment:  rk  r'   c                 "    d| j                   |<   y)zAdd an element.Nr  r6   s     r%   ru  zCommentedSet.add?  s     !

5r'   c                     | j                   |= y)z8Remove an element.  Do not raise an exception if absent.Nr  r6   s     r%   r  zCommentedSet.discardD  s     JJur'   c                     || j                   v S r"   r  rN  s     r%   rL  zCommentedSet.__contains__I  s    DJJr'   c              #   6   K   | j                   D ]  }|  y wr"   r  rN  s     r%   r-  zCommentedSet.__iter__M  s     AG rO  c                 ,    t        | j                        S r"   )r   r  r#   s    r%   r   zCommentedSet.__len__R  s    4::r'   c                 T    dj                  | j                  j                               S )Nz
set({0!r}))r,   r  rt  r#   s    r%   r|   zCommentedSet.__repr__V  s    ""4::??#455r'   r"   )r<   r=   r>   r   r@   r?   r&   rE   r  r   ru  r  rL  r-  r   r|   rC   r'   r%   r   r   %  sD    'I .7i 	&3
!


6r'   r   c                       e Zd Zd Zd Zy)TaggedScalarc                      d | _         d | _        y r"   )r7   styler#   s    r%   r&   zTaggedScalar.__init__]  s    

r'   c                     | j                   S r"   ry   r#   s    r%   r.   zTaggedScalar.__str__b  s    zzr'   N)r<   r=   r>   r&   r.   rC   r'   r%   r  r  [  s    
r'   r  r)   .c                    t        | t              rt        | d      r~|r.t        j                  j                  dj                  |             |j                  dj                  | j                               | D ]  }t        | |   |r||z   |z   n|||         yt        | t              rt        | d      r|r.t        j                  j                  dj                  |             |j                  dj                  | j                               t        |       D ]0  \  }}t        ||r||z   t        |      z   n
t        |      ||       2 yyy)zg
    recursively dump comments, all but the toplevel preceded by the path
    in dotted form x.0.a
    r   z{}
)namesepoutN)r   r{  r   sysstdoutwriter,   r   dump_commentsr   r  r+   )r  r  r  r  rh   rr   s         r%   r  r  g  s    !Twq$/JJV]]401		&--%&A!A$dSj1n1#SVW 	At	D!1JJV]]401		&--%&lFC4c#h.SX3TW #	 "2	r'   )9
__future__r   r   r  r   ruamel.yaml.compatr   r   r   r   ruamel.yaml.scalarstringr	   ruamel.yaml.anchorr
   collectionsr   r   r   r   collections.abctypingAnyDictOptionalListUnionIterator__all__r   rU   rv   r   r~   objectr   rE   rG   rW   rx   r   r   r   r  r   r;  rC  rS  r]  r   rQ  r  r  r   r   r  r  r  rC   r'   r%   <module>r     sm   7   X W 1 %;;??=
 !"
/f /f	
 V  6(f (VB& BB"F B"JB#+T= B#J.e] .b
u 
+S &,,c ,0%- % B; BL
 E E
ZmW Zz", "36:} 36l	= 	 #3:: r'   