mirror of https://github.com/python/cpython
gh-118805: Remove type, choices, metavar params of `BooleanOptionalAction` (#118806)
Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
This commit is contained in:
parent
c68acb1384
commit
da090f1658
|
@ -101,6 +101,13 @@ Deprecated
|
|||
Removed
|
||||
=======
|
||||
|
||||
argparse
|
||||
--------
|
||||
|
||||
* The *type*, *choices*, and *metavar* parameters
|
||||
of :class:`!argparse.BooleanOptionalAction` are removed.
|
||||
They were deprecated since 3.12.
|
||||
|
||||
email
|
||||
-----
|
||||
|
||||
|
|
|
@ -831,19 +831,13 @@ class Action(_AttributeHolder):
|
|||
raise NotImplementedError(_('.__call__() not defined'))
|
||||
|
||||
|
||||
# FIXME: remove together with `BooleanOptionalAction` deprecated arguments.
|
||||
_deprecated_default = object()
|
||||
|
||||
class BooleanOptionalAction(Action):
|
||||
def __init__(self,
|
||||
option_strings,
|
||||
dest,
|
||||
default=None,
|
||||
type=_deprecated_default,
|
||||
choices=_deprecated_default,
|
||||
required=False,
|
||||
help=None,
|
||||
metavar=_deprecated_default,
|
||||
deprecated=False):
|
||||
|
||||
_option_strings = []
|
||||
|
@ -854,35 +848,13 @@ class BooleanOptionalAction(Action):
|
|||
option_string = '--no-' + option_string[2:]
|
||||
_option_strings.append(option_string)
|
||||
|
||||
# We need `_deprecated` special value to ban explicit arguments that
|
||||
# match default value. Like:
|
||||
# parser.add_argument('-f', action=BooleanOptionalAction, type=int)
|
||||
for field_name in ('type', 'choices', 'metavar'):
|
||||
if locals()[field_name] is not _deprecated_default:
|
||||
import warnings
|
||||
warnings._deprecated(
|
||||
field_name,
|
||||
"{name!r} is deprecated as of Python 3.12 and will be "
|
||||
"removed in Python {remove}.",
|
||||
remove=(3, 14))
|
||||
|
||||
if type is _deprecated_default:
|
||||
type = None
|
||||
if choices is _deprecated_default:
|
||||
choices = None
|
||||
if metavar is _deprecated_default:
|
||||
metavar = None
|
||||
|
||||
super().__init__(
|
||||
option_strings=_option_strings,
|
||||
dest=dest,
|
||||
nargs=0,
|
||||
default=default,
|
||||
type=type,
|
||||
choices=choices,
|
||||
required=required,
|
||||
help=help,
|
||||
metavar=metavar,
|
||||
deprecated=deprecated)
|
||||
|
||||
|
||||
|
|
|
@ -765,49 +765,6 @@ class TestBooleanOptionalAction(ParserTestCase):
|
|||
|
||||
self.assertIn("got an unexpected keyword argument 'const'", str(cm.exception))
|
||||
|
||||
def test_deprecated_init_kw(self):
|
||||
# See gh-92248
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
parser.add_argument(
|
||||
'-a',
|
||||
action=argparse.BooleanOptionalAction,
|
||||
type=None,
|
||||
)
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
parser.add_argument(
|
||||
'-b',
|
||||
action=argparse.BooleanOptionalAction,
|
||||
type=bool,
|
||||
)
|
||||
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
parser.add_argument(
|
||||
'-c',
|
||||
action=argparse.BooleanOptionalAction,
|
||||
metavar=None,
|
||||
)
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
parser.add_argument(
|
||||
'-d',
|
||||
action=argparse.BooleanOptionalAction,
|
||||
metavar='d',
|
||||
)
|
||||
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
parser.add_argument(
|
||||
'-e',
|
||||
action=argparse.BooleanOptionalAction,
|
||||
choices=None,
|
||||
)
|
||||
with self.assertWarns(DeprecationWarning):
|
||||
parser.add_argument(
|
||||
'-f',
|
||||
action=argparse.BooleanOptionalAction,
|
||||
choices=(),
|
||||
)
|
||||
|
||||
class TestBooleanOptionalActionRequired(ParserTestCase):
|
||||
"""Tests BooleanOptionalAction required"""
|
||||
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
Remove *type*, *choices*, and *metavar* parameters of
|
||||
:class:`!argparse.BooleanOptionalAction`.
|
||||
They were deprecated since Python 3.12.
|
Loading…
Reference in New Issue