New submission from Jason Baker <amnorv...@gmail.com>:

This is referring to argparse 1.1 installed under Python 2.6.  When I was 
passing in an nargs flag, I figured that since '+' and '*' are valid options, I 
should pass in strings.  So when I tried passing in the string '1' instead of 
the integer 1, I got the following error:


>>> import argparse

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('foo', nargs='1')
_StoreAction(option_strings=[], dest='foo', nargs='1', const=None, 
default=None, type=None, choices=None, help=None, metavar=None)

>>> parser.parse_args()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "build/bdist.macosx-10.6-universal/egg/argparse.py", line 1698, in 
parse_args
  File "build/bdist.macosx-10.6-universal/egg/argparse.py", line 1730, in 
parse_known_args
  File "build/bdist.macosx-10.6-universal/egg/argparse.py", line 1935, in 
_parse_known_args
  File "build/bdist.macosx-10.6-universal/egg/argparse.py", line 1884, in 
consume_positionals
  File "build/bdist.macosx-10.6-universal/egg/argparse.py", line 2028, in 
_match_arguments_partial
  File "build/bdist.macosx-10.6-universal/egg/argparse.py", line 2169, in 
_get_nargs_pattern
TypeError: can't multiply sequence by non-int of type 'str'

Fortunately, I had just added the nargs and knew to correct that.  However, if 
I were to do something like read that value in from a config file and forget to 
coerce the value from a string to an int, I could see how this could be a giant 
pain to track down.

----------
components: Library (Lib)
messages: 116355
nosy: Jason.Baker
priority: normal
severity: normal
status: open
title: Argparse needs better error handling for nargs
versions: Python 2.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue9849>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to