o
    9D©ir—  ã                   @  s4  d Z ddlmZ ddlmZmZ ddlZddlZddlm	Z	m
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jƒZeG dd„ dƒƒZG dd„ dƒZeG dd„ dƒƒZd d d!œd.d)d*„Zd/d,d-„ZdS )0zTpytokens - A Fast, spec compliant Python 3.12+ tokenizer that runs on older Pythons.é    )Úannotations)Ú	dataclassÚfieldN)ÚIteratorÚNewTypec                   @  ó   e Zd ZdS )ÚTokenizeErrorN©Ú__name__Ú
__module__Ú__qualname__© r   r   úJ/var/www/Datamplify/venv/lib/python3.10/site-packages/pytokens/__init__.pyr      ó    r   c                   @  r   )ÚIndentationErrorNr	   r   r   r   r   r      r   r   c                   @  r   )ÚInconsistentUseOfTabsAndSpacesNr	   r   r   r   r   r      r   r   c                   @  r   )Ú DedentDoesNotMatchAnyOuterIndentNr	   r   r   r   r   r      r   r   c                   @  r   )ÚUnterminatedStringNr	   r   r   r   r   r      r   r   c                   @  r   )ÚUnexpectedEOFNr	   r   r   r   r   r      r   r   c                   @  r   )Ú!UnexpectedCharacterAfterBackslashNr	   r   r   r   r   r      r   r   c                   @  r   )ÚNotAnIndentNr	   r   r   r   r   r       r   r   c                   @  r   )Ú	UnderflowNr	   r   r   r   r   r   #   r   r   c                   @  sŽ   e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd$dd„Zd$dd„Zd%d!d"„Zd#S )&Ú	TokenTypeé   é   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   é   ÚreturnÚstrc                 C  s   d| j › S )Nz
TokenType.)Úname©Úselfr   r   r   Ú__repr__E   ó   zTokenType.__repr__c                 C  s$   | j dkrdS |  ¡ rdS | j  ¡ S )NÚ
identifierÚNAMEÚOP)r4   Úis_operatorÚupperr5   r   r   r   Úto_python_tokenH   s
   

zTokenType.to_python_tokenÚboolc                 C  s   t j|   k ot jk S   S ©N)r   Ú	_op_startÚ_op_endr5   r   r   r   r<   Q   s   zTokenType.is_operatorN©r2   r3   ©r2   r?   )r
   r   r   Ú
whitespaceÚindentÚdedentÚnewlineÚnlÚcommentrA   Ú	semicolonÚlparenÚrparenÚlbracketÚrbracketÚlbraceÚrbraceÚcolonÚoprB   r9   ÚnumberÚstringÚfstring_startÚfstring_middleÚfstring_endÚ	endmarkerÚ
errortokenr7   r>   r<   r   r   r   r   r   &   s:    

	r   c                   @  sP   e Zd ZU ded< ded< ded< ded< ded< ded< ded	< ddd„ZdS )ÚTokenr   ÚtypeÚintÚstart_indexÚ	end_indexÚ
start_lineÚ	start_colÚend_lineÚend_colÚsourcer3   r2   c                 C  s   | j tjks| j tjkr| jt|ƒkr| jt|ƒd krdS | j tjkr8| jt|ƒd kr8| jt|ƒd kr8dS | j tjkr@dS || j| j… S )Nr   Ú )	r\   r   rH   rI   r^   Úlenr_   rG   rY   )r6   rd   r   r   r   Úto_byte_slicea   s   zToken.to_byte_sliceN)rd   r3   r2   r3   )r
   r   r   Ú__annotations__rg   r   r   r   r   r[   U   s   
 r[   c                   @  s–   e Zd ZedeƒZedƒZedƒZedƒZedƒZ	edƒZ
e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dd„ZdS )ÚFStringStateÚStater   r   r   r   r   r   r2   ÚNonec                 C  s   t j| _g | _d S r@   )ri   Únot_fstringÚstateÚstackr5   r   r   r   Ú__init__ƒ   s   
zFStringState.__init__c                 C  s   | j  | j¡ tj| _d S r@   )rn   Úappendrm   ri   Úat_fstring_middler5   r   r   r   Úenter_fstring‡   s   zFStringState.enter_fstringc                 C  s    | j tjksJ ‚| j ¡ | _ d S r@   )rm   ri   Úat_fstring_endrn   Úpopr5   r   r   r   Úleave_fstring‹   s   zFStringState.leave_fstringc                 C  s&   | j tjkr| j | j ¡ tj| _ d S r@   )rm   ri   Úin_fstring_expr_modifierrn   rp   Úat_fstring_lbracer5   r   r   r   Ú!consume_fstring_middle_for_lbrace   s   z.FStringState.consume_fstring_middle_for_lbracec                 C  ó   t j| _d S r@   )ri   rs   rm   r5   r   r   r   Úconsume_fstring_middle_for_end•   r8   z+FStringState.consume_fstring_middle_for_endc                 C  ry   r@   )ri   Úin_fstring_exprrm   r5   r   r   r   Úconsume_lbrace˜   r8   zFStringState.consume_lbracec                 C  sV   | j tjks| j tjksJ ‚t| jƒdkr%| jd tjkr%| j ¡ | _ d S tj| _ d S )Nr   éÿÿÿÿ)rm   ri   r{   rv   rf   rn   rt   rq   r5   r   r   r   Úconsume_rbrace›   s   zFStringState.consume_rbracec                 C  s   | j tjksJ ‚tj| _ d S r@   )rm   ri   r{   rv   r5   r   r   r   Úconsume_colon©   s   zFStringState.consume_colonN©r2   rk   )r
   r   r   r   r]   rj   rl   rq   rw   r{   rv   rs   ro   rr   ru   rx   rz   r|   r~   r   r   r   r   r   ri   y   s     







ri   c                   @  s.  e Zd ZU ded< ded< dZded< dZded< d	Zded
< d	Zded< dZded< dZ	ded< dZ
ded< dZded< eedZded< dZded< eedZded< dZded< eedZded< eedZded< dZded< dZded < d!Zded"< d!Zded#< d!Zded$< dgd&d'„Zdhd(d)„Zdhd*d+„Zdid-d.„Zdjd0d1„Zdid2d3„Zdid4d5„Z d!d6œdkd9d:„Z!dld>d?„Z"dmdBdC„Z#didDdE„Z$dndFdG„Z%dndHdI„Z&dndJdK„Z'dndLdM„Z(dndNdO„Z)dndPdQ„Z*dodRdS„Z+dpdUdV„Z,dndWdX„Z-dndYdZ„Z.dnd[d\„Z/dgd]d^„Z0dgd_d`„Z1dndadb„Z2dqdcdd„Z3dndedf„Z4dS )rÚTokenIteratorr3   rd   r?   Úissue_128233_handlingr   r]   Úcurrent_indexÚ
prev_indexr   Úline_numberÚprev_line_numberÚbyte_offsetÚprev_byte_offsetTÚall_whitespace_on_this_lineÚbracket_level)Údefault_factoryz	list[int]Úbracket_level_stackNzToken | NoneÚ
prev_tokenz	list[str]Úindent_stackÚdedent_counterri   Úfstring_statezlist[tuple[str, str]]Úfstring_prefix_quote_stackz
str | NoneÚfstring_prefixÚfstring_quoteFÚweird_op_caseÚweird_op_case_nlÚweird_whitespace_caser2   c                 C  s   | j t| jƒk S r@   ©rƒ   rf   rd   r5   r   r   r   Úis_in_boundsÏ   s   zTokenIterator.is_in_boundsc                 C  s   |   ¡ sJ ‚| j| j S r@   )r˜   rd   rƒ   r5   r   r   r   ÚpeekÒ   s   zTokenIterator.peekc                 C  s(   | j d t| jƒk sJ ‚| j| j d  S ©Nr   r—   r5   r   r   r   Ú	peek_nextÖ   s   zTokenIterator.peek_nextrk   c                 C  s    |  j d7  _ |  jd7  _d S rš   ©rƒ   r‡   r5   r   r   r   ÚadvanceÚ   ó   zTokenIterator.advanceÚcountc                 C  s    |  j |7  _ |  j|7  _d S r@   rœ   )r6   rŸ   r   r   r   Ú
advance_byÞ   rž   zTokenIterator.advance_byc                 C  s   |  j d7  _ d| _d| _d S )Nr   r   T)r…   r‡   r‰   r5   r   r   r   Ú	next_lineâ   s   
zTokenIterator.next_linec                 C  s6   | j | j dkr|  jd7  _|  ¡  d S |  ¡  d S )NÚ
r   )rd   rƒ   r¡   r   r5   r   r   r   Úadvance_check_newlineç   s   z#TokenIterator.advance_check_newline©Úignore_caseÚoptionsr¥   c                G  sd   |D ]-}| j t|ƒ t| jƒkrq| j| j | j t|ƒ … }|r(| ¡ }| ¡ }||kr/ dS qdS )NTF)rƒ   rf   rd   Úlower)r6   r¥   r¦   ÚoptionÚsnippetr   r   r   Úmatchî   s   ÿzTokenIterator.matchÚtok_typer   r[   c              	   C  sØ   | j r| ¡ s|tjtjfvrtjn|}| j r*| j| j| j… }|dkr'd| _	d| _ t
|| j| j| j| j| j| jd}|tjksE|tjkrJ|  ¡  n|tjksT|tjkrUnd| _	|| _| j| _| j| _| j| _d| _ |S )Nz F)r\   r^   r_   r`   ra   rb   rc   )r”   r<   r   rT   rU   rS   rd   r„   rƒ   r‰   r[   r†   rˆ   r…   r‡   rH   rI   r¡   rE   rJ   r   )r6   r«   Ú
token_typeÚ	token_strÚtokenr   r   r   Ú
make_tokenü   sB   ÿþýû
ù	
zTokenIterator.make_tokenÚprefixÚquotec                 C  s<   | j d ur| jd usJ ‚| j | j | jf¡ || _ || _d S r@   )r’   r“   r‘   rp   )r6   r°   r±   r   r   r   Úpush_fstring_prefix_quote+  s   

ÿ
z'TokenIterator.push_fstring_prefix_quotec                 C  sD   | j d u r| jd u sJ ‚t‚t| jƒdkrdn| j ¡ \| _ | _d S )Nr   )NN)r’   r“   r   rf   r‘   rt   r5   r   r   r   Úpop_fstring_quote5  s   
ÿýzTokenIterator.pop_fstring_quotec                 C  sl   |   ¡ r| j| j dkr|  ¡  |  ¡  | js&| jdks&| jjtj	ks&| j
r)tjntj}|  |¡}d| _|S )Núr   F)r˜   rd   rƒ   r   r•   rŠ   r   rm   ri   r{   r‰   r   rI   rH   r¯   )r6   r¬   r®   r   r   r   rH   @  s   þ
ÿüø

zTokenIterator.newlinec                 C  s>   | j dkrt‚t| jƒdkr| j ¡ }|  tj¡S |  tj¡S )Nr   )	rŠ   r   rf   rŽ   rt   r¯   r   rG   rY   )r6   Ú_r   r   r   rY   R  s   

zTokenIterator.endmarkerc                 C  sH  d}| j | j  ¡ rd}|  ¡  |  ¡ r<| j | j  ¡ s$| j | j dkr<|  ¡  |  ¡ r<| j | j  ¡ s$| j | j dks$|  ¡ rL| j | j dkrL|  ¡  |  ¡ rŒ| j | j  ¡ sj| j | j dkrŒ| j | jd   ¡ rŒ|  ¡  |  ¡ rŒ| j | j  ¡ sj| j | j dkrŒ| j | jd   ¡ sj| jd t| j ƒk rì|s¢| j | jd   ¡ rì| j | j dks²| j | j dkrì| j | jd   ¡ sä| jd t| j ƒk rì| j | jd  d	ksÚ| j | jd  d
krì| j | jd   ¡ rì|  ¡  |  ¡  |  ¡ r:| j | j  ¡ s|s| j | jd   ¡ r:| j | j dkr:|  ¡  |  ¡ r:| j | j  ¡ s|s1| j | jd   ¡ r:| j | j dks|  ¡ rc|sM| j | jd   ¡ rc| j | j dks_| j | j dkrc|  ¡  | j| j dkrž| j | jd  dkrž| jd t| j ƒkr˜| j | j| jd … dkr˜|  ¡  |  ¡  |  tj	¡S |  tj
¡S )NFTrµ   Ú.r   ÚeÚEr   ú+ú-ÚjÚJz..)rd   rƒ   Úisdigitr   r˜   rf   r„   r¯   r   rS   rT   )r6   Údigit_before_decimalr   r   r   Údecimal\  sš   ÿüÿÿÿùÿÿÿÿýþ
ÿýý
ùÿýý
ÿÿzTokenIterator.decimalc                 C  s\  |   ¡  |   ¡  |  ¡ rD| j| j dks$| j| j dks$| j| j dkrD|   ¡  |  ¡ rD| j| j dks$| j| j dks$| j| j dks$|  ¡ rl| j| j dksX| j| j dkrl|   ¡  |  ¡ rl| j| j dkrl|   ¡  |  ¡ r¨| j| j dksˆ| j| j dksˆ| j| j dkr¨|   ¡  |  ¡ r¨| j| j dksˆ| j| j dksˆ| j| j dksˆ|  tj¡S )NÚ0Ú1rµ   r·   r¸   rº   ©r   r˜   rd   rƒ   r¯   r   rT   r5   r   r   r   Úbinary¯  ó6   ûûzTokenIterator.binaryc                 C  s\  |   ¡  |   ¡  |  ¡ rD| j| j dkr| j| j dks$| j| j dkrD|   ¡  |  ¡ rD| j| j dkr<| j| j dks$| j| j dks$|  ¡ rl| j| j dksX| j| j dkrl|   ¡  |  ¡ rl| j| j dkrl|   ¡  |  ¡ r¨| j| j dkr€| j| j dksˆ| j| j dkr¨|   ¡  |  ¡ r¨| j| j dkr | j| j dksˆ| j| j dksˆ|  tj¡S )NrÀ   Ú7rµ   r·   r¸   rº   rÂ   r5   r   r   r   ÚoctalÉ  rÄ   zTokenIterator.octalc                 C  s$  |   ¡  |   ¡  |  ¡ r6| j| j tjv s| j| j dkr6|   ¡  |  ¡ r6| j| j tjv s| j| j dks|  ¡ r^| j| j dksJ| j| j dkr^|   ¡  |  ¡ r^| j| j dkr^|   ¡  |  ¡ rŒ| j| j tjv ss| j| j dkrŒ|   ¡  |  ¡ rŒ| j| j tjv ss| j| j dkss|  tj¡S )Nrµ   r·   r¸   rº   )	r   r˜   rd   rƒ   rU   Ú	hexdigitsr¯   r   rT   r5   r   r   r   Úhexadecimalã  s.   üüzTokenIterator.hexadecimalc                 C  sD   t dƒD ]}| j| j|  }|dks|dkr| j|   S qtdƒ‚)Nr   ú"ú'zQuote not found somehow)Úrangerd   rƒ   ÚAssertionError)r6   ÚoffsetÚcharr   r   r   Úfind_opening_quoteû  s   ÿz TokenIterator.find_opening_quoteútuple[str, str]c                 C  s„   |   ¡ }| j| j|… }| j| }|d t| jƒkr5| j|d  |kr5| j|d  |kr5| j||d … n| j||d … }||fS )Nr   r   r   )rÏ   rd   rƒ   rf   )r6   Úquote_indexr°   Ú
quote_charr±   r   r   r   Ústring_prefix_and_quotes  s   
üù	z&TokenIterator.string_prefix_and_quotesc                 C  s~  | j jtjtjfv r;|  ¡ \}}|  ||¡ tt|ƒƒD ]}|  	¡  qtt|ƒƒD ]}|  	¡  q)| j  
¡  |  tj¡S | j jtjkr| jd usJJ ‚t| jƒdk}| j}|  ¡ rÿ| j| j }|dkrf|rft‚|dkr¯|  	¡  | jd usuJ ‚d| j ¡ vrš| jd t| jƒk rš|  ¡ dkrš|  ¡ dkrš|  	¡  |  	¡  |  ¡ r®|  ¡ dks®|  ¡ dks®|  ¡  qT|dkrÖ|  ¡ dkrÂ|  	¡  |  	¡  qT| j  ¡  | j|krÐ|  ¡ S |  tj¡S | jd usÝJ ‚|  | j¡r÷| j  ¡  | j|krñ|  ¡ S |  tj¡S |  ¡  |  ¡ sXt‚| j jtjkr"|  	¡  | j  !| j"¡ d| _"| j  #¡  |  tj$¡S | j jtj%krP| jd us2J ‚tt| jƒƒD ]}|  	¡  q9|  &¡  | j  '¡  |  tj(¡S | j jtj)kr»| j}|  ¡ r¹| j| j }| jd usnJ ‚|dksx|dkr t| jƒdkr |dkr‹| j  ¡  ntj| j _| j|krš|  ¡ S |  tj¡S |dkr°tj| j _|  tj¡S |  ¡  |  ¡ s`t‚t*d	ƒ‚)
Nr   r¢   ú\ÚrÚNÚ{Ú}r   zUnhandled f-string state)+r   rm   ri   rl   r{   rÓ   r²   rË   rf   r   rr   r¯   r   rV   rq   r“   rƒ   r˜   rd   r   r’   r§   r™   r›   r£   rx   ÚfstringrW   rª   rz   r   rw   rŒ   rp   rŠ   r|   rP   rs   r³   ru   rX   rv   rÌ   )r6   r°   r±   rµ   Úis_single_quoter^   rÎ   r   r   r   rÙ     s¦   þ






Ì6


$




ízTokenIterator.fstringc                 C  s  |   ¡ \}}|r| jr|  ¡  | jtjdS |D ]}|dks"|dkr(|  ¡   S qtt|ƒƒD ]}|  ¡  q/tt|ƒƒD ]}|  ¡  q<t|ƒdk}|  	¡ rˆ| j
| j }|dkr[|r[t‚|dkrh|  ¡  |  ¡  qI|  |¡r€tt|ƒƒD ]}|  ¡  qs|  tj¡S |  ¡  |  	¡ sMt‚)N)r«   ÚfÚFr   r¢   rÔ   )rÓ   r”   r   r¯   r   rS   rÙ   rË   rf   r˜   rd   rƒ   r   r£   rª   rU   r   )r6   r°   r±   rÎ   rµ   rÚ   r   r   r   rU   ‰  s8   
ÿ



îzTokenIterator.stringc           
      C  sÒ  | j }d}d}|  ¡ r+| j| j  }|  ¡ r&|  ¡  d}|dks#|dkr%d}nn|  ¡ s|  ¡ s<| j |kr6t‚|  tj¡S |rI|sId| _	|  tj¡S |  
¡ }|dksY|dksY|  ¡ r_|  tj¡S | j|| j … }t| jƒdkrpdn| jd	 }t|ƒt|ƒkr‘t|ƒdkr…t‚||kr‹t‚|  tj¡S t|ƒt|ƒkr±t|ƒdkr¥||vr¥t‚| j |¡ |  tj¡S t| jƒdkrã| jd	 }t|ƒt|ƒk rÇt‚t|ƒt|ƒkrÐn| j ¡ }	|  jd
7  _t| jƒdks¸|  tj¡S )NFTú ú	ú#rÔ   r   re   r}   r   )rƒ   r˜   rd   Úis_whitespacer   r   r¯   r   rE   r–   r™   Ú
is_newlinerf   rŽ   r   rp   rF   r   rt   r   )
r6   r^   Úsaw_whitespaceÚsaw_tab_or_spacerÎ   Ú	next_charÚ
new_indentÚcurrent_indentÚ
top_indentrµ   r   r   r   rF   °  s\   €ø



÷zTokenIterator.indentc                 C  s@   |   ¡ rdS | j| j }|dkp|dkp|dkp|dkp|dkS )NFrÝ   r´   rÞ   úú)rá   rd   rƒ   )r6   rÎ   r   r   r   rà   ï  s   ÿþýûzTokenIterator.is_whitespacec                 C  sT   | j | j dkr
dS | j | j dkr(| jd t| j ƒk r(| j | jd  dkr(dS dS )Nr¢   Tr´   r   F)rd   rƒ   rf   r5   r   r   r   rá   ü  s   zTokenIterator.is_newlinec                 C  s€   | j r|  ¡  |  tj¡S | j| jd … }t|ƒD ]\}}t|ƒdk r0t	 
|¡s0|dkr0|} nqt|ƒ}|  |¡ |  tj¡S )Né€   rµ   )r”   r   r¯   r   r9   rd   rƒ   Ú	enumerateÚordr3   Úisalnumrf   r    )r6   Ú	remainingÚindexrÎ   Úlengthr   r   r   r4     s   €
zTokenIterator.namec                 C  s   | S r@   r   r5   r   r   r   Ú__iter__  s   zTokenIterator.__iter__c                 C  sh  | j d ur| j jtjkrt‚| jt| jƒkr3| j d u r|  ¡ S | j jtjtj	tj
hv r/|  ¡ S |  ¡ S | jt| jƒkr?|  ¡ S | jjtjkrQ| jjtjkrQ|  ¡ S | j| j }| js†|dkr†|  ¡  |  ¡ sj|  ¡ S | j| j }|dkr†d| _| j d ur†| j jtjkr†d| _|dkr½| jr—|  ¡  |  tj¡S |  ¡ r·|  ¡ s·| js«| j| j dkr«n|  ¡  |  ¡ r·|  ¡ rŸ|  tj¡S | jdkrÏ|  jd8  _|  tj
¡S |  ¡ r×|  ¡ S |dkr:|  ¡  |  ¡ sæt‚d}d}|  ¡ r/|  ¡ rú|  ¡  d}n1|s*|  ¡ r*| j| j }|dkr|  ¡  |  ¡  d}d}| jr"|  ¡  n|  ¡  d| _nn|  ¡ sï|s4t‚|  tj¡S | j dksD| j!ro| j"dkro| jjtjkrod| _!z|  #¡ }W n t$yg   d }Y nw |d uro|S |  ¡ r’|  ¡ rŒ|  ¡ rŒ|  ¡  |  ¡ rŒ|  ¡ s~|  tj¡S |d	v r¬|  ¡  |  %¡ d
kr¦|  ¡  |  tj&¡S |dkrâ|  ¡  |  %¡ dkrÆ|  ¡  |  tj&¡S |  %¡ dkrÑ|  ¡  |  %¡ d
krÜ|  ¡  |  tj&¡S |dkr|  ¡  |  %¡ dkrö|  ¡  |  %¡ d
kr|  ¡  |  tj&¡S |dkr,|  ¡  |  %¡ dkr|  ¡  |  %¡ d
kr&|  ¡  |  tj&¡S |dkrQ|  ¡  |  %¡ dkr@|  ¡  |  %¡ d
krK|  ¡  |  tj&¡S |dkr||  ¡  |  %¡ dkrk|  ¡  |  tj&¡S |  %¡ d
krv|  ¡  |  tj&¡S |dv r‹|  ¡  |  tj&¡S |dkrš|  ¡  |  tj&¡S |dkr°|  ¡  |  j"d7  _"|  tj'¡S |dkrÏ|  ¡  |  j"d8  _"| j"dk rÉd| _"|  tj(¡S |dkrå|  ¡  |  j"d7  _"|  tj)¡S |dkr|  ¡  |  j"d8  _"| j"dk rþd| _"|  tj*¡S |dkr|  ¡  |  j"d7  _"|  tj+¡S |dkrS|  ¡  | j"dkr=| jjtjkr=| j ,¡  | j- .¡ | _"n|  j"d8  _"| j"dk rMd| _"|  tj/¡S |dkr†|  ¡  | j"dkru| jjtjkrutj0| j_|  tj&¡S |  %¡ d
kr€|  ¡  |  tj&¡S |dv ræ| jd t| jƒkr¨| j| j| jd … dv r¨|  1¡ S | jd t| jƒkrÅ| j| j| jd … dv rÅ|  2¡ S | jd t| jƒkrâ| j| j| jd … dv râ|  3¡ S |  4¡ S | jd t| jƒkrø|  5dd¡s,| jd t| jƒkr| j5d d!d"d#d$d%d&d'dd(	s,| jd) t| jƒkr0| j5d*d+d,d-d.d/d0d1dd(	r0|  6¡ S |  7¡ S )2Nr´   r¢   Trß   r   r   rÔ   F)	r¹   ú&ú|ú^ú@ú%ú=ú!ú~r÷   ú<ú>ú/Ú*rº   )ú,ú;ú`ú(ú)ú[ú]r×   rØ   ú:z.0123456789r   )Ú0bÚ0B)Ú0oÚ0O)Ú0xÚ0XrÉ   rÊ   zb"zb'zr"zr'zf"zf'zu"zu'r¤   r   zbr"zbr'zrb"zrb'zfr"zfr'zrf"zrf')8r   r\   r   rY   ÚStopIterationrƒ   rf   rd   rH   rI   rG   r   rm   ri   rl   r{   rÙ   r‚   r   r˜   r”   rJ   r•   r¯   rá   r   r   rà   r‰   r¡   r   rE   r‡   r–   rŠ   rF   r   r™   rS   rL   rM   rN   rO   rP   r~   rŒ   rt   rQ   rv   rÃ   rÆ   rÈ   r¿   rª   rU   r4   )r6   Úcurrent_charÚfound_whitespaceÚseen_newlinerÎ   Úindent_tokenr   r   r   Ú__next__  sÌ  
ý
ÿú



éÿ

ÿ

















ÿþÿþÿþ$÷ÿ÷ÿzTokenIterator.__next__rD   rC   r€   )rŸ   r]   r2   rk   )r¦   r3   r¥   r?   r2   r?   )r«   r   r2   r[   )r°   r3   r±   r3   r2   rk   )r2   r[   )r2   r]   )r2   rÐ   )r2   r   )5r
   r   r   rh   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r   ÚlistrŒ   r   rŽ   r   ri   r   r‘   r’   r“   r”   r•   r–   r˜   r™   r›   r   r    r¡   r£   rª   r¯   r²   r³   rH   rY   r¿   rÃ   rÆ   rÈ   rÏ   rÓ   rÙ   rU   rF   rà   rá   r4   rñ   r  r   r   r   r   r   ®   sb   
 








/






S



	

t
'
?


r   T)Úfstring_tokensr‚   rd   r3   r  r?   r‚   r2   úIterator[Token]c                C  s    t | |d}|rt|ƒS t|ƒS )N)r‚   )r   ÚiterÚmerge_fstring_tokens)rd   r  r‚   Útoken_iteratorr   r   r   ÚtokenizeN  s   r  r  c              
   c  sœ    | D ]H}|j tjkr|V  q|}|}d}d}| D ]}|j tjkr%|d7 }|j tjkr/|d7 }||kr7|} nqttj|j|j|j|j	|j
|jdV  qdS )zETurn post-Python-3.12 FSTRING-* tokens back to a single STRING token.r   r   )r\   r^   r`   ra   r_   rb   rc   N)r\   r   rV   rX   r[   rU   r^   r`   ra   r_   rb   rc   )r  r®   Ústart_tokenÚ	end_tokenÚfstring_startsÚfstring_endsr   r   r   r  [  s8   €þ
ùìr  )rd   r3   r  r?   r‚   r?   r2   r  )r  r   r2   r  )Ú__doc__Ú
__future__r   Údataclassesr   r   ÚenumrU   Útypingr   r   Ú	Exceptionr   r   r   r   r   r   r   rÌ   r   r   ÚIntEnumr   r[   ri   r   r  r  r   r   r   r   Ú<module>   s@    /#5       )ü