
    Be!                     
   d Z ddlZddlZddlmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZmZmZmZ 	 g dZdZd	Zd
ZdZ G d d      Z e       Z e       xZZ  e       Z! e       xZ"Z# e       xZ$Z% e       Z& e       Z' e       Z( e       Z) e       Z* e       Z+ e       Z, e       Z-dZ.dZ/dZ0dZ1dZ2 G d d      Z3d Z4 G d d      Z5 G d d      Z6 G d d      Z7 G d d      Z8 G d dee9e8      Z: G d  d!e;e8      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e8      ZAeBd,        ZC G d- d.e8e      ZD G d/ d0eA      ZE G d1 d2ee8      ZF G d3 d4e8      ZGd5d6ej                  fd7ZIy)8z
stuff to deal with comments and formatting on dict/list/ordereddict/set
these are not really related, formatting could be factored out as
a separate base
    N)ordereddict)MutableSliceableSequence_Fnprintf)ScalarString)Anchor)
MutableSetSizedSetMapping)CommentedSeqCommentedKeySeqCommentedMapCommentedOrderedMapCommentedSetcomment_attribmerge_attribC_POSTC_PREC_SPLIT_ON_FIRST_BLANKC_BLANK_LINE_PRESERVE_SPACE         c                       e Zd Zd Zd Zd Zy)IDXc                     d| _         y Nr   _idxselfs    4lib/python3.12/site-packages/ruamel/yaml/comments.py__init__zIDX.__init__1   s	    	    c                 H    | j                   }| xj                   dz  c_         |S Nr   r   r"   xs     r#   __call__zIDX.__call__5   s    II		Q	r%   c                 ,    t        | j                        S N)strr    r!   s    r#   __str__zIDX.__str__;   s    499~r%   N)__name__
__module____qualname__r$   r*   r.    r%   r#   r   r   /   s    r%   r   _yaml_comment_yaml_format_yaml_line_col_yaml_merge	_yaml_tagc                       e Zd ZdZeZddZd Zd Zd Z	e
d        Ze
d        Zej                  d        Ze
d	        Zej                  d
        Zd Zd Zd Zy)Comment)comment_items_post_prec                 D    |rd ng | _         d | _        i | _        g | _        y r,   )r=   r:   r;   r<   )r"   olds     r#   r$   zComment.__init___   s$    DR	 
r%   c                     t        | j                        rdt        | j                        z   }nd}dj                  | j                  | j
                  |      S )N,
  end= z$Comment(comment={0},
  items={1}{2}))boolr<   r-   formatr:   r;   )r"   ends     r#   r.   zComment.__str__j   sC    

DJJ/CC6==dllDKKY\]]r%   c                    t        | j                        rdt        | j                        z   }nd}	 t        | j                  D cg c]  }t        t        |             c}      dz   }dj                  | j                  j                         D cg c]$  \  }}dj                  t        |      dz   ||      & c}}      }|rd|z   dz   }d	j                  | j                  ||      S c c}w # t        $ r d}Y w xY wc c}}w )
NrA   rB   r       	{:{}} {}
:
      z&Comment(
  start={},
  items={{{}}}{}))rC   r<   r-   maxr;   len
ValueErrorjoinitemsrD   r:   r"   rE   klnvits         r#   _old__repr__zComment._old__repr__r   s    

DJJ/CC	4;;7ac#a&k781<B [[BF++BSBSBUV$!Q\  Q#r15V
 B%B9@@rSVWW 8 	B	 Ws)   C/ C* 
C/ )D 
*C/ /C=<C=c                 D   | j                   | j                         S t        | j                        rdt	        | j                        z   }nd}	 t        | j                  D cg c]  }t        t        |             c}      dz   }dj                  | j                  j                         D cg c]$  \  }}dj                  t        |      dz   ||      & c}}      }|rd|z   dz   }d	j                  | j                  ||      S c c}w # t        $ r d}Y w xY wc c}}w )
NrA   rB   r   rG   rH   rI   rJ   rK   z$Comment(
  pre={},
  items={{{}}}{}))r=   rV   rC   r<   reprrL   r;   rM   r-   rN   rO   rP   rD   prerQ   s         r#   __repr__zComment.__repr__   s    99$$&&

TZZ 00CC	4;;7ac#a&k781<B [[BF++BSBSBUV$!Q\  Q#r15V
 B%B7>>txxSQQ 8 	B	 Ws*   D !D<
D .)D
D DDc                     | j                   S r,   )r;   r!   s    r#   rP   zComment.items   s     {{r%   c                     | j                   S r,   r<   r!   s    r#   rE   zComment.end   s     zzr%   c                     || _         y r,   r]   r"   values     r#   rE   zComment.end   s     
r%   c                     | j                   S r,   r=   r!   s    r#   rY   zComment.pre   s     yyr%   c                     || _         y r,   rb   r_   s     r#   rY   zComment.pre   s     	r%   c                 d    | j                   j                  |      }|t        |      |k  ry ||   S r,   )r;   getrM   )r"   itemposr)   s       r#   re   zComment.get   s/    KKOOD!9Avr%   c                     | j                   j                  |      }|d g|dz   z  x| j                   |<   }n.t        |      |k  r |j                  d        t        |      |k  r ||   J |||<   y r'   )r;   re   rM   append)r"   rf   rg   r`   r)   s        r#   setzComment.set   so    KKOOD!9%)FcAg$66DKKa&C- a&C-v~#r%   c                    | j                   r^| j                   d   r|| j                   d   j                  v ry| j                   d   r$| j                   d   D ]  }||j                  v s y | j                  j                         D ]   }|s|D ]  }|s||j                  v s  y " | j                  r!| j                  D ]  }||j                  v s y y)Nr   Tr   F)r:   r`   rP   valuesrE   )r"   r)   cr`   s       r#   __contains__zComment.__contains__   s     <<||A1Q(=(=#=||Aa $AAGG|#$ ZZ&&( 	 E  agg 	  88XX  <  r%   N)T)r/   r0   r1   	__slots__r   attribr$   r.   rV   rZ   propertyrP   rE   setterrY   re   rj   rn   r2   r%   r#   r9   r9   Y   s     5IF	^X"R&     	ZZ    	ZZ 	r%   r9   c                       y r,   r2   r2   r%   r#   	NoCommentrt      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,   rw   r!   s    r#   r$   zFormat.__init__   
    r%   c                     d| _         y NTrw   r!   s    r#   set_flow_stylezFormat.set_flow_style   rz   r%   c                     d| _         y NFrw   r!   s    r#   set_block_stylezFormat.set_block_style   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)rw   )r"   defaults     r#   
flow_stylezFormat.flow_style   s!     #Nr%   r,   )
r/   r0   r1   ro   format_attribrp   r$   r}   r   r   r2   r%   r#   rv   rv      s      IF  ! r%   rv   c                   D    e Zd ZdZeZd Zd Zd Zd Z	d Z
d Zd Zd	 Zy
)LineColzL
    line and column information wrt document, values start at zero (0)
    c                 .    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   r   _kvr"   rR   s     r#   r   zLineCol.key      xx1a  r%   c                 (    | j                  |dd      S )Nr      r   r   s     r#   r`   zLineCol.value  r   r%   c                 N    | j                   y | j                   |   }||   ||   fS r,   r   )r"   rR   x0x1r   s        r#   r   zLineCol._kv  s/    99yy|Bxb!!r%   c                 d    | j                   y | j                   |   d   | j                   |   d   fS r   r   r"   idxs     r#   rf   z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!  r   r%   c                 F    t        d| j                  | j                        S )NzLineCol({line}, {col}))r   r   )r   r   r   r!   s    r#   rZ   zLineCol.__repr__'  s    *IIr%   N)r/   r0   r1   __doc__line_col_attribrp   r$   r   r   r`   r   rf   r   rZ   r2   r%   r#   r   r      s7     F!!"4Jr%   r   c                   $    e Zd ZdZdZeZd Zd Zy)Tagz'store tag information for roundtrippingr`   c                     d | _         y r,   r   r!   s    r#   r$   zTag.__init__2  s	    
r%   c                 $    dj                  |       S )Nz#{0.__class__.__name__}({0.value!r}))rD   r!   s    r#   rZ   zTag.__repr__6  s    4;;DAAr%   N)	r/   r0   r1   r   ro   
tag_attribrp   r$   rZ   r2   r%   r#   r   r   ,  s    1IFBr%   r   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,   )hasattrr9   rp   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   rE   extend)r"   r:   clears      r#   yaml_end_comment_extendz%CommentedBase.yaml_end_comment_extendC  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NNNNr   r   r   r;   
setdefault
isinstancelistr   r"   r   r:   r   rs        r#   yaml_key_comment_extendz%CommentedBase.yaml_key_comment_extendK  q    GGNN%%c+CDAaDLqz%!'!*d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   r   r   r   r   r   r   s        r#   yaml_value_comment_extendz'CommentedBase.yaml_value_comment_extendV  r   r%   c                    ddl m} ddlm} | j	                         }|d   dk(  r|dd } ||      }|j                  d      D ]H  }|j                         }t        |      dkD  r|d   dk7  rd	|z   }|j                   ||dz   |             J y)
zoverwrites any preceding comment lines on an object
        expects comment to be without `#` and possible have multiple lines
        r   CommentMarkCommentToken
Nr   ## )	errorr   tokensr   _yaml_clear_pre_commentsplitstriprM   ri   )	r"   r:   indentr   r   pre_comments
start_markcomrm   s	            r#   yaml_set_start_commentz$CommentedBase.yaml_set_start_commenta  s    
 	'(3352;$crlG (
==& 	FC		A1vzadckSjS4Z DE		F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   g |	d<   |d	k(  r|	d   j                   |d
|             n1|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   |      S )Nr   rB   r   r2   )smarkr   s     r#   comment_tokenzFCommentedBase.yaml_set_comment_before_after_key.<locals>.comment_token}  s       a 7$ >EEr%   Nr   r   r   r   rB   r   )
ruamel.yaml.errorr   ruamel.yaml.tokensr   rM   r   rP   r   ri   r   )r"   r   beforer   afterafter_indentr   r   r   rm   r   r   s              @r#   !yaml_set_comment_before_after_keyz/CommentedBase.yaml_set_comment_before_after_keys  sE    	23	F
 !A:Ls6{QF2J$,>CR[FU2Y$&#2JE (
GGMM$$S4T4*@At|!~!M"j9:!<<- @CaDKKc: >?@$\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   rv   rp   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g}| j                  ||	       y# t
        $ r d}Y Rw 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
        r   r   r   Nr   r   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/6""23"/ " s   A& &A43A4c                     t        | t        j                        s#t        | t        j                  t                      t	        | t        j                        S r,   )r   r   rp   r   r   r!   s    r#   lczCommentedBase.lc  r   r%   c                 H    || j                   _        || j                   _        y r,   )r   r   r   )r"   r   r   s      r#   _yaml_set_line_colz CommentedBase._yaml_set_line_col  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   r   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   rp   r   r   r!   s    r#   anchorzCommentedBase.anchor  s5     tV]]+D&--2tV]]++r%   c                 P    t        | t        j                        sy | j                  S r,   )r   r   rp   r   r!   s    r#   yaml_anchorzCommentedBase.yaml_anchor  s    tV]]+{{r%   c                 H    || j                   _        || j                   _        y r,   )r   r`   always_dump)r"   r`   r   s      r#   yaml_set_anchorzCommentedBase.yaml_set_anchor  s    !"-r%   c                     t        | t        j                        s#t        | t        j                  t                      t	        | t        j                        S r,   )r   r   rp   r   r   r!   s    r#   tagzCommentedBase.tag  s5     tSZZ(D#**ce,tSZZ((r%   c                 &    || j                   _        y r,   )r   r`   r_   s     r#   yaml_set_tagzCommentedBase.yaml_set_tag  s    r%   c                 V   t         j                  t        j                  t        j                  t        j                  t
        j                  t        fD ]T  }t        | |      s|,t        ||t        j                  t        | ||                   >t        ||t        | |             V y r,   )r9   rp   rv   r   r   r   r   r   r   copydeepcopyr   )r"   tmemoas       r#   copy_attributeszCommentedBase.copy_attributes  sx     ..&--**l, 	4AtQ#Aq$--a0F"GHAq'$"23	4r%   c                     t         r,   NotImplementedErrorr"   r:   r   s      r#   r   z#CommentedBase._yaml_add_eol_comment      !!r%   c                     t         r,   r  r!   s    r#   _yaml_get_pre_commentz#CommentedBase._yaml_get_pre_comment  r	  r%   c                     t         r,   r  r"   r   s     r#   r   zCommentedBase._yaml_get_column  r	  r%   )F)r   )Nr   NNr,   )r/   r0   r1   rq   r   r   r   r   r   r   r   rt   r   r   r   r   r   r   r   r   r   r   r  r   r  r   r2   r%   r#   r   r   ;  s    - -$		F& DH$<L , , 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 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__r   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,   )rM   r   r-   r   typer   __setitem__)r"   r   r`   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 r'   )r   __delitem__r   rP   popsorted)r"   r   
list_indexs      r#   __delsingleitem__zCommentedSeq.__delsingleitem__  s|    s##t$ / 	JJC,0GGMM,=,=j,IDGGMM*q.)	Jr%   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reverser   N)r   insertr  r   rP   r  )r"   r   valr  s       r#   r&  zCommentedSeq.insert*  sh     	D#s# = 	JJC,0GGMM,=,=j,IDGGMM*q.)	Jr%   c                 0    t         j                  | |       y r,   )r   r   )r"   r'  s     r#   r   zCommentedSeq.extend3  s    D#r%   c                 .    t         j                  | |      S r,   )r   __eq__r"   others     r#   r*  zCommentedSeq.__eq__7  s    {{4''r%   c                 \    |t         ur| j                  ||       y || j                  _        y r,   rt   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_commentB      wC0r%   c                 b    | j                   j                  |   d   j                  j                  S r   r   rP   r   r   r  s     r#   _yaml_get_columnXzCommentedSeq._yaml_get_columnXF  &    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   rP   	enumerater7  r"   r   r   sel_idxrY   postrow_idx_k1s           r#   r   zCommentedSeq._yaml_get_columnJ      !GS1WT$''--GTWW]]"G !*$ "c>$''--/!" ++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   77??1-Lr%   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r'   rC  rD  s     r#   r   z$CommentedSeq._yaml_clear_pre_commenth  G    77??"#\2DGGO  ".DGGOOAr%   c                     | j                         }||t        |       <   | D ]:  }|j                  t        j                  ||             | j                  ||       < |S N)r  )	__class__idri   r   r   r  r"   r  resrR   s       r#   __deepcopy__zCommentedSeq.__deepcopy__q  s[    nnRX 	1AJJt}}Q-.  4 0	1 
r%   c                 .    t         j                  | |      S r,   )r   __add__r+  s     r#   rP  zCommentedSeq.__add__z  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   r   )r  ziprangerM   r   r$   map__iter__r  r   rP   r;   r;  )r"   r   r%  tmp_lstr)   itmr   	old_indexs           r#   sortzCommentedSeq.sort~  s    ;SuSY'78'JGMM$w 7!1 78CT]]4015T3CDgG MM$w O!!1!1$!!= OPggmm( 	4FC!IC%(^c"	4 !8
 !Ps    D6
. D;
c                 ,    t         j                  |       S r,   )r   rZ   r!   s    r#   rZ   zCommentedSeq.__repr__  s    }}T""r%   r,   r   )r/   r0   r1   r9   rp   ro   r$   r  r  r   r"  r&  r   r*  rt   r/  r   r7  r   r  r   rN  rP  rY  rZ   r2   r%   r#   r   r     sq    (I)+
+J"J( .7 &17*)4"#r%   r   c                   8    e Zd ZdZefdZ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  r0  r%   c                 *    | j                  ||       y r2  r3  r  s      r#   r   z%CommentedKeySeq._yaml_add_eol_comment  r4  r%   c                 b    | j                   j                  |   d   j                  j                  S r   r6  r  s     r#   r7  z!CommentedKeySeq._yaml_get_columnX  r8  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  rA  r%   c                     g }| j                   j                  d |g| j                   _        |S | j                   j                  d   }|S r'   rC  rD  s     r#   r  z%CommentedKeySeq._yaml_get_pre_comment  rE  r%   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r'   rC  rD  s     r#   r   z'CommentedKeySeq._yaml_clear_pre_comment  rG  r%   N)r/   r0   r1   r   rt   r/  r   r7  r   r  r   r2   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,   rd  )r"   mappings     r#   r$   zCommentedMapView.__init__  s	    r%   c                 0    t        | j                        }|S r,   )rM   re  )r"   counts     r#   r"  zCommentedMapView.__len__  s    DMM"r%   N)r/   r0   r1   ro   r$   r"  r2   r%   r#   rc  rc    s    I r%   rc  c                   ,    e Zd ZdZed        Zd Zd Zy)CommentedMapKeysViewr2   c                     t        |      S r,   rj   r"   rU   s     r#   _from_iterablez#CommentedMapKeysView._from_iterable       2wr%   c                     || j                   v S r,   rd  r  s     r#   rn   z!CommentedMapKeysView.__contains__  s    dmm##r%   c              #   6   K   | j                   D ]  }|  y wr,   rd  r(   s     r#   rU  zCommentedMapKeysView.__iter__  s        	AG	   Nr/   r0   r1   ro   classmethodro  rn   rU  r2   r%   r#   rk  rk    s#    I $r%   rk  c                   ,    e Zd ZdZed        Zd Zd Zy)CommentedMapItemsViewr2   c                     t        |      S r,   rm  rn  s     r#   ro  z$CommentedMapItemsView._from_iterable  rp  r%   c                 T    |\  }}	 | j                   |   }||k(  S # t        $ r Y yw xY wr   )re  KeyError)r"   rf   r   r`   rT   s        r#   rn   z"CommentedMapItemsView.__contains__  s>    
U	c"A :  		s    	''c              #   p   K   | j                   j                         D ]  }|| j                   |   f  y wr,   re  _keysr  s     r#   rU  zCommentedMapItemsView.__iter__   s6     ==&&( 	,Cc*++	,s   46Nrt  r2   r%   r#   rw  rw    s#    I ,r%   rw  c                       e Zd ZdZd Zd Zy)CommentedMapValuesViewr2   c                 N    | j                   D ]  }|| j                   |   k(  s y y)NTFrd  )r"   r`   r   s      r#   rn   z#CommentedMapValuesView.__contains__	  s.    == 	Cc**	 r%   c              #   l   K   | j                   j                         D ]  }| j                   |     y wr,   r|  r  s     r#   rU  zCommentedMapValuesView.__iter__  s1     ==&&( 	%C--$$	%s   24N)r/   r0   r1   ro   rn   rU  r2   r%   r#   r  r    s    I%r%   r  c                       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
 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d Zd Zd Z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,   )rj   r  r  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rt   r   r   r   r:   r"   r:   r   r`   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 keyr   Nr3  r  s      r#   r   z"CommentedMap._yaml_add_eol_comment*       	wc2r%   c                 b    | j                   j                  |   d   j                  j                  S )Nr   r6  r  s     r#   r7  zCommentedMap._yaml_get_columnX/  r8  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   rP   r7  )	r"   r   r   r=  rY   r>  lastr)   k1s	            r#   r   zCommentedMap._yaml_get_column3  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'   rC  rD  s     r#   r  z"CommentedMap._yaml_get_pre_commentO  rE  r%   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r'   rC  rD  s     r#   r   z$CommentedMap._yaml_clear_pre_commentX  rG  r%   c                    	 t        j                  | g|i | |r-	 | j                  j                  |d   j	                                |r( | j                  j                  |j	                           y y # t        $ r |d   D ]  }|d   |   | |<    Y zw xY w# t
        $ r+ |d   D ]   }| j                  j                  |d          " Y w xY wr   )r   update	TypeErrorr  keysr   add)r"   valsr  r)   s       r#   r  zCommentedMap.updatea  s    	%t1d1b1
 'Q/
 DHHLL"'')$   	%!W %q'!*Q%	% " 'a 'AHHLL1&''s"   A5 ,B 5BB1CCNc                 0   t        | j                               |gz   }t        j                  | |||       |D ]  }| j                  j                  |        | j                  D ]  }|D ]  }|j                  |         || j                  ||       yy)zPinsert key value into given position
        attach comment if provided
        Nr   )	r   r  r   r&  r  r  r  update_key_valuer   )r"   rg   r   r`   r:   r  keytmpreferers           r#   r&  zCommentedMap.inserts  s    
 DIIK C5(4c51 	!FHHLL 	!yy 	1G 1((01	1 %%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   dictrM   
IndexError)key_listleveldget_one_levellist_oks      r#   r  z)CommentedMap.mlget.<locals>.get_one_level  sf    !!T**H%3x=($$%!),-- 519a8K6LMMr%   r   )r   r   re   rz  r  r  )r"   r   r   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  rz  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  r  r  )r"   r   r`   s      r#   r  zCommentedMap.__setitem__  sc     $;5#&"5,7tCy,7'T#Y.c51Sr%   c                 "    || j                   v ryy r|   )r  r  s     r#   _unmerged_containszCommentedMap._unmerged_contains  s    $((?r%   c                 @    t        t        j                  | |            S r,   )rC   r   rn   r  s     r#   rn   zCommentedMap.__contains__  s    K,,T3788r%   c                 8    	 | j                  |      S #  |cY S xY wr,   )r  )r"   r   r   s      r#   re   zCommentedMap.get  s$    	##C((	Ns    c                 L    t        j                  |       j                  dd      S )Nr   r   )r   rZ   replacer!   s    r#   rZ   zCommentedMap.__repr__  s     ##D)11.-PPr%   c              #      K   t        j                  |       D ]+  }|| j                  v s|t        j                  | |      f - y wr,   )r   rU  r  r  r(   s     r#   non_merged_itemszCommentedMap.non_merged_items  sC     %%d+ 	:ADHH}00q999	:s
   'AAc                     | j                   j                  |       t        j                  | |       | j                  D ]  }|j                  |        y r,   )r  discardr   r  r  r  )r"   r   r  s      r#   r  zCommentedMap.__delitem__  sG     	c*yy 	*G$$S)	*r%   c              #   H   K   t        j                  |       D ]  }|  y wr,   r   rU  r(   s     r#   rU  zCommentedMap.__iter__  %     %%d+ 	AG	    "c              #   H   K   t        j                  |       D ]  }|  y wr,   r  r(   s     r#   r}  zCommentedMap._keys  r  r  c                 >    t        t        j                  |             S r,   )intr   r"  r!   s    r#   r"  zCommentedMap.__len__  s    ;&&t,--r%   c                 0    t        t        |       |k(        S r,   )rC   r  r+  s     r#   r*  zCommentedMap.__eq__  s    DJ%'((r%   c                     t        |       S r,   )rk  r!   s    r#   r  zCommentedMap.keys  s    #D))r%   c                     t        |       S r,   )r  r!   s    r#   rl   zCommentedMap.values  s    %d++r%   c              #   t   K   t        j                  |       D ]  }|t        j                  | |      f  y wr,   )r   rU  r  r(   s     r#   r;   zCommentedMap._items  s8     %%d+ 	6A[,,T1555	6s   68c                     t        |       S r,   )rw  r!   s    r#   rP   zCommentedMap.items  s    $T**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)   rR   rT   s       r#   r   zCommentedMap.copy  sD    DJLKKM 	DAqAaD	Qr%   c                 X    || j                   vr| j                   j                  |       y y r,   )r  ri   )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  rP   r   rn   r  r  r   )r"   r`   rT   rR   s       r#   add_yaml_mergezCommentedMap.add_yaml_merge  sy     	4AaDd#!

 41++D!4''a34	4 	

% r%   c                     || j                   v ry | j                  D ](  }||d   v st        j                  | ||d   |           y  t        j                  | |       y r'   )r  r  r   r  r  )r"   r   rT   s      r#   r  zCommentedMap.update_key_value#  s]    $((? 	Aad{''c1Q49=	 	c*r%   c                     | j                         }||t        |       <   | D ]  }t        j                  | |   |      ||<     | j	                  ||       |S rI  )rJ  rK  r   r   r  rL  s       r#   rN  zCommentedMap.__deepcopy__-  sZ    nnRX 	2A]]47D1CF	2St,
r%   r,   r   )(r/   r0   r1   r9   rp   ro   r$   rt   r/  r   r7  r   r  r   r  r&  r  r  r  r  rn   re   rZ   r  r  rU  r}  r"  r*  r  rl   r;   rP   rq   r  r   r  r  r  rN  r2   r%   r#   r   r     s    /I0 .7i 	&3
78%$849Q:*(

.)*,6
+ + +!
!+r%   r   c                 J    t        dj                  | j                              )Nz{} objects are immutable)r  rD   r/   )clsr  kwargss      r#   raise_immutabler  8  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                 p    t        | d      rt        |        	 t        |i || _        y # t        $ r  w xY w)Nr  )r   r  r   r  r  r  s      r#   r$   zCommentedKeyMap.__init__B  s<    4D!	"D/B/DH 		s   * 5c                      | j                   |   S r,   )r  )r"   indexs     r#   r  zCommentedKeyMap.__getitem__N  s    xxr%   c              #   R   K   | j                   j                         D ]  }|  y wr,   )r  rU  r(   s     r#   rU  zCommentedKeyMap.__iter__R  s'     ""$ 	AG	s   %'c                 ,    t        | j                        S r,   )rM   r  r!   s    r#   r"  zCommentedKeyMap.__len__W  s    488}r%   c                 F    t        t        | j                                     S r,   )hashtuplerP   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  rZ   rX   r   rP   r!   s    r#   rZ   zCommentedKeyMap.__repr___  sD    t\*88$$&&T$((..*:%; <<sBBr%   Nc                 @    t        t        j                  | |            S r,   )r  r  fromkeys)r  rT   s     r#   r  zCommentedKeyMap.fromkeyse  s     t}}T1566r%   c                 \    |t         ur| j                  ||       y || j                  _        y r,   r.  r  s      r#   r/  z!CommentedKeyMap._yaml_add_commentj  r0  r%   c                 *    | j                  ||       y r2  r3  r  s      r#   r   z%CommentedKeyMap._yaml_add_eol_commentq  r4  r%   c                 b    | j                   j                  |   d   j                  j                  S r   r6  r  s     r#   r7  z!CommentedKeyMap._yaml_get_columnXu  r8  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_columny  rA  r%   c                     g }| j                   j                  d |g| j                   _        |S || j                   j                  d<   |S r'   rC  rD  s     r#   r  z%CommentedKeyMap._yaml_get_pre_comment  rG  r%   r,   )r/   r0   r1   r9   rp   ro   r$   r  r  r  r   r  popitemr   r  r  rU  r"  r  rZ   ru  r  rt   r/  r   r7  r   r  r2   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/   r0   r1   r9   rp   ro   r2   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"   rl   s     r#   r$   zCommentedSet.__init__  s-     ]
D!FND r%   c                     |t         ur| j                  ||       y|t         ur| j                  ||       y|| j                  _        yr  r  r  s       r#   r/  zCommentedSet._yaml_add_comment  r  r%   c                 *    | j                  ||       yr  r3  r  s      r#   r   z"CommentedSet._yaml_add_eol_comment  r  r%   c                 "    d| j                   |<   y)zAdd an element.Nr  r_   s     r#   r  zCommentedSet.add  s     !

5r%   c                     | j                   |= y)z8Remove an element.  Do not raise an exception if absent.Nr  r_   s     r#   r  zCommentedSet.discard  s     JJur%   c                     || j                   v S r,   r  r(   s     r#   rn   zCommentedSet.__contains__  s    DJJr%   c              #   6   K   | j                   D ]  }|  y wr,   r  r(   s     r#   rU  zCommentedSet.__iter__  s      	AG	rs  c                 ,    t        | j                        S r,   )rM   r  r!   s    r#   r"  zCommentedSet.__len__  s    4::r%   c                 T    dj                  | j                  j                               S )Nz
set({0!r}))rD   r  r  r!   s    r#   rZ   zCommentedSet.__repr__  s    ""4::??#455r%   r,   )r/   r0   r1   r9   rp   ro   r$   rt   r/  r   r  r  rn   rU  r"  rZ   r2   r%   r#   r   r     sD    'I .7i 	&3
!


6r%   r   c                       e Zd ZddZd Zy)TaggedScalarNc                 H    || _         || _        || j                  |       y y r,   )r`   styler   )r"   r`   r  r   s       r#   r$   zTaggedScalar.__init__  s(    

?c" r%   c                     | j                   S r,   r   r!   s    r#   r.   zTaggedScalar.__str__  s    zzr%   r  )r/   r0   r1   r$   r.   r2   r%   r#   r  r    s    #r%   r  rB   .c                    t        | t              rt        | d      r|r*|j                  dj	                  |t        |                    |j                  dj	                  | j                               | D ]'  }t        | |   |r||z   t        |      z   n|||       ) yt        | t              rt        | d      r|r*|j                  dj	                  |t        |                    |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{} {}
z{!r}
)namesepoutN)r   r  r   writerD   r  r   dump_commentsr-   r   r;  )r  r  r  r  rR   r   s         r#   r  r    s    !Twq$/IIi&&tT!W56		(//!$$'( 	]A!A$ddSj3q6&9sX[\	]	At	D!1IIi&&tT!W56		(//!$$'(l 	FC4c#h.SX3TW		 "2	r%   )Jr   sysr   ruamel.yaml.compatr   r   r   r   ruamel.yaml.scalarstringr   ruamel.yaml.anchorr   collections.abcr	   r
   r   r   typingAnyDictOptionalListUnionIterator__all__r   r   r   r   r   cidxC_VALUE_EOL
C_ELEM_EOL	C_KEY_EOL	C_KEY_PRE
C_ELEM_PREC_VALUE_POSTC_ELEM_POSTC_VALUE_PRE
C_KEY_POST	C_TAG_EOL
C_TAG_POST	C_TAG_PREC_ANCHOR_EOLC_ANCHOR_POSTC_ANCHOR_PREr   r   r   r   r   r9   rt   rv   r   r   r   r   r   r  r   rc  rk  rw  r  r   ru  r  r  r   r   r  stdoutr  r2   r%   r#   <module>r     s     + D D 1 % ; ; 
  $  " u  6 !jF	 	J!V #{fV
F	V
F	vv !"
| |@	
   60J 0JfB BH" H"VK#+T= K#\7e] 7t
u 
+S &,,c ,0%- % ^; ^D	 E E
WmW Wt", "36:} 36l=  #3:: r%   