o
    wiI                     @  s4  d dl mZ 	 d dlZd dlZd dlmZ d dlmZmZ d dl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 dZe Z e   Z!Z"e  Z#e   Z$Z%e   Z&Z'e  Z(e  Z)e  Z*e  Z+e  Z,e  Z-e  Z.e  Z/dZ0dZ1dZ2dZ3G dd dZ4G dd dZ5G dd dZ6G dd dZ7G dd dZ8G dd  d ee9e8Z:G d!d" d"e;e8Z<G d#d$ d$eZ=G d%d& d&e=eZ>G d'd( d(e=eZ?G d)d* d*e=Z@G d+d, d,ee8ZAeBdFd3d4ZCG d5d6 d6e8eZDG d7d8 d8eAZEG d9d: d:ee8ZFG d;d< d<e8ZGd=d>ejHfdGdDdEZIdS )H    )annotationsN)ordereddict)MutableSliceableSequencenprintf)ScalarString)Anchor)Tag)
MutableSetSizedSetMappingF)AnyDictOptionalListUnionr   Iterator)CommentedSeqCommentedKeySeqCommentedMapCommentedOrderedMapCommentedSetcomment_attribmerge_attribTaggedScalarC_POSTC_PREC_SPLIT_ON_FIRST_BLANKC_BLANK_LINE_PRESERVE_SPACE         c                   @  s*   e Zd ZdddZdddZddd	Zd
S )IDXreturnNonec                 C  
   d| _ d S Nr   _idxself r+   Q/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/ruamel/yaml/comments.py__init__4      
zIDX.__init__r   c                 C  s   | j }|  j d7  _ |S Nr   r'   r*   xr+   r+   r,   __call__7   s   zIDX.__call__c                 C  
   t | jS N)strr(   r)   r+   r+   r,   __str__<   r.   zIDX.__str__Nr#   r$   r#   r   )__name__
__module____qualname__r-   r2   r6   r+   r+   r+   r,   r"   2   s    

r"   _yaml_comment_yaml_format_yaml_line_col_yaml_mergec                   @  s   e Zd ZdZeZd$d%ddZd&d
dZd&ddZd&ddZ	e
d'ddZe
d'ddZejd(ddZe
d'ddZejd(ddZd)ddZd*ddZd+d!d"Zd#S ),Comment)comment_items_post_preToldboolr#   r$   c                 C  s$   |rd ng | _ d | _i | _g | _d S r4   )rD   rA   rB   rC   )r*   rE   r+   r+   r,   r-   ^   s   
zComment.__init__r5   c                 C  s8   t | jrdt| j }nd}d| j d| j | dS )N,
  end= zComment(comment=z
,
  items=))rF   rC   r5   rA   rB   )r*   endr+   r+   r,   r6   h   s   
zComment.__str__c                   s   t | jrdt| j }nd}ztdd | jD d  W n ty(   d Y nw d fdd| j D }|r@d| d	 }d
| j d| d| dS )NrG   rH   c                 S     g | ]}t t|qS r+   lenr5   .0kr+   r+   r,   
<listcomp>u       z(Comment._old__repr__.<locals>.<listcomp>r       c                   ,   g | ]\}}t |d    d| dqS : 
r5   rO   rP   vlnr+   r,   rQ   x      , 
      zComment(
  start=,
  items={}rI   )	rF   rC   r5   maxrB   
ValueErrorjoinitemsrA   r*   rJ   itr+   r\   r,   _old__repr__o   s   
zComment._old__repr__c                   s   | j d u r	|  S t| jrdt| j }nd}ztdd | jD d  W n ty1   d Y nw d fdd| j	 D }|rId| d	 }d
| j
 d| d| dS )NrG   rH   c                 S  rK   r+   rL   rN   r+   r+   r,   rQ      rR   z$Comment.__repr__.<locals>.<listcomp>r   rS   c                   rT   rU   rY   rZ   r\   r+   r,   rQ      r^   r_   r`   zComment(
  pre=ra   rb   rI   )rD   ri   rF   rC   reprrc   rB   rd   re   rf   prerg   r+   r\   r,   __repr__}   s   

zComment.__repr__r   c                 C     | j S r4   )rB   r)   r+   r+   r,   rf         zComment.itemsc                 C  rm   r4   rC   r)   r+   r+   r,   rJ      rn   zComment.endvaluec                 C  
   || _ d S r4   ro   r*   rp   r+   r+   r,   rJ         
c                 C  rm   r4   rD   r)   r+   r+   r,   rk      rn   zComment.prec                 C  rq   r4   rt   rr   r+   r+   r,   rk      rs   itemposc                 C  s,   | j |}|d u st||k rd S || S r4   )rB   getrM   )r*   ru   rv   r1   r+   r+   r,   rw      s   zComment.getc                 C  sl   | j |}|d u rd g|d   | j |< }nt||kr(|d  t||ks|| d u s0J |||< d S r/   )rB   rw   rM   append)r*   ru   rv   rp   r1   r+   r+   r,   set   s   
zComment.setr1   c                 C  s   | j r'| j d r|| j d jv rdS | j d r'| j d D ]
}||jv r& dS q| j D ]}|s1q,|D ]}|r@||jv r@  dS q3q,| jrS| jD ]
}||jv rR dS qHdS )Nr   Tr   F)rA   rp   rf   valuesrJ   )r*   r1   crp   r+   r+   r,   __contains__   s,   



zComment.__contains__N)T)rE   rF   r#   r$   r#   r5   r8   rp   r   r#   r$   )ru   r   rv   r   r#   r   )ru   r   rv   r   rp   r   r#   r   r1   r   r#   r   )r9   r:   r;   	__slots__r   attribr-   r6   ri   rl   propertyrf   rJ   setterrk   rw   ry   r|   r+   r+   r+   r,   r@   X   s(    






r@   c                   @  s   e Zd ZdS )NotNoneN)r9   r:   r;   r+   r+   r+   r,   r      s    r   c                   @  sH   e Zd ZdZeZdddZdddZddd	ZddddZ	dddZ
d
S )Format_flow_styler#   r$   c                 C  s
   d | _ d S r4   r   r)   r+   r+   r,   r-      r.   zFormat.__init__c                 C  r%   NTr   r)   r+   r+   r,   set_flow_style   r.   zFormat.set_flow_stylec                 C  r%   NFr   r)   r+   r+   r,   set_block_style   r.   zFormat.set_block_styleNdefaultOptional[Any]r   c                 C  s   | j du r|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)Nr   )r*   r   r+   r+   r,   
flow_style   s   
zFormat.flow_styler5   c                 C  s   d| j  dS )NzFormat(rI   r   r)   r+   r+   r,   rl         zFormat.__repr__r7   r4   )r   r   r#   r   r}   )r9   r:   r;   r   format_attribr   r-   r   r   r   rl   r+   r+   r+   r,   r      s    


	r   c                   @  sd   e Zd ZdZeZdddZdd	d
ZdddZdddZ	d ddZ
d!ddZdddZd"ddZdS )#LineColzL
    line and column information wrt document, values start at zero (0)
    r#   r$   c                 C  s   d | _ d | _d | _d S r4   )linecoldatar)   r+   r+   r,   r-      s   
zLineCol.__init__keyr   r   c                 C     | j d u ri | _ || j |< d S r4   r   r*   r   r   r+   r+   r,   add_kv_line_col      
zLineCol.add_kv_line_colrP   c                 C     |  |ddS Nr   r   _kvr*   rP   r+   r+   r,   r      r   zLineCol.keyc                 C  r   )Nr       r   r   r+   r+   r,   rp      r   zLineCol.valuex0x1c                 C  s(   | j d u rd S | j | }|| || fS r4   r   )r*   rP   r   r   r   r+   r+   r,   r      s   

zLineCol._kvidxc                 C  s*   | j d u rd S | j | d | j | d fS r   r   r*   r   r+   r+   r,   ru     s   
zLineCol.itemc                 C  r   r4   r   r   r+   r+   r,   add_idx_line_col  r   zLineCol.add_idx_line_colr5   c                 C  s   d| j  d| j dS )NzLineCol(, rI   )r   r   r)   r+   r+   r,   rl     s   zLineCol.__repr__Nr7   r   r   r   r   r#   r$   )rP   r   r#   r   )rP   r   r   r   r   r   r#   r   r   r   r#   r   r}   )r9   r:   r;   __doc__line_col_attribr   r-   r   r   rp   r   ru   r   rl   r+   r+   r+   r,   r      s    






r   c                   @  s  e Zd Zedd ZdCdDd
dZdCdEddZdCdEddZdFdGddZ				dHdIddZ	edJddZ
edfdKdd ZedJd!d"ZdLd%d&ZdMd(d)ZdMd*d+ZedJd,d-ZdJd.d/ZdCdNd2d3ZedJd4d5ZdOd7d8ZdPdQd;d<ZdRd=d>ZdJd?d@ZdSdAdBZdS )TCommentedBasec                 C  (   t | tjst| tjt  t| tjS r4   )hasattrr@   r   setattrgetattrr)   r+   r+   r,   ca  s   zCommentedBase.caFrA   r   clearrF   r#   r$   c                 C  s6   |d u rd S |s| j jd u rg | j _| j j| d S r4   )r   rJ   extend)r*   rA   r   r+   r+   r,   yaml_end_comment_extend  s
   z%CommentedBase.yaml_end_comment_extendr   c                 C  sr   | j j|g d}|s|d d u r(|d d ur!t|d ts!J |d |d< n	|d |d  |d |d< d S )NNNNNr   r   r   rB   
setdefault
isinstancelistr   r*   r   rA   r   rr+   r+   r,   yaml_key_comment_extend      z%CommentedBase.yaml_key_comment_extendc                 C  sr   | j j|g d}|s|d d u r(|d d ur!t|d ts!J |d |d< n	|d |d  |d |d< d S )Nr   r   r   r   r    r   r   r+   r+   r,   yaml_value_comment_extend*  r   z'CommentedBase.yaml_value_comment_extendr   indentc           	      C  s   ddl m} ddlm} |  }|d dkr|dd }||}|dD ] }| }t|dkr;|d dkr;d	| }|||d | q%dS )
zoverwrites any preceding comment lines on an object
        expects comment to be without `#` and possible have multiple lines
        r   CommentMarkCommentTokenrX   Nr   ## )	errorr   tokensr   _yaml_clear_pre_commentsplitstriprM   rx   )	r*   rA   r   r   r   pre_comments
start_markcomr{   r+   r+   r,   yaml_set_start_comment4  s   z$CommentedBase.yaml_set_start_commentNbeforeafterafter_indentc                   sD  ddl m} ddlm  d fdd	}|d
u r|d }|r/t|dkr/|d dkr/|d
d }|r=|d dkr=|d
d }||}| jj|d
g d
d
g}	|d
ur||	d d
u r[g |	d< |dkrj|	d |d| n|	dD ]}
|	d ||
| qo|r||}|	d d
u rg |	d< |	dD ]}
|	d ||
| qd
S d
S )zc
        expects comment (before/after) to be without `#` and possible have multiple lines
        r   r   r   sr   markr#   c                   s    | rdnd|  d |S )Nr   rH   rX   r+   )r   r   r   r+   r,   comment_tokenS  s   zFCommentedBase.yaml_set_comment_before_after_key.<locals>.comment_tokenNr    r   r   rX   rH   r   )r   r   r   r   r#   r   )
ruamel.yaml.errorr   ruamel.yaml.tokensr   rM   r   rf   r   rx   r   )r*   r   r   r   r   r   r   r   r   r{   r   r+   r   r,   !yaml_set_comment_before_after_keyE  s4   z/CommentedBase.yaml_set_comment_before_after_keyc                 C  r   )z<format attribute

        set_flow_style()/set_block_style())r   r   r   r   r   r)   r+   r+   r,   fan  s   zCommentedBase.far   columnc                 C  s   ddl m} ddlm} |du r#z| |}W n ty"   d}Y nw |d dkr-d| }|du r=|d dkr=d| }d}||}|||dg}| j||d	 dS )
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   rW   r   )r   r   r   r   _yaml_get_columnAttributeError_yaml_add_eol_comment)r*   rA   r   r   r   r   r   ctr+   r+   r,   yaml_add_eol_commentw  s"   z"CommentedBase.yaml_add_eol_commentc                 C  r   r4   )r   r   r   r   r   r)   r+   r+   r,   lc     zCommentedBase.lcr   r   c                 C     || j _|| j _d S r4   )r   r   r   )r*   r   r   r+   r+   r,   _yaml_set_line_col     z CommentedBase._yaml_set_line_colr   c                 C     | j || d S r4   )r   r   r   r+   r+   r,   _yaml_set_kv_line_col     z#CommentedBase._yaml_set_kv_line_colc                 C  r   r4   )r   r   r   r+   r+   r,   _yaml_set_idx_line_col  r   z$CommentedBase._yaml_set_idx_line_colc                 C  r   r4   )r   r   r   r   r   r)   r+   r+   r,   anchor  r   zCommentedBase.anchorc                 C  s   t | tjsd S | jS r4   )r   r   r   r   r)   r+   r+   r,   yaml_anchor  s   zCommentedBase.yaml_anchorrp   always_dumpc                 C  r   r4   )r   rp   r   )r*   rp   r   r+   r+   r,   yaml_set_anchor  r   zCommentedBase.yaml_set_anchorc                 C  r   r4   )r   r   r   r   r   r)   r+   r+   r,   tag  r   zCommentedBase.tagr   c                 C  s   t | tj| d S r4   )r   r   r   rr   r+   r+   r,   yaml_set_ctag  r   zCommentedBase.yaml_set_ctagtmemoc              
   C  sd   t jtjtjtjtjtfD ]"}t| |r/|dur&t||t	
t| || qt||t| | q|S )z]
        copies the YAML related attributes, not e.g. .values
        returns target
        N)r@   r   r   r   r   r   r   r   r   copydeepcopyr   )r*   r   r   ar+   r+   r,   copy_attributes  s   
zCommentedBase.copy_attributesc                 C     t r4   NotImplementedErrorr*   rA   r   r+   r+   r,   r        z#CommentedBase._yaml_add_eol_commentc                 C  r   r4   r   r)   r+   r+   r,   _yaml_get_pre_comment  r   z#CommentedBase._yaml_get_pre_commentc                 C  r   r4   r   r*   r   r+   r+   r,   r     r   zCommentedBase._yaml_get_column)F)rA   r   r   rF   r#   r$   )r   r   rA   r   r   rF   r#   r$   r   )rA   r   r   r   r#   r$   )Nr   NN)r   r   r   r   r   r   r   r   r   r   r#   r$   r8   )rA   r   r   r   r   r   r#   r$   )r   r   r   r   r#   r$   r   )rp   r   r   rF   r#   r$   )rp   r   r#   r$   r4   )r   r   r   r   r#   r   rA   r   r   r   r#   r$   r   r   r#   r   )r9   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     s@    


)	






r   c                   @  s   e Zd ZejdfZd8ddZd9d
dZd:ddZd;d9ddZ	d<ddZ
d=ddZd>ddZd?ddZefd@d!d"ZdAd#d$ZdBd%d&ZdBd'd(ZdCd)d*ZdCd+d,ZdDd.d/ZdEd0d1ZdFdGd4d5ZdCd6d7ZdS )Hr   _lstargsr   kwr#   r$   c                 O  s   t j| g|R i | d S r4   )r   r-   r*   r   r  r+   r+   r,   r-     s   zCommentedSeq.__init__r   c                 C     t | |S r4   r   __getitem__r   r+   r+   r,   __getsingleitem__     zCommentedSeq.__getsingleitem__rp   c                 C  sP   |t | k rt|trt|tst| | trt| | |}t| || d S r4   )rM   r   r5   r   typer   __setitem__)r*   r   rp   r+   r+   r,   __setsingleitem__  s   zCommentedSeq.__setsingleitem__Nc                 C  sV   t | | | jj|d  t| jjD ]}||k rq| jj|| jj|d < qd S r/   )r   __delitem__r   rf   popsorted)r*   r   
list_indexr+   r+   r,   __delsingleitem__  s   zCommentedSeq.__delsingleitem__intc                 C  
   t | S r4   )r   __len__r)   r+   r+   r,   r    r.   zCommentedSeq.__len__valc                 C  sP   t | || t| jjddD ]}||k r dS | jj|| jj|d < qdS )z5the comments after the insertion have to move forwardTreverser   N)r   insertr  r   rf   r  )r*   r   r  r  r+   r+   r,   r    s   zCommentedSeq.insertc                 C  s   t | | d S r4   )r   r   )r*   r  r+   r+   r,   r        zCommentedSeq.extendotherrF   c                 C  r  r4   )r   __eq__r*   r  r+   r+   r,   r    r  zCommentedSeq.__eq__rA   r   r   c                 C  $   |t ur| || d S || j_d S r4   r   r   r   rA   r   r+   r+   r,   _yaml_add_comment      zCommentedSeq._yaml_add_commentc                 C     | j ||d d S Nr   r  r   r+   r+   r,   r     r   z"CommentedSeq._yaml_add_eol_commentc                 C     | j j| d jjS r&   r   rf   r   r   r   r+   r+   r,   _yaml_get_columnX	     zCommentedSeq._yaml_get_columnXc                 C     d }d }|d |d }}|| j jv r|}n!|| j jv r|}nt| D ]\}}||kr- n
|| j jvr4q#|}q#|d ur@| |}|S r/   r   rf   	enumerater$  r*   r   r   sel_idxrk   postrow_idx_k1r+   r+   r,   r         
zCommentedSeq._yaml_get_columnc                 C  0   g }| j jd u rd |g| j _|S | j jd }|S r/   r   rA   r*   r   r+   r+   r,   r         z"CommentedSeq._yaml_get_pre_commentc                 C  0   g }| j jd u rd |g| j _|S || j jd< |S r/   r0  r1  r+   r+   r,   r   (  r2  z$CommentedSeq._yaml_clear_pre_commentr   c                 C  sB   |   }||t| < | D ]}|t|| | j||d q|S N)r   )	__class__idrx   r   r   r   r*   r   resrP   r+   r+   r,   __deepcopy__0  s   zCommentedSeq.__deepcopy__c                 C  r  r4   )r   __add__r  r+   r+   r,   r:  8  r  zCommentedSeq.__add__Fr  c                   s   |d u rt t tt |d}t dd |D  n t tt|t tt |d}t  fdd|D   jj	}i  j_
t|D ]\}}|d }||v r]||  jj	|< qId S )Nr  c                 S  s   g | ]}|d  qS r   r+   rO   r1   r+   r+   r,   rQ   >  s    z%CommentedSeq.sort.<locals>.<listcomp>c                   s   g | ]
}t  |d  qS )r   r  r;  r)   r+   r,   rQ   C  s    r   )r  ziprangerM   r   r-   map__iter__r   rf   rB   r(  )r*   r   r  tmp_lstitmr   r1   	old_indexr+   r)   r,   sort;  s   zCommentedSeq.sortc                 C  r  r4   )r   rl   r)   r+   r+   r,   rl   K  r.   zCommentedSeq.__repr__r   r   r  r   r#   r$   r   )r   r   rp   r   r#   r$   r4   r#   r  )r   r   r  r   r#   r$   )r  r   r#   r$   r  r   r#   rF   rA   r   r   r   r#   r$   r   r   r8   r   r   r#   r   )r  r   r#   r   r   )r   r   r  rF   r#   r$   )r9   r:   r;   r@   r   r   r-   r  r
  r  r  r  r   r  r   r  r   r$  r   r   r   r9  r:  rC  rl   r+   r+   r+   r,   r     s(    














r   c                   @  sP   e Zd ZdZefddd	Zdd
dZdddZdddZdddZ	dddZ
dS )r   zEThis primarily exists to be able to roundtrip keys that are sequencesrA   r   r   r   r#   r$   c                 C  r  r4   r  r   r+   r+   r,   r  R  r  z!CommentedKeySeq._yaml_add_commentc                 C  r  r   r!  r   r+   r+   r,   r   X  r   z%CommentedKeySeq._yaml_add_eol_commentc                 C  r"  r&   r#  r   r+   r+   r,   r$  [  r%  z!CommentedKeySeq._yaml_get_columnXc                 C  r&  r/   r'  r)  r+   r+   r,   r   ^  r.  z CommentedKeySeq._yaml_get_columnc                 C  r/  r/   r0  r1  r+   r+   r,   r   r  r2  z%CommentedKeySeq._yaml_get_pre_commentc                 C  r3  r/   r0  r1  r+   r+   r,   r   z  r2  z'CommentedKeySeq._yaml_clear_pre_commentNrG  r   r   r8   )r9   r:   r;   r   r   r  r   r$  r   r   r   r+   r+   r+   r,   r   O  s    



r   c                   @  s$   e Zd ZdZdddZdd	d
ZdS )CommentedMapView_mappingmappingr   r#   r$   c                 C  rq   r4   rJ  )r*   rL  r+   r+   r,   r-     r.   zCommentedMapView.__init__r  c                 C  s   t | j}|S r4   )rM   rK  )r*   countr+   r+   r,   r    s   
zCommentedMapView.__len__N)rL  r   r#   r$   rE  )r9   r:   r;   r   r-   r  r+   r+   r+   r,   rI    s    
rI  c                   @  2   e Zd ZdZedddZddd	Zdd
dZdS )CommentedMapKeysViewr+   rh   r   r#   c                 C     t |S r4   ry   r*   rh   r+   r+   r,   _from_iterable     z#CommentedMapKeysView._from_iterabler   c                 C  
   || j v S r4   rJ  r   r+   r+   r,   r|     r.   z!CommentedMapKeysView.__contains__c                 c      | j D ]}|V  qd S r4   rJ  r0   r+   r+   r,   r?    s   
zCommentedMapKeysView.__iter__Nrh   r   r#   r   r   r8   r9   r:   r;   r   classmethodrS  r|   r?  r+   r+   r+   r,   rO    s    
rO  c                   @  rN  )CommentedMapItemsViewr+   rh   r   r#   c                 C  rP  r4   rQ  rR  r+   r+   r,   rS    rT  z$CommentedMapItemsView._from_iterableru   c                 C  s2   |\}}z
| j | }W ||kS  ty   Y dS w r   )rK  KeyError)r*   ru   r   rp   r[   r+   r+   r,   r|     s   z"CommentedMapItemsView.__contains__c                 c  s&    | j  D ]
}|| j | fV  qd S r4   rK  _keysr   r+   r+   r,   r?    s   zCommentedMapItemsView.__iter__NrW  )ru   r   r#   r   r8   rX  r+   r+   r+   r,   rZ    s    
	rZ  c                   @  s$   e Zd ZdZd
ddZdddZd	S )CommentedMapValuesViewr+   rp   r   r#   c                 C  s$   | j D ]}|| j | kr dS qdS )NTFrJ  )r*   rp   r   r+   r+   r,   r|     s
   
z#CommentedMapValuesView.__contains__c                 c  s"    | j  D ]}| j | V  qd S r4   r\  r   r+   r+   r,   r?    s   zCommentedMapValuesView.__iter__N)rp   r   r#   r   r8   )r9   r:   r;   r   r|   r?  r+   r+   r+   r,   r^    s    
r^  c                   @  sv  e Zd ZejddfZdYdd	ZeefdZddZd[ddZ	d\ddZ
d\ddZd]ddZd]ddZd^ddZd_d`dd Zdadbd$d%Zd\d&d'Zdcd(d)Zd\d*d+Zddd-d.Zd_ded/d0Zd]d1d2Zd]d3d4Zdfd5d6Zd]d7d8Zefded9d:Zd]d;d<Zdgd>d?ZdhdAdBZd]dCdDZd]dEdFZd]dGdHZ d]dIdJZ!e"d]dKdLZ#d]dMdNZ$didPdQZ%djdRdSZ&dfdTdUZ'dkdWdXZ(dS )lr   _ok_refr   r   r  r#   r$   c                 O  s*   t  | _g | _tj| g|R i | d S r4   )ry   r_  r`  r   r-   r  r+   r+   r,   r-     s   zCommentedMap.__init__rA   r   r   rp   c                 C  <   |t ur| || dS |t ur| || dS || j_dS z>values is set to key to indicate a value attachment of commentNr   r   r   r   rA   r*   rA   r   rp   r+   r+   r,   r       zCommentedMap._yaml_add_commentc                 C     | j ||d dS z6add on the value line, with value specified by the keyrp   Nr!  r   r+   r+   r,   r        z"CommentedMap._yaml_add_eol_commentc                 C  r"  )Nr    r#  r   r+   r+   r,   r$    r%  zCommentedMap._yaml_get_columnXc           	      C  s   d }d }d\}}}| D ]}|d ur||kr|} n	||kr|}|}q|| j jv r+|}n|| j jv r4|}n| D ]}||kr> n
|| j jvrEq6|}q6|d urQ| |}|S )NNNN)r   rf   r$  )	r*   r   r   r*  rk   r+  lastr1   k1r+   r+   r,   r     s.   

zCommentedMap._yaml_get_columnc                 C  r/  r/   r0  r1  r+   r+   r,   r     r2  z"CommentedMap._yaml_get_pre_commentc                 C  r3  r/   r0  r1  r+   r+   r,   r      r2  z$CommentedMap._yaml_clear_pre_commentvalsc                 O  s   zt j| g|R i | W n ty&   |d D ]
}|d | | |< qY nw |rNz| j|d   W n tyM   |d D ]
}| j|d  q@Y nw |rZ| jj|   d S d S r&   )r   update	TypeErrorr_  keysr   add)r*   rm  r  r1   r+   r+   r,   rn    s$   zCommentedMap.updateNrv   c                   s
  | j v r |=  fdd  D }zt tdggd }|d }W n ty.   d}Y nw |dkrV||krL|d |d ft td< |}t j }	n|d }t j }	n|}t j }	| |< t||	D ]	}
 ||
  qf j | |dur j	||d dS dS )zkinsert key value into given position, as defined by source YAML
        attach comment if provided
        c                   s   g | ]	}| j v r|qS r+   r_  rN   r)   r+   r,   rQ     s    z'CommentedMap.insert.<locals>.<listcomp>r   r   r   Nr   )
r_  rp  r   r   
IndexErrorrM   r=  move_to_endrq  r   )r*   rv   r   rp   rA   rp  ma0	merge_posidx_minidx_maxr   r+   r)   r,   r    s2   

zCommentedMap.insertFr   list_okc              	     sj   t |ts| ||S d
 fdd z |d| W S  ty%   | Y S  ttfy4   s0 | Y S w )z/multi-level get that expects dicts within dictskey_listr   leveldr#   c                   sZ   s	t |ts	J |t| kr|t| krt|| |d   S  | |d || |d   S r/   )r   dictrM   rs  )rz  r{  r|  get_one_levelry  r+   r,   r  A  s   z)CommentedMap.mlget.<locals>.get_one_levelr   N)rz  r   r{  r   r|  r   r#   r   )r   r   rw   r[  ro  rs  )r*   r   r   ry  r+   r~  r,   mlget;  s   
	zCommentedMap.mlgetc                 C  sR   zt | |W S  ty(   t| tg D ]}||d v r&|d |    Y S q w r/   )r   r  r[  r   r   )r*   r   mergedr+   r+   r,   r  S  s   zCommentedMap.__getitem__c                 C  sX   || v rt |trt |tst | | trt| | |}t| || | j| d S r4   )r   r5   r   r  r   r	  r_  rq  )r*   r   rp   r+   r+   r,   r	  \  s   zCommentedMap.__setitem__c                 C  s   || j v rdS d S r   rr  r   r+   r+   r,   _unmerged_containsh  s   
zCommentedMap._unmerged_containsrF   c                 C     t t| |S r4   )rF   r   r|   r   r+   r+   r,   r|   m  r  zCommentedMap.__contains__c                 C  s   z|  |W S    | Y S r4   )r  )r*   r   r   r+   r+   r,   rw   p  s   zCommentedMap.getc                 C  sD   d}d}|   D ]\}}|| |d|7 }|sd}q|d7 }|S )N{rH   z: r   rb   )rf   )r*   r8  seprP   r[   r+   r+   r,   rl   v  s   zCommentedMap.__repr__c                 c  s2    t | D ]}|| jv r|t | |fV  qd S r4   )r   r?  r_  r  r0   r+   r+   r,   non_merged_items  s   
zCommentedMap.non_merged_itemsc                 C  s2   | j | t| | | jD ]}|| qd S r4   )r_  discardr   r  r`  update_key_value)r*   r   refererr+   r+   r,   r    s
   
zCommentedMap.__delitem__c                 c      t | D ]}|V  qd S r4   r   r?  r0   r+   r+   r,   r?       zCommentedMap.__iter__c                 C  s8   z| | }W n t y   |tu r | Y S w | |= |S r4   )r[  r   )r*   r   r   resultr+   r+   r,   r    s   zCommentedMap.popc                 c  r  r4   r  r0   r+   r+   r,   r]    r  zCommentedMap._keysr  c                 C  s   t t| S r4   )r  r   r  r)   r+   r+   r,   r    r   zCommentedMap.__len__r  c                 C  s   t t| |kS r4   )rF   r}  r  r+   r+   r,   r    r  zCommentedMap.__eq__c                 C     t | S r4   )rO  r)   r+   r+   r,   rp       zCommentedMap.keysc                 C  r  r4   )r^  r)   r+   r+   r,   rz     r  zCommentedMap.valuesc                 c  s(    t | D ]}|t | |fV  qd S r4   )r   r?  r  r0   r+   r+   r,   rB     s   zCommentedMap._itemsc                 C  r  r4   )rZ  r)   r+   r+   r,   rf     r  zCommentedMap.itemsc                 C  s    t | tst| tg  t| tS r4   )r   r   r   r   r)   r+   r+   r,   merge  s   

zCommentedMap.mergec                 C  s2   t |  }|  D ]\}}|||< q	| | |S r4   )r  rB   r   )r*   r1   rP   r[   r+   r+   r,   r     s
   


zCommentedMap.copycmc                 C  s   || j vr| j | d S d S r4   )r`  rx   )r*   r  r+   r+   r,   add_referent  s   
zCommentedMap.add_referentc                 C  sZ   |D ]"}|d  |  |d  D ]\}}t| |rqt| || qq| j| d S r/   )r  rf   r   r|   r	  r  r   )r*   rp   r[   rl  v1r+   r+   r,   add_yaml_merge  s   zCommentedMap.add_yaml_mergec                 C  sR   || j v rd S | jD ]}||d v r t| ||d |   d S q
t| | d S r/   )r_  r  r   r	  r  )r*   r   r[   r+   r+   r,   r    s   

zCommentedMap.update_key_valuer   c                 C  sD   |   }||t| < | D ]}t| | |||< q| j||d |S r4  )r5  r6  r   r   r   r7  r+   r+   r,   r9    s   zCommentedMap.__deepcopy__rD  rA   r   r   r   rp   r   r#   r$   r   r   r8   )rm  r   r  r   r#   r$   r4   )
rv   r   r   r   rp   r   rA   r   r#   r$   r   )r   r   r   r   ry  r   r#   r   )r   r   rp   r   r#   r$   )r   r   r#   rF   )r   r   r   r   r#   r   )r   r   r#   r$   rE  rF  )r  r   r#   r$   r~   rH  ))r9   r:   r;   r@   r   r   r-   r   r  r   r$  r   r   r   rn  r  r  r  r	  r  r|   rw   rl   r  r  r?  r  r]  r  r  rp  rz   rB   rf   r   r  r   r  r  r  r9  r+   r+   r+   r,   r     sJ    






"

	


















		r   clsr   r   kwargsr#   r$   c                 O  s   t | j d)Nz objects are immutable)ro  r9   )r  r   r  r+   r+   r,   raise_immutable     r  c                   @  s   e Zd ZejdfZ	 d(ddZe Z Z	 Z
 Z Z ZZd)d
dZd*ddZd+ddZd,ddZd,ddZed-d.ddZefd/ddZd0d d!Zd1d"d#Zd1d$d%Zd,d&d'ZdS )2CommentedKeyMap_odr   r   r  r#   r$   c                 O  s:   t | dr	t|  zt|i || _W d S  ty    w )Nr  )r   r  r   r  ro  r  r+   r+   r,   r-     s   
zCommentedKeyMap.__init__indexc                 C  
   | j | S r4   )r  )r*   r  r+   r+   r,   r    r.   zCommentedKeyMap.__getitem__Iterator[Any]c                 c  s    | j  D ]}|V  qd S r4   )r  r?  r0   r+   r+   r,   r?    r  zCommentedKeyMap.__iter__r  c                 C  r3   r4   )rM   r  r)   r+   r+   r,   r    r.   zCommentedKeyMap.__len__c                 C  s   t t|  S r4   )hashtuplerf   r)   r+   r+   r,   __hash__  r  zCommentedKeyMap.__hash__c                 C  s.   t | ts
| j S dtt| j  d S )Nzordereddict(rI   )r   r   r  rl   rj   r   rf   r)   r+   r+   r,   rl     s   

zCommentedKeyMap.__repr__Nrp  r[   c                 C  r  r4   )r  r}  fromkeys)rp  r[   r+   r+   r,   r    r  zCommentedKeyMap.fromkeysrA   r   r   c                 C  r  r4   r  r   r+   r+   r,   r    r  z!CommentedKeyMap._yaml_add_commentc                 C  r  r   r!  r   r+   r+   r,   r     r   z%CommentedKeyMap._yaml_add_eol_commentc                 C  r"  r&   r#  r   r+   r+   r,   r$    r%  z!CommentedKeyMap._yaml_get_columnXc                 C  r&  r/   r'  r)  r+   r+   r,   r      r.  z CommentedKeyMap._yaml_get_columnc                 C  r3  r/   r0  r1  r+   r+   r,   r   4  r2  z%CommentedKeyMap._yaml_get_pre_commentrD  )r  r   r#   r   )r#   r  rE  r8   r4   )rp  r   r[   r   r#   r   rG  r   r   )r9   r:   r;   r@   r   r   r-   r  r  r	  r   r  popitemr   rn  r  r?  r  r  rl   rY  r  r   r  r   r$  r   r   r+   r+   r+   r,   r    s"    









r  c                   @  s   e Zd ZejfZdS )r   N)r9   r:   r;   r@   r   r   r+   r+   r+   r,   r   =  s    r   c                   @  sx   e Zd ZejdfZd d!ddZeefd"ddZd#ddZ	d$ddZ
d$ddZd%ddZd&ddZd'ddZd(ddZdS ))r   odictNrz   r   r#   r$   c                 C  s*   t  | _t|  |d ur| |O } d S d S r4   )r   r  r	   r-   )r*   rz   r+   r+   r,   r-   D  s
   
zCommentedSet.__init__rA   r   r   rp   c                 C  ra  rb  rc  rd  r+   r+   r,   r  J  re  zCommentedSet._yaml_add_commentc                 C  rf  rg  r!  r   r+   r+   r,   r   V  ri  z"CommentedSet._yaml_add_eol_commentc                 C  s   d| j |< dS )zAdd an element.Nr  rr   r+   r+   r,   rq  Z  s   zCommentedSet.addc                 C  s   | j |= dS )z8Remove an element.  Do not raise an exception if absent.Nr  rr   r+   r+   r,   r  ^  s   zCommentedSet.discardr1   c                 C  rU  r4   r  r0   r+   r+   r,   r|   b  r.   zCommentedSet.__contains__c                 c  rV  r4   r  r0   r+   r+   r,   r?  e  s   
zCommentedSet.__iter__r  c                 C  r3   r4   )rM   r  r)   r+   r+   r,   r  i  r.   zCommentedSet.__len__r5   c                 C  s   d| j  dS )Nzset(rI   )r  rp  r)   r+   r+   r,   rl   l  r   zCommentedSet.__repr__r4   )rz   r   r#   r$   r  r   r~   r   r8   rE  r}   )r9   r:   r;   r@   r   r   r-   r   r  r   rq  r  r|   r?  r  rl   r+   r+   r+   r,   r   A  s    






r   c                   @  sB   e Zd Zdddd	Zdd
dZddddZdddZdddZdS ) r   Nrp   r   styler   r#   r$   c                 C  s:   || _ || _|d urt|trt|d}| | d S d S )N)suffix)rp   r  r   r5   r   r   )r*   rp   r  r   r+   r+   r,   r-   r  s   

zTaggedScalar.__init__c                 C  rm   r4   rh  r)   r+   r+   r,   r6   z  s   zTaggedScalar.__str__r   r5   startOptional[int]rJ   c                 C  s   | j |||S r4   )rp   rM  )r*   r   r  rJ   r+   r+   r,   rM  }  r  zTaggedScalar.countrv   r  c                 C  r  r4   rh  )r*   rv   r+   r+   r,   r    r.   zTaggedScalar.__getitem__c                 C  s   d| j d| jd| jdS )NzTaggedScalar(value=z, style=z, tag=rI   )rp   r  r   r)   r+   r+   r,   rl     s   zTaggedScalar.__repr__rj  )rp   r   r  r   r   r   r#   r$   r8   )NN)r   r5   r  r  rJ   r  r#   r   )rv   r  r#   r   r}   )r9   r:   r;   r-   r6   rM  r  rl   r+   r+   r+   r,   r   p  s    

r   rH   .r|  namer5   r  outc                 C  s  t | tr=t| dr=|r|| dt|  d || jd | D ]}t| | |r4|| t| n|||d q$dS t | tr|t| dr~|rV|| dt|  d || jd t	| D ]\}}t||rs|| t| nt|||d qcdS dS dS )zg
    recursively dump comments, all but the toplevel preceded by the path
    in dotted form x.0.a
    r   rW   rX   )r  r  r  N)
r   r}  r   writer  r   dump_commentsr5   r   r(  )r|  r  r  r  rP   r   r+   r+   r,   r    s"   * r  )r  r   r   r   r  r   r#   r$   )
r|  r   r  r5   r  r5   r  r   r#   r$   )J
__future__r   sysr   ruamel.yaml.compatr   r   r   ruamel.yaml.scalarstringr   ruamel.yaml.anchorr   ruamel.yaml.tagr   collections.abcr	   r
   r   r   typingr   r   r   r   r   r   __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@   r   r   r   r   r   r   r  r   rI  rO  rZ  r^  r   rY  r  r  r   r   r   stdoutr  r+   r+   r+   r,   <module>   sp   


p+ C|4  *N/