[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-27 Thread Berker Peksag

Changes by Berker Peksag :


--
superseder:  -> argparse: default args in mutually exclusive groups

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-26 Thread Louie Lu

Louie Lu added the comment:

Thanks, paul. Your msg help a lot.

Will you work on #18943? I can help for this or review the pending patch.

--
resolution:  -> duplicate

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-26 Thread paul j3

paul j3 added the comment:

This issue was raised in 2013.  The proposed patch is still pending

http://bugs.python.org/issue18943

I'm going to close this new one, though it is a good reminder of a rare, but 
persistent bug.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-26 Thread paul j3

Changes by paul j3 :


--
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-25 Thread paul j3

paul j3 added the comment:

And only for integers smaller than 257!

The problem is with this test in `take_action` function

# error if this argument is not allowed with other previously
# seen arguments, assuming that actions that use the default
# value don't really count as "present"
if argument_values is not action.default:
seen_non_default_actions.add(action)
for conflict_action in action_conflicts.get(action, []):
if conflict_action in seen_non_default_actions:
msg = _('not allowed with argument %s')
action_name = _get_action_name(conflict_action)
raise ArgumentError(action, msg % action_name)

Specifically with the

argument_values is not action.default

test.  In CPython integers below 257 are unique, so that

In [33]: int('10') is 10
Out[33]: True
In [34]: int('257') is 257
Out[34]: False

(and strings from 'sys.argv' do not match in the 'is' sense with strings set 
via 'default'.  So the problem is unique to small integers.)

The test is really meant to catch the default that is added in '_get_values()' 
for positionals with optional nargs ('?').

This issue was raised by some PyPy developers several years ago. 
 PyPy does not treat the small integers as unique.  I'll have to dig around to 
see what the resolution was, if any.

For now the solution is to use a string '10' as the default.

--
nosy: +paul.j3

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-25 Thread Louie Lu

Louie Lu added the comment:

Maybe documentation should note that:
"""
# error if this argument is not allowed with other previously
# seen arguments, assuming that actions that use the default
# value don't really count as "present"
"""

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-25 Thread Louie Lu

Louie Lu added the comment:

Strange, this will only trigger when that argument type is int.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-25 Thread Louie Lu

New submission from Louie Lu:

When adding mutually exclusive group and required is True, and the group 
argument has default value. If we type its default value, argparse will ignore 
the input and return `argument is required`


--- PoC 
import argparse

parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('-v', type=int, default=10)

print(parser.parse_args())

-

$ python tests.py -v 10
usage: tests.py [-h] -v V
tests.py: error: one of the arguments -v is required
$ python tests.py -v 11
Namespace(v=11)

--
components: Library (Lib)
messages: 292293
nosy: louielu
priority: normal
severity: normal
status: open
title: argparse mx_group is required, when action value equal default will be 
ignore
versions: Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue30163] argparse mx_group is required, when action value equal default will be ignore

2017-04-25 Thread Louie Lu

Changes by Louie Lu :


--
type:  -> behavior

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com