o ?Og'@sV ddlZddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlZgdZddZGdddZeZGdd d ZGd d d eZGd d d eZGdddZedkrddlZddlZeejd ZeZ Wdn1s}wYee ej!"ejdddZ#e#$D]Z%e#&e%Z'e(e'e')e'*qdSdS)N)USE DEF_GLOBAL DEF_NONLOCAL DEF_LOCAL DEF_PARAM DEF_IMPORT DEF_BOUND DEF_ANNOT SCOPE_OFF SCOPE_MASKFREELOCALGLOBAL_IMPLICITGLOBAL_EXPLICITCELL)symtable SymbolTableClassFunctionSymbolcCs t|||}t||SN) _symtabler_newSymbolTable)codefilenameZ compile_typetopr//opt/alt/python310/lib64/python3.10/symtable.pyr s rc@s$eZdZddZddZddZdS)SymbolTableFactorycCst|_dSr)weakrefZWeakValueDictionary_SymbolTableFactory__memoselfrrr__init__szSymbolTableFactory.__init__cCs6|jtjkr t||S|jtjkrt||St||Sr)typer TYPE_FUNCTIONr TYPE_CLASSrr)r"tablerrrrnews     zSymbolTableFactory.newcCs8||f}|j|d}|dur|||}|j|<|Sr)r getr()r"r'rkeyobjrrr__call__ s zSymbolTableFactory.__call__N)__name__ __module__ __qualname__r#r(r,rrrrrs rc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)rcCs||_||_i|_dSr)_table _filename_symbols)r"Z raw_tablerrrrr#,s zSymbolTable.__init__cCsJ|jtkrd}nd|jj}|jjdkrd||jSd||jj|jS)Nz%s rz<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>) __class__rr-r0nameformatr1)r"kindrrr__repr__1s   zSymbolTable.__repr__cCs< |jjtjkr dS|jjtjkrdS|jjtjkrdSdS)NmoduleZfunctionclass)r0r$rZ TYPE_MODULEr%r&r!rrrget_type>szSymbolTable.get_typecC |jjSr)r0idr!rrrget_idMszSymbolTable.get_idcCr<r)r0r5r!rrrget_nameRszSymbolTable.get_namecCr<r)r0linenor!rrr get_lineno[szSymbolTable.get_linenocCs t|jjtjkSr)boolr0r$rr%r!rrr is_optimizedaszSymbolTable.is_optimizedcC t|jjSr)rBr0nestedr!rrr is_nestedg zSymbolTable.is_nestedcCrDr)rBr0childrenr!rrr has_childrenlrGzSymbolTable.has_childrencCs |jjSr)r0symbolskeysr!rrrget_identifiersqrGzSymbolTable.get_identifierscCsV |j|}|dur)|jj|}||}|jjdk}t||||d}|j|<|S)Nr module_scope)r2r)r0rJ_SymbolTable__check_childrenr5r)r"r5Zsymflags namespacesrNrrrlookupvs    zSymbolTable.lookupcs fddDS)Ncsg|]}|qSr)rR.0identr!rr sz+SymbolTable.get_symbols..)rLr!rr!r get_symbolsszSymbolTable.get_symbolscsfddjjDS)Ncs"g|] }|jkrt|jqSr)r5rr1rTstr5r"rrrVs   z0SymbolTable.__check_children..r0rH)r"r5rrZrZ__check_childrens zSymbolTable.__check_childrencs fddjjDS)Ncsg|]}t|jqSr)rr1rXr!rrrVsz,SymbolTable.get_children..r[r!rr!r get_childrens zSymbolTable.get_childrenN)r-r.r/r#r8r;r>r?rArCrFrIrLrRrWrOr\rrrrr*s   rc@sPeZdZdZdZdZdZdZddZddZ ddZ dd Z d d Z d d Z dS)rNcstfddDS)Nc3s$|] }jj|r|VqdSr)r0rJrSr"Z test_funcrr sz-Function.__idents_matching..)tuplerLr]rr]rZ__idents_matchingszFunction.__idents_matchingcC" |jdur|dd|_|jS)NcS|t@Sr)rxrrrz)Function.get_parameters..)_Function__params_Function__idents_matchingr!rrrget_parameters zFunction.get_parametersc2 |jdurttffdd}|||_|jS)Nc|t?t@vSrr r rbZlocsrrrdz%Function.get_locals..)_Function__localsr rrgr"testrrmr get_locals    zFunction.get_localscrj)NcrkrrlrbZglobrrrdrnz&Function.get_globals..)_Function__globalsrrrgrprrtr get_globalsrszFunction.get_globalscCr`)NcSrar)rrbrrrrdrez(Function.get_nonlocals..)_Function__nonlocalsrgr!rrr get_nonlocalsrizFunction.get_nonlocalscCs& |jdurdd}|||_|jS)NcSs|t?t@tkSr)r r r rbrrrrdrnz$Function.get_frees..)_Function__freesrg)r"is_freerrr get_freess   zFunction.get_frees)r-r.r/rfroryrurwrgrhrrrvrxr{rrrrrs  rc@seZdZdZddZdS)rNcCs8 |jduri}|jjD]}d||j<q t||_|jS)N)_Class__methodsr0rHr5r_)r"drYrrr get_methodss    zClass.get_methods)r-r.r/r}rrrrrrs rc@seZdZd$ddddZddZdd Zd d Zd d ZddZddZ ddZ ddZ ddZ ddZ ddZddZddZd d!Zd"d#ZdS)%rNFrMcCs.||_||_|t?t@|_|pd|_||_dS)Nr) _Symbol__name_Symbol__flagsr r _Symbol__scope_Symbol__namespaces_Symbol__module_scope)r"r5rPrQrNrrrr#s   zSymbol.__init__cCs d|jS)Nz)r6rr!rrrr8s zSymbol.__repr__cC |jSr)rr!rrrr?szSymbol.get_namecCs t|jtj@Sr)rBrrrr!rrr is_referencedszSymbol.is_referencedcC t|jt@Sr)rBrrr!rrr is_parameterzSymbol.is_parametercC$ t|jttfvp|jo|jt@Sr)rBrrrrrrr!rrr is_globalzSymbol.is_globalcCrr)rBrrr!rrr is_nonlocalzSymbol.is_nonlocalcC t|jtkSr)rBrrr!rrris_declared_globalrzSymbol.is_declared_globalcCrr)rBrr rrrrr!rrris_localrzSymbol.is_localcCrr)rBrr r!rrr is_annotated rzSymbol.is_annotatedcCrr)rBrr r!rrrrzzSymbol.is_freecCrr)rBrrr!rrr is_importedrzSymbol.is_importedcCrr)rBrrr!rrr is_assignedrzSymbol.is_assignedcCs t|jSr)rBrr!rrr is_namespace!s zSymbol.is_namespacecCrr)rr!rrrget_namespaces.szSymbol.get_namespacescCs" t|jdkr td|jdS)Nr|z$name is bound to multiple namespacesr)lenr ValueErrorr!rrr get_namespace2s zSymbol.get_namespacer)r-r.r/r#r8r?rrrrrrrrzrrrrrrrrrrs" r__main__r|exec)+rrrrrrrrr r r r r rrrr__all__rrrrrrrr-ossysopenargvfreadsrcpathsplitmodrLrUrRinfoprintrrrrrrs.D l6`