Sandra-24 wrote: > I'm not sure how complex this is, I've been brainstorming a little, and > I've come up with: > > If the previous line ended with a comma or a \ (before an optional > comment) > > That's easy to cover with a regex > > But that doesn't cover everything, because this is legal: > > l = [ > 1, > 2, > 3 > ] > > and with dictionaries and tuples as well. > > Not sure how I would check for that programmatically yet. > > Is there any others I'm missing? > > Thanks, > -Sandra > Sandra,
in a similar situation I used 'inspect' and 'compile' like so: import inspect def func(*arg, **kwarg): return get_cmd() def get_cmd(): frame = inspect.currentframe() outerframes = inspect.getouterframes(frame) caller = outerframes[1][0] ccframe = outerframes[2][0] ccfname = outerframes[2][1] ccmodule = inspect.getmodule(ccframe) slines, start = inspect.getsourcelines(ccmodule) clen = len(slines) finfo = inspect.getframeinfo(ccframe, clen) theindex = finfo[4] lines = finfo[3] theline = lines[theindex] cmd = theline for i in range(theindex-1, 0, -1): line = lines[i] try: compile (cmd.lstrip(), '<string>', 'exec') except SyntaxError: cmd = line + cmd else: break return cmd if __name__ == '__main__': a=0 b="test" c=42 cmd=func(a) print cmd cmd=func(a, b, c) print cmd output: cmd=func(a) cmd=func(a, b, c) Regards Hans Georg -- http://mail.python.org/mailman/listinfo/python-list