a DOg@sTddlZddlmZmZmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZddlZgdZddZGdddZeZGdd d ZGd d d eZGd d d eZGdddZedkrPddlZddlZeejdZeZ Wdn1s0Yee ej!"ejdddZ#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_MASKFREELOCALGLOBAL_IMPLICITGLOBAL_EXPLICITCELL)symtable SymbolTableClassFunctionSymbolcCst|||}t||SN) _symtabler_newSymbolTable)codefilenameZ compile_typetopr-/opt/alt/python39/lib64/python3.9/symtable.pyr src@s$eZdZddZddZddZdS)SymbolTableFactorycCst|_dSr)weakrefZWeakValueDictionary_SymbolTableFactory__memoselfrrr__init__szSymbolTableFactory.__init__cCs6|jtjkrt||S|jtjkr,t||St||Sr)typer TYPE_FUNCTIONr TYPE_CLASSrr)r"tablerrrrnews     zSymbolTableFactory.newcCs8||f}|j|d}|dur4|||}|j|<|Sr)r getr()r"r'rkeyobjrrr__call__s zSymbolTableFactory.__call__N)__name__ __module__ __qualname__r#r(r,rrrrrsrc@s|eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZdS)rcCs||_||_i|_dSr)_table _filename_symbols)r"Z raw_tablerrrrr#'szSymbolTable.__init__cCsN|jtkrd}n d|jj}|jjdkr6d||jSd||jj|jSdS)Nz%s rz<{0}SymbolTable for module {1}>z<{0}SymbolTable for {1} in {2}>) __class__rr-r0nameformatr1)r"kindrrr__repr__,s   zSymbolTable.__repr__cCs:|jjtjkrdS|jjtjkr$dS|jjtjkr6dSdS)NmoduleZfunctionclass)r0r$rZ TYPE_MODULEr%r&r!rrrget_type9szSymbolTable.get_typecCs|jjSr)r0idr!rrrget_idCszSymbolTable.get_idcCs|jjSr)r0r5r!rrrget_nameFszSymbolTable.get_namecCs|jjSr)r0linenor!rrr get_linenoIszSymbolTable.get_linenocCst|jjtjkSr)boolr0r$rr%r!rrr is_optimizedLszSymbolTable.is_optimizedcCs t|jjSr)rAr0nestedr!rrr is_nestedOszSymbolTable.is_nestedcCs t|jjSr)rAr0childrenr!rrr has_childrenRszSymbolTable.has_childrencCs |jjSr)r0symbolskeysr!rrrget_identifiersUszSymbolTable.get_identifierscCsT|j|}|durP|jj|}||}|jjdk}t||||d}|j|<|S)Nr module_scope)r2r)r0rG_SymbolTable__check_childrenr5r)r"r5Zsymflags namespacesrKrrrlookupXs    zSymbolTable.lookupcsfddDS)Ncsg|]}|qSr)rO.0identr!rr cz+SymbolTable.get_symbols..)rIr!rr!r get_symbolsbszSymbolTable.get_symbolscsfddjjDS)Ncs"g|]}|jkrt|jqSr)r5rr1rQstr5r"rrrSfs z0SymbolTable.__check_children..r0rE)r"r5rrXrZ__check_childrenes zSymbolTable.__check_childrencsfddjjDS)Ncsg|]}t|jqSr)rr1rVr!rrrSksz,SymbolTable.get_children..rYr!rr!r get_childrenjs zSymbolTable.get_childrenN)r-r.r/r#r8r;r=r>r@rBrDrFrIrOrUrLrZrrrrr%s   rc@sPeZdZdZdZdZdZdZddZddZ ddZ dd Z d d Z d d Z dS)rNcstfddDS)Nc3s"|]}jj|r|VqdSr)r0rGrPr"Z test_funcrr ysz-Function.__idents_matching..)tuplerIr[rr[rZ__idents_matchingxszFunction.__idents_matchingcCs |jdur|dd|_|jS)NcSs|t@Sr)rxrrr~rTz)Function.get_parameters..)_Function__params_Function__idents_matchingr!rrrget_parameters|s zFunction.get_parameterscs0|jdur*ttffdd}|||_|jS)Ncs|t?t@vSrr r r^Zlocsrrr`rTz%Function.get_locals..)_Function__localsr rrbr"testrrer get_localss    zFunction.get_localscs0|jdur*ttffdd}|||_|jS)Ncs|t?t@vSrrdr^Zglobrrr`rTz&Function.get_globals..)_Function__globalsrrrbrgrrjr get_globalss    zFunction.get_globalscCs |jdur|dd|_|jS)NcSs|t@Sr)rr^rrrr`rTz(Function.get_nonlocals..)_Function__nonlocalsrbr!rrr get_nonlocalss zFunction.get_nonlocalscCs$|jdurdd}|||_|jS)NcSs|t?t@tkSr)r r r r^rrrr`rTz$Function.get_frees..)_Function__freesrb)r"is_freerrr get_freess  zFunction.get_frees)r-r.r/rarfrorkrmrbrcrirlrnrqrrrrrosrc@seZdZdZddZdS)rNcCs6|jdur0i}|jjD]}d||j<qt||_|jS)N)_Class__methodsr0rEr5r])r"drWrrr get_methodss     zClass.get_methods)r-r.r/rsrurrrrrsrc@seZdZd$ddddZddZdd Zd d Zd d ZddZddZ ddZ ddZ ddZ ddZ ddZddZddZd d!Zd"d#ZdS)%rNFrJcCs.||_||_|t?t@|_|p d|_||_dS)Nr) _Symbol__name_Symbol__flagsr r _Symbol__scope_Symbol__namespaces_Symbol__module_scope)r"r5rMrNrKrrrr#s  zSymbol.__init__cCs d|jS)Nz)r6rvr!rrrr8szSymbol.__repr__cCs|jSr)rvr!rrrr>szSymbol.get_namecCst|jtj@Sr)rArwrrr!rrr is_referencedszSymbol.is_referencedcCst|jt@Sr)rArwrr!rrr is_parameterszSymbol.is_parametercCs"t|jttfvp|jo|jt@Sr)rArxrrrzrwrr!rrr is_globalszSymbol.is_globalcCst|jt@Sr)rArwrr!rrr is_nonlocalszSymbol.is_nonlocalcCst|jtkSr)rArxrr!rrris_declared_globalszSymbol.is_declared_globalcCs"t|jttfvp|jo|jt@Sr)rArxr rrzrwrr!rrris_localszSymbol.is_localcCst|jt@Sr)rArwr r!rrr is_annotatedszSymbol.is_annotatedcCst|jtkSr)rArxr r!rrrrpszSymbol.is_freecCst|jt@Sr)rArwrr!rrr is_importedszSymbol.is_importedcCst|jt@Sr)rArwrr!rrr is_assignedszSymbol.is_assignedcCs t|jSr)rAryr!rrr is_namespaces zSymbol.is_namespacecCs|jSr)ryr!rrrget_namespacesszSymbol.get_namespacescCs t|jdkrtd|jdS)Nrrz$name is bound to multiple namespacesr)lenry ValueErrorr!rrr get_namespaceszSymbol.get_namespace)N)r-r.r/r#r8r>r{r|r}r~rrrrprrrrrrrrrrs  r__main__rrexec)+rrrrrrrrr r r r r rrrr__all__rrrrrrrr-ossysopenargvfreadsrcpathsplitmodrIrRrOinfoprintrrrrrrs$DJ, M &