Your IP : 3.145.84.128


Current Path : /opt/alt/python311/lib64/python3.11/__pycache__/
Upload File :
Current File : //opt/alt/python311/lib64/python3.11/__pycache__/symtable.cpython-311.opt-1.pyc

�

c��f�(����dZddlZddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZmZddlZgd�Zd�ZGd�d��Ze��ZGd�d	��ZGd
�de��ZGd�d
e��ZGd�d��Zedkr�ddlZddlZeejd��5Ze� ��Z!ddd��n#1swxYwYee!ej"�#ejd��dd��Z$e$�%��D]JZ&e$�'e&��Z(e)e(e(�*��e(�+�����IdSdS)z2Interface to the compiler's internal symbol tables�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�N�tj|||��}t||��S)z� Return the toplevel *SymbolTable* for the source code.

    *filename* is the name of the file with the code
    and *compile_type* is the *compile()* mode argument.
    )�	_symtabler�_newSymbolTable)�code�filename�compile_type�tops    �//opt/alt/python311/lib64/python3.11/symtable.pyrrs(���
�T�8�\�
:�
:�C��3��)�)�)�c� �eZdZd�Zd�Zd�ZdS)�SymbolTableFactoryc�6�tj��|_dS�N)�weakref�WeakValueDictionary�_SymbolTableFactory__memo��selfs r�__init__zSymbolTableFactory.__init__s���1�3�3����rc��|jtjkrt||��S|jtjkrt||��St
||��Sr#)�typer�
TYPE_FUNCTIONr�
TYPE_CLASSrr)r(�tablers   r�newzSymbolTableFactory.newsR���:��0�0�0��E�8�,�,�,��:��-�-�-����)�)�)��5�(�+�+�+rc��||f}|j�|d��}|� |�||��x}|j|<|Sr#)r&�getr/)r(r.r�key�objs     r�__call__zSymbolTableFactory.__call__ sI���X�o���k�o�o�c�4�(�(���;�%)�X�X�e�X�%>�%>�>�C�$�+�c�"��
rN)�__name__�
__module__�__qualname__r)r/r4�rrr!r!sA������4�4�4�,�,�,�����rr!c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)rc�0�||_||_i|_dSr#)�_table�	_filename�_symbols)r(�	raw_tablers   rr)zSymbolTable.__init__,s�����!�����
�
�
rc���|jtkrd}nd|jjz}|jjdkrd�||j��Sd�||jj|j��S)N�z%s rz<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>)�	__class__rr5r;�name�formatr<)r(�kinds  r�__repr__zSymbolTable.__repr__1sw���>�[�(�(��D�D��4�>�2�2�D��;��u�$�$�4�;�;�D�$�.�Q�Q�Q�4�;�;�D�<@�K�<L�<@�N�L�L�
Lrc��|jjtjkrdS|jjtjkrdS|jjtjkrdSdS)zxReturn the type of the symbol table.

        The values returned are 'class', 'module' and
        'function'.
        �module�function�classN)r;r+r�TYPE_MODULEr,r-r's r�get_typezSymbolTable.get_type>sT���;��y�4�4�4��8��;��y�6�6�6��:��;��y�3�3�3��7�4�3rc��|jjS)z,Return an identifier for the table.
        )r;�idr's r�get_idzSymbolTable.get_idMs���{�~�rc��|jjS)z�Return the table's name.

        This corresponds to the name of the class, function
        or 'top' if the table is for a class, function or
        global respectively.
        )r;rBr's r�get_namezSymbolTable.get_nameRs���{��rc��|jjS)zPReturn the number of the first line in the
        block for the table.
        )r;�linenor's r�
get_linenozSymbolTable.get_lineno[s���{�!�!rc�P�t|jjtjk��S)zJReturn *True* if the locals in the table
        are optimizable.
        )�boolr;r+rr,r's r�is_optimizedzSymbolTable.is_optimizedas���D�K�$�	�(?�?�@�@�@rc�4�t|jj��S)zAReturn *True* if the block is a nested class
        or function.)rUr;�nestedr's r�	is_nestedzSymbolTable.is_nestedgs���D�K�&�'�'�'rc�4�t|jj��S)z:Return *True* if the block has nested namespaces.
        )rUr;�childrenr's r�has_childrenzSymbolTable.has_childrenls���D�K�(�)�)�)rc�>�|jj���S)zKReturn a view object containing the names of symbols in the table.
        )r;�symbols�keysr's r�get_identifierszSymbolTable.get_identifiersqs���{�"�'�'�)�)�)rc���|j�|��}|�T|jj|}|�|��}|jjdk}t
||||���x}|j|<|S)zLLookup a *name* in the table.

        Returns a *Symbol* instance.
        Nr��module_scope)r=r1r;r^�_SymbolTable__check_childrenrBr)r(rB�sym�flags�
namespacesrcs      r�lookupzSymbolTable.lookupvs���
�m����%�%���;��K�'��-�E��.�.�t�4�4�J� �K�,��5�L�(.�t�U�J�<H�)J�)J�)J�
J�C�$�-��%��
rc�D���fd�����D��S)zLReturn a list of *Symbol* instances for
        names in the table.
        c�:��g|]}��|����Sr8)rh)�.0�identr(s  �r�
<listcomp>z+SymbolTable.get_symbols.<locals>.<listcomp>�s%���G�G�G�u����E�"�"�G�G�Gr)r`r's`r�get_symbolszSymbolTable.get_symbols�s,���H�G�G�G��0D�0D�0F�0F�G�G�G�Grc�8�����fd��jjD��S)Nc�P��g|]"}|j�k�
t|�j����#Sr8)rBrr<)rk�strBr(s  ��rrmz0SymbolTable.__check_children.<locals>.<listcomp>�s8���$�$�$���7�d�?�?� ��D�N�3�3�"�?�?r�r;r[)r(rBs``r�__check_childrenzSymbolTable.__check_children�s9����$�$�$�$�$��+�.�$�$�$�	$rc�4���fd��jjD��S)z3Return a list of the nested symbol tables.
        c�:��g|]}t|�j����Sr8)rr<)rkrqr(s  �rrmz,SymbolTable.get_children.<locals>.<listcomp>�s5���0�0�0�� ��D�N�3�3�0�0�0rrrr's`r�get_childrenzSymbolTable.get_children�s3���0�0�0�0��+�.�0�0�0�	0rN)r5r6r7r)rErKrNrPrSrVrYr\r`rhrnrdrvr8rrrr*s����������
L�L�L�
?�
?�
?����
 � � �"�"�"�A�A�A�(�(�(�
*�*�*�
*�*�*�
���H�H�H�$�$�$�
0�0�0�0�0rrc�F�eZdZdZdZdZdZdZd�Zd�Z	d�Z
d�Zd�Zd�Z
dS)rNc�b���t��fd�����D����S)Nc3�R�K�|]!}��jj|���|V��"dSr#)r;r^)rkrlr(�	test_funcs  ��r�	<genexpr>z-Function.__idents_matching.<locals>.<genexpr>�sO�����?�?�u�!�	�$�+�"5�e�"<�=�=�?�U�?�?�?�?�?�?r)�tupler`)r(rzs``r�__idents_matchingzFunction.__idents_matching�sL�����?�?�?�?�?��(<�(<�(>�(>�?�?�?�?�?�	?rc�T�|j�|�d���|_|jS)z6Return a tuple of parameters to the function.
        Nc��|tzSr#)r��xs r�<lambda>z)Function.get_parameters.<locals>.<lambda>�s
��A�	�M�r)�_Function__params�_Function__idents_matchingr's r�get_parameterszFunction.get_parameters�s-���=� � �2�2�3I�3I�J�J�D�M��}�rc�z��|j�-ttf��fd�}|�|��|_|jS)z2Return a tuple of locals in the function.
        Nc�,��|tz	tz�vSr#�rr)r��locss �rr�z%Function.get_locals.<locals>.<lambda>�s���q�I�~��;��D�r)�_Function__localsrrr�)r(�testr�s  @r�
get_localszFunction.get_locals�sA����=� ��4�=�D�D�D�D�D�D� �2�2�4�8�8�D�M��}�rc�z��|j�-ttf��fd�}|�|��|_|jS)z3Return a tuple of globals in the function.
        Nc�,��|tz	tz�vSr#r�)r��globs �rr�z&Function.get_globals.<locals>.<lambda>�s���a�9�n�
�:�t�C�r)�_Function__globalsrrr�)r(r�r�s  @r�get_globalszFunction.get_globals�sB����>�!�#�_�5�D�C�C�C�C�D�!�3�3�D�9�9�D�N��~�rc�T�|j�|�d���|_|jS)z5Return a tuple of nonlocals in the function.
        Nc��|tzSr#)rr�s rr�z(Function.get_nonlocals.<locals>.<lambda>�s��q�<�?O�r)�_Function__nonlocalsr�r's r�
get_nonlocalszFunction.get_nonlocals�s0����#�#�5�5�6O�6O�P�P�D����rc�X�|j�d�}|�|��|_|jS)z:Return a tuple of free variables in the function.
        Nc�8�|tz	tztkSr#)rrr
r�s rr�z$Function.get_frees.<locals>.<lambda>�s���i��:� =�$�F�r)�_Function__freesr�)r(�is_frees  r�	get_freeszFunction.get_frees�s1���<��F�F�G��1�1�'�:�:�D�L��|�r)r5r6r7r�r�r�r�r�r�r�r�r�r�r�r8rrrr�s��������H��H��G��I��K�?�?�?���������� � � �����rrc��eZdZdZd�ZdS)rNc�|�|j�/i}|jjD]}d||j<�
t	|��|_|jS)z9Return a tuple of methods declared in the class.
        N�)�_Class__methodsr;r[rBr|)r(�drqs   r�get_methodszClass.get_methods�sG���>�!��A��k�*�
�
����"�'�
�
�"�1�X�X�D�N��~�r)r5r6r7r�r�r8rrrr�s(�������I�����rrc�v�eZdZddd�d�Zd�Zd�Zd�Zd�Zd	�Zd
�Z	d�Z
d�Zd
�Zd�Z
d�Zd�Zd�Zd�Zd�ZdS)rNFrbc�p�||_||_|tz	tz|_|pd|_||_dS)Nr8)�
_Symbol__name�_Symbol__flagsrr�_Symbol__scope�_Symbol__namespaces�_Symbol__module_scope)r(rBrfrgrcs     rr)zSymbol.__init__�s<����������*�j�8���&�,�"���*����rc�6�d�|j��S)Nz<symbol {0!r}>)rCr�r's rrEzSymbol.__repr__�s���&�&�t�{�3�3�3rc��|jS)z#Return a name of a symbol.
        )r�r's rrPzSymbol.get_name�s���{�rc�D�t|jtjz��S)zBReturn *True* if the symbol is used in
        its block.
        )rUr�rrr's r�
is_referencedzSymbol.is_referenced�s���D�L�9�=�0�1�1�1rc�:�t|jtz��S)z4Return *True* if the symbol is a parameter.
        )rUr�rr's r�is_parameterzSymbol.is_parameter�����D�L�9�,�-�-�-rc�r�t|jttfvp|jo|jtz��S)z/Return *True* if the symbol is global.
        )rUr�rrr�r�r	r's r�	is_globalzSymbol.is_global�s?���D�L�_�o�$F�F�J��+�H���y�0H�K�K�	Krc�:�t|jtz��S)z(Return *True* if the symbol is nonlocal.)rUr�rr's r�is_nonlocalzSymbol.is_nonlocal�s���D�L�<�/�0�0�0rc�<�t|jtk��S)zOReturn *True* if the symbol is declared global
        with a global statement.)rUr�rr's r�is_declared_globalzSymbol.is_declared_globals���D�L�O�3�4�4�4rc�r�t|jttfvp|jo|jtz��S)z.Return *True* if the symbol is local.
        )rUr�rrr�r�r	r's r�is_localzSymbol.is_locals>���D�L�U�D�M�1�J��+�H���y�0H�K�K�	Krc�:�t|jtz��S)z2Return *True* if the symbol is annotated.
        )rUr�r
r's r�is_annotatedzSymbol.is_annotatedr�rc�<�t|jtk��S)zIReturn *True* if a referenced symbol is
        not assigned to.
        )rUr�r
r's rr�zSymbol.is_frees���D�L�D�(�)�)�)rc�:�t|jtz��S)zQReturn *True* if the symbol is created from
        an import statement.
        )rUr�rr's r�is_importedzSymbol.is_importeds���D�L�:�-�.�.�.rc�:�t|jtz��S)z)Return *True* if a symbol is assigned to.)rUr�rr's r�is_assignedzSymbol.is_assigneds���D�L�9�,�-�-�-rc�*�t|j��S)a�Returns *True* if name binding introduces new namespace.

        If the name is used as the target of a function or class
        statement, this will be true.

        Note that a single name can be bound to multiple objects.  If
        is_namespace() is true, the name may also be bound to other
        objects, like an int or list, that does not introduce a new
        namespace.
        )rUr�r's r�is_namespacezSymbol.is_namespace!s���D�%�&�&�&rc��|jS)z.Return a list of namespaces bound to this name)r�r's r�get_namespaceszSymbol.get_namespaces.s��� � rc��t|j��dkrtd���t|j��dkrtd���|jdS)z�Return the single namespace bound to this name.

        Raises ValueError if the name is bound to multiple namespaces
        or no namespace.
        rz#name is not bound to any namespacesr�z$name is bound to multiple namespaces)�lenr��
ValueErrorr's r�
get_namespacezSymbol.get_namespace2s\���t� �!�!�Q�&�&��B�C�C�C�
��"�
#�
#�a�
'�
'��C�D�D�D��$�Q�'�'rr#)r5r6r7r)rErPr�r�r�r�r�r�r�r�r�r�r�r�r�r8rrrr�s������+�U�+�+�+�+�+�4�4�4����
2�2�2�.�.�.�
K�K�K�1�1�1�5�5�5�
K�K�K�.�.�.�
*�*�*�/�/�/�.�.�.�'�'�'�!�!�!�(�(�(�(�(rr�__main__r��exec),�__doc__rrrrrrrr	r
rrr
rrrrr$�__all__rr!rrrrrr5�os�sys�open�argv�f�read�src�path�split�modr`rlrh�info�printr�r�r8rr�<module>r�s���8�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��*�*�*���������$%�$�&�&��i0�i0�i0�i0�i0�i0�i0�i0�X3�3�3�3�3�{�3�3�3�l�����K����b(�b(�b(�b(�b(�b(�b(�b(�H�z����N�N�N�N�N�N�N�	
��c�h�q�k�	�	��a��f�f�h�h��������������������
�(�3���
�
�c�h�q�k�2�2�1�5�v�
>�
>�C��$�$�&�&�:�:���z�z�%� � ��
��d�D�M�M�O�O�T�%6�%6�%8�%8�9�9�9�9���
:�:s�%C�C
�
C


?>