Linux mail.vriendennsm.nl 6.1.0-51-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64
Apache/2.4.68 (Debian)
Server IP : 217.154.75.17 & Your IP : 216.73.216.195
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
snap /
core24 /
1587 /
usr /
lib /
python3.12 /
Delete
Unzip
Name
Size
Permission
Date
Action
__phello__
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
__pycache__
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
asyncio
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
collections
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
concurrent
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
ctypes
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
curses
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
dbm
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
email
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
encodings
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
html
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
http
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
importlib
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
json
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
lib-dynload
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
logging
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
multiprocessing
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
pydoc_data
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
re
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
sqlite3
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
test
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
tomllib
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
unittest
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
urllib
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
venv
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
wsgiref
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
xml
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
xmlrpc
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
zipfile
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
zoneinfo
[ DIR ]
drwxr-xr-x
2026-03-17 03:54
EXTERNALLY-MANAGED
645
B
-rw-r--r--
2026-03-03 12:15
LICENSE.txt
13.61
KB
-rw-r--r--
2026-03-03 12:15
__future__.py
5.1
KB
-rw-r--r--
2026-03-03 12:15
__hello__.py
227
B
-rw-r--r--
2026-03-03 12:15
_aix_support.py
3.93
KB
-rw-r--r--
2026-03-03 12:15
_collections_abc.py
31.33
KB
-rw-r--r--
2026-03-03 12:15
_compat_pickle.py
8.56
KB
-rw-r--r--
2026-03-03 12:15
_compression.py
5.55
KB
-rw-r--r--
2026-03-03 12:15
_distutils_system_mod.py
5.58
KB
-rw-r--r--
2026-03-03 12:15
_markupbase.py
14.31
KB
-rw-r--r--
2026-03-03 12:15
_osx_support.py
21.51
KB
-rw-r--r--
2026-03-03 12:15
_py_abc.py
6.04
KB
-rw-r--r--
2026-03-03 12:15
_pydatetime.py
89.94
KB
-rw-r--r--
2026-03-03 12:15
_pydecimal.py
223.85
KB
-rw-r--r--
2026-03-03 12:15
_pyio.py
91.4
KB
-rw-r--r--
2026-03-03 12:15
_pylong.py
8.83
KB
-rw-r--r--
2026-03-03 12:15
_sitebuiltins.py
3.05
KB
-rw-r--r--
2026-03-03 12:15
_strptime.py
24.04
KB
-rw-r--r--
2026-03-03 12:15
_sysconfigdata__linux_x86_64-linux-gnu.py
48.34
KB
-rw-r--r--
2026-03-03 12:15
_sysconfigdata__x86_64-linux-gnu.py
48.34
KB
-rw-r--r--
2026-03-03 12:15
_threading_local.py
7.05
KB
-rw-r--r--
2026-03-03 12:15
_weakrefset.py
5.75
KB
-rw-r--r--
2026-03-03 12:15
abc.py
6.38
KB
-rw-r--r--
2026-03-03 12:15
aifc.py
33.41
KB
-rw-r--r--
2026-03-03 12:15
antigravity.py
500
B
-rw-r--r--
2026-03-03 12:15
argparse.py
99.37
KB
-rw-r--r--
2026-03-03 12:15
ast.py
62.75
KB
-rw-r--r--
2026-03-03 12:15
base64.py
20.12
KB
-rwxr-xr-x
2026-03-03 12:15
bdb.py
31.7
KB
-rw-r--r--
2026-03-03 12:15
bisect.py
3.34
KB
-rw-r--r--
2026-03-03 12:15
bz2.py
11.57
KB
-rw-r--r--
2026-03-03 12:15
cProfile.py
6.4
KB
-rwxr-xr-x
2026-03-03 12:15
calendar.py
24.82
KB
-rw-r--r--
2026-03-03 12:15
cgi.py
33.61
KB
-rwxr-xr-x
2026-03-03 12:15
cgitb.py
12.13
KB
-rw-r--r--
2026-03-03 12:15
chunk.py
5.37
KB
-rw-r--r--
2026-03-03 12:15
cmd.py
14.52
KB
-rw-r--r--
2026-03-03 12:15
code.py
10.44
KB
-rw-r--r--
2026-03-03 12:15
codecs.py
36.01
KB
-rw-r--r--
2026-03-03 12:15
codeop.py
5.77
KB
-rw-r--r--
2026-03-03 12:15
colorsys.py
3.97
KB
-rw-r--r--
2026-03-03 12:15
compileall.py
20.12
KB
-rw-r--r--
2026-03-03 12:15
configparser.py
52.53
KB
-rw-r--r--
2026-03-03 12:15
contextlib.py
26.99
KB
-rw-r--r--
2026-03-03 12:15
contextvars.py
129
B
-rw-r--r--
2026-03-03 12:15
copy.py
8.21
KB
-rw-r--r--
2026-03-03 12:15
copyreg.py
7.44
KB
-rw-r--r--
2026-03-03 12:15
crypt.py
3.82
KB
-rw-r--r--
2026-03-03 12:15
csv.py
16
KB
-rw-r--r--
2026-03-03 12:15
dataclasses.py
60.31
KB
-rw-r--r--
2026-03-03 12:15
datetime.py
268
B
-rw-r--r--
2026-03-03 12:15
decimal.py
320
B
-rw-r--r--
2026-03-03 12:15
difflib.py
81.36
KB
-rw-r--r--
2026-03-03 12:15
dis.py
29.5
KB
-rw-r--r--
2026-03-03 12:15
doctest.py
103.98
KB
-rw-r--r--
2026-03-03 12:15
enum.py
79.72
KB
-rw-r--r--
2026-03-03 12:15
filecmp.py
9.95
KB
-rw-r--r--
2026-03-03 12:15
fileinput.py
15.35
KB
-rw-r--r--
2026-03-03 12:15
fnmatch.py
5.86
KB
-rw-r--r--
2026-03-03 12:15
fractions.py
37.17
KB
-rw-r--r--
2026-03-03 12:15
ftplib.py
33.92
KB
-rw-r--r--
2026-03-03 12:15
functools.py
37.23
KB
-rw-r--r--
2026-03-03 12:15
genericpath.py
5.44
KB
-rw-r--r--
2026-03-03 12:15
getopt.py
7.31
KB
-rw-r--r--
2026-03-03 12:15
getpass.py
5.85
KB
-rw-r--r--
2026-03-03 12:15
gettext.py
21.24
KB
-rw-r--r--
2026-03-03 12:15
glob.py
8.53
KB
-rw-r--r--
2026-03-03 12:15
graphlib.py
9.43
KB
-rw-r--r--
2026-03-03 12:15
gzip.py
24.28
KB
-rw-r--r--
2026-03-03 12:15
hashlib.py
9.13
KB
-rw-r--r--
2026-03-03 12:15
heapq.py
22.48
KB
-rw-r--r--
2026-03-03 12:15
hmac.py
7.54
KB
-rw-r--r--
2026-03-03 12:15
imaplib.py
52.43
KB
-rw-r--r--
2026-03-03 12:15
imghdr.py
4.29
KB
-rw-r--r--
2026-03-03 12:15
inspect.py
122.48
KB
-rw-r--r--
2026-03-03 12:15
io.py
3.5
KB
-rw-r--r--
2026-03-03 12:15
ipaddress.py
76.46
KB
-rw-r--r--
2026-03-03 12:15
keyword.py
1.05
KB
-rw-r--r--
2026-03-03 12:15
linecache.py
5.52
KB
-rw-r--r--
2026-03-03 12:15
locale.py
76.72
KB
-rw-r--r--
2026-03-03 12:15
lzma.py
12.97
KB
-rw-r--r--
2026-03-03 12:15
mailbox.py
77.06
KB
-rw-r--r--
2026-03-03 12:15
mailcap.py
9.11
KB
-rw-r--r--
2026-03-03 12:15
mimetypes.py
22.35
KB
-rw-r--r--
2026-03-03 12:15
modulefinder.py
23.14
KB
-rw-r--r--
2026-03-03 12:15
netrc.py
6.76
KB
-rw-r--r--
2026-03-03 12:15
nntplib.py
40.12
KB
-rw-r--r--
2026-03-03 12:15
ntpath.py
29.32
KB
-rw-r--r--
2026-03-03 12:15
nturl2path.py
2.82
KB
-rw-r--r--
2026-03-03 12:15
numbers.py
11.2
KB
-rw-r--r--
2026-03-03 12:15
opcode.py
12.87
KB
-rw-r--r--
2026-03-03 12:15
operator.py
10.71
KB
-rw-r--r--
2026-03-03 12:15
optparse.py
58.95
KB
-rw-r--r--
2026-03-03 12:15
os.py
38.85
KB
-rw-r--r--
2026-03-03 12:15
pathlib.py
49.95
KB
-rw-r--r--
2026-03-03 12:15
pdb.py
67.83
KB
-rwxr-xr-x
2026-03-03 12:15
pickle.py
63.38
KB
-rw-r--r--
2026-03-03 12:15
pickletools.py
91.66
KB
-rw-r--r--
2026-03-03 12:15
pipes.py
8.77
KB
-rw-r--r--
2026-03-03 12:15
pkgutil.py
17.85
KB
-rw-r--r--
2026-03-03 12:15
platform.py
42.32
KB
-rwxr-xr-x
2026-03-03 12:15
plistlib.py
27.91
KB
-rw-r--r--
2026-03-03 12:15
poplib.py
13.83
KB
-rw-r--r--
2026-03-03 12:15
posixpath.py
17.21
KB
-rw-r--r--
2026-03-03 12:15
pprint.py
23.59
KB
-rw-r--r--
2026-03-03 12:15
profile.py
22.55
KB
-rwxr-xr-x
2026-03-03 12:15
pstats.py
28.6
KB
-rw-r--r--
2026-03-03 12:15
pty.py
5.99
KB
-rw-r--r--
2026-03-03 12:15
py_compile.py
7.69
KB
-rw-r--r--
2026-03-03 12:15
pyclbr.py
11.13
KB
-rw-r--r--
2026-03-03 12:15
pydoc.py
110.44
KB
-rwxr-xr-x
2026-03-03 12:15
queue.py
11.23
KB
-rw-r--r--
2026-03-03 12:15
quopri.py
7.01
KB
-rwxr-xr-x
2026-03-03 12:15
random.py
33.87
KB
-rw-r--r--
2026-03-03 12:15
reprlib.py
6.42
KB
-rw-r--r--
2026-03-03 12:15
rlcompleter.py
7.64
KB
-rw-r--r--
2026-03-03 12:15
runpy.py
12.6
KB
-rw-r--r--
2026-03-03 12:15
sched.py
6.2
KB
-rw-r--r--
2026-03-03 12:15
secrets.py
1.94
KB
-rw-r--r--
2026-03-03 12:15
selectors.py
19.21
KB
-rw-r--r--
2026-03-03 12:15
shelve.py
8.36
KB
-rw-r--r--
2026-03-03 12:15
shlex.py
13.04
KB
-rw-r--r--
2026-03-03 12:15
shutil.py
56.76
KB
-rw-r--r--
2026-03-03 12:15
signal.py
2.44
KB
-rw-r--r--
2026-03-03 12:15
site.py
23.34
KB
-rw-r--r--
2026-03-03 12:15
smtplib.py
42.51
KB
-rwxr-xr-x
2026-03-03 12:15
sndhdr.py
7.27
KB
-rw-r--r--
2026-03-03 12:15
socket.py
36.53
KB
-rw-r--r--
2026-03-03 12:15
socketserver.py
27.2
KB
-rw-r--r--
2026-03-03 12:15
sre_compile.py
231
B
-rw-r--r--
2026-03-03 12:15
sre_constants.py
232
B
-rw-r--r--
2026-03-03 12:15
sre_parse.py
229
B
-rw-r--r--
2026-03-03 12:15
ssl.py
49.63
KB
-rw-r--r--
2026-03-03 12:15
stat.py
5.36
KB
-rw-r--r--
2026-03-03 12:15
statistics.py
49.05
KB
-rw-r--r--
2026-03-03 12:15
string.py
11.51
KB
-rw-r--r--
2026-03-03 12:15
stringprep.py
12.61
KB
-rw-r--r--
2026-03-03 12:15
struct.py
257
B
-rw-r--r--
2026-03-03 12:15
subprocess.py
86.65
KB
-rw-r--r--
2026-03-03 12:15
sunau.py
18.04
KB
-rw-r--r--
2026-03-03 12:15
symtable.py
10.5
KB
-rw-r--r--
2026-03-03 12:15
sysconfig.py
32
KB
-rw-r--r--
2026-03-03 12:15
tabnanny.py
11.26
KB
-rwxr-xr-x
2026-03-03 12:15
tarfile.py
109.92
KB
-rwxr-xr-x
2026-03-03 12:15
telnetlib.py
22.75
KB
-rw-r--r--
2026-03-03 12:15
tempfile.py
36.46
KB
-rw-r--r--
2026-03-03 12:15
textwrap.py
19.26
KB
-rw-r--r--
2026-03-03 12:15
this.py
1003
B
-rw-r--r--
2026-03-03 12:15
threading.py
58.71
KB
-rw-r--r--
2026-03-03 12:15
timeit.py
13.15
KB
-rwxr-xr-x
2026-03-03 12:15
token.py
2.42
KB
-rw-r--r--
2026-03-03 12:15
tokenize.py
20.72
KB
-rw-r--r--
2026-03-03 12:15
trace.py
28.5
KB
-rwxr-xr-x
2026-03-03 12:15
traceback.py
45.24
KB
-rw-r--r--
2026-03-03 12:15
tracemalloc.py
17.62
KB
-rw-r--r--
2026-03-03 12:15
tty.py
1.99
KB
-rw-r--r--
2026-03-03 12:15
turtle.py
142.93
KB
-rw-r--r--
2026-03-03 12:15
types.py
10.74
KB
-rw-r--r--
2026-03-03 12:15
typing.py
114.68
KB
-rw-r--r--
2026-03-03 12:15
uu.py
7.19
KB
-rwxr-xr-x
2026-03-03 12:15
uuid.py
28.96
KB
-rw-r--r--
2026-03-03 12:15
warnings.py
21.25
KB
-rw-r--r--
2026-03-03 12:15
wave.py
22.24
KB
-rw-r--r--
2026-03-03 12:15
weakref.py
21.01
KB
-rw-r--r--
2026-03-03 12:15
webbrowser.py
23.07
KB
-rwxr-xr-x
2026-03-03 12:15
xdrlib.py
5.8
KB
-rw-r--r--
2026-03-03 12:15
zipapp.py
7.37
KB
-rw-r--r--
2026-03-03 12:15
zipimport.py
27.47
KB
-rw-r--r--
2026-03-03 12:15
Save
Rename
"""Interface to the compiler's internal symbol tables""" import _symtable from _symtable import (USE, DEF_GLOBAL, DEF_NONLOCAL, DEF_LOCAL, DEF_PARAM, DEF_IMPORT, DEF_BOUND, DEF_ANNOT, SCOPE_OFF, SCOPE_MASK, FREE, LOCAL, GLOBAL_IMPLICIT, GLOBAL_EXPLICIT, CELL) import weakref __all__ = ["symtable", "SymbolTable", "Class", "Function", "Symbol"] 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) class SymbolTableFactory: def __init__(self): self.__memo = weakref.WeakValueDictionary() def new(self, table, filename): if table.type == _symtable.TYPE_FUNCTION: return Function(table, filename) if table.type == _symtable.TYPE_CLASS: return Class(table, filename) return SymbolTable(table, filename) def __call__(self, table, filename): key = table, filename obj = self.__memo.get(key, None) if obj is None: obj = self.__memo[key] = self.new(table, filename) return obj _newSymbolTable = SymbolTableFactory() class SymbolTable: def __init__(self, raw_table, filename): self._table = raw_table self._filename = filename self._symbols = {} def __repr__(self): if self.__class__ == SymbolTable: kind = "" else: kind = "%s " % self.__class__.__name__ if self._table.name == "top": return "<{0}SymbolTable for module {1}>".format(kind, self._filename) else: return "<{0}SymbolTable for {1} in {2}>".format(kind, self._table.name, self._filename) def get_type(self): """Return the type of the symbol table. The values returned are 'class', 'module', 'function', 'annotation', 'TypeVar bound', 'type alias', and 'type parameter'. """ if self._table.type == _symtable.TYPE_MODULE: return "module" if self._table.type == _symtable.TYPE_FUNCTION: return "function" if self._table.type == _symtable.TYPE_CLASS: return "class" if self._table.type == _symtable.TYPE_ANNOTATION: return "annotation" if self._table.type == _symtable.TYPE_TYPE_VAR_BOUND: return "TypeVar bound" if self._table.type == _symtable.TYPE_TYPE_ALIAS: return "type alias" if self._table.type == _symtable.TYPE_TYPE_PARAM: return "type parameter" assert False, f"unexpected type: {self._table.type}" def get_id(self): """Return an identifier for the table. """ return self._table.id def get_name(self): """Return the table's name. This corresponds to the name of the class, function or 'top' if the table is for a class, function or global respectively. """ return self._table.name def get_lineno(self): """Return the number of the first line in the block for the table. """ return self._table.lineno def is_optimized(self): """Return *True* if the locals in the table are optimizable. """ return bool(self._table.type == _symtable.TYPE_FUNCTION) def is_nested(self): """Return *True* if the block is a nested class or function.""" return bool(self._table.nested) def has_children(self): """Return *True* if the block has nested namespaces. """ return bool(self._table.children) def get_identifiers(self): """Return a view object containing the names of symbols in the table. """ return self._table.symbols.keys() def lookup(self, name): """Lookup a *name* in the table. Returns a *Symbol* instance. """ sym = self._symbols.get(name) if sym is None: flags = self._table.symbols[name] namespaces = self.__check_children(name) module_scope = (self._table.name == "top") sym = self._symbols[name] = Symbol(name, flags, namespaces, module_scope=module_scope) return sym def get_symbols(self): """Return a list of *Symbol* instances for names in the table. """ return [self.lookup(ident) for ident in self.get_identifiers()] def __check_children(self, name): return [_newSymbolTable(st, self._filename) for st in self._table.children if st.name == name] def get_children(self): """Return a list of the nested symbol tables. """ return [_newSymbolTable(st, self._filename) for st in self._table.children] class Function(SymbolTable): # Default values for instance variables __params = None __locals = None __frees = None __globals = None __nonlocals = None def __idents_matching(self, test_func): return tuple(ident for ident in self.get_identifiers() if test_func(self._table.symbols[ident])) def get_parameters(self): """Return a tuple of parameters to the function. """ if self.__params is None: self.__params = self.__idents_matching(lambda x:x & DEF_PARAM) return self.__params def get_locals(self): """Return a tuple of locals in the function. """ if self.__locals is None: locs = (LOCAL, CELL) test = lambda x: ((x >> SCOPE_OFF) & SCOPE_MASK) in locs self.__locals = self.__idents_matching(test) return self.__locals def get_globals(self): """Return a tuple of globals in the function. """ if self.__globals is None: glob = (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT) test = lambda x:((x >> SCOPE_OFF) & SCOPE_MASK) in glob self.__globals = self.__idents_matching(test) return self.__globals def get_nonlocals(self): """Return a tuple of nonlocals in the function. """ if self.__nonlocals is None: self.__nonlocals = self.__idents_matching(lambda x:x & DEF_NONLOCAL) return self.__nonlocals def get_frees(self): """Return a tuple of free variables in the function. """ if self.__frees is None: is_free = lambda x:((x >> SCOPE_OFF) & SCOPE_MASK) == FREE self.__frees = self.__idents_matching(is_free) return self.__frees class Class(SymbolTable): __methods = None def get_methods(self): """Return a tuple of methods declared in the class. """ if self.__methods is None: d = {} for st in self._table.children: d[st.name] = 1 self.__methods = tuple(d) return self.__methods class Symbol: def __init__(self, name, flags, namespaces=None, *, module_scope=False): self.__name = name self.__flags = flags self.__scope = (flags >> SCOPE_OFF) & SCOPE_MASK # like PyST_GetScope() self.__namespaces = namespaces or () self.__module_scope = module_scope def __repr__(self): return "<symbol {0!r}>".format(self.__name) def get_name(self): """Return a name of a symbol. """ return self.__name def is_referenced(self): """Return *True* if the symbol is used in its block. """ return bool(self.__flags & _symtable.USE) def is_parameter(self): """Return *True* if the symbol is a parameter. """ return bool(self.__flags & DEF_PARAM) def is_global(self): """Return *True* if the symbol is global. """ return bool(self.__scope in (GLOBAL_IMPLICIT, GLOBAL_EXPLICIT) or (self.__module_scope and self.__flags & DEF_BOUND)) def is_nonlocal(self): """Return *True* if the symbol is nonlocal.""" return bool(self.__flags & DEF_NONLOCAL) def is_declared_global(self): """Return *True* if the symbol is declared global with a global statement.""" return bool(self.__scope == GLOBAL_EXPLICIT) def is_local(self): """Return *True* if the symbol is local. """ return bool(self.__scope in (LOCAL, CELL) or (self.__module_scope and self.__flags & DEF_BOUND)) def is_annotated(self): """Return *True* if the symbol is annotated. """ return bool(self.__flags & DEF_ANNOT) def is_free(self): """Return *True* if a referenced symbol is not assigned to. """ return bool(self.__scope == FREE) def is_imported(self): """Return *True* if the symbol is created from an import statement. """ return bool(self.__flags & DEF_IMPORT) def is_assigned(self): """Return *True* if a symbol is assigned to.""" return bool(self.__flags & DEF_LOCAL) def is_namespace(self): """Returns *True* if name binding introduces new namespace. If the name is used as the target of a function or class statement, this will be true. Note that a single name can be bound to multiple objects. If is_namespace() is true, the name may also be bound to other objects, like an int or list, that does not introduce a new namespace. """ return bool(self.__namespaces) def get_namespaces(self): """Return a list of namespaces bound to this name""" return self.__namespaces def get_namespace(self): """Return the single namespace bound to this name. Raises ValueError if the name is bound to multiple namespaces or no namespace. """ if len(self.__namespaces) == 0: raise ValueError("name is not bound to any namespaces") elif len(self.__namespaces) > 1: raise ValueError("name is bound to multiple namespaces") else: return self.__namespaces[0] if __name__ == "__main__": import os, sys with open(sys.argv[0]) as f: src = f.read() mod = symtable(src, os.path.split(sys.argv[0])[1], "exec") for ident in mod.get_identifiers(): info = mod.lookup(ident) print(info, info.is_local(), info.is_namespace())