Laurent Desnogues <laurent.desnog...@gmail.com> writes: > Hello Markus, > > I found some Python issue with this commit. > > On Fri, Sep 4, 2015 at 4:21 PM, Markus Armbruster <arm...@redhat.com> wrote: >> Commit 05dfb26 added eatspace stripping to mcgen(). Move it to >> cgen(), just in case somebody gets tempted to use cgen() directly >> instead of via mcgen(). >> >> cgen() indents blank lines. No such lines get generated right now, >> but fix it anyway. >> >> We use triple-quoted strings for program text, like this: >> >> ''' >> Program text >> any number of lines >> ''' >> >> Keeps the program text relatively readable, but puts an extra newline >> at either end. mcgen() "fixes" that by dropping the first and last >> line outright. Drop only the newlines. >> >> This unmasks a bug in qapi-commands.py: four quotes instead of three. >> Fix it up. >> >> Output doesn't change [...] >> index 06d7fc2..e656beb 100644 >> --- a/scripts/qapi.py >> +++ b/scripts/qapi.py >> @@ -943,16 +943,21 @@ def pop_indent(indent_amount=4): >> global indent_level >> indent_level -= indent_amount >> >> +# Generate @code with @kwds interpolated. >> +# Obey indent_level, and strip eatspace. >> def cgen(code, **kwds): >> - indent = genindent(indent_level) >> - lines = code.split('\n') >> - lines = map(lambda x: indent + x, lines) >> - return '\n'.join(lines) % kwds + '\n' >> - >> -def mcgen(code, **kwds): >> - raw = cgen('\n'.join(code.split('\n')[1:-1]), **kwds) >> + raw = code % kwds >> + if indent_level: >> + indent = genindent(indent_level) >> + raw = re.subn("^.", indent + r'\g<0>', raw, 0, re.MULTILINE) > > subn with 5 parameters requires Python 2.7 which isn't part of CentOS/RHEL 6.
You're right. I guess I need to fall back to re.compile(). [...]