� !A?h�( � �� � d Z ddlZddlmZmZmZmZmZmZmZm Z m Z mZmZm Z mZmZmZ ddlZg d�Zd� Z G d� d� � Z e� � Z G d� d � � Z G d � de� � Z G d� d e� � Z G d� d� � Zedk r�ddlZddlZ eej d � � 5 Ze� � � Z!ddd� � n# 1 swxY w Y ee!ej" �# ej d � � d d� � Z$e$�% � � D ]JZ&e$�' e&� � Z( e)e(e(�* � � e(�+ � � � � �IdS dS )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 � t j | ||� � }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 �5/opt/alt/python-internal/lib64/python3.11/symtable.pyr r s( � � � �T�8�\� :� :�C��3��)�)�)� c � � e Zd Zd� Zd� Zd� ZdS )�SymbolTableFactoryc �6 � t j � � | _ d S �N)�weakref�WeakValueDictionary�_SymbolTableFactory__memo��selfs r �__init__zSymbolTableFactory.__init__ s � ��1�3�3����r c � � |j t j k rt ||� � S |j t j k rt ||� � S t ||� � S r# )�typer � TYPE_FUNCTIONr � TYPE_CLASSr r )r( �tabler s r �newzSymbolTableFactory.new sR � ��:��0�0�0��E�8�,�,�,��:��-�-�-����)�)�)��5�(�+�+�+r c � � ||f}| j � |d � � }|� | � ||� � x}| j |<