The following APIs will be removed in the future,
although there is currently no date scheduled for their removal.
-* :mod:`argparse`: Nesting argument groups and nesting mutually exclusive
- groups are deprecated.
+* :mod:`argparse`:
+
+ * Nesting argument groups and nesting mutually exclusive
+ groups are deprecated.
+ * Passing the undocumented keyword argument *prefix_chars* to
+ :meth:`~argparse.ArgumentParser.add_argument_group` is now
+ deprecated.
* :mod:`array`'s ``'u'`` format code (:gh:`57281`)
The function exists on the API by accident through inheritance and
will be removed in the future.
+ .. deprecated:: 3.14
+ Passing prefix_chars_ to :meth:`add_argument_group`
+ is now deprecated.
+
Mutual exclusion
^^^^^^^^^^^^^^^^
Deprecated
==========
+* :mod:`argparse`:
+ Passing the undocumented keyword argument *prefix_chars* to
+ :meth:`~argparse.ArgumentParser.add_argument_group` is now
+ deprecated.
+ (Contributed by Savannah Ostrowski in :gh:`125563`.)
+
* :mod:`asyncio`:
:func:`!asyncio.iscoroutinefunction` is deprecated
and will be removed in Python 3.16,
class _ArgumentGroup(_ActionsContainer):
def __init__(self, container, title=None, description=None, **kwargs):
+ if 'prefix_chars' in kwargs:
+ import warnings
+ depr_msg = (
+ "The use of the undocumented 'prefix_chars' parameter in "
+ "ArgumentParser.add_argument_group() is deprecated."
+ )
+ warnings.warn(depr_msg, DeprecationWarning, stacklevel=3)
+
# add any missing keyword arguments by checking the container
update = kwargs.setdefault
update('conflict_handler', container.conflict_handler)
result = parser.parse_args('1 2 3 4'.split())
self.assertEqual(expected, result)
+class TestGroupConstructor(TestCase):
+ def test_group_prefix_chars(self):
+ parser = ErrorRaisingArgumentParser()
+ msg = (
+ "The use of the undocumented 'prefix_chars' parameter in "
+ "ArgumentParser.add_argument_group() is deprecated."
+ )
+ with self.assertWarns(DeprecationWarning) as cm:
+ parser.add_argument_group(prefix_chars='-+')
+ self.assertEqual(msg, str(cm.warning))
+ self.assertEqual(cm.filename, __file__)
+
+ def test_group_prefix_chars_default(self):
+ # "default" isn't quite the right word here, but it's the same as
+ # the parser's default prefix so it's a good test
+ parser = ErrorRaisingArgumentParser()
+ msg = (
+ "The use of the undocumented 'prefix_chars' parameter in "
+ "ArgumentParser.add_argument_group() is deprecated."
+ )
+ with self.assertWarns(DeprecationWarning) as cm:
+ parser.add_argument_group(prefix_chars='-')
+ self.assertEqual(msg, str(cm.warning))
+ self.assertEqual(cm.filename, __file__)
+
# ===================
# Parent parser tests
# ===================
--- /dev/null
+Deprecate passing keyword-only *prefix_chars* argument to
+:meth:`argparse.ArgumentParser.add_argument_group`.