def symtable(code, filename, compile_type): raw = _symtable.symtable(code, filename, compile_type) for top in raw.itervalues(): if top.name == 'top': break return _newSymbolTable(top, filename)
def symtable(code, filename, compile_type): """ 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. """ top = _symtable.symtable(code, filename, compile_type) return _newSymbolTable(top, filename)
def test_pickle_stentry(): st1 = _symtable.symtable('def f(x): return x', 'test', 'exec') assert repr(st1)[1:].startswith('symtable entry') s = pf.pickle_object(st1) st2 = pf.unpickle_object(s) assert type(st1) == type(st2) assert st1.lineno == st2.lineno assert st1.id == st2.id assert st1.varnames == st2.varnames assert st1.name == st2.name print "Symbol Table Entry pickling OK!"
def symtable(code, filename, compile_type): top = _symtable.symtable(code, filename, compile_type) return _newSymbolTable(top, filename)
def checkfilename(brokencode): try: _symtable.symtable(brokencode, "spam", "exec") except SyntaxError, e: vereq(e.filename, "spam")
from test.test_support import vereq, TestFailed import _symtable symbols = _symtable.symtable("def f(x): return x", "?", "exec") vereq(symbols[0].name, "global") vereq(len([ste for ste in symbols.values() if ste.name == "f"]), 1) # Bug tickler: SyntaxError file name correct whether error raised # while parsing or building symbol table. def checkfilename(brokencode): try: _symtable.symtable(brokencode, "spam", "exec") except SyntaxError, e: vereq(e.filename, "spam") else: raise TestFailed("no SyntaxError for %r" % (brokencode,)) checkfilename("def f(x): foo)(") # parse-time checkfilename("def f(x): global x") # symtable-build-time
from __future__ import absolute_import import _symtable from ._util import PY2, PY33 if PY2 or PY33: symtable_entry = type(_symtable.symtable('', '<string>', 'exec')) else: symtable_entry = type(next(iter(_symtable.symtable('', '<string>', 'exec').values())))
from test_support import verify import _symtable symbols = _symtable.symtable("def f(x): return x", "?", "exec") verify(symbols[0].name == "global") verify(len([ste for ste in symbols.values() if ste.name == "f"]) == 1)
def symtable(code, filename, compile_type): raw = _symtable.symtable(code, filename, compile_type) return newSymbolTable(raw[0], filename)
"""Interface to the compiler's internal symbol tables"""