[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-20 Thread miss-islington


miss-islington  added the comment:


New changeset 836f137f7ae0799de937e5281cb1da2bfdb8a69d by Miss Islington (bot) 
in branch '3.8':
bpo-38821: Fix crash in argparse when using gettext (GH-17192)
https://github.com/python/cpython/commit/836f137f7ae0799de937e5281cb1da2bfdb8a69d


--

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-20 Thread miss-islington


miss-islington  added the comment:


New changeset ecb2afc1bc1c2f3f9f99b09dd866100c3c7dcab7 by Miss Islington (bot) 
in branch '3.7':
bpo-38821: Fix crash in argparse when using gettext (GH-17192)
https://github.com/python/cpython/commit/ecb2afc1bc1c2f3f9f99b09dd866100c3c7dcab7


--
nosy: +miss-islington

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-20 Thread Tal Einat


Change by Tal Einat :


--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed
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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-20 Thread Tal Einat


Tal Einat  added the comment:

Thanks for the report and the PR with a fix, Federico!

As discussed on in the PR comments, the PR did not include tests since there 
are currently no tests for argparse i18n. Please create a new issue for that, 
referencing this one.

--

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-20 Thread miss-islington


Change by miss-islington :


--
pull_requests: +16782
pull_request: https://github.com/python/cpython/pull/17289

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-20 Thread miss-islington


Change by miss-islington :


--
pull_requests: +16781
pull_request: https://github.com/python/cpython/pull/17288

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-20 Thread Tal Einat


Tal Einat  added the comment:


New changeset be5c79e0338005d675a64ba6e5b137e850d556d1 by Tal Einat (Federico 
Bond) in branch 'master':
bpo-38821: Fix crash in argparse when using gettext (GH-17192)
https://github.com/python/cpython/commit/be5c79e0338005d675a64ba6e5b137e850d556d1


--
nosy: +taleinat

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-18 Thread paul j3


Change by paul j3 :


--
nosy: +paul.j3

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-16 Thread Roundup Robot


Change by Roundup Robot :


--
keywords: +patch
pull_requests: +16698
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/17192

___
Python tracker 

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



[issue38821] argparse calls ngettext with deprecated non-integer value

2019-11-16 Thread Federico Bond


New submission from Federico Bond :

The call to 'ngettext' in 'ArgumentParser._match_argument' (Lib/argparse.py) 
uses a non-integer value, which causes it to fail with a nonsensical exception. 
Non-integer values were deprecated in bpo-28692.

This happens because the 'default' error message is computed unconditionally, 
even when the value of 'action.nargs' is 'None' and another message will be 
ultimately selected.

This issue is similar to bpo-35785 which was not reproduced by other people at 
the moment and was eventually closed. I could not create a short reproducer but 
could match several of the points described in that issue. A little debugging 
turned up that gettext was loading a catalog from the 'natural' PyPI package 
which uses 'Plural-Forms' too.

  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py",
 line 1755, in parse_args
args, argv = self.parse_known_args(args, namespace)
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py",
 line 1787, in parse_known_args
namespace, args = self._parse_known_args(args, namespace)
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py",
 line 1993, in _parse_known_args
start_index = consume_optional(start_index)
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py",
 line 1923, in consume_optional
arg_count = match_argument(action, selected_patterns)
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py",
 line 2086, in _match_argument
action.nargs) % action.nargs
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/gettext.py",
 line 631, in ngettext
return dngettext(_current_domain, msgid1, msgid2, n)
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/gettext.py",
 line 610, in dngettext
return t.ngettext(msgid1, msgid2, n)
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/gettext.py",
 line 462, in ngettext
tmsg = self._catalog[(msgid1, self.plural(n))]
  File "", line 4, in func
  File 
"/usr/local/Cellar/python/3.7.5/Frameworks/Python.framework/Versions/3.7/lib/python3.7/gettext.py",
 line 168, in _as_int
(n.__class__.__name__,)) from None
TypeError: Plural value must be an integer, got NoneType

--
components: Library (Lib)
messages: 356761
nosy: Federico Bond
priority: normal
severity: normal
status: open
title: argparse calls ngettext with deprecated non-integer value
type: crash
versions: Python 3.8, Python 3.9

___
Python tracker 

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