suppressing argparse arguments in the help

Calvin Spealman ironfroggy at
Tue Feb 28 17:17:25 EST 2012

On Tue, Feb 28, 2012 at 1:07 PM, Peter Otten <__peter__ at> wrote:
> Andrea Crotti wrote:
>> On 02/28/2012 04:02 PM, Peter Otten wrote:
>>> Andrea Crotti wrote:
>>>> I have a script that might be used interactively but also has some
>>>> arguments that
>>>> should not be used by "normal" users.
>>>> So I just want to suppress them from the help.
>>>> I've read somewhere that the help=SUPPRESS should do what I want:
>>>>       parser.add_argument('-n', '--test_only',
>>>>                           action='store_true',
>>>>                           help=SUPPRESS)
>>>> but that's what I get from "myapp -h", which is not exactly what I was
>>>> looking for..
>>>>     -f, --first_level     ==SUPPRESS== (default: False)
>>>>     --never_redevelop     ==SUPPRESS== (default: False)
>>>> Any other solutions?
>>> That shouldn't happen. Did you reload() somewhere?
>>> argparse tests object identity not equality with SUPPRESS, so you have to
>>> ensure that SUPPRESS stems from the same instance of the argparse module
>>> as your ArgumentParser.
>> Ah great yes it wasn't actually the same..
>> but why not just use
>> if text != SUPPRESS
>> instead of:
>> if text is not SUPPRESS

Because identity tests are good in these situations where you need to pass a
"special" value and anything else could be valid, technically. This is known as
a "sentinel" and is a common pattern.

> Steven Bethard would have to answer that.
> If it were my code I would have used the equality test, but also the correct
> symbolic constant...
>> probably the second is more safe, but they are it's still checking
>> against a constant that
>> is very unlikely to clash with anything..
> --

Read my blog! I depend on your acceptance of my opinion! I am interesting!
Follow me if you're into that sort of thing:

More information about the Python-list mailing list