mirror of
https://github.com/python/cpython.git
synced 2025-10-17 20:28:43 +00:00
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
4 changed files with 10 additions and 71 deletions
|
@ -101,6 +101,13 @@ Deprecated
|
||||||
Removed
|
Removed
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
argparse
|
||||||
|
--------
|
||||||
|
|
||||||
|
* The *type*, *choices*, and *metavar* parameters
|
||||||
|
of :class:`!argparse.BooleanOptionalAction` are removed.
|
||||||
|
They were deprecated since 3.12.
|
||||||
|
|
||||||
email
|
email
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
|
|
@ -831,19 +831,13 @@ class Action(_AttributeHolder):
|
||||||
raise NotImplementedError(_('.__call__() not defined'))
|
raise NotImplementedError(_('.__call__() not defined'))
|
||||||
|
|
||||||
|
|
||||||
# FIXME: remove together with `BooleanOptionalAction` deprecated arguments.
|
|
||||||
_deprecated_default = object()
|
|
||||||
|
|
||||||
class BooleanOptionalAction(Action):
|
class BooleanOptionalAction(Action):
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
option_strings,
|
option_strings,
|
||||||
dest,
|
dest,
|
||||||
default=None,
|
default=None,
|
||||||
type=_deprecated_default,
|
|
||||||
choices=_deprecated_default,
|
|
||||||
required=False,
|
required=False,
|
||||||
help=None,
|
help=None,
|
||||||
metavar=_deprecated_default,
|
|
||||||
deprecated=False):
|
deprecated=False):
|
||||||
|
|
||||||
_option_strings = []
|
_option_strings = []
|
||||||
|
@ -854,35 +848,13 @@ class BooleanOptionalAction(Action):
|
||||||
option_string = '--no-' + option_string[2:]
|
option_string = '--no-' + option_string[2:]
|
||||||
_option_strings.append(option_string)
|
_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__(
|
super().__init__(
|
||||||
option_strings=_option_strings,
|
option_strings=_option_strings,
|
||||||
dest=dest,
|
dest=dest,
|
||||||
nargs=0,
|
nargs=0,
|
||||||
default=default,
|
default=default,
|
||||||
type=type,
|
|
||||||
choices=choices,
|
|
||||||
required=required,
|
required=required,
|
||||||
help=help,
|
help=help,
|
||||||
metavar=metavar,
|
|
||||||
deprecated=deprecated)
|
deprecated=deprecated)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -765,49 +765,6 @@ class TestBooleanOptionalAction(ParserTestCase):
|
||||||
|
|
||||||
self.assertIn("got an unexpected keyword argument 'const'", str(cm.exception))
|
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):
|
class TestBooleanOptionalActionRequired(ParserTestCase):
|
||||||
"""Tests BooleanOptionalAction required"""
|
"""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…
Add table
Add a link
Reference in a new issue