Commit Graph

175 Commits

Author SHA1 Message Date
Nikita Sobolev 27a7d5e1cd
gh-92248: Deprecate `type`, `choices`, `metavar` parameters of `argparse.BooleanOptionalAction` (#103678)
Co-authored-by: Kirill <80244920+Eclips4@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
2023-05-19 16:44:43 +00:00
Oleg Iarygin 42f54d1f92
gh-101640: Make argparse _print_message catch any write error (#101802)
* In particular, don't exit when trying to print to stderr = None.
* Add tests

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
2023-05-06 18:53:48 -04:00
Yeojin Kim 9a478be1a4
gh-101979: argparse: fix a bug where parentheses in metavar argument of add_argument() were dropped (#102318) 2023-03-05 06:54:33 -08:00
Hai Shi e02cc6d42a
gh-80448: argparse: Fix IndexError on store_true action (#15656)
Co-authored-by: Rémi Lapeyre <remi.lapeyre@henki.fr>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Shantanu <12621235+hauntsaninja@users.noreply.github.com>
2022-11-11 17:51:38 -08:00
Harry ad7340e8c5
gh-92445 Improve interaction between nargs="*" and choices() (GH-92565) 2022-08-25 06:18:38 -05:00
Christian Heimes 7e0d98ecb3
gh-94315: Check for DAC override capability (GH-94316)
``os.geteuid() == 0`` is not a reliable check whether the current user
has the capability to bypass permission checks. Tests now probe for DAC
override.
2022-06-27 20:27:19 +02:00
Serhiy Storchaka 605e9c66ad
gh-85308: Add argparse tests for reading non-ASCII arguments from file (GH-94160) 2022-06-24 23:09:13 +03:00
Christian Heimes 22fed605e0
gh-90473: Make chmod a dummy on WASI, skip chmod tests (GH-93534)
WASI does not have the ``chmod(2)`` syscall yet.
2022-06-06 19:24:11 +02:00
Serhiy Storchaka 086c6b1b0f
bpo-45046: Support context managers in unittest (GH-28045)
Add methods enterContext() and enterClassContext() in TestCase.
Add method enterAsyncContext() in IsolatedAsyncioTestCase.
Add function enterModuleContext().
2022-05-08 17:49:09 +03:00
Toshio Kuratomi 20490d5018
gh-88753: Make BooleanOptionalAction's addition of default to help more similar to other actions (#27808)
Help for other actions omit the default value if default is SUPPRESS or
already contains the special format string '%(default)'.  Add those
special cases to BooleanOptionalAction's help formatting too.

Fixes https://bugs.python.org/issue44587 so that default=SUPPRESS is not
emitted.

Fixes https://bugs.python.org/issue38956 as this code will detect
whether '%(default)s' has already been specified in the help string.

Signed-off-by: Micky Yun Chan (michiboo): <chanmickyyun@gmail.com>
Co-authored-by: Micky Yun Chan <michan@redhat.com>
2022-05-03 18:38:18 +02:00
Antony Lee ad5e8520f3
bpo-39716: Raise on conflicting subparser names. (GH-18605)
Raise an ArgumentError when the same subparser name is added twice to an
ArgumentParser.  This is consistent with the (default) behavior when the
same option string is added twice to an ArgumentParser.

(Support for `conflict_handler="resolve"` could be considered as a
followup feature, although real use cases seem even rarer than
"resolve"ing option-strings.)

Automerge-Triggered-By: GH:rhettinger
2022-04-30 23:04:50 -07:00
Abhigyan Bose 4ed3900041
gh-91832: Add 'required' attr to argparse.Action repr (GH-91841)
# Adding 'required' to names in Lib.argparse.Action

gh-91832: 
Added 'required' to the list `names` in `Lib.argparse.Action`. 
Changed constant strings that test the Action object.

Automerge-Triggered-By: GH:merwok
2022-04-28 07:50:27 -07:00
Abhigyan Bose 88dd227959
gh-91984: Fix trailing spaces in multiline test strings in test_argparse (GH-91986) 2022-04-28 14:29:24 +03:00
MojoVampire eafec26ae5
bpo-14156: Make argparse.FileType work correctly for binary file modes when argument is '-' (GH-13165)
Also made modes containing 'a' or 'x' act the same as a mode containing 'w' when argument is '-'
(so 'a'/'x' return sys.stdout like 'w', and 'ab'/'xb' return sys.stdout.buffer like 'wb').
2022-03-06 13:49:42 +02:00
Felix Fontein 9e87c0e03f
bpo-46080: fix argparse help generation exception in edge case (GH-30111)
Fix an uncaught exception during help text generation when
argparse.BooleanOptionalAction is used with default=argparse.SUPPRESS
and help is specified.
2022-01-21 00:48:48 +02:00
Irit Katriel a287b31bcb
bpo-46411: Remove unnecessary calls to sys.exc_info() in tests (GH-30638) 2022-01-18 07:05:16 +00:00
Irit Katriel 30322c497e
bpo-22047: [argparse] deprecate nested argument groups and mutually exclusive groups (GH-30098) 2021-12-16 15:31:08 +00:00
Irit Katriel 86de99588d
bpo-26952: [argparse] clearer error when formatting an empty mutually… (GH-30099) 2021-12-15 10:08:26 +00:00
Raymond Hettinger 807f839bbf
bpo-45235: Revert an argparse bugfix that caused a regression (GH-29525)
* Revert "bpo-45235: Fix argparse overrides namespace with subparser defaults (GH-28420) (GH-28443)"

This reverts commit a18d52269a.
2021-11-11 21:53:23 -06:00
andrei kulakov 6fafc25aea
bpo-24444: fix an error in argparse help when help for an option is blank (GH-28050) 2021-10-13 18:31:51 +02:00
Serhiy Storchaka 40348acc18
bpo-45229: Remove test_main in many tests (GH-28405)
Instead of explicitly enumerate test classes for run_unittest()
use the unittest ability to discover tests. This also makes these
tests discoverable and runnable with unittest.

load_tests() can be used for dynamic generating tests and adding
doctests. setUpModule(), tearDownModule() and addModuleCleanup()
can be used for running code before and after all module tests.
2021-09-19 15:27:33 +03:00
Adam Schwalm a6e8db5e8e
bpo-45235: Fix argparse overrides namespace with subparser defaults (GH-28420) 2021-09-17 23:20:31 -05:00
Maximilian Hils 1512bc21d6
bpo-38956: don't print BooleanOptionalAction's default twice (GH-27672)
Co-authored-by: Micky Yun Chan <michan@redhat.com>
2021-08-16 23:42:21 +02:00
Jack DeVries 0ad173249d
bpo-37880: for argparse add_argument with action='store_const', const now defaults to None. (GH-26707) 2021-07-31 17:27:55 +01:00
Anthony Sottile 17575f73ce
bpo-29298: Fix crash with required subparsers without dest (GH-3680)
Automerge-Triggered-By: GH:encukou
2021-07-23 05:49:04 -07:00
Inada Naoki 8bbfeb3330
bpo-43651: PEP 597: Fix EncodingWarning in some tests (GH-25142)
* test__xxsubinterpreters
* test_builtin
* test_doctest
* test_exceptions
* test_opcodes
* test_support
* test_argparse
* test_baseexception
* test_bdb
* test_bool
* test_asdl_parser
2021-04-02 12:53:46 +09:00
Raymond Hettinger 41b223d29c
bpo-9694: Fix misleading phrase "optional arguments" (GH-23858) 2020-12-23 09:40:56 -08:00
Hai Shi 4660597b51
bpo-40275: Use new test.support helper submodules in tests (GH-21448) 2020-08-03 18:49:18 +02:00
Rémi Lapeyre b084d1b97e
bpo-40862: Raise TypeError when const is given to argparse.BooleanOptionalAction (GH-20623) 2020-06-05 15:00:42 -07:00
Raymond Hettinger 9681953c99
bpo-39058: Preserve attribute order in argparse Namespace reprs. (GH-17621) 2020-05-17 18:53:01 -07:00
alclarks d4331c56b4
bpo-9495: avoid confusing chained exception in argparse test (GH-17120) 2020-02-21 10:48:36 +02:00
Kyle Meyer 8edfc47bae
bpo-39546: argparse: Honor allow_abbrev=False for specified prefix_chars (GH-18337)
When `allow_abbrev` was first added, disabling the abbreviation of
long options broke the grouping of short flags ([bpo-26967](https://bugs.python.org/issue26967)).  As a fix,
b1e4d1b603 (contained in v3.8) ignores `allow_abbrev=False` for a
given argument string if the string does _not_ start with "--"
(i.e. it doesn't look like a long option).

This fix, however, doesn't take into account that long options can
start with alternative characters specified via `prefix_chars`,
introducing a regression: `allow_abbrev=False` has no effect on long
options that start with an alternative prefix character.

The most minimal fix would be to replace the "starts with --" check
with a "starts with two prefix_chars characters".  But
`_get_option_tuples` already distinguishes between long and short
options, so let's instead piggyback off of that check by moving the
`allow_abbrev` condition into `_get_option_tuples`.





https://bugs.python.org/issue39546
2020-02-18 01:48:57 -08:00
Brandt Bucher a0ed99bca8 bpo-38438: Simplify argparse "star nargs" usage. (GH-17106) 2019-11-11 12:47:48 -08:00
Rémi Lapeyre 6a517c6749 bpo-8538: Add support for boolean actions to argparse (GH-11478)
Co-Authored-By: remilapeyre <remi.lapeyre@henki.fr>
2019-09-13 11:17:43 +01:00
Hai Shi f545638b57 bpo-9938: Add optional keyword argument exit_on_error to argparse.ArgumentParser (GH-15362)
Co-Authored-by: Xuanji Li <xuanji@gmail.com>


https://bugs.python.org/issue9938



Automerge-Triggered-By: @matrixise
2019-09-12 03:56:05 -07:00
Flavian Hautbois da27d9b9dc bpo-29553: Fix ArgumentParser.format_usage() for mutually exclusive groups (GH-14976)
Co-authored-by: Andrew Nester <andrew.nester.dev@gmail.com>
2019-08-25 22:06:45 +03:00
tmblweed 4b3e975923 bpo-16970: Adding error message for invalid args (GH-14844)
BPO -16970: Adding error message for invalid args

Applied the patch argparse-v2 patch issue 16970, ran patch check and the test suite, test_argparse with 0 errors


https://bugs.python.org/issue16970
2019-08-01 21:57:13 -07:00
Zac Hatfield-Dodds dffca9e925 bpo-26967: fix flag grouping with allow_abbrev=False (GH-14316)
The `allow_abbrev` option for ArgumentParser is documented and intended to disable support for unique prefixes of --options, which may sometimes be ambiguous due to deferred parsing.

However, the initial implementation also broke parsing of grouped short flags, such as `-ab` meaning `-a -b` (or `-a=b`).  Checking the argument for a leading `--` before rejecting it fixes this.

This was prompted by pytest-dev/pytest#5469, so a backport to at least 3.8 would be great 😄  
And this is my first PR to CPython, so please let me know if I've missed anything!


https://bugs.python.org/issue26967
2019-07-13 22:35:58 -07:00
Victor Stinner 8f4ef3b019
Remove unused imports in tests (GH-14518) 2019-07-01 18:28:25 +02:00
zygocephalus 03d5831a2d bpo-37150: Throw ValueError if FileType class object was passed in add_argument (GH-13805)
There is a possibility that someone (like me) accidentally will omit parentheses with `FileType` arguments after `FileType`, and parser will contain wrong file until someone will try to use it. 

Example:
```python
parser = argparse.ArgumentParser()
parser.add_argument('-x', type=argparse.FileType)
```


https://bugs.python.org/issue37150
2019-06-07 13:08:36 -07:00
Batuhan Taşkaya aa32a7e111 bpo-23378: Add an extend action to argparse (GH-13305)
Add an extend action to argparse


https://bugs.python.org/issue23378
2019-05-21 10:47:42 -07:00
Serhiy Storchaka 5b10b98247
bpo-22831: Use "with" to avoid possible fd leaks in tests (part 2). (GH-10929) 2019-03-05 10:06:26 +02:00
Steve Dower d0f49d2f50
bpo-34582: Adds JUnit XML output for regression tests (GH-9210) 2018-09-18 09:10:26 -07:00
Berker Peksag 74102c9a5f
bpo-13041: Use shutil.get_terminal_size() in argparse.HelpFormatter (GH-8459) 2018-07-25 18:23:44 +03:00
wim glenn 66f02aa32f bpo-11874: fix assertion failure in argparse metavar handling (GH-1826)
- bugfix and test for fragile metavar handling in argparse (see
  bpo-24089, bpo-14046, bpo-25058, bpo-11874)
- also fixes some incorrect tests that did not make 1-element tuples correctly
2018-06-08 20:12:49 +10:00
Ned Deily 8ebf5ceb0f
bpo-33109: argparse subparsers are once again not required by default (GH-6919)
bpo-26510 in 3.7.0a2 changed the behavior of argparse to make
subparsers required by default, returning to the behavior of 2.7
and 3.2. The behavior was changed in 3.3 to be no longer required.
While it might make more sense to have the default to required,
compatibility with 3.3 through 3.6 is probably less disruptive
than trying to reintroduce compatibility with 2.7 at this point.
This change restores the 3.6 behavior.
2018-05-23 21:55:15 -04:00
Anthony Sottile aaf6fc0982 bpo-26510: make argparse subparsers required by default (#3027)
This fixes a regression from Python 2.  To get optional subparsers,
use the new parameter ``add_subparsers(required=False)``.

Patch by Anthony Sottile.
2017-09-20 17:35:27 -04:00
R. David Murray 0f6b9d2306 bpo-14191 Add parse_intermixed_args. (#3319)
This adds support for parsing a command line where options and positionals are intermixed as is common in many unix commands. This is paul.j3's patch with a few tweaks.
2017-09-06 20:25:40 -04:00
Victor Stinner 272d888c7b bpo-29783: Replace codecs.open() with io.open() (#599) 2017-06-16 08:59:01 +02:00
Xiang Zhang b1681189af Issue #29290: Merge 3.5. 2017-01-22 14:39:20 +08:00
Xiang Zhang 7fe28ad837 Issue #29290: argparse help messages won't wrap at non-breaking spaces. 2017-01-22 14:37:22 +08:00
Berker Peksag d39370ba41 Issue #28300: Merge from 3.5 2016-09-28 17:22:26 +03:00
Berker Peksag c16387b17f Issue #28300: Fix typos, patch by Shlomi Fish 2016-09-28 17:21:52 +03:00
Vinay Sajip 9ae505041f Issue #12713: reverted fix pending further discussion. 2016-08-23 08:43:16 +01:00
Vinay Sajip ef948cd058 Closes #12713: Allowed abbreviation of subcommands in argparse. 2016-08-18 21:23:48 +01:00
Martin Panter c86c91aab0 Merge typo fixes from 3.5 2016-04-05 06:20:32 +00:00
Martin Panter cc71a795df Fix typos in documentation and comments 2016-04-05 06:19:42 +00:00
Martin Panter 22fd1c262a Merge typo and grammar fixes from 3.5 2015-11-14 01:29:13 +00:00
Martin Panter 32acc16cda Merge typo and grammar fixes from 3.4 into 3.5 2015-11-14 01:14:25 +00:00
Martin Panter 2e4571a456 Fix a few grammar problems in the documentation and comments 2015-11-14 01:07:43 +00:00
Berker Peksag 76b1714be8 Issue #24360: Improve __repr__ of argparse.Namespace() for invalid identifiers.
Patch by Matthias Bussonnier.
2015-07-29 23:51:47 +03:00
Berker Peksag ecb75e26db Issue #23062: Add a test for suppressing --version with argparse.SUPPRESS.
TestHelpVersionOptional was redundant.
2015-04-10 16:11:12 +03:00
Berker Peksag 82c920c59e Issue #23062: Add a test for suppressing --version with argparse.SUPPRESS.
TestHelpVersionOptional was redundant.
2015-04-10 16:11:45 +03:00
Berker Peksag 8089cd642f Issue #14910: Add allow_abbrev parameter to argparse.ArgumentParser.
Patch by Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.
2015-02-14 01:39:17 +02:00
Serhiy Storchaka 08448a1f4d Issue #23326: Removed __ne__ implementations. Since fixing default __ne__
implementation in issue #21408 they are redundant.
2015-01-31 12:05:05 +02:00
Benjamin Peterson 610bc6a211 merge 3.4 (#23221) 2015-01-13 09:20:31 -05:00
Benjamin Peterson 82f34ada45 fix instances of consecutive articles (closes #23221)
Patch by Karan Goel.
2015-01-13 09:17:24 -05:00
R David Murray afce02ed38 Merge: #9351: set_defaults on subparser is no longer ignored if set on parent. 2014-10-17 19:58:03 -04:00
R David Murray 7570cbdc6b #9351: set_defaults on subparser is no longer ignored if set on parent.
Before, if a default was set on the parent parser, any default for that
variable set via set_defaults on a subparser would be ignored.  Now
the subparser set_defaults is honored.

Patch by Jyrki Pullianinen.
2014-10-17 19:55:11 -04:00
Ezio Melotti 0020d8e4fd #11955: merge with 3.4. 2014-08-05 02:24:28 +03:00
Ezio Melotti 12b7f48216 #11955: show the list of args in case of error in test_argparse. 2014-08-05 02:24:03 +03:00
Berker Peksag 1c5f56a955 Issue #9554: Use modern unittest features in test_argparse.
Initial patch by Denver Coneybeare and Radu Voicilas.
2014-07-06 09:33:20 +03:00
Raymond Hettinger dea46ec965 Issue #21481: Teach argparse equality tests to return NotImplemented when comparing to unknown types. 2014-05-26 00:43:27 -07:00
Benjamin Peterson 511e222e0a make temporary read-only files writable, so rmtree can remove them (#21128) 2014-04-04 13:55:56 -04:00
Serhiy Storchaka 123e6d5b4b Issue #13107: argparse and optparse no longer raises an exception when output
a help on environment with too small COLUMNS.  Based on patch by
Elazar Gershuni.
2014-01-09 23:18:41 +02:00
Serhiy Storchaka f451112413 Issue #13107: argparse and optparse no longer raises an exception when output
a help on environment with too small COLUMNS.  Based on patch by
Elazar Gershuni.
2014-01-09 23:14:27 +02:00
Eli Bendersky cdac551675 Issue #18920: argparse's default version action (for -v, --version) should
output to stdout, matching the 'python -v'

Reported by Wolfgang Maier
2013-09-06 06:49:15 -07:00
Petri Lehtinen 74d6c250e1 #11175: argparse.FileType now accepts encoding and errors arguments.
Patch by Lucas Maystre.
2012-12-15 22:42:47 +02:00
Barry Warsaw d89774e158 Merge 3.2 fix updates and tests for issue #15906. 2012-09-12 15:31:38 -04:00
Barry Warsaw eaae1b76ae A follow up for issue #15906: change the test for calling the type conversion
on the action's default, reverting it back to previous behavior.  Conversion
is only done on string defaults.

Add a test for this and another test that ensures such type conversions are
only called once.
2012-09-12 14:34:50 -04:00
Barry Warsaw 0ae066b281 - Issue #15906: Fix a regression in argparse caused by the preceding change,
when action='append', type='str' and default=[].
2012-09-12 00:12:29 -04:00
Barry Warsaw 4b2f9e914d - Issue #15906: Fix a regression in argparse caused by the preceding change,
when action='append', type='str' and default=[].
2012-09-11 22:38:47 -04:00
R David Murray 63755f3bd9 merge #15847: allow args to be a tuple in parse_args
This fixes a regression introduced by the fix for issue #13922.  Although args
is not documented as being allowed to be a tuple, previously this worked and
so naturally there are programs in the field that depend on it.

Patch by Zbyszek Jędrzejewski-Szmek.
2012-09-08 12:14:25 -04:00
R David Murray b522828d2a #15847: allow args to be a tuple in parse_args
This fixes a regression introduced by the fix for issue #13922.  Although args
is not documented as being allowed to be a tuple, previously this worked and
so naturally there are programs in the field that depend on it.

Patch by Zbyszek Jędrzejewski-Szmek.
2012-09-08 12:08:01 -04:00
R David Murray 64b0ef1509 Merge #12776,#11839: call argparse type function only once.
Before, the type function was called twice in the case where the default
was specified and the argument was given as well.  This was especially
problematic for the FileType type, as a default file would always be
opened, even if a file argument was specified on the command line.

Patch by Arnaud Fontaine, with additional test by Mike Meyer.
2012-08-31 23:09:34 -04:00
R David Murray 6fb8fb17bf #12776,#11839: call argparse type function only once.
Before, the type function was called twice in the case where the default
was specified and the argument was given as well.  This was especially
problematic for the FileType type, as a default file would always be
opened, even if a file argument was specified on the command line.

Patch by Arnaud Fontaine, with additional test by Mike Meyer.
2012-08-31 22:45:20 -04:00
R David Murray 45ccf032be Merge #13922: argparse no longer incorrectly strips '--' after the first one.
Patch by Jeff Knupp.
2012-07-21 22:56:49 -04:00
R David Murray 00528e8fec #13922: argparse no longer incorrectly strips '--' after the first one.
Patch by Jeff Knupp.
2012-07-21 22:48:35 -04:00
R David Murray d4703d1d85 Merge #12353: argparse now correctly handles null argument values.
Patch by Torsten Landschoff.
2012-07-21 22:28:08 -04:00
R David Murray b94082a71b #12353: argparse now correctly handles null argument values.
Patch by Torsten Landschoff.
2012-07-21 22:20:11 -04:00
Florent Xicluna af1adbeedd Issue #13248: argparse: Remove obsolete argument "version" of ArgumentParser. 2012-07-07 17:02:22 +02:00
Terry Jan Reedy ee91e0990a #11906 Make test_argparse work interactively by removing extra space
in comparison string that argparse does not add when program name is blank.
2012-01-09 18:20:09 -05:00
Terry Jan Reedy 8d172343ad Merge with 3.2 2012-01-09 18:33:27 -05:00
Victor Stinner 242b6ea975 (Merge 3.2) Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Patch written by Arfrever Frehtes Taifersar Arahesis.
2011-11-20 23:10:12 +01:00
Victor Stinner a04b39b261 Close #13401: Skip TestFileTypeW of test_argparse if the current user is root
Patch written by Arfrever Frehtes Taifersar Arahesis.
2011-11-20 23:09:09 +01:00
R David Murray f97c59aaba #10424: argument names are now included in the missing argument message
Fix and initial test patch by Michele Orrù.
2011-06-09 12:34:07 -04:00
Steven Bethard 7c8ea37d9b Issue #9347: Fix formatting for tuples in argparse type= error messages. 2011-04-04 02:10:40 +02:00
Steven Bethard 7cb20a8605 Issue #9347: Fix formatting for tuples in argparse type= error messages. 2011-04-04 01:53:02 +02:00
Steven Bethard 4ad8f66559 Issue #9026: Fix order of argparse sub-commands in help messages. (Merged from 3.2.) 2011-03-27 14:04:03 +02:00
Steven Bethard 8a6a198abf Issue #9026: Fix order of argparse sub-commands in help messages. 2011-03-27 13:53:53 +02:00