eliben wrote: > On Jun 20, 2:44 pm, Peter Otten <[EMAIL PROTECTED]> wrote: >> eliben wrote: >> > Additionally, I've found indentation to be a problem in such >> > constructs. Is there a workable way to indent the code at the level of >> > build_func, and not on column 0 ? >> >> exec"if 1:" + code.rstrip() >> >> Peter > > Why is the 'if' needed here ? I had .strip work for me:
A simple .strip() doesn't work if the code comprises multiple lines: >>> def f(): ... return """ ... x = 42 ... if x > 0: ... print x ... """ ... >>> exec "if 1:\n" + f().rstrip() 42 >>> exec f().strip() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 2 if x > 0: ^ IndentationError: unexpected indent You can of course split the code into lines, calculate the indentation of the first non-white line, remove that indentation from all lines and then rejoin. Peter -- http://mail.python.org/mailman/listinfo/python-list