
    7 fY                        d dl Z d dlZd dlZd dlZd dl mZ d dlmZmZmZm	Z	m
Z
mZmZ d dlZddlmZ ddlmZ ddlmZ ddlmZmZ erdd	lmZ ej        d
fej        dfej        dfej        dfej        dfej        dfiZej        dfej        d
fej        dfej        dfej        dfej        dfiZ G d de          ZdS )    N)Module)CallableListUnioncastOptionalTupleTYPE_CHECKING   )util)	ASTTokens)AstConstant)astroid_node_classesBaseContainer)AstNode()[]{}c                   b   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zej        d
k     rd Zej        rd Zd Zd Zd Zd ZeZeZeZd ZeZeZd Zd Zd Zd Zd Z d Z!ej        d
k    rd Z"nd Z"d Z#d+dZ$d Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+e+Z,d$ Z-d% Z.d& Z/ej        rd' Z0d( Z1e1Z2e1Z3d) Z4d*S ),
MarkTokensz
  Helper that visits all nodes in the AST tree and assigns .first_token and .last_token attributes
  to each of them. This is the heart of the token-marking logic.
  c                 R    || _         t          j                    | _        d | _        d S N)_coder   NodeMethods_methods_iter_children)selfcodes     K/var/www/equiseq/venv/lib/python3.11/site-packages/asttokens/mark_tokens.py__init__zMarkTokens.__init__4   s'    DJ$&&DMD    c                 x    t          j        |          | _        t          j        || j        | j                   d S r   )r   iter_children_funcr   
visit_tree_visit_before_children_visit_after_children)r    nodes     r"   r'   zMarkTokens.visit_tree:   s5    1$77DOD$5t7QRRRRRr$   c                     t          |dd           }| | j                            |j        |          nd }|s/t	          j        |          r| j                            dd          }|p||fS )N
col_offsetr   r   )getattrr   get_token_from_utf8linenor   	is_module	get_token)r    r*   parent_tokencoltokens        r"   r(   z!MarkTokens._visit_before_children?   sx    
$d
+
+C@CDJ**4;<<<UYE )T^D)) )j""1a((e !\5))r$   c                    |}d } t          t          | j                  |          D ]S}t          j        |          r|r|j        j        |j        k     r|j        }|r|j        j        |j        k    r|j        }T|p|}|p|}t          j        |          r-| 	                    t          t          j
        |                    }|                     t          t          j
        |          t          t          j
        |          |          \  }} | j                            | |j                  |||          \  }}||f||fk    r|                     |||          \  }}||_        ||_        d S r   )r   r   r   r   is_empty_astroid_slicefirst_tokenindex
last_tokenis_stmt_find_last_in_stmtToken_expand_to_matching_pairsr   get	__class__)	r    r*   r2   r4   firstlastchildnfirstnlasts	            r"   r)   z MarkTokens._visit_after_childrenL   s~    ED4h 344T::    		$U	+	+  "e'-;;!  U%+dj88 !\E =5D |D =$$T$*d%;%;<<d 00dj%1H1H$tz[_J`J`bfggKE4 <DM%%dDN;;D%NNMFE5$-''44VUDIImfeDDOOOr$   c                    |}t          j        |t          j                  st          j        |t          j        d          st          j        |j                  st| j                            |d          }t          j        |t          j                  s9t          j        |t          j        d          st          j        |j                  t| j        	                    |          S )N;T)include_extra)
r   match_tokenr4   NEWLINEOPISEOFtyper   
next_token
prev_token)r    start_tokents      r"   r;   zMarkTokens._find_last_in_stmtv   s    A5=11 758S117{16""7 *



6
6a 5=11 758S117{16""7 :  ###r$   c                   
 g }g }| j                             ||          D ]}|dd         }|r!||d         k    r|                                 /|t          v r!|                    t          |                    Y|t
          v r |                    t
          |                    t          |          D ]}| j                             |          
t          
fddD                       r5| j                             
          
t          
fddD                       5t          j
        
g|R  r
}|D ]0}| j                             |          }	t          j
        |	g|R  r|	}1||fS )z
    Scan tokens in [first_token, last_token] range that are between node's children, and for any
    unmatched brackets, adjust first/last tokens to include the closing pair.
    N   c              3   X   K   | ]$}t          j        t          j        |          V  %d S r   )r   rH   r4   rJ   ).0xrA   s     r"   	<genexpr>z7MarkTokens._expand_to_matching_pairs.<locals>.<genexpr>   s4      HH ux33HHHHHHr$   ),:)r   token_rangepop_matching_pairs_leftappend_matching_pairs_rightreversedrM   anyr   rH   rN   )r    r7   r9   r*   to_match_rightto_match_lefttoktok_infomatchr@   rA   s             @r"   r=   z$MarkTokens._expand_to_matching_pairs   s    NMz%%k:>> > >RaRh	 >Hr(:::+++28<====,,,28<=== .))  Z"":..dHHHHZHHHHH +z$$T** HHHHZHHHHH + 
	$	'	'	'	' 
   j##K00e		%	(%	(	(	( $$r$   c                 
    ||fS r    r    r*   r7   r9   s       r"   visit_defaultzMarkTokens.visit_default   s     $$r$   c                 ~    | j                             |          }t          j        |t          j        |           ||fS r   )r   rN   r   expect_tokenr4   rJ   )r    
open_bracer*   r7   r9   befores         r"   handle_compzMarkTokens.handle_comp   s;     Z"";//Ffeh
333Jr$   )      c                 2    |                      d|||          S Nr   rn   rh   s       r"   visit_listcompzMarkTokens.visit_listcomp       c4jAAAr$   c                 2    |                      d|||          S Nr   rs   rh   s       r"   visit_setcompzMarkTokens.visit_setcomp   ru   r$   c                 2    |                      d|||          S rw   rs   rh   s       r"   visit_dictcompzMarkTokens.visit_dictcomp   ru   r$   c                 Z    | j                             |t          j        dd          }||fS )NforTreverser   
find_tokenr4   NAMEr    r*   r7   r9   r@   s        r"   visit_comprehensionzMarkTokens.visit_comprehension   s/     J!!+uz5$!OOE:r$   c                 b    |j         dvr#| j                            |          }|j         dv#||fS )N)ifelifstringr   rN   rh   s       r"   visit_ifzMarkTokens.visit_if   s@    

N
2
2J))+66k 
N
2
2
""r$   c                     | j                             |t          j        d          }| j                             |          }t          j        |t          j                   ||fS )N.)r   r   r4   rJ   rM   r   rk   r   )r    r*   r7   r9   dotnames         r"   handle_attrzMarkTokens.handle_attr   sT     *


EHc
:
:C:  %%DdEJ'''r$   c                 4   |j         sGt          |dd           st          |dd           r%| j                            |t          j                  }|j        dk    r<| j                            |          }t          j	        |t          j
        d          r|}||fS )Ndoc_nodedocr   @)bodyr-   r   r   r4   STRINGr8   rN   r   rH   rJ   )r    r*   r7   r9   prevs        r"   
handle_defzMarkTokens.handle_def   s     9 C'$
D99 CWT5RV=W=W C:((U\BBj 1Z"";//d		$#	.	. $$r$   c                     t           t          t          | j                  |                    }| j                            |j        t          j        |          }|j	        |j	        k    r|}|S r   )
nextr   r   r   r   r   r9   r4   rJ   r8   )r    r*   r9   opening_bracketfirst_child
call_starts         r"   handle_following_bracketsz$MarkTokens.handle_following_brackets   sc     :tHd&9::4@@AAK&&{'=uxYYJ****jr$   c                     |                      ||d          }t          j        |t          j        d          r| j                            |          }||fS )Nr   r   )r   r   rH   r4   rJ   r   rM   rh   s       r"   
visit_callzMarkTokens.visit_call  sT    //j#FFJ
 UXs33 7J))+66k$$r$   c                 8    |                      ||d          }||fS )Nr   r   rh   s       r"   visit_matchclasszMarkTokens.visit_matchclass  s$    //j#FFJ$$r$   c                 8    |                      ||d          }||fS rr   r   rh   s       r"   visit_subscriptzMarkTokens.visit_subscript  s&     //j#FFJ$$r$   c                     	 | j                             |          }|j        dk    rn|})	 | j                             |          }|j        dk    rn|})||fS )NTrY   )r   rN   r   rM   )r    r*   r7   r9   r   next_s         r"   visit_slicezMarkTokens.visit_slice  sw    Z"";//d			k	
j##J//e			j	
 $$r$   c                     | j                             |          }t          j        |t          j        d          r|}||fS )NrX   )r   rM   r   rH   r4   rJ   )r    r*   r7   r9   maybe_commas        r"   handle_bare_tuplezMarkTokens.handle_bare_tuple/  sB     *''
33KUXs33 j$$r$   c                 @   t          |t          j                  st          |t                    sJ |j        d         }t
          rt          t          |          }|                     |j	        |j
        d          \  }}||k    r|                     |||          S ||fS )Nr   T)
isinstanceastr	   AstroidBaseContainereltsr
   r   r   _gobble_parensr7   r9   r   )r    r*   r7   r9   rB   child_first
child_lasts          r"   handle_tuple_nonemptyz MarkTokens.handle_tuple_nonempty9  s    ci((RJt=Q,R,RRRR ile	 %We$$ $ 3 3E4EuGWY] ^ ^k:		#	#%%dKDDD:&&r$   c                 d    |                      |||          \  }}|                     ||d          S )NF)r   r   rh   s       r"   r   z MarkTokens.handle_tuple_nonemptyG  s6    "&"8"8{J"W"W{J  j%@@@r$   c                     t          |t          j                  st          |t                    sJ |j        s||fS |                     |||          S r   )r   r   r	   r   r   r   rh   s       r"   visit_tuplezMarkTokens.visit_tupleL  sW    dCI&&P*T;O*P*PPPP9 ':&&%%dKDDDr$   Fc                    |j         dk    r|| j                            |          }| j                            |          }t	          j        |t          j        d          r't	          j        |t          j        d          r||}}|r	 ||fS )Nr   r   r   )r8   r   rN   rM   r   rH   r4   rJ   )r    r7   r9   include_allr   r   s         r"   r   zMarkTokens._gobble_parensT  s     
a

Z"";//dZ"":..d		$#	.	. 43CD%(TW3X3X "&Z 	
$$r$   c                 .    |                      ||          S r   
handle_strrh   s       r"   	visit_strzMarkTokens.visit_strb      ??;
333r$   c                 j   t           j        dk     r|                     ||          S |}	 t          j        |t          t          d                    rd}|dk    r{| j                            |          }t          j        |t          t          d                    r|dz  }n-t          j        |t          t          d                    r|dz  }|dk    {|}| j                            |          }n=t          j        |t          j	                  r|}| j                            |          }nn||fS )N)ro      TFSTRING_STARTr   r   FSTRING_END)
sysversion_infor   r   rH   r-   r4   r   rM   r   )r    r*   r7   r9   rA   counts         r"   visit_joinedstrzMarkTokens.visit_joinedstrf  s7    '!!__[*555D		$ ? ?	@	@ 
 aii&&t,,$dGE?$C$CDD QJEEge]&C&CDD QJE aii 
z$$Z00D%,// 
z$$Z00+, $$r$   c                 .    |                      ||          S r   r   rh   s       r"   visit_byteszMarkTokens.visit_bytes  r   r$   c                     | j                             |          }t          j        |t          j                  r;|}| j                             |          }t          j        |t          j                  ;||fS r   )r   rM   r   rH   r4   r   )r    r7   r9   rA   s       r"   r   zMarkTokens.handle_str  sp     :  ,,D

4
.
. /jZ"":..d 
4
.
. / $$r$   c                 \   t          j        |t          j                  r9| j                            |          }t          j        |t          j                  9t          |t                    r|j        }|dk     r/|j	        t          j
        k    r| j                            |          }||fS )Nr   )r   rH   r4   rJ   r   rM   r   compleximagrL   NUMBERrN   )r    r*   valuer7   r9   s        r"   
handle_numzMarkTokens.handle_num  s     
:ux
0
0 5:((44j 
:ux
0
0 5 %!!  je qyy[%55j++K88$$r$   c                 l    |                      |t          t          j        |          j        ||          S r   )r   r   r   Numnrh   s       r"   	visit_numzMarkTokens.visit_num  s)    ??4cgt!4!4!6ZPPPr$   c                 h   t          |t                    st          |t          j                  sJ t          |j        t
          j                  r|                     ||j        ||          S t          |j        t          j	        t          j
        f          r|                     |||          S ||fS r   )r   r   ncConstr   numbersNumberr   six	text_typebinary_typer   rh   s       r"   visit_constzMarkTokens.visit_const  s    dK((FJtRX,F,FFFF$*gn-- ;__T4:{JGGG	DJ @	A	A ;^^D+z:::$$r$   c                 x   t          |t          j                  st          |t          j                  sJ |j        zt          |dd           i| j                            |t          j
        dd          }| j                            |          }t          j        |t          j        |j                   |}||fS )Nr/   =Tr}   )r   r   keywordr   Keywordargr-   r   r   r4   rJ   rN   r   rk   r   )r    r*   r7   r9   equalsr   s         r"   visit_keywordzMarkTokens.visit_keyword  s     dCK((HJtRZ,H,HHHHxh = = Ez$$[%(C$NNfZ""6**d
ej$(333k$$r$   c                     t          j        |t          j        d          s<| j                            |          }t          j        |t          j        d          r|}||fS )N*)r   rH   r4   rJ   r   rN   )r    r*   r7   r9   stars        r"   visit_starredzMarkTokens.visit_starred  s[     K377 Z"";//d		$#	.	. $$r$   c                     t          j        |t          j        d          rB| j                            |t          j        d          }| j                            |          x}}||fS )NexceptrY   )r   rH   r4   r   r   r   rJ   rN   )r    r*   r7   r9   colons        r"   visit_assignnamezMarkTokens.visit_assignname  s]     UZ:: >j##J#>>e!%!6!6u!=!==kJ$$r$   c                 Z    | j                             |t          j        dd          }||fS )NwithTr}   r   r   s        r"   
visit_withzMarkTokens.visit_with  s-    j##KVT#RReZ  r$   c                 T    |j         dk    s| j                            |          }||fS )Nasyncr   rh   s       r"   handle_asynczMarkTokens.handle_async  s0    ((J))+66k$$r$   c                     t          j        |t          j        d          r| j                            |          }|                     |||          S )Ndef)r   rH   r4   r   r   rN   visit_functiondefrh   s       r"   visit_asyncfunctiondefz!MarkTokens.visit_asyncfunctiondef  sJ     UZ77 7J))+66k!!$Z@@@r$   N)F)5__name__
__module____qualname____doc__r#   r'   r(   r)   r;   r=   ri   rn   r   r   rt   r   PY2rx   rz   r   r   r   visit_attributevisit_assignattrvisit_delattrr   visit_classdefr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   visit_constantr   r   r   r   r   visit_asyncforvisit_asyncwithr   rg   r$   r"   r   r   /   s          S S S
* * *( ( (T$ $ $#% #% #%R% % %      	B B B 	W BB B BB B B	 	 	# # #    / -% % % .   	% 	% 	%% % %
% % %% % %(% % % 	' ' ' 'A A A
E E E% % % %4 4 4!% !% !%F4 4 4% % %% % %,Q Q Q
% % % .
% 
% 
%% % %% % % 	W !! ! !% % %  . /	A 	A 	A 	A 	Ar$   r   )r   r   r   r4   r   typingr   r   r   r   r   r	   r
   r    r   	asttokensr   r   astroid_compatr   r   r   r   r   rJ   r\   r^   objectr   rg   r$   r"   <module>r     s   


  



        N N N N N N N N N N N N N N N N N N 



                         ] ] ] ] ] ] ] ] 
 	8S/EHc?8S/EHc?8S/EHc?  	8S/EHc?8S/EHc?8S/EHc? JA JA JA JA JA JA JA JA JA JAr$   