Tadek Kijkowski <tkijkow...@gmail.com> added the comment:

> I'm a little confused by the mention of the "key" keyword argument. I suspect 
> that is an internal concept to argparse, possibly passed that way to internal 
> methods, but on the add_argument interface, it doesn't exist... instead there 
> is "name or flags" positional arguments, from which, together with the "dest" 
> argument, the "key" keyword argument is derived.  This is described under the 
> explanation for the "dest" parameter.

Hmm... that may be confusing. The "key" keyword argument is not internal 
concept, is new parameter that can be passed to add_argument, specifically for 
'capture' actions. The "key" name may be unfortunate, maybe it could be 
"dest_key" or "dict_key"? It can't be "dest", because it is goes to 
add_argument together with "dest". In most cases it is not needed and "dest" is 
used as dictionary key, but user may want to override that.
Like in this example:

    >>> parser = argparse.ArgumentParser()
    >>> parser.add_argument("--user", default=None)
    >>> parser.add_argument("--server", default="localhost")
    >>> parser.add_argument("src1", action="store_capture", key="file", 
capture_reset=["user", "server"])
    >>> parser.add_argument("src2", action="store_capture", key="file", 
capture_reset=["user", "server"])
    >>> parser.add_argument("dst", action="store_capture", key="file", 
capture_reset=["user", "server"])
    >>> parser.parse_args("first --user guest --server no_such second --server 
not_found third".split())
    Namespace(user=None, server='localhost',
        src1={'user': None, 'server': 'localhost', 'file': 'first'},
        src2={'user': 'guest', 'server': 'no_such', 'file': 'second'},
        dst={'user': None, 'server': 'not_found', 'file': 'third'})

The 'dest' is 'src1', 'src2' and 'dst' respectively, but we want to have 
unified layout of the dictionaries,
so 'key' is 'file' in all three cases.

Oh, and I forgot to update add_argument signature in rst earlier.

ArgumentParser.add_argument(name or flags..., [action], [nargs], \
                           [const], [default], [type], [choices], [required], \
                           [help], [metavar], [dest], [capture], \
                           [capture_reset], [key])
...
...
   * dest - The name of the attribute to be added to the object returned by
     parse_args.

-> these are new:

   * capture - A name or a list of names of attributes to capture by one of
     capture actions.

   * capture_reset - A name or a list of name of attributes to capture and
     reset to default value by one of capture actions.

   * key - The key to use putting command-line argument to dictionary object
     created by capture actions.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue43046>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to