How to preserve newlines in argparse version output while letting argparse auto-format/wrap the remaining help message?

Viewed 1809

I wrote the following code.

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('-v', '--version', action='version',
                    version='%(prog)s 1.0\nCopyright (c) 2016 Lone Learner')
parser.parse_args()

This produces the following output.

$ python foo.py --version
foo.py 1.0 Copyright (c) 2016 Lone Learner

You can see that the newline is lost. I wanted the copyright notice to appear on the next line.

How can I preserve the new lines in the version output message?

I still want argparse to compute how the output of python foo.py -h should be laid out with all the auto-wrapping it does. But I want the version output to be a multiline output with the newlines intact.

4 Answers

There's also argparse.RawDescriptionHelpFormatter.

parser=argparse.ArgumentParser(add_help=True,
    formatter_class=argparse.RawDescriptionHelpFormatter,
    description="""an
already-wrapped
description
string""")

It leaves the description and epilog alone, and wraps only argument help strings. The OP wanted the opposite.

Related