Skip to content

Commit 4c95f91

Browse files
Use the "no" prefix instead of "no-" for single-dash options.
1 parent 56efe05 commit 4c95f91

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

Doc/library/argparse.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1446,7 +1446,7 @@ this API may be passed as the ``action`` parameter to
14461446
Namespace(foo=False)
14471447

14481448
Single-dash long options are also supported.
1449-
For example, negative option ``-no-foo`` is automatically added for
1449+
For example, negative option ``-nofoo`` is automatically added for
14501450
positive option ``-foo``.
14511451
But no additional options are added for short options such as ``-f``.
14521452

Lib/argparse.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -944,10 +944,10 @@ def __init__(self,
944944
_option_strings.append(option_string)
945945
neg_option_strings.append(option_string)
946946
elif len(option_string) > 2 and option_string[0] != option_string[1]:
947-
if option_string.startswith('no-', 1):
947+
if option_string.startswith('no', 1):
948948
raise ValueError(f'invalid option name {option_string!r} '
949949
f'for BooleanOptionalAction')
950-
option_string = option_string[:1] + 'no-' + option_string[1:]
950+
option_string = option_string[:1] + 'no' + option_string[1:]
951951
_option_strings.append(option_string)
952952
neg_option_strings.append(option_string)
953953

Lib/test/test_argparse.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -811,20 +811,20 @@ class TestBooleanOptionalActionSingleDash(ParserTestCase):
811811
argument_signatures = [
812812
Sig('-foo', '-x', action=argparse.BooleanOptionalAction),
813813
]
814-
failures = ['--foo', '--no-foo', '-no-x']
814+
failures = ['--foo', '--no-foo', '-no-foo', '-no-x', '-nox']
815815
successes = [
816816
('', NS(foo=None)),
817817
('-foo', NS(foo=True)),
818-
('-no-foo', NS(foo=False)),
818+
('-nofoo', NS(foo=False)),
819819
('-x', NS(foo=True)),
820820
]
821821

822822
def test_invalid_name(self):
823823
parser = argparse.ArgumentParser()
824824
with self.assertRaises(ValueError) as cm:
825-
parser.add_argument('-no-foo', action=argparse.BooleanOptionalAction)
825+
parser.add_argument('-nofoo', action=argparse.BooleanOptionalAction)
826826
self.assertEqual(str(cm.exception),
827-
"invalid option name '-no-foo' for BooleanOptionalAction")
827+
"invalid option name '-nofoo' for BooleanOptionalAction")
828828

829829
class TestBooleanOptionalActionAlternatePrefixChars(ParserTestCase):
830830
"""Tests BooleanOptionalAction with custom prefixes"""
@@ -855,11 +855,13 @@ class TestBooleanOptionalActionSingleAlternatePrefixChar(ParserTestCase):
855855
argument_signatures = [
856856
Sig('+foo', '+x', action=argparse.BooleanOptionalAction),
857857
]
858-
failures = ['++foo', '++no-foo', '-no-foo', '+no-x', '-no-x']
858+
failures = ['++foo', '++no-foo', '++nofoo',
859+
'-no-foo', '-nofoo', '+no-foo', '-nofoo',
860+
'+no-x', '+nox', '-no-x', '-nox']
859861
successes = [
860862
('', NS(foo=None)),
861863
('+foo', NS(foo=True)),
862-
('+no-foo', NS(foo=False)),
864+
('+nofoo', NS(foo=False)),
863865
('+x', NS(foo=True)),
864866
]
865867

@@ -869,9 +871,9 @@ def test_invalid_name(self):
869871
'BooleanOptionalAction.*is not valid for positional arguments'):
870872
parser.add_argument('-foo', action=argparse.BooleanOptionalAction)
871873
with self.assertRaises(ValueError) as cm:
872-
parser.add_argument('+no-foo', action=argparse.BooleanOptionalAction)
874+
parser.add_argument('+nofoo', action=argparse.BooleanOptionalAction)
873875
self.assertEqual(str(cm.exception),
874-
"invalid option name '+no-foo' for BooleanOptionalAction")
876+
"invalid option name '+nofoo' for BooleanOptionalAction")
875877

876878
class TestBooleanOptionalActionRequired(ParserTestCase):
877879
"""Tests BooleanOptionalAction required"""

0 commit comments

Comments
 (0)