File: //proc/self/root/opt/alt/python37/lib64/python3.7/__pycache__/symtable.cpython-37.pyc
B
    � fo  �            	   @   sN  d Z ddlZddlmZmZmZmZmZmZmZm	Z	m
Z
mZmZm
Z
mZmZ ddlZdddddgZd	d� ZG d
d� d�Ze� ZG dd� de�ZG d
d� de�ZG dd� de�ZG dd� de�Zedk�rJddlZddlZeejd ��Ze� � Z!W dQ R X ee!ej"�#ejd �d d�Z$x0e$�%� D ]$Z&e$�'e&�Z(e)e(e(�*� e(�+� � �q"W dS )z2Interface to the compiler's internal symbol tables�    N)�USE�
DEF_GLOBAL�	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   �-/opt/alt/python37/lib64/python3.7/symtable.pyr      s    c               @   s$   e Zd Zdd� Zdd� Zdd� ZdS )�SymbolTableFactoryc             C   s   t �� | _d S )N)�weakrefZWeakValueDictionary�_SymbolTableFactory__memo)�selfr   r   r   �__init__   s    zSymbolTableFactory.__init__c             C   s6   |j tjkrt||�S |j tjkr,t||�S t||�S )N)�typer   �
TYPE_FUNCTIONr   �
TYPE_CLASSr   r   )r   �tabler   r   r   r   �new   s
    
zSymbolTableFactory.newc             C   s8   ||f}| j �|d �}|d kr4| �||� }| j |<