Commit 96350f77 authored by Jason R. Coombs's avatar Jason R. Coombs

Issue #13540: Removed redundant documentation about Action instance...

Issue #13540: Removed redundant documentation about Action instance attributes. Updated example and documentation per recommendations by Steven Bethard in msg149524.
parent fa0172f6
...@@ -737,13 +737,18 @@ how the command-line arguments should be handled. The supplied actions are: ...@@ -737,13 +737,18 @@ how the command-line arguments should be handled. The supplied actions are:
>>> parser.parse_args(['--version']) >>> parser.parse_args(['--version'])
PROG 2.0 PROG 2.0
You may also specify an arbitrary action by passing an Action class or other You may also specify an arbitrary action by passing an Action subclass or
class that implements the same interface. The recommended way to do this is other object that implements the same interface. The recommended way to do
to extend :class:`argparse.Action`, overriding the ``__call__`` method. this is to extend :class:`argparse.Action`, overriding the ``__call__`` method
and optionally the ``__init__`` method.
An example of a custom action:: An example of a custom action::
>>> class FooAction(argparse.Action): >>> class FooAction(argparse.Action):
... def __init__(self, option_strings, dest, nargs=None, **kwargs):
... if nargs is not None:
... raise ValueError("nargs not allowed")
... super(FooAction, self).__init__(option_strings, dest, **kwargs)
... def __call__(self, parser, namespace, values, option_string=None): ... def __call__(self, parser, namespace, values, option_string=None):
... print('%r %r %r' % (namespace, values, option_string)) ... print('%r %r %r' % (namespace, values, option_string))
... setattr(namespace, self.dest, values) ... setattr(namespace, self.dest, values)
...@@ -757,9 +762,7 @@ An example of a custom action:: ...@@ -757,9 +762,7 @@ An example of a custom action::
>>> args >>> args
Namespace(bar='1', foo='2') Namespace(bar='1', foo='2')
Many actions also override the ``__init__`` method, validating the parameters For more details, see :class:`argparse.Action`.
to the argument definition and raising a ValueError or other Exception on
failure.
nargs nargs
^^^^^ ^^^^^
...@@ -1209,57 +1212,28 @@ behavior:: ...@@ -1209,57 +1212,28 @@ behavior::
Action classes Action classes
^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^
Action classes implement the Action API, a callable which returns a callable
which processes arguments from the command-line. Any object which follows
this API may be passed as the ``action`` parameter to
:method:`add_argument`.
.. class:: Action(option_strings, dest, nargs=None, const=None, default=None, .. class:: Action(option_strings, dest, nargs=None, const=None, default=None,
type=None, choices=None, required=False, help=None, type=None, choices=None, required=False, help=None,
metavar=None) metavar=None)
Action objects are used by an ArgumentParser to represent the information Action objects are used by an ArgumentParser to represent the information
needed to parse a single argument from one or more strings from the needed to parse a single argument from one or more strings from the
command line. The keyword arguments to the Action constructor are made command line. The Action class must accept the two positional arguments
available as attributes of Action instances. plus any keyword arguments passed to :method:`ArgumentParser.add_argument`
except for the ``action`` itself.
* ``option_strings`` - A list of command-line option strings which
should be associated with this action.
* ``dest`` - The name of the attribute to hold the created object(s)
* ``nargs`` - The number of command-line arguments that should be
consumed. By default, one argument will be consumed and a single
value will be produced. Other values include:
- N (an integer) consumes N arguments (and produces a list)
- '?' consumes zero or one arguments
- '*' consumes zero or more arguments (and produces a list)
- '+' consumes one or more arguments (and produces a list)
Note that the difference between the default and nargs=1 is that
with the default, a single value will be produced, while with
nargs=1, a list containing a single value will be produced.
* ``const`` - The value to be produced if the option is specified and the
option uses an action that takes no values.
* ``default`` - The value to be produced if the option is not specified.
* ``type`` - The type which the command-line arguments should be converted Instances of Action (or return value of any callable to the ``action``
to, should be one of 'string', 'int', 'float', 'complex' or a parameter) should have attributes "dest", "option_strings", "default", "type",
callable object that accepts a single string argument. If None, "required", "help", etc. defined. The easiest way to ensure these attributes
'string' is assumed. are defined is to call ``Action.__init__``.
* ``choices`` - A container of values that should be allowed. If not None, Action instances should be callable, so subclasses must override the
after a command-line argument has been converted to the appropriate ``__call__`` method, which should accept four parameters:
type, an exception will be raised if it is not a member of this
collection.
* ``required`` - True if the action must always be specified at the
command line. This is only meaningful for optional command-line
arguments.
* ``help`` - The help string describing the argument.
* ``metavar`` - The name to be used for the option's argument with the
help string. If None, the 'dest' value will be used as the name.
Action classes must also override the ``__call__`` method, which should accept
four parameters:
* ``parser`` - The ArgumentParser object which contains this action. * ``parser`` - The ArgumentParser object which contains this action.
...@@ -1275,6 +1249,9 @@ four parameters: ...@@ -1275,6 +1249,9 @@ four parameters:
The ``option_string`` argument is optional, and will be absent if the action The ``option_string`` argument is optional, and will be absent if the action
is associated with a positional argument. is associated with a positional argument.
The ``__call__`` method may perform arbitrary actions, but will typically set
attributes on the ``namespace`` based on ``dest`` and ``values``.
The parse_args() method The parse_args() method
----------------------- -----------------------
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment