Steven Bethard added the comment:
Sorry about being out of contact (I'm flying back and forth between the US and
the EU every 4-5 weeks right now), and thanks Terry for bringing this to my
attention.
Essentially, the API is:
* The argument to action= must be a callable that accepts at
Steven Bethard added the comment:
Can you submit some example code that shows this? I can't reproduce this with:
-- temp.py --
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--ng", action="store_true")
parser.ad
Steven Bethard added the comment:
Could you add a test to verify that custom actions are still getting the
converted values passed to their __call__? I suspect this may not be happening
under the current patch - if that's the case, you may also need to add
conversions in _get_values,
Steven Bethard added the comment:
Looks good to me too.
--
___
Python tracker
<http://bugs.python.org/issue10772>
___
___
Python-bugs-list mailing list
Unsub
Steven Bethard added the comment:
The ArgumentParser constructor is definitely only intended to be called with
keyword arguments, so it's definitely a documentation bug that it doesn't say
this. I haven't actually applied the patch, but the basic approach and wording
Steven Bethard added the comment:
I think http://bugs.python.org/issue12776, which delays type conversions on
defaults should solve this problem, right? If you agree, could you add your
code here as a test case to that issue and mark this as duplicate?
(And yes, I agree this is a bug
Steven Bethard added the comment:
I'd feel more comfortable with the argparse fix if it were simply calling
"os.get_terminal_size()". I recommend that you:
* Create a new issue called, say "add os.get_terminal_size()" proposing just
the single method.
* Add that iss
Steven Bethard added the comment:
As I understand it the current proposal is:
* Wrap each paragraph separately
* Don't wrap any lines indented by at least one additional space
This sounds like a useful formatter. I would probably call it
"PargraphWrappingFormatter" or some
Steven Bethard added the comment:
If you can make your patch relative to the cpython source tree, and add a
couple tests, it will be easier to review.
Thanks for working on this!
--
___
Python tracker
<http://bugs.python.org/issue9
Steven Bethard added the comment:
Your solution is actually the current recommended solution - mix together both
classes that you want to combine and pass your subclass as the parameter. This
should probably be documented somewhere (and tested more
Steven Bethard added the comment:
Modulo the comments already on the patch by others, this approach looks fine to
me.
--
___
Python tracker
<http://bugs.python.org/issue12
Steven Bethard added the comment:
Could you give some examples of bugs that you observed? Otherwise, this looks
like a duplicate of issue 9349.
The intention is that help=SUPPRESS should cause the given argument to not be
displayed in the help message. If there are cases where that'
Steven Bethard added the comment:
I agree that this is a bug in current argparse formatting.
It might be a little difficult to fix though because the current option
formatting handles arguments one at a time, and producing something like [arg1
[arg2]] requires some understanding of how
Steven Bethard added the comment:
%(prog)s is available in epilog:
-- temp.py --
import argparse
epilog = """\
Example usage:
%(prog)s option1 option2
"""
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHe
Steven Bethard added the comment:
Looks good to me.
--
___
Python tracker
<http://bugs.python.org/issue9938>
___
___
Python-bugs-list mailing list
Unsubscribe:
Steven Bethard added the comment:
I think Issue 12776, which delays type conversions on defaults, should solve
this problem, right? If you agree, could you add your code here as a test case
to that issue and mark this as duplicate?
--
___
Python
Steven Bethard added the comment:
I agree this is a bug. The patch needs to add unit tests that make sure
metavars with [] work as expected.
--
___
Python tracker
<http://bugs.python.org/issue11
Steven Bethard added the comment:
Looks good. A few minor comments (click "review" by the patch).
--
___
Python tracker
<http://bugs.python.o
New submission from Steven Bethard :
There is an undocumented value for add_argument's nargs parameter, REMAINDER,
which can be used to consume all the remaining arguments. This is commonly
useful for command line utilities that dispatch to other command line utilities.
Though undocum
Steven Bethard added the comment:
Closing then. Thanks for checking it again!
--
assignee: -> bethard
resolution: -> works for me
stage: -> committed/rejected
status: open -> closed
___
Python tracker
<http://bugs.python
Steven Bethard added the comment:
Eric's suggested doc fix looks good to me.
--
___
Python tracker
<http://bugs.python.org/issue13685>
___
___
Python-bugs-l
Steven Bethard added the comment:
This is closely related to issue 9338. The parser should know that your command
line requires at least the COMMAND argument, so it should stop parsing in time
for that. However, in the case of subcommands, even if we solved issue 9338,
you would still get
Changes by Steven Bethard :
--
nosy: +bethard
stage: -> needs patch
versions: +Python 2.7, Python 3.2 -Python 2.6
___
Python tracker
<http://bugs.python.org/iss
Steven Bethard added the comment:
A simpler approach might be to do this before your call to parse_args:
if len(sys.argv[0]) == 1:
parser.print_help()
Does that solve your problem?
--
___
Python tracker
<http://bugs.python.org/issue9
Steven Bethard added the comment:
Sorry, typo. Should have been len(sys.argv) == 1. Full script:
import argparse
import sys
parser = argparse.ArgumentParser()
parser.add_argument('--foo')
if len(sys.argv) == 1:
parser.print_help()
else:
print(parser.parse_args())
With t
Steven Bethard added the comment:
I see. When there are no arguments you basically want to replace the standard
argparse help entirely with your own message, with your own capitalization,
etc. What you're doing now looks like a pretty good approach for this, so I
guess I'm still
Steven Bethard added the comment:
Yeah, I guess the optional vs. positional isn't the best terminology now that
you can have required flag-based arguments. Did you have a word other than
"optional" that you'd prefer?
--
___
P
Steven Bethard added the comment:
I guess one possibility might be "flag arguments". It's not great, but I guess
it's more accurate.
--
___
Python tracker
<http://bu
Steven Bethard added the comment:
And I guess the bigger issue to think about is how to add this in a backwards
compatible way. I guess we could just add methods like
"set_positionals_group_name(name)" and then fiddle with
"self._positionals.title" in there. Not sure tha
Steven Bethard added the comment:
Looks like "usage" is almost always lowercase in the programs I tried (ssh,
svn, cat, etc.). So it probably wouldn't be a good idea to change the default.
Seems like both this and issue 9694 need a better way to customize the text in
argparse
Steven Bethard added the comment:
I think this is still really a feature request. We can't just change the text
from "optional" - that would silently change a large number of help messages
without any warning. So to fix this "bug", we're going to have to add
Steven Bethard added the comment:
Are you sure this is an argparse issue, and not a terminal issue? Here's what I
see:
>>> parser = argparse.ArgumentParser(description=u'Rus Рус')
>>> print(parser.description)
Rus Рус
>>> sys.stderr.write(parser.des
Changes by Steven Bethard :
--
nosy: +bethard
versions: +Python 3.2
___
Python tracker
<http://bugs.python.org/issue9938>
___
___
Python-bugs-list mailin
Steven Bethard added the comment:
> Would you have to do this for every installed distribution?
> Seems cumbersome.
Well, the feature not being implemented yet, it's hard to tell what it would
do. ;-) But I think the simplest approach would actually yield a dialog where
you simpl
Steven Bethard added the comment:
Could you elaborate a little on what you use it for? The argparse module only
uses this for pretty __repr__ on the various objects. (And in fact, it looks
like it's gotten a little out of sync - "required" is missing from Action, and
a numbe
Steven Bethard added the comment:
Fixed with a variant of Denver's last patch in r86080 for 3.X and r86083 for
2.7.
--
assignee: -> bethard
resolution: -> fixed
status: open -> closed
___
Python tracker
<http://bugs.pyt
Steven Bethard added the comment:
Fixed in 3.X in r86086 and in 2.7 in r86087.
--
assignee: -> bethard
resolution: -> fixed
status: open -> closed
___
Python tracker
<http://bugs.python.o
Changes by Steven Bethard :
--
nosy: -bethard
___
Python tracker
<http://bugs.python.org/issue4640>
___
___
Python-bugs-list mailing list
Unsubscribe:
Steven Bethard added the comment:
Patches applied in r86090 (3.X) and r86091 (2.7). Thanks for your help
Catherine, and sorry it took me so long to apply these.
--
assignee: -> bethard
resolution: -> fixed
status: open -> closed
_
Steven Bethard added the comment:
Committed in r86092 (3.X) and r86093 (2.7). Thanks for the patches!
--
assignee: -> bethard
resolution: -> fixed
status: open -> closed
___
Python tracker
<http://bugs.python.o
Steven Bethard added the comment:
Closing as invalid, as to me this looks like a classic terminal encoding issue
and not an argparse issue, and there was no response from the user who filed
the issue. If someone still thinks this is an argparse issue, please provide a
test and reopen the
Steven Bethard added the comment:
Fixed with a variant of Catherine's patch (following R. David Murray's
suggestion of inlining the two methods) in r86111 (3.X) and r86112 (2.7). Also
added one more test to make sure that the order of the extra arguments is
consistent (extra argu
Steven Bethard added the comment:
Yep, argparse almost certainly has the same kind of problems - I basically
copied the optparse gettext behavior into argparse because I don't really know
how that stuff works but figured people must have wanted what was in
New submission from Steven Bethard :
>From a personal email:
--
I'm not signed up for all the Python issue tracking stuff, but thought I'd let
you know about a problem with the argparse doc page:
http://do
New submission from Steven Bethard :
>From a private email in respect to the following class of error messages:
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('--foo')
>>> parser.add_argument('--bar')
Steven Bethard added the comment:
I think the proposed API looks fine and should be backwards compatible since
add_subparsers will currently throw an exception with a default= argument.
In case someone feels like writing a patch, you'll want to look at
_SubParsersAction.__init__, which
Steven Bethard added the comment:
Thanks for the analysis Eric. Yeah, it does seem like it's not possible to
implement this feature request while still supporting optionals with variable
number arguments.
@andersk: Would the restriction to only having flags with a fixed number of
argu
Steven Bethard added the comment:
In argparse, you could so something like:
version = "2.7"
parser = argparse.ArgumentParser(
description="My program XXX, version " + version)
parser.add_argument('-v', action='version', version=version)
That would
Steven Bethard added the comment:
Sorry about such a slow response on this. Thanks for the patch!
I think rather than adding an ArgumentParser constructor parameter though, we
should add a new formatter class. The attached patch allows you to write:
>>> parser = argparse.Argum
Steven Bethard added the comment:
I'm not sure about the usage_template approach - seems like it might be hard to
make it work, while still supporting formatter_class. (Though maybe it's not so
bad since the formatter class methods are all considered implementation
details.) I
Changes by Steven Bethard :
--
assignee: -> bethard
resolution: -> fixed
stage: needs patch -> committed/rejected
status: open -> closed
___
Python tracker
<http://bugs.python
Steven Bethard added the comment:
Thanks for the patch. The idea and the approach of the patch look fine. But the
patch needs to be against the Python repository:
http://docs.python.org/devguide/patch.html#creating
For the tests, you should integrate your test.py into Lib/test
Steven Bethard added the comment:
I think this is a great suggestion. Care to work on a patch?
--
stage: -> needs patch
___
Python tracker
<http://bugs.python.org/issu
Changes by Steven Bethard :
--
stage: patch review -> committed/rejected
status: open -> closed
___
Python tracker
<http://bugs.python.org/issue10680>
___
__
Steven Bethard added the comment:
Thanks for the patch. I used something similar to what you proposed, but
instead of creating a local formatter, I just call self._get_formatter() if it
exists.
--
assignee: -> bethard
nosy: -python-dev
resolution: -> fixed
stage: needs
Steven Bethard added the comment:
I fixed the docs here so that they're clearer about what the Namespace object
is, and also so that they mention the `vars` approach if you want dict-style
access.
--
resolution: -> fixed
stage: needs patch -> committed/rejected
s
Steven Bethard added the comment:
I added some documentation in the "parents" section of the argparse docs.
--
assignee: docs@python -> bethard
resolution: -> fixed
stage: -> committed/rejected
status: open -> closed
___
Steven Bethard added the comment:
Sorry for letting this bug sit around for so long. I committed a slight variant
of your patch to 2.7, 3.2 and 3.3. Thanks!
--
resolution: -> fixed
stage: patch review -> committed/rejected
status: open -> closed
versions: +P
Steven Bethard added the comment:
The problem still exists in current trunk:
The slicing semantics have been removed from the expressions reference:
http://docs.python.org/py3k/reference/expressions.html#slicings
The datamodel and types sections still have the same equations:
http
Changes by Steven Bethard :
--
stage: test needed -> patch review
___
Python tracker
<http://bugs.python.org/issue1446619>
___
___
Python-bugs-list mai
New submission from Steven Bethard :
I'm going to try to merge several closely related issues here. Basically,
people would like better control over the usage message formatting so that you
could:
* Put program name and version information at the top of the message
* Customize the &
Steven Bethard added the comment:
I'm moving this over to Issue 11695, which proposes support for a usage/help
message template.
--
resolution: -> duplicate
stage: -> committed/rejected
status: open -> closed
superseder: -> Improve argparse usage/h
Steven Bethard added the comment:
I'm moving this over to Issue 11695, which proposes support for a usage/help
message template.
To customize the argument group names, the recommended approach is to create
your own argument groups, and only put arguments there, e.g.:
p
Steven Bethard added the comment:
So it strikes me that there already exists an officially supported way to
rename your option groups. Just only create your own option groups (never use
the default ones) and only put arguments there, e.g.:
- temp.py
Steven Bethard added the comment:
I'm moving this over to Issue 11695, which proposes support for a usage/help
message template.
--
resolution: -> duplicate
stage: -> committed/rejected
status: open -> closed
superseder: -> Improve argparse usage/h
Changes by Steven Bethard :
--
assignee: -> bethard
resolution: -> fixed
stage: needs patch -> committed/rejected
status: open -> closed
versions: +Python 3.3
___
Python tracker
<http://bugs.pytho
Steven Bethard added the comment:
The original point is basically a duplicate of issue 9338. It is undesirable
behavior, I just don't know how to fix it. Patches to fix it are welcome (on
issue 9338). ;-)
As to documenting '--', I agree it's hidden too far down
Steven Bethard added the comment:
No, it's exactly line 1925 that's the problem. The OP would like that to tell
him which arguments were missing instead of saying just 'too few arguments'.
The block below that is for checking required optionals/positionals. It won't
Steven Bethard added the comment:
Yeah a new test class is fine.
And I checked the patch and it looks okay to me. My first thought was also
"wait does that really work?" but I see that positionals are all marked as
required when appropriate (look for the comment starting
Steven Bethard added the comment:
Sorry, I think I confused you, please post that patch here. This issue is for
documenting the workarounds, issue 9338 is for actually solving the problem.
I glanced at your patch on that issue, and it looks basically okay, though I'd
like to see a few
Steven Bethard added the comment:
Yeah, sorry, those last two should have had arguments after them.
I think we have to stick with the current behavior - otherwise there's no way
to do something like -x -A -B, where you want -A and -B to be arguments to -x.
(You can get that now with -x
Steven Bethard added the comment:
I'm not sure about the patch - this will convert *all* IOErrors into command
line error messages, while we should really only be converting the ones raised
by FileType. Instead, the try/except should be in FileType.__call__, and you
should rai
Steven Bethard added the comment:
Looks like a great fix.
And yes, anyone who knows anything about gettext, please feel free to add a
test or ten. ;-) I just copied optparse when I put that stuff in, so I have no
confidence in how it's don
Steven Bethard added the comment:
I think it's fine to fix this in 3.2 by switching to mappings where necessary.
--
___
Python tracker
<http://bugs.python.org/is
Steven Bethard added the comment:
Tried to comment in Rietveld but it didn't work for some reason. Anyway, I
think the argparse.py patch isn't good - changing the type error message to
"'invalid %s value: %r details: "%s"'" will change the behavi
Steven Bethard added the comment:
Sorry, I was looking at the akira patch with the same date, where I was mainly
worried about the modification of the "except (TypeError, ValueError):" block.
Your patch doesn't do that,
Steven Bethard added the comment:
With argparse, you can specify formatter_class= RawDescriptionHelpFormatter and
then format things however you want in the description.
http://docs.python.org/dev/library/argparse.html#formatter-class
So I think there's no need for this in arg
Steven Bethard added the comment:
If I understand it right, before this patch, people couldn't really supply
internationalizations for these calls - they would have had to have a
translation for each possible value of, e.g. action.choices or
parser.prefix_chars. So I think there
Steven Bethard added the comment:
Hmm. I see I confused this with Issue 10529, where there really was a bug in
the gettext calls. Nonetheless, +1 for switching from %s to %(xxx)s in 3.2 -
since that's the first release in Python 3 that has argparse, I think it's
really okay
Steven Bethard added the comment:
Yes, I think it's okay to fix this without a test, given that it's a nontrivial
amount of work to test gettext stuff. I'd rather have it working now, without
tests, than wait until we know how to test stuff with gettext.
It's also a prett
Steven Bethard added the comment:
The workaround in TestImportStar is fine. The test is really just meant to make
sure that __all__ contains all the current API methods, and the "_" checks were
the easiest way at the time to
Steven Bethard added the comment:
The patch looks basically okay to me, though this line makes me nervous:
dest += ' (%s)' % ', '.join(aliases)
Since this is just for help formatting, can't you just modify metavar instead?
The dest is the attribute on the namespac
Steven Bethard added the comment:
In the short term, just catch the SystemExit.
In the slightly longer term, we could certainly provide a subclass, say,
ErrorRaisingArgumentParser, that overrides .exit and .error to do nothing but
raise an exception with the message they would have printed
Steven Bethard added the comment:
Looks good to me.
--
___
Python tracker
<http://bugs.python.org/issue9234>
___
___
Python-bugs-list mailing list
Unsubscribe:
Steven Bethard added the comment:
Yep, this is a documentation bug. Help is definitely intended to print to
stdout.
--
versions: -Python 3.1
___
Python tracker
<http://bugs.python.org/issue10
Steven Bethard added the comment:
Applied in r87362.
--
resolution: -> fixed
stage: -> committed/rejected
status: open -> closed
___
Python tracker
<http://bugs.python.o
Changes by Steven Bethard :
--
stage: needs patch -> committed/rejected
___
Python tracker
<http://bugs.python.org/issue9355>
___
___
Python-bugs-list mai
Steven Bethard added the comment:
Yep, I believe that fix should work. Now to find the time to write some tests...
--
nosy: +bethard
stage: -> unit test needed
versions: -Python 3.1
___
Python tracker
<http://bugs.python.org/issu
Steven Bethard added the comment:
action="help" definitely needs to be documented
action="count" probably should be, though I think it's pretty useless (I just
copied it from optparse)
action="parsers", nargs="..." and nargs="A...&qu
Steven Bethard added the comment:
I'm definitely open to providing such functionality. I assume you're imagining
something like:
parser = argparse.ArgumentParser()
a_action = parser.add_argument('-a')
b_action = parser.add_argument('-b')
c_action = pars
Steven Bethard added the comment:
Georg, is this something we can patch for rc2? It's a bug - errors encountered
by argparse-internal code should be translated into command line errors, and
they currently aren't for read-only files.
For what it's worth, the tests fa
Steven Bethard added the comment:
Good point. Here's the updated patch that reports the IOError as well. All
tests pass. I'll apply in a bit if I don't hear otherwise.
--
Added file: http://bugs.python.org/file20491/argparse.diff
___
Steven Bethard added the comment:
The docs for os.chmod claim:
Availability: Unix, Windows.
Although Windows supports chmod(), you can only set the file's read-only flag
with it (via the stat.S_IWRITE and stat.S_IREAD constants or a corresponding
integer value). All other bits are ig
Steven Bethard added the comment:
Fixed in r88169 and r88171. Thanks everyone for your help! I'll be keeping my
eye on the buildbots for a bit to make sure everything stays green.
--
assignee: -> bethard
resolution: -> fixed
stage: patch review -> committed/r
Steven Bethard added the comment:
It's an ArgumentTypeError because that's what you're supposed to raise inside
type functions:
http://docs.python.org/dev/library/argparse.html#type
(Note that argparse.FileType.__call__ is what will be called when we pass
type=argparse.F
Steven Bethard added the comment:
Looks great, thanks. I've updated the patch so it applies okay to both
release27-maint and py3k. All tests pass on both branches.
It's a one line fix and the test case looks good, so there should be no problem
applying this to release27-maint.
Fo
Changes by Steven Bethard :
Removed file: http://bugs.python.org/file20548/issue10680_withTestcase.patch
___
Python tracker
<http://bugs.python.org/issue10680>
___
___
Changes by Steven Bethard :
Removed file: http://bugs.python.org/file20114/argparse.diff
___
Python tracker
<http://bugs.python.org/issue10680>
___
___
Python-bugs-list m
Steven Bethard added the comment:
Awesome, thanks! Do you want to apply to 2.7 or should I?
--
___
Python tracker
<http://bugs.python.org/issue10680>
___
___
Steven Bethard added the comment:
Done in r88268. Thanks again everyone!
--
___
Python tracker
<http://bugs.python.org/issue10680>
___
___
Python-bugs-list mailin
1 - 100 of 303 matches
Mail list logo