from __future__ import generators import __builtin__ from keyword import kwlist def completions(str, domains): longest_prefix = None r = [] for list in domains: if not list is None: for e in list: print "trying: %s" % e if e.startswith(str) and not e in r: r.append(e) return r dir_ast = parser.expr("__builtin__.dir") def complete_string(str, globals, locals): last_dot = str.rfind('.') if last_dot > 0: e = eval(str[:last_dot], globals, locals) c = completions(str[last_dot+1:], [ dir(e) ]) else: c = completions(str, [ locals, globals, __builtin__, kwlist ] ) print "%s completed to: %s" % (str, c) return c