New submission from Barry A. Warsaw: Run the following code snippet:
-----snip snip----- import argparse parser = argparse.ArgumentParser() parser.add_argument("--test", dest="test", type=str, default=[], action='append') args = parser.parse_args() print args.test, repr(args.test) -----snip snip----- In Python 3.3 (with the appropriate syntactic changes), args.test is clearly a list. In Python 2.7 and 3.2, args.test is the string "[]". I can't tell from reading the docs what the expected value should be, but intuitively, the Python 3.3 behavior makes the most sense, i.e. that args.test is a list, not the string representation of a list! Removing type=str from add_argument() "fixes" the value, but that doesn't seem right because str is the default type so that should have no effect. We discovered this when we tried to do args.test.append('foo') and tracebacked because args.test wasn't a list. Original bug report in Ubuntu: https://launchpad.net/bugs/1048710 but I've tested this with upstream hg head for 2.7, 3.2, and 3.3. It works in Ubuntu's 3.3rc2 but not in upstream head 3.3rc2+, so from reading Misc/NEWS I think the fix for issue #12776 and issue #11839 might be involved. ---------- messages: 170202 nosy: barry priority: normal severity: normal status: open title: argparse add_argument() confusing behavior when type=str, default=[], action='append' versions: Python 2.7, Python 3.2 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue15906> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com