File: //lib64/python3.9/__pycache__/symtable.cpython-39.opt-2.pyc
a
    �DOg�  �                   @   sT  d dl Z d dl mZmZmZmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZ d dlZg d�Zdd� ZG dd� d�Ze� ZG dd	� d	�ZG d
d� de�ZG dd
� d
e�ZG dd� d�Zedk�rPd dlZd dlZeejd  ��Ze�� Z W d  � n1 s�0    Y  ee ej!�"ejd  �d d�Z#e#�$� D ]$Z%e#�&e%�Z'e(e'e'�)� e'�*� � �q*dS )�    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                 C   s   t �| ||�}t||�S �N)�	_symtabler   �_newSymbolTable)�code�filenameZcompile_type�top� r   � /usr/lib64/python3.9/symtable.pyr      s    r   c                   @   s$   e Zd Zdd� Zdd� Zdd� ZdS )�SymbolTableFactoryc                 C   s   t �� | _d S r   )�weakref�WeakValueDictionary�_SymbolTableFactory__memo��selfr   r   r   �__init__   s    zSymbolTableFactory.__init__c                 C   s6   |j tjkrt||�S |j tjkr,t||�S t||�S r   )�typer   �
TYPE_FUNCTIONr   �
TYPE_CLASSr   r   )r#   �tabler   r   r   r   �new   s
    
zSymbolTableFactory.newc                 C   s8   ||f}| j �|d �}|d u r4| �||� }| j |<