
    =Og(                        	 d dl Z d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlZg dZd Z G d d          Z e            Z G d d          Z G d	 d
e          Z G d de          Z G d d          Zedk    rd dlZd dlZ eej        d                    5 Ze                                Z ddd           n# 1 swxY w Y    ee ej!        "                    ej        d                    d         d          Z#e#$                                D ]JZ%e#&                    e%          Z' e(e'e')                                e'*                                           IdS dS )    N)USE
DEF_GLOBALDEF_NONLOCAL	DEF_LOCAL	DEF_PARAM
DEF_IMPORT	DEF_BOUND	DEF_ANNOT	SCOPE_OFF
SCOPE_MASKFREELOCALGLOBAL_IMPLICITGLOBAL_EXPLICITCELL)symtableSymbolTableClassFunctionSymbolc                 P    	 t          j        | ||          }t          ||          S N)	_symtabler   _newSymbolTable)codefilenamecompile_typetops       !/usr/lib64/python3.11/symtable.pyr   r      s-    
 
T8\
:
:C3)))    c                        e Zd Zd Zd Zd ZdS )SymbolTableFactoryc                 6    t          j                    | _        d S r   )weakrefWeakValueDictionary_SymbolTableFactory__memoselfs    r   __init__zSymbolTableFactory.__init__   s    133r    c                     |j         t          j        k    rt          ||          S |j         t          j        k    rt          ||          S t          ||          S r   )typer   TYPE_FUNCTIONr   
TYPE_CLASSr   r   )r(   tabler   s      r   newzSymbolTableFactory.new   sR    :000E8,,,:---)))5(+++r    c                     ||f}| j                             |d           }| |                     ||          x}| j         |<   |S r   )r&   getr/   )r(   r.   r   keyobjs        r   __call__zSymbolTableFactory.__call__    sI    Xokooc4((;%)XXeX%>%>>C$+c"
r    N)__name__
__module____qualname__r)   r/   r4    r    r   r"   r"      sA        4 4 4, , ,    r    r"   c                   b    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S )r   c                 0    || _         || _        i | _        d S r   )_table	_filename_symbols)r(   	raw_tabler   s      r   r)   zSymbolTable.__init__,   s    !r    c                     | j         t          k    rd}nd| j         j        z  }| j        j        dk    rd                    || j                  S d                    || j        j        | j                  S )N z%s r   z<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>)	__class__r   r5   r;   nameformatr<   )r(   kinds     r   __repr__zSymbolTable.__repr__1   sw    >[((DD4>22D;u$$4;;D$.QQQ4;;D<@K<L<@NL L Lr    c                     	 | j         j        t          j        k    rdS | j         j        t          j        k    rdS | j         j        t          j        k    rdS d S )Nmodulefunctionclass)r;   r+   r   TYPE_MODULEr,   r-   r'   s    r   get_typezSymbolTable.get_type>   sY    	
 ;y4448;y666:;y3337 43r    c                     	 | j         j        S r   )r;   idr'   s    r   get_idzSymbolTable.get_idM   s    	{~r    c                     	 | j         j        S r   )r;   rB   r'   s    r   get_namezSymbolTable.get_nameR   s    	 {r    c                     	 | j         j        S r   )r;   linenor'   s    r   
get_linenozSymbolTable.get_lineno[   s    	 {!!r    c                 R    	 t          | j        j        t          j        k              S r   )boolr;   r+   r   r,   r'   s    r   is_optimizedzSymbolTable.is_optimizeda   s$    	 DK$	(??@@@r    c                 6    	 t          | j        j                  S r   )rU   r;   nestedr'   s    r   	is_nestedzSymbolTable.is_nestedg   s    	DK&'''r    c                 6    	 t          | j        j                  S r   )rU   r;   childrenr'   s    r   has_childrenzSymbolTable.has_childrenl   s    	DK()))r    c                 @    	 | j         j                                        S r   )r;   symbolskeysr'   s    r   get_identifierszSymbolTable.get_identifiersq   s    	{"'')))r    c                     	 | j                             |          }|T| j        j        |         }|                     |          }| j        j        dk    }t          ||||          x}| j         |<   |S )Nr   module_scope)r=   r1   r;   r^   _SymbolTable__check_childrenrB   r   )r(   rB   symflags
namespacesrc   s         r   lookupzSymbolTable.lookupv   s    	 m%%;K'-E..t44J K,5L(.tUJ<H)J )J )J JC$-%
r    c                 F     	  fd                                  D             S )Nc                 :    g | ]}                     |          S r8   )rh   ).0identr(   s     r   
<listcomp>z+SymbolTable.get_symbols.<locals>.<listcomp>   s%    GGGuE""GGGr    )r`   r'   s   `r   get_symbolszSymbolTable.get_symbols   s1    	 HGGG0D0D0F0FGGGGr    c                 8      fd j         j        D             S )Nc                 P    g | ]"}|j         k    t          |j                  #S r8   )rB   r   r<   )rk   strB   r(   s     r   rm   z0SymbolTable.__check_children.<locals>.<listcomp>   s8     $ $ $7d??  DN33"??r    r;   r[   )r(   rB   s   ``r   __check_childrenzSymbolTable.__check_children   s9    $ $ $ $ $+.$ $ $ 	$r    c                 6     	  fd j         j        D             S )Nc                 :    g | ]}t          |j                  S r8   )r   r<   )rk   rq   r(   s     r   rm   z,SymbolTable.get_children.<locals>.<listcomp>   s5     0 0 0  DN33 0 0 0r    rr   r'   s   `r   get_childrenzSymbolTable.get_children   s8    	0 0 0 0+.0 0 0 	0r    N)r5   r6   r7   r)   rE   rK   rN   rP   rS   rV   rY   r\   r`   rh   rn   rd   rv   r8   r    r   r   r   *   s          
L L L? ? ?  
     " " "A A A( ( (
* * *
* * *
  H H H$ $ $
0 0 0 0 0r    r   c                   F    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S )r   Nc                 b     t           fd                                 D                       S )Nc              3   R   K   | ]!} j         j        |                   |V  "d S r   )r;   r^   )rk   rl   r(   	test_funcs     r   	<genexpr>z-Function.__idents_matching.<locals>.<genexpr>   sO       ? ?u!	$+"5e"<==?U ? ? ? ? ? ?r    )tupler`   )r(   rz   s   ``r   __idents_matchingzFunction.__idents_matching   sL     ? ? ? ? ?(<(<(>(> ? ? ? ? ? 	?r    c                 V    	 | j         |                     d           | _         | j         S )Nc                     | t           z  S r   )r   xs    r   <lambda>z)Function.get_parameters.<locals>.<lambda>   s
    A	M r    )_Function__params_Function__idents_matchingr'   s    r   get_parameterszFunction.get_parameters   s0    	=  223I3IJJDM}r    c                 |    	 | j         -t          t          ffd}|                     |          | _         | j         S )Nc                 ,    | t           z	  t          z  v S r   r   r   )r   locss    r   r   z%Function.get_locals.<locals>.<lambda>   s    qI~;D r    )_Function__localsr   r   r   )r(   testr   s     @r   
get_localszFunction.get_locals   sD    	= 4=DDDDDD 22488DM}r    c                 |    	 | j         -t          t          ffd}|                     |          | _         | j         S )Nc                 ,    | t           z	  t          z  v S r   r   )r   globs    r   r   z&Function.get_globals.<locals>.<lambda>   s    a9n
:tC r    )_Function__globalsr   r   r   )r(   r   r   s     @r   get_globalszFunction.get_globals   sE    	>!#_5DCCCCD!33D99DN~r    c                 V    	 | j         |                     d           | _         | j         S )Nc                     | t           z  S r   )r   r   s    r   r   z(Function.get_nonlocals.<locals>.<lambda>   s    q<?O r    )_Function__nonlocalsr   r'   s    r   get_nonlocalszFunction.get_nonlocals   s3    	##556O6OPPDr    c                 Z    	 | j         d }|                     |          | _         | j         S )Nc                 8    | t           z	  t          z  t          k    S r   )r   r   r   r   s    r   r   z$Function.get_frees.<locals>.<lambda>   s    i: =$F r    )_Function__freesr   )r(   is_frees     r   	get_freeszFunction.get_frees   s4    	<FFG11'::DL|r    )r5   r6   r7   r   r   r   r   r   r   r   r   r   r   r   r8   r    r   r   r      s         HHGIK? ? ?               r    r   c                       e Zd ZdZd ZdS )r   Nc                 ~    	 | j         /i }| j        j        D ]}d||j        <   t	          |          | _         | j         S )N   )_Class__methodsr;   r[   rB   r|   )r(   drq   s      r   get_methodszClass.get_methods   sJ    	>!Ak*  "'

"1XXDN~r    )r5   r6   r7   r   r   r8   r    r   r   r      s(        I    r    r   c                   v    e Zd Zddd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S )r   NFrb   c                p    || _         || _        |t          z	  t          z  | _        |pd| _        || _        d S )Nr8   )_Symbol__name_Symbol__flagsr   r   _Symbol__scope_Symbol__namespaces_Symbol__module_scope)r(   rB   rf   rg   rc   s        r   r)   zSymbol.__init__   s<    *j8&,"*r    c                 6    d                     | j                  S )Nz<symbol {0!r}>)rC   r   r'   s    r   rE   zSymbol.__repr__   s    &&t{333r    c                     	 | j         S r   )r   r'   s    r   rP   zSymbol.get_name   s    	{r    c                 F    	 t          | j        t          j        z            S r   )rU   r   r   r   r'   s    r   is_referencedzSymbol.is_referenced   s     	 DL9=0111r    c                 <    	 t          | j        t          z            S r   )rU   r   r   r'   s    r   is_parameterzSymbol.is_parameter       	DL9,---r    c                 t    	 t          | j        t          t          fv p| j        o| j        t          z            S r   )rU   r   r   r   r   r   r	   r'   s    r   	is_globalzSymbol.is_global   sB    	DL_o$FF J+Hy0HK K 	Kr    c                 <    	 t          | j        t          z            S r   )rU   r   r   r'   s    r   is_nonlocalzSymbol.is_nonlocal   s    6DL</000r    c                 >    	 t          | j        t          k              S r   )rU   r   r   r'   s    r   is_declared_globalzSymbol.is_declared_global  s    	$DLO3444r    c                 t    	 t          | j        t          t          fv p| j        o| j        t          z            S r   )rU   r   r   r   r   r   r	   r'   s    r   is_localzSymbol.is_local  sA    	DLUDM1 J+Hy0HK K 	Kr    c                 <    	 t          | j        t          z            S r   )rU   r   r
   r'   s    r   is_annotatedzSymbol.is_annotated  r   r    c                 >    	 t          | j        t          k              S r   )rU   r   r   r'   s    r   r   zSymbol.is_free  s    	 DLD()))r    c                 <    	 t          | j        t          z            S r   )rU   r   r   r'   s    r   is_importedzSymbol.is_imported  s    	 DL:-...r    c                 <    	 t          | j        t          z            S r   )rU   r   r   r'   s    r   is_assignedzSymbol.is_assigned  s    7DL9,---r    c                 ,    	 t          | j                  S r   )rU   r   r'   s    r   is_namespacezSymbol.is_namespace!  s    		 D%&&&r    c                     	 | j         S r   )r   r'   s    r   get_namespaceszSymbol.get_namespaces.  s    <  r    c                     	 t          | j                  dk    rt          d          t          | j                  dk    rt          d          | j        d         S )Nr   z#name is not bound to any namespacesr   z$name is bound to multiple namespaces)lenr   
ValueErrorr'   s    r   get_namespacezSymbol.get_namespace2  sa    	
 t !!Q&&BCCC"##a''CDDD$Q''r    r   )r5   r6   r7   r)   rE   rP   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r    r   r   r      s       +U + + + + +4 4 4  
2 2 2. . .
K K K1 1 15 5 5
K K K. . .
* * */ / /. . .' ' '! ! !( ( ( ( (r    r   __main__r   exec)+r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r$   __all__r   r"   r   r   r   r   r   r5   ossysopenargvfreadsrcpathsplitmodr`   rl   rh   infoprintr   r   r8   r    r   <module>r      s   8    4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 
D
D
D* * *       $ %$&&i0 i0 i0 i0 i0 i0 i0 i0X3 3 3 3 3{ 3 3 3l    K   b( b( b( b( b( b( b( b(H zNNNNNNN	chqk		 affhh              
(3chqk2215v
>
>C$$&& : :zz%  dDMMOOT%6%6%8%89999 
: :s   $CC	C	