[New-bugs-announce] [issue45504] [argparse] Entering a partial config_parser flag works with subparsers

Steven report at bugs.python.org
Sun Oct 17 22:01:44 EDT 2021


New submission from Steven <steven at swills.me>:

I have a package with a module called `commands.py`. This file is basically three sub parsers and an entry point. 

Here is one of my subparsers. It shows the current path of a config file, and lets you update the path if you want.

    #config sub-command
    config_parser = subparsers.add_parser('config')
    config_parser.set_defaults(func=config_path)
    config_parser.add_argument('--show', help='show current config file path - takes no input', action='store_true')
    config_parser.add_argument('--update', help='modify config file path', dest='path')

If you look at the first config_parser which is `--show`. Notice how it doesn't take an input. You just pass in --show and it prints the config path to the cli.

Here is the function that tells --show what to do.;

    def config_path(args):
        dotenv_file = dotenv.find_dotenv()
        dotenv.load_dotenv(dotenv_file)
        if args.show:
            print(os.environ['FILE_PATH']) 
        elif args.path:
            os.environ['FILE_PATH'] = args.path
            dotenv.set_key(dotenv_file, 'FILE_PATH', os.environ['FILE_PATH'])

This is what my entrypoints in my setup.py looks like.

    entry_points={
            'console_scripts': [
                #command = package.module:function
                'conftool = conftool.commands:main',
            ],
        }
    )

All of the following work

    conftool config --s
    conftool config --sh
    conftool config --sho
    conftool config --show

I have another sub parser and function like the one above. The config_parser is basically the same. It has an option that doesn't take an argument and store is true. They behave the same way. The other function and subparser have an option that is `--gettoken`. It works with --g, --ge, --get, --gett, --getto, --gettok, gettoke.

Is this possibly a bug?

----------
components: Parser
messages: 404153
nosy: lys.nikolaou, pablogsal, swills1
priority: normal
severity: normal
status: open
title: [argparse] Entering a partial config_parser flag works with subparsers
versions: Python 3.9

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue45504>
_______________________________________


More information about the New-bugs-announce mailing list