o
    
i/                     @   sv  d dl mZ 	 dZ
G dd deZG d	d
 d
eZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd deZG dd  d eZG d!d" d"eZG d#d$ d$eZG d%d& d&eZG d'd( d(eZG d)d* d*eZG d+d, d,eZG d-d. d.eZG d/d0 d0eZ G d1d2 d2eZ!d3S )4    )unicode_literalsF)TextAnyDictOptionalList   )
StreamMarkTc                   @   sV   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	dd Z
dddZdd ZdS )Token)
start_markend_mark_commentc                 C   s   || _ || _d S N)r   r   )selfr   r    r   L/home/ubuntu/.local/lib/python3.10/site-packages/srsly/ruamel_yaml/tokens.py__init__   s   
zToken.__init__c                    s   dd  j D }|  d fdd|D }tr+z|dt jj 7 }W n   Y z|dt j 7 }W n   Y d j	j
|S )Nc                 S   s   g | ]	}| d s|qS )_mark)endswith.0keyr   r   r   
<listcomp>   s    z"Token.__repr__.<locals>.<listcomp>z, c                    s   g | ]}d |t  |f qS )z%s=%rgetattrr   r   r   r   r      s    , line: z, comment: z{}({}))	__slots__sortjoin	SHOWLINESstrr   liner   format	__class____name__)r   
attributes	argumentsr   r   r   __repr__   s   zToken.__repr__c                 C   s"   t | ds
d d g| _|| jd< d S )Nr   r   hasattrr   )r   commentr   r   r   add_post_comment'   s   

zToken.add_post_commentc                 C   s4   t | ds
d d g| _| jd d u sJ || jd< d S )Nr   r   r)   )r   commentsr   r   r   add_pre_comments-   s   

zToken.add_pre_commentsc                 C      t | dd S Nr   r   r   r   r   r   get_comment4      zToken.get_commentc                 C   r/   r0   r   r   r   r   r   r+   8   s   zToken.commentFc                 C   s   | j }|du r	dS t|ttfrdS t| d |j }|s0|r+|d |d dd|d g}||_| S |d r8|d s@|d rH|d rHtd||f |d rR|d |d< |d r\|d |d< | S )zmove a comment from this token to target (normally next token)
        used to combine e.g. comments before a BlockEntryToken to the
        ScalarToken that follows it
        empty is a special for empty values -> comment after key
        Nr   r   r   zoverlap in comment %r %r)r+   
isinstanceStreamEndTokenDocumentStartTokendelattrr   NotImplementedError)r   targetemptyctcr   r   r   move_comment=   s&   
 zToken.move_commentc                 C   sD   | j }|du s|d du rdS |d dg}|d du r t| d |S )z split the post part of a comment, and return it
        as comment to be added. Delete second part if [None, None]
         abc:  # this goes to sequence
           # this goes to first element
           - first element
        Nr   r   r   )r+   r6   )r   r+   ret_valr   r   r   split_comment[   s   
zToken.split_commentN)F)r%   
__module____qualname__r   r   r(   r,   r.   r1   propertyr+   r<   r>   r   r   r   r   r
      s    

r
   c                   @      e Zd ZdZdZdd ZdS )DirectiveToken)namevaluez<directive>c                 C   s   t | || || _|| _d S r   )r
   r   rD   rE   )r   rD   rE   r   r   r   r   r   r   t   s   
zDirectiveToken.__init__Nr%   r?   r@   r   idr   r   r   r   r   rC   p       rC   c                   @      e Zd ZdZdZdS )r5   r   z<document start>Nr%   r?   r@   r   rG   r   r   r   r   r5   {       r5   c                   @   rI   )DocumentEndTokenr   z<document end>NrJ   r   r   r   r   rL      rK   rL   c                   @      e Zd ZdZdZdddZdS )StreamStartToken)encodingz<stream start>Nc                 C   s   t | || || _d S r   )r
   r   rO   )r   r   r   rO   r   r   r   r         
zStreamStartToken.__init__)NNNrF   r   r   r   r   rN          rN   c                   @   rI   )r4   r   z<stream end>NrJ   r   r   r   r   r4      rK   r4   c                   @   rI   )BlockSequenceStartTokenr   z<block sequence start>NrJ   r   r   r   r   rR      rK   rR   c                   @   rI   )BlockMappingStartTokenr   z<block mapping start>NrJ   r   r   r   r   rS      rK   rS   c                   @   rI   )BlockEndTokenr   z<block end>NrJ   r   r   r   r   rT      rK   rT   c                   @   rI   )FlowSequenceStartTokenr   [NrJ   r   r   r   r   rU      rK   rU   c                   @   rI   )FlowMappingStartTokenr   {NrJ   r   r   r   r   rW      rK   rW   c                   @   rI   )FlowSequenceEndTokenr   ]NrJ   r   r   r   r   rY      rK   rY   c                   @   rI   )FlowMappingEndTokenr   }NrJ   r   r   r   r   r[      rK   r[   c                   @   rI   )KeyTokenr   ?NrJ   r   r   r   r   r]      rK   r]   c                   @   rI   )
ValueTokenr   :NrJ   r   r   r   r   r_      rK   r_   c                   @   rI   )BlockEntryTokenr   -NrJ   r   r   r   r   ra      rK   ra   c                   @   rI   )FlowEntryTokenr   ,NrJ   r   r   r   r   rc      rK   rc   c                   @   rB   )
AliasTokenrE   z<alias>c                 C      t | || || _d S r   r
   r   rE   r   rE   r   r   r   r   r   r      rP   zAliasToken.__init__NrF   r   r   r   r   re      rH   re   c                   @   rB   )AnchorTokenrf   z<anchor>c                 C   rg   r   rh   ri   r   r   r   r      rP   zAnchorToken.__init__NrF   r   r   r   r   rj      rH   rj   c                   @   rB   )TagTokenrf   z<tag>c                 C   rg   r   rh   ri   r   r   r   r      rP   zTagToken.__init__NrF   r   r   r   r   rk      rH   rk   c                   @   rM   )ScalarToken)rE   plainstylez<scalar>Nc                 C   s$   t | || || _|| _|| _d S r   )r
   r   rE   rm   rn   )r   rE   rm   r   r   rn   r   r   r   r      s   
zScalarToken.__init__r   rF   r   r   r   r   rl      rQ   rl   c                   @   s<   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dS )CommentToken)rE   pre_donez	<comment>c                 C   rg   r   rh   ri   r   r   r   r      rP   zCommentToken.__init__c                 C   s   t | drt| d d S d S )Nrp   )r*   r6   r   r   r   r   reset  s   
zCommentToken.resetc                 C   sP   d | j}tr#z|dt| jj 7 }|dt| jj 7 }W n   Y d |S )Nz{!r}r   z, col: zCommentToken({}))r#   rE   r    r!   r   r"   column)r   vr   r   r   r(     s   
zCommentToken.__repr__c                 C   s4   | j |j krdS | j|jkrdS | j|jkrdS dS )NFT)r   r   rE   r   otherr   r   r   __eq__  s   zCommentToken.__eq__c                 C   s   |  | S r   )rv   rt   r   r   r   __ne__  r2   zCommentToken.__ne__N)
r%   r?   r@   r   rG   r   rq   r(   rv   rw   r   r   r   r   ro      s    
ro   N)"
__future__r   typingr   r   r   r   r   errorr	   r    objectr
   rC   r5   rL   rN   r4   rR   rS   rT   rU   rW   rY   r[   r]   r_   ra   rc   re   rj   rk   rl   ro   r   r   r   r   <module>   s2   c
	


