How to handle two-level option processing with optparse

R

R. Bernstein

optparse is way cool, far superior and cleaner than other options
processing libraries I've used.

In the next release of the Python debugger revision, I'd like to add
debugger options: --help and POSIX-shell style line trace (similar to
"set -x") being two of the obvious ones.

So I'm wondering how to arrange optparse to handle its options, but
not touch the script's options.

For example the invocation may be something like:
pdb --debugger-opt1 --debugger-opt2 ... debugged-script -opt1 opt2 ...

If a --help option is given to the script to be debugged, I want to
make sure it is not confused for the debugger's help option.

One simple rule for determining who gets whoit is that options that
come after the script name don't get touched in debugger's option
processing.

Another convention that has been used such as in the X11 "startx"
command is to use "--" to separate the two sets of options. However
this isn't as desirable as the simple rule mentioned above; it would
make entering "--" *all* the time when perhaps most of the time there
are no debugger options (as is the case now).

In other systems you can back an indication of the first option that
hasn't been processed and the remaining options are not touched.

It seems that with all of the flexibility of optparse it should handle
this. I'm not sure right now what the best way to do so would be
though. Suggestions?
 
G

Giovanni Bajo

R. Bernstein said:
It seems that with all of the flexibility of optparse it should handle
this. I'm not sure right now what the best way to do so would be
though. Suggestions?


If you call OptionParser.disable_interspersed_args() on your parser, it will
stop parsing at the first positional argument, leaving other options unparsed.
 
R

R. Bernstein

Giovanni Bajo suggests:
If you call OptionParser.disable_interspersed_args() on your parser,
it will stop parsing at the first positional argument, leaving other
options unparsed.

Wow - that was a quick answer! Thanks - it works great!

I see how I missed this. Neither disable_.. or enable_.. have document
strings. And neither seem to described in the optparser section (6.21)
of the Python Library (http://docs.python.org/lib/module-optparse.html).

I wonder if something like this might be added to the Python Cookbook.

Thanks again.
 
S

Steve Holden

R. Bernstein said:
Giovanni Bajo suggests:




Wow - that was a quick answer! Thanks - it works great!

I see how I missed this. Neither disable_.. or enable_.. have document
strings. And neither seem to described in the optparser section (6.21)
of the Python Library (http://docs.python.org/lib/module-optparse.html).

I wonder if something like this might be added to the Python Cookbook.
Well you are just as capable of adding it as anyone else, so knock
yourself out!

regards
Steve
 
R

R. Bernstein

Magnus Lycka informs:
[in response to my comment]:
I see how I missed this. Neither disable_.. or enable_.. have document
strings. And neither seem to described in the optparser section (6.21)
of the Python Library (http://docs.python.org/lib/module-optparse.html).

http://docs.python.org/lib/optparse-other-methods.html

Hmmm. A couple things are a little odd about this. First "Other
methods" seems to be a grab-bag category. A place to put something
when you don't know where-else to put it. The section called:
"Querying and manipulating your option parser" seems closer. Better I
think if the title were changed slightly to

Querying, manipulating, and changing the default behavior of your
option parse

Second, oddly I can't find this section "Other Methods" in the current
Python SVN source Doc/lib/liboptparse.tex. Best as I can tell, that
file does seem to be the section documenting optparse.
 
S

Steven Bethard

R. Bernstein said:
Magnus Lycka informs:
[in response to my comment]:
I see how I missed this. Neither disable_.. or enable_.. have document
strings. And neither seem to described in the optparser section (6.21)
of the Python Library (http://docs.python.org/lib/module-optparse.html).
http://docs.python.org/lib/optparse-other-methods.html

Hmmm. A couple things are a little odd about this. First "Other
methods" seems to be a grab-bag category. A place to put something
when you don't know where-else to put it. The section called:
"Querying and manipulating your option parser" seems closer. Better I
think if the title were changed slightly to

Querying, manipulating, and changing the default behavior of your
option parse

Second, oddly I can't find this section "Other Methods" in the current
Python SVN source Doc/lib/liboptparse.tex. Best as I can tell, that
file does seem to be the section documenting optparse.

Sounds like you should submit a documentation bug:
http://sourceforge.net/tracker/?group_id=5470&atid=105470
Plain text is fine -- just explain what needs to be changed.

Thanks!

STeVe
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,731
Messages
2,569,432
Members
44,832
Latest member
GlennSmall

Latest Threads

Top