U
    Æ½„bJ/  ã                   @   sv  d dl mZmZ dZ	G dd„ 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-d.„ d.e
ƒZd/S )0é    )Ú_FÚnprintfTc                   @   sŠ   e Zd ZdZdd„ Zdd„ Zedd„ ƒZejd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dd„ZdS )ÚToken)Ú
start_markÚend_markÚ_commentc                 C   s   || _ || _d S ©N)r   r   )Úselfr   r   © r
   ú6/tmp/pip-unpacked-wheel-ctuyz3qg/ruamel/yaml/tokens.pyÚ__init__   s    zToken.__init__c                    s’   dd„ ˆ j D ƒ}| ¡  ‡ fdd„|D ƒ}trVz| dtˆ jjƒ ¡ W n   Y nX z| dtˆ jƒ ¡ W n   Y nX d ˆ j	j
d |¡¡S )Nc                 S   s   g | ]}|  d ¡s|‘qS )Z_mark)Úendswith©Ú.0Úkeyr
   r
   r   Ú
<listcomp>   s     
 z"Token.__repr__.<locals>.<listcomp>c                    s    g | ]}t d |tˆ |ƒd�‘qS )z{key!s}={gattr!r})r   Zgattr)r   Úgetattrr   ©r	   r
   r   r      s    zline: z	comment: z{}({})z, )Ú	__slots__ÚsortÚ
SHOW_LINESÚappendÚstrr   Úliner   ÚformatÚ	__class__Ú__name__Újoin)r	   Ú
attributesÚ	argumentsr
   r   r   Ú__repr__   s    
ÿzToken.__repr__c                 C   s   | j jS r   ©r   Úcolumnr   r
   r
   r   r"   +   s    zToken.columnc                 C   s   || j _d S r   r!   )r	   Úposr
   r
   r   r"   0   s    c                 C   s6   t | dƒsd d g| _nt| jƒdks(t‚|| jd< d S )Nr   )é   é   r   ©Úhasattrr   ÚlenÚAssertionError©r	   Úcommentr
   r
   r   Úadd_post_comment@   s    
zToken.add_post_commentc                 C   sH   t | dƒsd d g| _nt| jƒdks(t‚| jd d ks:t‚|| jd< d S )Nr   r$   é   r&   )r	   Úcommentsr
   r
   r   Úadd_pre_commentsL   s    

zToken.add_pre_commentsc                 C   sV   t | dƒsg d d g| _n*t| jƒdks*t‚| jd d krBg | jd< | jd  |¡ d S )Nr   é   r   ©r'   r   r(   r)   r   r*   r
   r
   r   Úadd_comment_preW   s    

zToken.add_comment_prec                 C   sŽ   t | dƒsd d d g| _n$t| jƒdks*t‚| jd d ks<t‚| jd d krTg | jd< | jd  d g|d t| jd ƒ  ¡ || jd |< d S )Nr   r0   r-   )r'   r   r(   r)   r+   Úextend)r	   r+   Zcomment_typer
   r
   r   Úadd_comment_eola   s    

(zToken.add_comment_eolc                 C   sV   t | dƒsd d g g| _n*t| jƒdks*t‚| jd d krBg | jd< | jd  |¡ d S )Nr   r0   r$   r1   r*   r
   r
   r   Úadd_comment_postn   s    

zToken.add_comment_postc                 C   s   t | dd ƒS )Nr   )r   r   r
   r
   r   r+   |   s    zToken.commentFc                 C   s¾   | j }|dkrdS t|ttfƒr$dS t| dƒ |j }|s`|rV|d |d dd|d g}||_| S |d rp|d s€|d r’|d r’ttd||d�ƒ‚|d r¦|d |d< |d rº|d |d< | S )úòmove 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-   úoverlap in comment {c!r} {tc!r}©ÚcÚtc)r+   Ú
isinstanceÚStreamEndTokenÚDocumentStartTokenÚdelattrr   ÚNotImplementedErrorr   )r	   ÚtargetÚemptyr9   r:   r
   r
   r   Úmove_old_comment�   s&    
 zToken.move_old_commentc                 C   sD   | j }|dks|d dkrdS |d dg}|d dk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+   r>   )r	   r+   Zret_valr
   r
   r   Úsplit_old_commentŸ   s    
zToken.split_old_commentc                 C   sº   | j }|dkrdS t|ttfƒr$dS t| dƒ |j }|s\|rR|d |d |d g}||_| S tdƒD ].}|| dk	rd|| dk	rdttd||d�ƒ‚qdtdƒD ]}|| rœ|| ||< qœ| S )	r6   Nr   r   r-   r$   r0   r7   r8   )	r+   r;   r<   r=   r>   r   Úranger?   r   )r	   r@   rA   r9   r:   Úidxr
   r
   r   Úmove_new_comment¯   s&    
zToken.move_new_commentN)F)F)r   Ú
__module__Ú__qualname__r   r   r    Úpropertyr"   Úsetterr,   r/   r2   r4   r5   r+   rB   rC   rF   r
   r
   r
   r   r      s"   




r   c                   @   s   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   rL   rM   )r	   rL   rM   r   r   r
   r
   r   r   Ø   s    zDirectiveToken.__init__N©r   rG   rH   r   Úidr   r
   r
   r
   r   rK   Ô   s   rK   c                   @   s   e Zd ZdZdZdS )r=   r
   z<document start>N©r   rG   rH   r   rO   r
   r
   r
   r   r=   ß   s   r=   c                   @   s   e Zd ZdZdZdS )ÚDocumentEndTokenr
   z<document end>NrP   r
   r
   r
   r   rQ   ä   s   rQ   c                   @   s   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   rS   )r	   r   r   rS   r
   r
   r   r   í   s    zStreamStartToken.__init__)NNNrN   r
   r
   r
   r   rR   é   s   rR   c                   @   s   e Zd ZdZdZdS )r<   r
   z<stream end>NrP   r
   r
   r
   r   r<   ó   s   r<   c                   @   s   e Zd ZdZdZdS )ÚBlockSequenceStartTokenr
   z<block sequence start>NrP   r
   r
   r
   r   rT   ø   s   rT   c                   @   s   e Zd ZdZdZdS )ÚBlockMappingStartTokenr
   z<block mapping start>NrP   r
   r
   r
   r   rU   ý   s   rU   c                   @   s   e Zd ZdZdZdS )ÚBlockEndTokenr
   z<block end>NrP   r
   r
   r
   r   rV     s   rV   c                   @   s   e Zd ZdZdZdS )ÚFlowSequenceStartTokenr
   ú[NrP   r
   r
   r
   r   rW     s   rW   c                   @   s   e Zd ZdZdZdS )ÚFlowMappingStartTokenr
   Ú{NrP   r
   r
   r
   r   rY     s   rY   c                   @   s   e Zd ZdZdZdS )ÚFlowSequenceEndTokenr
   ú]NrP   r
   r
   r
   r   r[     s   r[   c                   @   s   e Zd ZdZdZdS )ÚFlowMappingEndTokenr
   Ú}NrP   r
   r
   r
   r   r]     s   r]   c                   @   s   e Zd ZdZdZdS )ÚKeyTokenr
   ú?NrP   r
   r
   r
   r   r_     s   r_   c                   @   s   e Zd ZdZdZdS )Ú
ValueTokenr
   ú:NrP   r
   r
   r
   r   ra   $  s   ra   c                   @   s   e Zd ZdZdZdS )ÚBlockEntryTokenr
   ú-NrP   r
   r
   r
   r   rc   )  s   rc   c                   @   s   e Zd ZdZdZdS )ÚFlowEntryTokenr
   ú,NrP   r
   r
   r
   r   re   .  s   re   c                   @   s   e Zd ZdZdZdd„ ZdS )Ú
AliasToken©rM   z<alias>c                 C   s   t  | ||¡ || _d S r   ©r   r   rM   ©r	   rM   r   r   r
   r
   r   r   7  s    zAliasToken.__init__NrN   r
   r
   r
   r   rg   3  s   rg   c                   @   s   e Zd ZdZdZdd„ ZdS )ÚAnchorTokenrh   z<anchor>c                 C   s   t  | ||¡ || _d S r   ri   rj   r
   r
   r   r   A  s    zAnchorToken.__init__NrN   r
   r
   r
   r   rk   =  s   rk   c                   @   s   e Zd ZdZdZdd„ ZdS )ÚTagTokenrh   z<tag>c                 C   s   t  | ||¡ || _d S r   ri   rj   r
   r
   r   r   K  s    zTagToken.__init__NrN   r
   r
   r
   r   rl   G  s   rl   c                   @   s   e Zd ZdZdZddd„ZdS )ÚScalarToken)rM   ÚplainÚstylez<scalar>Nc                 C   s$   t  | ||¡ || _|| _|| _d S r   )r   r   rM   rn   ro   )r	   rM   rn   r   r   ro   r
   r
   r   r   U  s    zScalarToken.__init__)NrN   r
   r
   r
   r   rm   Q  s   rm   c                   @   sX   e Zd ZdZdZddd„Zedd„ ƒZejdd„ ƒZd	d
„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚCommentToken)Ú_valueÚpre_donez	<comment>Nc                 C   s2   |d kr|d k	st ‚|| _t | |d ¡ || _d S r   )r)   Z_columnr   r   rq   )r	   rM   r   r   r"   r
   r
   r   r   a  s
    zCommentToken.__init__c                 C   s   t | jtƒr| jS d | j¡S )NÚ )r;   rq   r   r   r   r
   r
   r   rM   i  s    zCommentToken.valuec                 C   s
   || _ d S r   )rq   )r	   Úvalr
   r
   r   rM   p  s    c                 C   s   t | dƒrt| dƒ d S )Nrr   )r'   r>   r   r
   r
   r   Úresetu  s    
zCommentToken.resetc                 C   sf   d  | j¡}tr\z|dt| jjƒ 7 }W n   Y nX z|dt| jjƒ 7 }W n   Y nX d  |¡S )Nz{!r}z, line: z, col: zCommentToken({}))r   rM   r   r   r   r   r"   )r	   Úvr
   r
   r   r    z  s    zCommentToken.__repr__c                 C   s4   | j |j krdS | j|jkr dS | j|jkr0dS dS )NFT)r   r   rM   ©r	   Úotherr
   r
   r   Ú__eq__ˆ  s    zCommentToken.__eq__c                 C   s   |   |¡ S r   )ry   rw   r
   r
   r   Ú__ne__’  s    zCommentToken.__ne__)NNN)r   rG   rH   r   rO   r   rI   rM   rJ   ru   r    ry   rz   r
   r
   r
   r   rp   ]  s   



rp   N) Zruamel.yaml.compatr   r   ÚTextÚAnyÚDictÚOptionalÚListZ
StreamMarkr   r   rK   r=   rQ   rR   r<   rT   rU   rV   rW   rY   r[   r]   r_   ra   rc   re   rg   rk   rl   rm   rp   r
   r
   r
   r   Ú<module>   s0    I
	


