o
9j' @ sX d Z ddlZddlmZmZmZmZmZmZmZm Z m
Z
mZmZm
Z
mZmZmZ ddlZg dZdd ZG dd dZe ZG d d
d
ZG dd deZG d
d deZG dd dZedkrddlZddlZeejd Ze Z!W d n1 s~w Y ee!ej"#ejd d dZ$e$% D ]Z&e$'e&Z(e)e(e(* e(+ qdS dS )z2Interface to the compiler's internal symbol tables N)USE
DEF_GLOBALDEF_NONLOCAL DEF_LOCAL DEF_PARAM
DEF_IMPORT DEF_BOUND DEF_ANNOT SCOPE_OFF
SCOPE_MASKFREELOCALGLOBAL_IMPLICITGLOBAL_EXPLICITCELL)symtableSymbolTableClassFunctionSymbolc C s t | ||}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)codefilenamecompile_typetop r /usr/lib/python3.10/symtable.pyr s
r c @ s$ e Zd Zdd Zdd Zdd ZdS )SymbolTableFactoryc C s t | _d S N)weakrefWeakValueDictionary_SymbolTableFactory__memoselfr r r __init__ s zSymbolTableFactory.__init__c C s6 |j tjkrt||S |j tjkrt||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 r| || }| j |<