
    niE                       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e          Z G d d	e          Z G d
 de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d de          Z G d dej                  Ze G d d                      Z G d d          Ze G d d                      Zd d d!d,d)Zd-d+ZdS ).zTpytokens - A Fast, spec compliant Python 3.12+ tokenizer that runs on older Pythons.    )annotations)	dataclassfieldN)ClassVarIteratorc                      e Zd ZdS )TokenizeErrorN__name__
__module____qualname__     N/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/pytokens/__init__.pyr	   r	                r   r	   c                      e Zd ZdS )IndentationErrorNr
   r   r   r   r   r      r   r   r   c                      e Zd ZdS )InconsistentUseOfTabsAndSpacesNr
   r   r   r   r   r      r   r   r   c                      e Zd ZdS ) DedentDoesNotMatchAnyOuterIndentNr
   r   r   r   r   r      r   r   r   c                      e Zd ZdS )UnterminatedStringNr
   r   r   r   r   r      r   r   r   c                      e Zd ZdS )UnexpectedEOFNr
   r   r   r   r   r      r   r   r   c                      e Zd ZdS )!UnexpectedCharacterAfterBackslashNr
   r   r   r   r   r      r   r   r   c                      e Zd ZdS )NotAnIndentNr
   r   r   r   r   r       r   r   r   c                      e Zd ZdS )	UnderflowNr
   r   r   r   r!   r!   #   r   r   r!   c                      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ZdZdZd$dZd$d Z d%d"Z!d#S )&	TokenType                        	   
                                                         returnstrc                    d| j          S )Nz
TokenType.)nameselfs    r   __repr__zTokenType.__repr__I   s    'DI'''r   c                z    | j         dk    rdS |                                 rdS | j                                         S )N
identifierNAMEOP)rC   is_operatorupperrD   s    r   to_python_tokenzTokenType.to_python_tokenL   s?    9$$6 	4y   r   boolc                J    t           j        | cxk     ot           j        k     nc S N)r#   	_op_start_op_endrD   s    r   rK   zTokenType.is_operatorU   s*    "T====I,======r   Nr@   rA   r@   rN   )"r   r   r   
whitespaceindentdedentnewlinenlcommentrQ   	semicolonlparenrparenlbracketrbracketlbracerbracecolonoprR   rH   numberstringfstring_startfstring_middlefstring_endtstring_starttstring_middletstring_end	endmarker
errortokenrF   rM   rK   r   r   r   r#   r#   &   s        JFFG	
BGIIFFHHFFE	BGJFFMNKMNKIJ( ( ( (! ! ! !> > > > > >r   r#   c                  ^    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ZdS )Tokenr#   typeintstart_index	end_index
start_line	start_colend_lineend_colsourcerA   r@   c                   | j         t          j        k    s| j         t          j        k    r5| j        t          |          k    r| j        t          |          dz   k    rdS | j         t          j        k    r8| j        t          |          dz   k    r| j        t          |          dz   k    rdS | j         t          j        k    rdS || j        | j                 S )Nr$    )	rp   r#   rX   rY   rr   lenrs   rW   rl   )rE   rx   s     r   to_byte_slicezToken.to_byte_slicee   s     Y)+++tyIL/H/H CKK//#f++/112 I))) CKK!O33#f++/112 9	+++2d&788r   N)rx   rA   r@   rA   )r   r   r   __annotations__r|   r   r   r   ro   ro   Y   sl         OOONNNOOONNNMMMLLL9 9 9 9 9 9r   ro   c                      e Zd ZU 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dZ
ddZddZddZddZddZddZddZdS )FStringStater$   zClassVar[int]not_fstringr%   at_fstring_middler&   at_fstring_lbracer'   in_fstring_exprr(   in_fstring_expr_modifierr)   at_fstring_endr@   Nonec                6    t           j        | _        g | _        d S rP   )r   r   statestackrD   s    r   __init__zFStringState.__init__   s    !-
 "


r   c                f    | j                             | j                   t          j        | _        d S rP   )r   appendr   r   r   rD   s    r   enter_fstringzFStringState.enter_fstring   s(    
$*%%%!3


r   c                p    | j         t          j        k    sJ | j                                        | _         d S rP   )r   r   r   r   poprD   s    r   leave_fstringzFStringState.leave_fstring   s/    z\88888Z^^%%


r   c                    | j         t          j        k    r| j                            | j                    t          j        | _         d S rP   )r   r   r   r   r   r   rD   s    r   !consume_fstring_middle_for_lbracez.FStringState.consume_fstring_middle_for_lbrace   s8    :>>>Jdj)))!3


r   c                (    t           j        | _        d S rP   )r   r   r   rD   s    r   consume_fstring_middle_for_endz+FStringState.consume_fstring_middle_for_end   s    !0


r   c                (    t           j        | _        d S rP   )r   r   r   rD   s    r   consume_lbracezFStringState.consume_lbrace   s    !1


r   c                &   | 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   )r   r   r   r   r{   r   r   r   rD   s    r   consume_rbracezFStringState.consume_rbrace   sv    J,666z\BBBBB 
OOa
2,"GGG))DJJJ%7DJJJr   c                V    | j         t          j        k    sJ t          j        | _         d S rP   )r   r   r   r   rD   s    r   consume_colonzFStringState.consume_colon   s&    z\99999!:


r   N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        !"K""""'((((('(((((%&O&&&&./////$%N%%%%# # # #4 4 4 4& & & &4 4 4 41 1 1 12 2 2 28 8 8 8; ; ; ; ; ;r   r   c                  \   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          Zded<   dZded<    ee          Zded<   dZded<    ee          Zded<    ee          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$<   dLd&ZdMd'ZdMd(ZdNd*ZdOd,ZdNd-ZdNd.Z d!d/dPd2Z!dQd6Z"dRd9Z#dNd:Z$dSd;Z%dSd<Z&dSd=Z'dSd>Z(dSd?Z)dSd@Z*dTdAZ+dUdCZ,dSdDZ-dSdEZ.dSdFZ/dLdGZ0dLdHZ1dSdIZ2dVdJZ3dSdKZ4dS )WTokenIteratorrA   rx   rN   issue_128233_handlingr   rq   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_counterr   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_caser@   c                <    | j         t          | j                  k     S rP   r   r{   rx   rD   s    r   is_in_boundszTokenIterator.is_in_bounds   s    !C$4$444r   c                R    |                                  sJ | j        | j                 S rP   )r   rx   r   rD   s    r   peekzTokenIterator.peek   s*      """""{4-..r   c                p    | j         dz   t          | j                  k     sJ | j        | j         dz            S Nr$   r   rD   s    r   	peek_nextzTokenIterator.peek_next   s:    !A%DK(8(88888{4-122r   r   c                F    | xj         dz  c_         | xj        dz  c_        d S r   r   r   rD   s    r   advancezTokenIterator.advance   s0    aAr   countc                F    | xj         |z  c_         | xj        |z  c_        d S rP   r   )rE   r   s     r   
advance_byzTokenIterator.advance_by   s0    e#E!r   c                B    | xj         dz  c_         d| _        d| _        d S )Nr$   r   T)r   r   r   rD   s    r   	next_linezTokenIterator.next_line   s,    A+/(((r   c                    | j         | j                 dk    r&| xj        dz  c_        |                                  d S |                                  d S )N
r$   )rx   r   r   r   rD   s    r   advance_check_newlinez#TokenIterator.advance_check_newline   sR    ;t)*d22!#NNLLNNNNNr   ignore_caseoptionsr   c               $   |D ]}| j         t          |          z   t          | j                  k    r0| j        | j         | j         t          |          z            }|r(|                                }|                                }||k    r dS dS )NTF)r   r{   rx   lower)rE   r   r   optionsnippets        r   matchzTokenIterator.match   s     		 		F!CKK/#dk2B2BBBk$"4t7ICPVKK7W"WXG *!--//  tt ! ur   tok_typer#   ro   c           	     F   | j         _d| j         v rV|t          j        k    rt          j        }n9|t          j        k    rt          j        }n|t          j        k    rt          j        }| 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                  }|t          j        k    s|t          j        k    r|                                  n(|t          j        k    s|t          j        k    rnd| _        || _        | j        | _        | j        | _        | j        | _        d| _        |S )Ntz F)rp   rr   rs   rt   ru   rv   rw   )r   r#   rf   ri   rg   rj   rh   rk   r   rK   rd   re   rc   rx   r   r   r   ro   r   r   r   r   rX   rY   r   rU   rZ   r   )rE   r   
token_type	token_strtokens        r   
make_tokenzTokenIterator.make_token   s   *sd6I/I/I9222$2Y555$3Y222$0 !((** !193C DDD LL  	  	' DOd6H$HIIE!!380!&D(,+%$
 
 
 y(((H	,D,DNN---Y=N1N1N/4D,, $ 0 $ 0"r   prefixquotec                    | j         /| j        J | j                            | j         | j        f           || _         || _        d S rP   )r   r   r   r   )rE   r   r   s      r   push_fstring_prefix_quotez'TokenIterator.push_fstring_prefix_quote5  s[    *%111+22$d&89   %"r   c                    | j         | j        J t          t          | j                  dk    rdn| j                                        \  | _         | _        d S )Nr   )NN)r   r   r!   r{   r   r   rD   s    r   pop_fstring_quotezTokenIterator.pop_fstring_quote?  se    &%---O 4233q88 L04466 	0T///r   c                x   |                                  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   rx   r   r   r   r   r   r   r   r   r   r#   rY   rX   r   )rE   r   r   s      r   rX   zTokenIterator.newlineJ  s     	4;t/A#Bd#J#JLLNNN %# %))%+|/KKK3 L	 LL " 	 
++ %r   c                   | j         dk    rt          t          | j                  dk    r8| j                                        }|                     t          j                  S |                     t          j                  S )Nr   )	r   r   r{   r   r   r   r#   rW   rl   )rE   _s     r   rl   zTokenIterator.endmarker\  sj    ""t !!A%%!%%''A??9#3444y2333r   c                p   d}| j         | j                                                 rd}|                                  |                                 r| j         | j                                                 s| j         | j                 dk    rb|                                  |                                 r:| j         | j                                                 L| j         | j                 dk    b|                                 r*| j         | j                 dk    r|                                  |                                 r| j         | j                                                 s=| j         | j                 dk    r| j         | j        dz
                                           r|                                  |                                 ra| j         | j                                                 L| j         | j                 dk    r'| j         | j        dz
                                           | j        dz   t          | j                   k     r|s'| j         | j        dz
                                           r| j         | j                 dk    s| j         | j                 dk    r| j         | j        dz                                            sy| j        dz   t          | j                   k     r| j         | j        dz            d	k    s| j         | j        dz            d
k    rO| j         | j        dz                                            r(|                                  |                                  |                                 r| j         | j                                                 s?|s'| j         | j        dz
                                           r| j         | j                 dk    r|                                  |                                 rc| j         | j                                                 L|s'| j         | j        dz
                                           r| j         | j                 dk    |                                 ri|s'| j         | j        dz
                                           r@| j         | j                 dk    s| j         | j                 dk    r|                                  | j        | j        z
  dk    r| j         | j        dz
           dk    r| j        dz   t          | j                   k    rH| j         | j        | j        dz            dk    r(|                                  |                                  |                     t          j	                  S |                     t          j
                  S )NFTr   .r$   eEr%   +-jJz..)rx   r   isdigitr   r   r{   r   r   r#   rc   rd   )rE   digit_before_decimals     r   decimalzTokenIterator.decimalf  s[   $;t)*2244 	#' LLNNN !! 	K*+3355	{4-.#55LLNNN	 !! 	K*+3355	{4-.#55  	4;t/A#Bc#I#ILLNNN!! 	K*+3355	 D./366K 2Q 67??AA 7 LLNNN !! 	K*+3355	 D./366K 2Q 67??AA 7 !C$4$444! 5%)[1Ca1G%H%P%P%R%R 5 D./366;t12c99 D.23;;== :
 &*S-=-===D$6$:;sBB;t'9A'=>#EED$6$:;CCEE F LLNNNLLNNN !! 	K*+3355	 &	 *.T5G!5K)L)T)T)V)V	 K 23s:: LLNNN !! 	K*+3355	 &	 *.T5G!5K)L)T)T)V)V	 K 23s::  	!	%)[1Ca1G%H%P%P%R%R	 D./366;t12c99 LLNNN 0A55D.23s:: "Q&#dk*:*:::K 2T5G!5K KLPTTT??9<000y/000r   c                   |                                   |                                   |                                 r| j        | j                 dk    s,| j        | j                 dk    s| j        | j                 dk    rj|                                   |                                 rB| j        | j                 dk    >| j        | j                 dk    T| j        | j                 dk    j|                                 r~| j        | j                 dk    s| j        | j                 dk    rR|                                   |                                 r*| j        | j                 dk    r|                                   |                                 r| j        | j                 dk    s,| j        | j                 dk    s| j        | j                 dk    rj|                                   |                                 rB| j        | j                 dk    >| j        | j                 dk    T| j        | j                 dk    j|                     t
          j                  S )N01r   r   r   r   r   r   rx   r   r   r#   rd   rD   s    r   binaryzTokenIterator.binary  s   !! 	K*+s22{4-.#55{4-.#55LLNNN !! 	K*+s22{4-.#55{4-.#55  	K*+s22{4-.#55LLNNN  "" t{43E'F#'M'M!! 	K*+s22{4-.#55{4-.#55LLNNN !! 	K*+s22{4-.#55{4-.#55 y/000r   c                   |                                   |                                   |                                 r| j        | j                 dk    r| j        | j                 dk    s| j        | j                 dk    rj|                                   |                                 rB| j        | j                 dk    r| j        | j                 dk    T| j        | j                 dk    j|                                 r~| j        | j                 dk    s| j        | j                 dk    rR|                                   |                                 r*| j        | j                 dk    r|                                   |                                 r| j        | j                 dk    r| j        | j                 dk    s| j        | j                 dk    rj|                                   |                                 rB| j        | j                 dk    r| j        | j                 dk    T| j        | j                 dk    j|                     t
          j                  S )Nr   7r   r   r   r   r   rD   s    r   octalzTokenIterator.octal  s   !! 	K*+s22D./366{4-.#55LLNNN !! 	K*+s22D./366{4-.#55  	K*+s22{4-.#55LLNNN  "" t{43E'F#'M'M!! 	K*+s22D./366{4-.#55LLNNN !! 	K*+s22D./366{4-.#55 y/000r   c                D   |                                   |                                   |                                 r| j        | j                 t          j        v s| j        | j                 dk    r\|                                   |                                 r4| j        | j                 t          j        v F| j        | j                 dk    \|                                 r~| j        | j                 dk    s| j        | j                 dk    rR|                                   |                                 r*| j        | j                 dk    r|                                   |                                 r| j        | j                 t          j        v s| j        | j                 dk    r\|                                   |                                 r4| j        | j                 t          j        v F| j        | j                 dk    \|                     t          j                  S )Nr   r   r   r   )	r   r   rx   r   re   	hexdigitsr   r#   rd   rD   s    r   hexadecimalzTokenIterator.hexadecimal  s   !! 	K*+v/???{4-.#55LLNNN	 !! 	K*+v/???{4-.#55  	K*+s22{4-.#55LLNNN  "" t{43E'F#'M'M!! 	K*+v/???{4-.#55LLNNN	 !! 	K*+v/???{4-.#55 y/000r   c                    t          d          D ]/}| j        | j        |z            }|dk    s|dk    r| j        |z   c S 0t          d          )Nr&   "'zQuote not found somehow)rangerx   r   AssertionError)rE   offsetchars      r   find_opening_quotez TokenIterator.find_opening_quote  sf    Ahh 	3 	3F;t1F:;Ds{{dckk)F2222 * 6777r   tuple[str, str]c                B   |                                  }| j        | j        |         }| j        |         }|dz   t          | j                  k    r:| j        |dz            |k    r&| j        |dz            |k    r| j        ||dz            n| j        ||dz            }||fS )Nr&   r$   r%   )r   rx   r   r{   )rE   quote_indexr   
quote_charr   s        r   string_prefix_and_quotesz&TokenIterator.string_prefix_and_quotes  s    --//T/+=>[-
 a3t{#3#333Ka0J>>Ka0J>>	 KkAo566 [;?:; 	 u}r   c                   | j         j        t          j        t          j        fv r|                                 \  }}|                     ||           t          t          |                    D ]}| 	                                 t          t          |                    D ]}| 	                                 | j         
                                 |                     t          j                  S | j         j        t          j        k    r| j        J t          | j                  dk    }| j        }|                                 rt| j        | j                 }|dk    r	|rt&          |dk    r
| 	                                 | j        J d| j                                        vrx| j        dz   t          | j                  k     rX|                                 dk    r@|                                 dk    r(| 	                                 | 	                                 |                                 rD|                                 dk    s,|                                 dk    s|                                  G|dk    r|                                 dk    r*| 	                                 | 	                                 | j                                          | j        |k    r|                                 S |                     t          j                  S | j        J |                     | j                  rW| j                                          | j        |k    r|                                 S |                     t          j                  S |                                  |                                 tt<          | j         j        t          j        k    rr| 	                                 | j         !                    | j"                   d| _"        | j         #                                 |                     t          j$                  S | j         j        t          j%        k    r| j        J t          t          | j                            D ]}| 	                                 |                     t          j&                  }| '                                 | j         (                                 |S | j         j        t          j)        k    r:| j        }|                                 r| j        | j                 }| j        J |dk    s|dk    rt          | j                  dk    rt|dk    r| j                                          nt          j        | j         _        | j        |k    r|                                 S |                     t          j                  S |dk    r5t          j        | j         _        |                     t          j                  S |                                  |                                 t<          tU          d	          )
Nr$   r   \rN{}r   zUnhandled f-string state)+r   r   r   r   r   r  r   r   r{   r   r   r   r#   rf   r   r   r   r   rx   r   r   r   r   r   r   r   fstringrg   r   r   r   r   r   r   r   r   r`   r   rh   r   r   r   r   )rE   r   r   r   is_single_quoterr   r   r   s           r   r	  zTokenIterator.fstring  s   #$((
 
 
 !99;;MFE**659993v;;''  3u::&&  ,,...??9#:;;;#|'EEE%111!$"455:O,K##%% 4-{4#564<<O<,, 4<<LLNNN  .:::4#6#<#<#>#>>> .2S5E5EEE IIKK3.. NN,,33((** 5		s**diikkS.@.@22444 3;;~~''3.. *LLNNN-<<#'<<>>1#y/GHHH)555::d011 E&EEGGG)[88#||~~-??9+CDDD**,,,i ##%% 4-l  #|'EEELLNNN$++D,>???!"D--///??9#3444#|'BBB%1113t12233  OOI$9::E""$$$,,...L#|'LLL,K##%% -{4#56)555DLLDCKKS9K5L5LPQ5Q5Qs{{*LLNNNN 4@3O*0 )[88#||~~-??9+CDDDS[[/;/KD&,??9+CDDD**,,,' ##%% -*  7888r   c                   |                                  \  }}|r;| j        r4|                                  |                     t          j                  S |D ]}|dv r|                                 c S t          t          |                    D ]}|                                  t          t          |                    D ]}|                                  t          |          dk    }| 	                                r| j
        | j                 }|dk    r	|rt          |dk    r)|                                  |                                  d|                     |          rRt          t          |                    D ]}|                                  |                     t          j                  S |                                  | 	                                t           )N)r   )fFr   Tr$   r   r  )r  r   r   r   r#   rc   r	  r   r{   r   rx   r   r   r   r   re   r   )rE   r   r   r   r   r
  s         r   re   zTokenIterator.string  s   5577 	:d( 	:LLNNN??IL?999 	& 	&D+++||~~%%% , s6{{## 	 	ALLNNNNs5zz"" 	 	ALLNNNNe**/!! 	);t12Dt|||(( t||**,,, zz%   9s5zz** # #ALLNNNNy'7888&&(((% !! 	)( r   c                N   | j         }d}d}|                                 r`| j        | j                  }|                                 r%|                                  d}|dk    s|dk    rd}nn|                                 `|                                 s1| j         |k    rt
          |                     t          j                  S |r(|s&d| _	        |                     t          j                  S | 
                                }|dk    s|dk    s|                                 r|                     t          j                  S | j        || j                  }t          | j                  dk    rdn| j        d	         }t          |          t          |          k    rFt          |          dk    rt
          ||k    rt          |                     t          j                  S t          |          t          |          k    rWt          |          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nA| j                                        }	| xj        d
z  c_        t          | j                  dk    |                     t          j                  S )NFT 	#r  r   rz   r   r$   )r   r   rx   is_whitespacer   r   r   r#   rU   r   r   
is_newliner{   r   r   r   rV   r   r   r   )
rE   rr   saw_whitespacesaw_tab_or_spacer   	next_char
new_indentcurrent_indent
top_indentr   s
             r   rV   zTokenIterator.indent  s   ( !! 	;t12D!!## !%3;;$$,,'+$ !! 	   "" 	9![00!!??9#7888  	9"2 	9)-D&??9#7888 IIKK	yD00DOO4E4E0??9#7888[t/A!AB
"4#455::@QRT@Uz??c.1111:!##!!^++44??9#7888__s>2222>""Q&&>+K+K44$$Z000??9#3444d'((1,,!.r2
z??S__44::z??c*oo55%))++##q(## d'((1,, ??9#7888r   c                    |                                  rdS | j        | j                 }|dk    p|dk    p|dk    p|dk    p|dk    S )NFr  r   r  )r  rx   r   )rE   r   s     r   r  zTokenIterator.is_whitespace  sh    ?? 	5{4-.CK t|t| v~ v~	
r   c                    | j         | j                 dk    rdS | j         | j                 dk    r;| j        dz   t          | j                   k     r| j         | j        dz            dk    rdS dS )Nr   Tr   r$   F)rx   r   r{   rD   s    r   r  zTokenIterator.is_newline  sr    ;t)*d224K*+t33"Q&T[)9)999D.23t;;4ur   c                   | j         r3|                                  |                     t          j                  S | j        }| j        }t          |          }||k     rA||         }t          |          dk     r|	                                s|dk    rn|dz  }||k     A| 
                    || j        z
             |                     t          j                  S )N   r   r$   )r   r   r   r#   rH   rx   r   r{   ordisalnumr   )rE   rx   indexendr   s        r   rC   zTokenIterator.name  s     	9LLNNN??9#7888 "&kkckk%=D4yy3t||~~$#++QJE	 ckk 	 22333y3444r   c                    | S rP   r   rD   s    r   __iter__zTokenIterator.__iter__'  s    r   c                   | j         !| j         j        t          j        k    rt          | j        t          | j                  k    rr| j         |                                 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    r.| j        j        t          j        k    r|                                 S | j        | j                 }| j        s|dk    r|                                  |                                 s|                                 S | j        | j                 }|dk    r/d| _        | j         !| j         j        t          j        k    rd| _        |dk    r| j        r3|                                  |                     t          j                  S |                                 rn|                                 sZ| j        s| j        | j                 dk    rn<|                                  |                                 r|                                 Z|                     t          j                  S | j        dk    r/| xj        dz  c_        |                     t          j
                  S |                                 r|                                 S |dk    rA|                                  |                                 st4          d}d}|                                 r|                                 r|                                  d}n|s|                                 r|| j        | j                 }|dk    r|                                  |                                  d}d}| j        r|                                  n1|                                  d| _        nn|                                 |st<          |                     t          j                  S | j         dk    s| j!        rX| j"        dk    rM| j        j        t          j        k    r3d| _!        	 | #                                }n# tH          $ r d }Y nw xY w||S |                                 r|                                 rP|                                 r<|                                  |                                 r|                                 <|                     t          j                  S |d	v r_|                                  | %                                d
k    r|                                  |                     t          j&                  S |dk    r|                                  | %                                dk    r3|                                  |                     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    r|                                  | %                                dk    r|                                  | %                                d
k    r|                                  |                     t          j&                  S |dk    r|                                  | %                                dk    r3|                                  |                     t          j&                  S | %                                d
k    r|                                  |                     t          j&                  S |dv r3|                                  |                     t          j&                  S |dk    r3|                                  |                     t          j&                  S |dk    rC|                                  | xj"        dz  c_"        |                     t          j'                  S |dk    rU|                                  | xj"        dz  c_"        | j"        dk     rd| _"        |                     t          j(                  S |dk    rC|                                  | xj"        dz  c_"        |                     t          j)                  S |dk    rU|                                  | xj"        dz  c_"        | j"        dk     rd| _"        |                     t          j*                  S |dk    rC|                                  | xj"        dz  c_"        |                     t          j+                  S |dk    r|                                  | j"        dk    rR| j        j        t          j        k    r8| j        ,                                 | j-        .                                | _"        n"| xj"        dz  c_"        | j"        dk     rd| _"        |                     t          j/                  S |dk    r|                                  | j"        dk    rO| j        j        t          j        k    r5t          j0        | j        _        |                     t          j&                  S | %                                d
k    r|                                  |                     t          j&                  S |dv r
| j        dz   t          | j                  k    r2| j        | j        | j        dz            dv r| 1                                S | j        dz   t          | j                  k    r2| j        | j        | j        dz            dv r| 2                                S | j        dz   t          | j                  k    r2| j        | j        | j        dz            dv r| 3                                S | 4                                S | j        dz   t          | j                  k    r| 5                    dd          s| j        dz   t          | j                  k    r | 5                    d d!d"d#d$d%d&d'd(d)d*          sB| j        d+z   t          | j                  k    r6| 5                    d,d-d.d/d0d1d2d3d4d5d6d7d*          r| 6                                S | 7                                S )8Nr   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'zt'zt"r   r&   zbr"zbr'zrb"zrb'zfr"zfr'zrf"zrf'ztr'ztr"zrt'zrt")8r   rp   r#   rl   StopIterationr   r{   rx   rX   rY   rW   r   r   r   r   r   r	  r   r   r   r   rZ   r   r   r  r   r   r  r   r   r   rU   r   r   r   rV   r   r   rc   r\   r]   r^   r_   r`   r   r   r   ra   r   r   r   r   r   r   re   rC   )rE   current_charfound_whitespaceseen_newliner   indent_tokens         r   __next__zTokenIterator.__next__*  s   ?&4?+?9CV+V+V T[!1!111&~~'''#! (  
 ~~'''||~~%DK 0 000>>### $(@@@"(L,HHH<<>>!{4#56 ) 	1ld.B.BLLNNN$$&& &||~~%;t'9:Lt##%)"O/,	0AAA,0D) 3! :y'8999##%% doo.?.? 2D$674?? ##%% doo.?.?  ??9#4555 ""1$??9#3444 ?? 	"<<>>! 4LLNNN$$&& $##  % L##%% %%'' LLNNN'+$$% 4??+<+< ;t'9:Dt||LLNNN'+$#'L 7 A((((((;@88 / ##%% 2 $ 877??9#7888 ""d&@""a''"(L,DDD).D&$#{{}} $ $ $#$ '## 	9##%% $*<*<*>*>  ##%% $*<*<*>*> ??9#7888HHHLLNNNyy{{c!!??9<0003LLNNNyy{{c!!y|444yy{{c!!yy{{c!!??9<0003LLNNNyy{{c!!yy{{c!!??9<0003LLNNNyy{{c!!yy{{c!!??9<0003LLNNNyy{{c!!yy{{c!!??9<0003LLNNNyy{{c!!y|444 yy{{c!!??9<000:%%LLNNN??9<000 3LLNNN??9<0003LLNNN!#??9#34443LLNNN!#!A%%%&"??9#34443LLNNN!#??9#56663LLNNN!#!A%%%&"??9#56663LLNNN!#??9#34443LLNNN"a''&,0LLL"11333%)%=%A%A%C%C""""a'""%)))*D&??9#34443LLNNN"a''&,0LLL+7+P"(y|44499;;#%%LLNNNy|444=((!A%T[)9)999dk"T%7!%;;?? ? {{}}$#a'3t{+;+;;;"T%7!%;;AA A zz||##a'3t{+;+;;;"T%7!%;;AA A '')))||~~% !#s4;'7'777DJJsC<P<P7"Q&#dk*:*:::JJ $    ;  "Q&#dk*:*:::JJ $    ;$ ;;== yy{{s   R2 2S SrT   rS   r   )r   rq   r@   r   )r   rA   r   rN   r@   rN   )r   r#   r@   ro   )r   rA   r   rA   r@   r   )r@   ro   )r@   rq   )r@   r   )r@   r   )5r   r   r   r}   r   r   r   r   r   r   r   r   r   listr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   rl   r   r   r   r   r   r  r	  re   rV   r  r  rC   r&  rG  r   r   r   r   r      s        KKKMJKK(,,,,,M%*U4%@%@%@@@@@#J#####eD999L9999N #(%"E"E"EMEEEE8=d8S8S8SSSSS!%N%%%% $M$$$$  M""""""'''''5 5 5 5/ / / /3 3 3 3   " " " "0 0 0 0
    8=      5 5 5 5n# # # #	
 	
 	
 	
   $4 4 4 4Q1 Q1 Q1 Q1f1 1 1 141 1 1 141 1 1 108 8 8 8   "t9 t9 t9 t9l% % % %N=9 =9 =9 =9~
 
 
 

 
 
 
5 5 5 5&   t t t t t tr   r   T)fstring_tokensr   rx   rA   rI  rN   r   r@   Iterator[Token]c               d    t          | |          }|rt          |          S t          |          S )N)r   )r   itermerge_fstring_tokens)rx   rI  r   token_iterators       r   tokenizerO  a  s;     #6AVWWWN $N###///r   rN  c           
   #    K   | D ]}|j         t          j        t          j        fvr|V  &|}|}d}d}| D ]T}|j         t          j        t          j        fv r|dz  }|j         t          j        t          j        fv r|dz  }||k    r|} nUt          t          j        |j        |j	        |j
        |j        |j        |j                  V  dS )zETurn post-Python-3.12 FSTRING-* tokens back to a single STRING token.r$   r   )rp   rr   rt   ru   rs   rv   rw   N)rp   r#   rf   ri   rh   rk   ro   re   rr   rt   ru   rs   rv   rw   )rN  r   start_token	end_tokenfstring_startsfstring_endss         r   rM  rM  n  s      
 
:i5y7NOOOKKK	# 	 	Ezi5y7NOOO!#zi3Y5JKKK!--!	 . !#/"-!+)'%
 
 
 	
 	
 	
 	
)
 
r   )rx   rA   rI  rN   r   rN   r@   rJ  )rN  r   r@   rJ  )__doc__
__future__r   dataclassesr   r   enumre   typingr   r   	Exceptionr	   r   r   r   r   r   r   r   r!   IntEnumr#   ro   r   r   rO  rM  r   r   r   <module>r\     si   Z Z " " " " " " ( ( ( ( ( ( ( (   % % % % % % % % $ # # # #I # # # + * * * *} * * * < ; ; ; ;%5 ; ; ; > = = = ='7 = = = - , , , , , , , ( ' ' ' 'M ' ' ' < ; ; ; ; ; ; ; " ! ! ! !) ! ! !      	   0> 0> 0> 0> 0> 0> 0> 0>f  9  9  9  9  9  9  9  9F0; 0; 0; 0; 0; 0; 0; 0;f m m m m m m m mf  "&	
0 
0 
0 
0 
0 
0
 
 
 
 
 
r   