o
    Df                     @   s   d dl Z d dlmZ d dlmZmZ eG dd dZG dd deZG dd	 d	eZG d
d de	Z
dedee fddZdS )    N)	dataclass)IteratorTypec                   @   s$   e Zd ZU eed< defddZdS )Tokenvaluereturnc                 C   s   d | jj| jS )Nz{}("{}"))format	__class____name__r   )self r   [/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/cutadapt/tokenizer.py__repr__
   s   zToken.__repr__N)r
   
__module____qualname__str__annotations__r   r   r   r   r   r      s   
 r   c                   @      e Zd ZdS )StringTokenNr
   r   r   r   r   r   r   r          r   c                   @   r   )
BraceTokenNr   r   r   r   r   r      r   r   c                   @   r   )TokenizeErrorNr   r   r   r   r   r      r   r   sr   c                 c   sv    t d| D ]1}|dkrq|dr!|dr!|dd }t}nt}d|v r+tdd|v r3td||V  qd	S )
a  
    >>> list(tokenize_braces(""))
    []
    >>> list(tokenize_braces("before {braced} after"))
    [StringToken("before "), BraceToken("braced"), StringToken(" after")]
    >>> list(tokenize_braces("ab{cd}{ef}"))
    [StringToken("ab"), BraceToken("cd"), BraceToken("ef")]
    z	({[^}]*}) {}   zUnexpected '{' encounteredzUnexpected '}' encounteredN)resplit
startswithendswithr   r   r   )r   r   Ztoken_classr   r   r   tokenize_braces   s   	r#   )r   dataclassesr   typingr   r   r   r   r   	Exceptionr   r   r#   r   r   r   r   <module>   s    