o
    j:                     @  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Union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+   U/var/www/html/Deteccion_Ine/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"   Z_yaml_commentZ_yaml_formatZ_yaml_line_colZ_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   )r@   r=   r>   r?   )r*   rA   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=))rB   r?   r5   r=   r>   )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 )NrC   rD   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   rK   rL   vlnr+   r,   rM   x      , 
      zComment(
  start=,
  items={}rE   )	rB   r?   r5   maxr>   
ValueErrorjoinitemsr=   r*   rF   itr+   rX   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 )NrC   rD   c                 S  rG   r+   rH   rJ   r+   r+   r,   rM      rN   z$Comment.__repr__.<locals>.<listcomp>r   rO   c                   rP   rQ   rU   rV   rX   r+   r,   rM      rZ   r[   r\   zComment(
  pre=r]   r^   rE   )r@   re   rB   r?   reprr_   r>   r`   ra   rb   prerc   r+   rX   r,   __repr__}   s   

zComment.__repr__r   c                 C     | j S r4   )r>   r)   r+   r+   r,   rb         zComment.itemsc                 C  ri   r4   r?   r)   r+   r+   r,   rF      rj   zComment.endvaluec                 C  
   || _ d S r4   rk   r*   rl   r+   r+   r,   rF         
c                 C  ri   r4   r@   r)   r+   r+   r,   rg      rj   zComment.prec                 C  rm   r4   rp   rn   r+   r+   r,   rg      ro   itemposc                 C  s,   | j |}|d u st||k rd S || S r4   )r>   getrI   )r*   rq   rr   r1   r+   r+   r,   rs      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/   )r>   rs   rI   append)r*   rq   rr   rl   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)r=   rl   rb   valuesrF   )r*   r1   crl   r+   r+   r,   __contains__   s,   



zComment.__contains__N)T)rA   rB   r#   r$   r#   r5   r8   rl   r   r#   r$   )rq   r   rr   r   r#   r   )rq   r   rr   r   rl   r   r#   r   r1   r   r#   r   )r9   r:   r;   	__slots__r   attribr-   r6   re   rh   propertyrb   rF   setterrg   rs   ru   rx   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Z_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(rE   r   r)   r+   r+   r,   rh         zFormat.__repr__r7   r4   )r   r   r#   r   ry   )r9   r:   r;   r|   format_attribr}   r-   r   r   r   rh   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_colrL   c                 C     |  |ddS Nr   r   _kvr*   rL   r+   r+   r,   r      r   zLineCol.keyc                 C  r   )Nr       r   r   r+   r+   r,   rl      r   zLineCol.valuex0x1c                 C  s(   | j d u rd S | j | }|| || fS r4   r   )r*   rL   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,   rq     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(, rE   )r   r   r)   r+   r+   r,   rh     s   zLineCol.__repr__Nr7   r   r   r   r   r#   r$   )rL   r   r#   r   )rL   r   r   r   r   r   r#   r   r   r   r#   r   ry   )r9   r:   r;   __doc__line_col_attribr}   r-   r   r   rl   r   rq   r   rh   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.caFr=   r   clearrB   r#   r$   c                 C  s6   |d u rd S |s| j jd u rg | j _| j j| d S r4   )r   rF   extend)r*   r=   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   r>   
setdefault
isinstancelistr   r*   r   r=   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CommentTokenrT   Nr   ## )	errorr   tokensr   _yaml_clear_pre_commentsplitstriprI   rt   )	r*   r=   r   r   r   pre_comments
start_markcomrw   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   rD   rT   r+   )r   r   r   r+   r,   comment_tokenS  s   zFCommentedBase.yaml_set_comment_before_after_key.<locals>.comment_tokenNr    r   r   rT   rD   r   )r   r   r   r   r#   r   )
Zruamel.yaml.errorr   Zruamel.yaml.tokensr   rI   r   rb   r   rt   r   )r*   r   r   r   r   r   r   r   r   rw   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   rS   r   )r   r   r   r   _yaml_get_columnAttributeError_yaml_add_eol_comment)r*   r=   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_anchorrl   always_dumpc                 C  r   r4   )r   rl   r   )r*   rl   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}   rn   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*   r=   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)r=   r   r   rB   r#   r$   )r   r   r=   r   r   rB   r#   r$   r   )r=   r   r   r   r#   r$   )Nr   NN)r   r   r   r   r   r   r   r   r   r   r#   r$   r8   )r=   r   r   r   r   r   r#   r$   )r   r   r   r   r#   r$   r   )rl   r   r   rB   r#   r$   )rl   r   r#   r$   r4   )r   r   r   r   r#   r   r=   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   Z_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__rl   c                 C  sP   |t | k rt|trt|tst| | trt| | |}t| || d S r4   )rI   r   r5   r   typer   __setitem__)r*   r   rl   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   rb   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   rb   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otherrB   c                 C  r   r4   )r   __eq__r*   r  r+   r+   r,   r    r   zCommentedSeq.__eq__r=   r   r   c                 C  $   |t ur| || d S || j_d S r4   r   r   r   r=   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   rb   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   rb   	enumerater  r*   r   r   sel_idxrg   postZrow_idxZ_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   r=   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/   r&  r'  r+   r+   r,   r   (  r(  z$CommentedSeq._yaml_clear_pre_commentr   c                 C  sB   |   }||t| < | D ]}|t|| | j||d q|S N)r   )	__class__idrt   r   r   r   r*   r   resrL   r+   r+   r,   __deepcopy__0  s   zCommentedSeq.__deepcopy__c                 C  r   r4   )r   __add__r  r+   r+   r,   r0  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+   rK   r1   r+   r+   r,   rM   >  s    z%CommentedSeq.sort.<locals>.<listcomp>c                   s   g | ]
}t  |d  qS )r   r   r1  r)   r+   r,   rM   C  s    r   )r  ziprangerI   r   r-   map__iter__r   rb   r>   r   )r*   r   r  Ztmp_lstZitmr   r1   Z	old_indexr+   r)   r,   sort;  s   zCommentedSeq.sortc                 C  r	  r4   )r   rh   r)   r+   r+   r,   rh   K  r.   zCommentedSeq.__repr__r   r   r   r   r#   r$   r   )r   r   rl   r   r#   r$   r4   r#   r  )r   r   r  r   r#   r$   )r  r   r#   r$   r  r   r#   rB   r=   r   r   r   r#   r$   r   r   r8   r   r   r#   r   )r  r   r#   r   r   )r   r   r  rB   r#   r$   )r9   r:   r;   r<   r}   r|   r-   r   r  r  r
  r  r   r  r   r  r   r  r   r   r   r/  r0  r6  rh   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 sequencesr=   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/   r&  r'  r+   r+   r,   r   r  r(  z%CommentedKeySeq._yaml_get_pre_commentc                 C  r)  r/   r&  r'  r+   r+   r,   r   z  r(  z'CommentedKeySeq._yaml_clear_pre_commentNr:  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  rm   r4   r=  )r*   r?  r+   r+   r,   r-     r.   zCommentedMapView.__init__r  c                 C  s   t | j}|S r4   )rI   r>  )r*   countr+   r+   r,   r
    s   
zCommentedMapView.__len__N)r?  r   r#   r$   r8  )r9   r:   r;   r|   r-   r
  r+   r+   r+   r,   r<    s    
r<  c                   @  2   e Zd ZdZedddZddd	Zdd
dZdS )CommentedMapKeysViewr+   rd   r   r#   c                 C     t |S r4   ru   r*   rd   r+   r+   r,   _from_iterable     z#CommentedMapKeysView._from_iterabler   c                 C  
   || j v S r4   r=  r   r+   r+   r,   rx     r.   z!CommentedMapKeysView.__contains__c                 c      | j D ]}|V  qd S r4   r=  r0   r+   r+   r,   r5    s   
zCommentedMapKeysView.__iter__Nrd   r   r#   r   r   r8   r9   r:   r;   r|   classmethodrF  rx   r5  r+   r+   r+   r,   rB    s    
rB  c                   @  rA  )CommentedMapItemsViewr+   rd   r   r#   c                 C  rC  r4   rD  rE  r+   r+   r,   rF    rG  z$CommentedMapItemsView._from_iterablerq   c                 C  s2   |\}}z
| j | }W ||kS  ty   Y dS w r   )r>  KeyError)r*   rq   r   rl   rW   r+   r+   r,   rx     s   z"CommentedMapItemsView.__contains__c                 c  s&    | j  D ]
}|| j | fV  qd S r4   r>  _keysr   r+   r+   r,   r5    s   zCommentedMapItemsView.__iter__NrJ  )rq   r   r#   r   r8   rK  r+   r+   r+   r,   rM    s    
	rM  c                   @  s$   e Zd ZdZd
ddZdddZd	S )CommentedMapValuesViewr+   rl   r   r#   c                 C  s$   | j D ]}|| j | kr dS qdS )NTFr=  )r*   rl   r   r+   r+   r,   rx     s
   
z#CommentedMapValuesView.__contains__c                 c  s"    | j  D ]}| j | V  qd S r4   rO  r   r+   r+   r,   r5    s   zCommentedMapValuesView.__iter__N)rl   r   r#   r   r8   )r9   r:   r;   r|   rx   r5  r+   r+   r+   r,   rQ    s    
rQ  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   )ru   rR  rS  r   r-   r   r+   r+   r,   r-     s   zCommentedMap.__init__r=   r   r   rl   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   r=   r*   r=   r   rl   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rl   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   rb   r  )	r*   r   r   r"  rg   r#  lastr1   k1r+   r+   r,   r     s.   

zCommentedMap._yaml_get_columnc                 C  r%  r/   r&  r'  r+   r+   r,   r     r(  z"CommentedMap._yaml_get_pre_commentc                 C  r)  r/   r&  r'  r+   r+   r,   r      r(  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	TypeErrorrR  keysr   add)r*   r`  r   r1   r+   r+   r,   ra    s$   zCommentedMap.updateNrr   c              	     s   | j v r |=  fdd  D }z
t t}|j}W n ttfy*   d}Y nw |dkrL||krB| jd7  _|}t j }	n|d }t j }	n|}t j }	| |< t||	D ]	}
 	||
  q\ j 
| |dury 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+   rR  rJ   r)   r+   r,   rM     s    z'CommentedMap.insert.<locals>.<listcomp>r   r   r   Nr   )rR  rc  r   r   	merge_posr   
IndexErrorrI   r3  move_to_endrd  r   )r*   rr   r   rl   r=   rc  merge_valuerf  Zidx_minZ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   dictrI   rg  )rk  rl  rm  get_one_levelrj  r+   r,   rp  B  s   z)CommentedMap.mlget.<locals>.get_one_levelr   N)rk  r   rl  r   rm  r   r#   r   )r   r   rs   rN  rb  rg  )r*   r   r   rj  r+   ro  r,   mlget<  s   
	zCommentedMap.mlgetc                 C  sL   zt | |W S  ty%   t| tg D ]}	 ||v r#||    Y S q w r4   )r   r   rN  r   r   )r*   r   Zmergedr+   r+   r,   r   T  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  rR  rd  )r*   r   rl   r+   r+   r,   r  b  s   zCommentedMap.__setitem__c                 C  s   || j v rdS d S r   re  r   r+   r+   r,   _unmerged_containsn  s   
zCommentedMap._unmerged_containsrB   c                 C     t t| |S r4   )rB   r   rx   r   r+   r+   r,   rx   s  r  zCommentedMap.__contains__c                 C  s   z|  |W S    | Y S r4   )r   )r*   r   r   r+   r+   r,   rs   v  s   zCommentedMap.getc                 C  sD   d}d}|   D ]\}}|| |d|7 }|sd}q|d7 }|S )N{rD   z: r   r^   )rb   )r*   r.  seprL   rW   r+   r+   r,   rh   |  s   zCommentedMap.__repr__c                 c  s2    t | D ]}|| jv r|t | |fV  qd S r4   )r   r5  rR  r   r0   r+   r+   r,   non_merged_items  s   
zCommentedMap.non_merged_itemsc                 C  s   z
t | t}|j}W n ty   d}Y nw |dkr;ztt| |}||kr0| jd8  _W n	 ty:   Y nw | j	
| t| | | jD ]}|| qJd S )Nr   r   r   )r   r   rf  r   r   r   rc  indexr`   rR  discardr  rS  update_key_value)r*   r   ri  rf  rr   Zrefererr+   r+   r,   r    s(   


zCommentedMap.__delitem__c                 c      t | D ]}|V  qd S r4   r   r5  r0   r+   r+   r,   r5       zCommentedMap.__iter__c                 C  s8   z| | }W n t y   |tu r | Y S w | |= |S r4   )rN  r   )r*   r   r   resultr+   r+   r,   r    s   zCommentedMap.popc                 c  rz  r4   r{  r0   r+   r+   r,   rP    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   )rB   rn  r  r+   r+   r,   r    r  zCommentedMap.__eq__c                 C     t | S r4   )rB  r)   r+   r+   r,   rc       zCommentedMap.keysc                 C  r~  r4   )rQ  r)   r+   r+   r,   rv     r  zCommentedMap.valuesc                 c  s(    t | D ]}|t | |fV  qd S r4   )r   r5  r   r0   r+   r+   r,   r>     s   zCommentedMap._itemsc                 C  r~  r4   )rM  r)   r+   r+   r,   rb     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   r>   r   )r*   r1   rL   rW   r+   r+   r,   r     s
   


zCommentedMap.copycmc                 C  s   || j vr| j | d S d S r4   )rS  rt   )r*   r  r+   r+   r,   add_referent  s   
zCommentedMap.add_referentc                 C  sb   t | trJ t| t| |D ]}	 ||  | D ]\}}t| |r&qt| || qqd S r4   )r   r   r   r  rb   r   rx   r  )r*   rl   rW   r_  Z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/   )rR  r  r   r  r  )r*   r   rW   r+   r+   r,   ry    s   

zCommentedMap.update_key_valuer   c                 C  sD   |   }||t| < | D ]}t| | |||< q| j||d |S r*  )r+  r,  r   r   r   r-  r+   r+   r,   r/    s   zCommentedMap.__deepcopy__r7  r=   r   r   r   rl   r   r#   r$   r   r   r8   )r`  r   r   r   r#   r$   r4   )
rr   r   r   r   rl   r   r=   r   r#   r$   r   )r   r   r   r   rj  r   r#   r   )r   r   rl   r   r#   r$   )r   r   r#   rB   )r   r   r   r   r#   r   )r   r   r#   r$   r8  r9  )r  r   r#   r$   rz   r;  ))r9   r:   r;   r<   r}   r|   r-   r   r  r   r  r   r   r   ra  r  rq  r   r  rr  rx   rs   rh   rv  r  r5  r  rP  r
  r  rc  rv   r>   rb   r~   r  r   r  r  ry  r/  r+   r+   r+   r,   r     sJ    






#








!











	r   clsr   r   kwargsr#   r$   c                 O  s   t | j d)Nz objects are immutable)rb  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  rb  r   r+   r+   r,   r-     s   
zCommentedKeyMap.__init__rw  c                 C  
   | j | S r4   )r  )r*   rw  r+   r+   r,   r     r.   zCommentedKeyMap.__getitem__Iterator[Any]c                 c  s    | j  D ]}|V  qd S r4   )r  r5  r0   r+   r+   r,   r5     r|  zCommentedKeyMap.__iter__r  c                 C  r3   r4   )rI   r  r)   r+   r+   r,   r
  $  r.   zCommentedKeyMap.__len__c                 C  s   t t|  S r4   )hashtuplerb   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(rE   )r   r   r  rh   rf   r   rb   r)   r+   r+   r,   rh   *  s   

zCommentedKeyMap.__repr__Nrc  rW   c                 C  rs  r4   )r  rn  fromkeys)rc  rW   r+   r+   r,   r  /  r  zCommentedKeyMap.fromkeysr=   r   r   c                 C  r  r4   r  r   r+   r+   r,   r  3  r  z!CommentedKeyMap._yaml_add_commentc                 C  r  r  r  r   r+   r+   r,   r   9  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  r)  r/   r&  r'  r+   r+   r,   r   S  r(  z%CommentedKeyMap._yaml_get_pre_commentr7  )rw  r   r#   r   )r#   r  r8  r8   r4   )rc  r   rW   r   r#   r   r:  r   r   )r9   r:   r;   r<   r}   r|   r-   r  r  r  r   r  popitemr   ra  r   r5  r
  r  rh   rL  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   odictNrv   r   r#   r$   c                 C  s*   t  | _t|  |d ur| |O } d S d S r4   )r   r  r	   r-   )r*   rv   r+   r+   r,   r-   c  s
   
zCommentedSet.__init__r=   r   r   rl   c                 C  rT  rU  rV  rW  r+   r+   r,   r  i  rX  zCommentedSet._yaml_add_commentc                 C  rY  rZ  r  r   r+   r+   r,   r   u  r\  z"CommentedSet._yaml_add_eol_commentc                 C  s   d| j |< dS )zAdd an element.Nr  rn   r+   r+   r,   rd  y  s   zCommentedSet.addc                 C  s   | j |= dS )z8Remove an element.  Do not raise an exception if absent.Nr  rn   r+   r+   r,   rx  }  s   zCommentedSet.discardr1   c                 C  rH  r4   r  r0   r+   r+   r,   rx     r.   zCommentedSet.__contains__c                 c  rI  r4   r  r0   r+   r+   r,   r5    s   
zCommentedSet.__iter__r  c                 C  r3   r4   )rI   r  r)   r+   r+   r,   r
    r.   zCommentedSet.__len__r5   c                 C  s   d| j  dS )Nzset(rE   )r  rc  r)   r+   r+   r,   rh     r   zCommentedSet.__repr__r4   )rv   r   r#   r$   r  r   rz   r{   r8   r8  ry   )r9   r:   r;   r<   r}   r|   r-   r   r  r   rd  rx  rx   r5  r
  rh   r+   r+   r+   r,   r   `  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   Nrl   r   styler   r#   r$   c                 C  s:   || _ || _|d urt|trt|d}| | d S d S )N)suffix)rl   r  r   r5   r   r   )r*   rl   r  r   r+   r+   r,   r-     s   

zTaggedScalar.__init__c                 C  ri   r4   r[  r)   r+   r+   r,   r6     s   zTaggedScalar.__str__r   r5   startOptional[int]rF   c                 C  s   | j |||S r4   )rl   r@  )r*   r   r  rF   r+   r+   r,   r@    r  zTaggedScalar.countrr   r  c                 C  r  r4   r[  )r*   rr   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=rE   )rl   r  r   r)   r+   r+   r,   rh     s   zTaggedScalar.__repr__r]  )rl   r   r  r   r   r   r#   r$   r8   )NN)r   r5   r  r  rF   r  r#   r   )rr   r  r#   r   ry   )r9   r:   r;   r-   r6   r@  r   rh   r+   r+   r+   r,   r     s    

r   rD   .rm  namer5   ru  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   rS   rT   )r  ru  r  N)
r   rn  r   writer   r   dump_commentsr5   r   r   )rm  r  ru  r  rL   r   r+   r+   r,   r    s"   * r  )r  r   r   r   r  r   r#   r$   )
rm  r   r  r5   ru  r5   r  r   r#   r$   )J
__future__r   sysr   Zruamel.yaml.compatr   r   r   Zruamel.yaml.scalarstringr   Zruamel.yaml.anchorr   Zruamel.yaml.tagr   collections.abcr	   r
   r   r   typingr   r   r   r   r   r   __all__r   r   r   r   r"   ZcidxZC_VALUE_EOLZ
C_ELEM_EOLZ	C_KEY_EOLZ	C_KEY_PREZ
C_ELEM_PREZC_VALUE_POSTZC_ELEM_POSTZC_VALUE_PREZ
C_KEY_POSTZ	C_TAG_EOLZ
C_TAG_POSTZ	C_TAG_PREZC_ANCHOR_EOLZC_ANCHOR_POSTZC_ANCHOR_PREr   r   r   r   r<   r   r   r   r   r   r   r  r   r<  rB  rM  rQ  r   rL  r  r  r   r   r   stdoutr  r+   r+   r+   r,   <module>   sp   


p+ C|4  IN/