Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #49345
| From | Robert Kern <robert.kern@gmail.com> |
|---|---|
| Subject | Re: Why is the argparse module so inflexible? |
| Date | 2013-06-27 20:47 +0100 |
| References | <mailman.3924.1372337705.3114.python-list@python.org> <roy-57E318.09080527062013@70-1-84-166.pools.spcsdns.net> <51CC42E3.3070508@gmail.com> <51CC620E.1030104@davea.name> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.3940.1372362483.3114.python-list@python.org> (permalink) |
On 2013-06-27 17:02, Dave Angel wrote: > On 06/27/2013 09:49 AM, Andrew Berg wrote: >> On 2013.06.27 08:08, Roy Smith wrote: >>> Can you give us a concrete example of what you're trying to do? >> The actual code I've written so far isn't easily condensed into a short simple >> snippet. >> I'm trying to use argparse to handle all the little details of parsing and >> verifying arguments in the precmd hook for a cmd.Cmd child class. >> argparse's help system is more sophisticated than cmd's help and does all the >> work of verifying arguments. >> The problem I keep running into is that I can't handle any bad input very >> well. I would have to override every method that catches >> ArgumentError in order to get a useful exception that I would then handle. >> If I input something that begins with '-' that isn't recognized, parse_args >> doesn't even raise the exception; it just quits. > > No, it raises the SystemExit exception. if you don't catch it, then the program > exits. Perhaps it's not clear to you, but sys.exit() just raises the SystemExit > exception, as Joshua pointed out. Internally, the parser raises ArgumentError which has some useful pieces of information, specifically, the name of the argument that failed to parse. Unfortunately, it catches that error in parse_known_args(), then formats that information into a message string to pass to the error() method, which by default raises SystemExit with just that message string. It is somewhat difficult to override the parse_known_args() to not lose that information from the ArgumentError because you will have to copy-paste the rest of the code in there. So yes, you can override the error() method or catch SystemExit if all you want is the formatted message string, but I have to agree that there is a missed opportunity to make argparse more widely usable for other command-line like parsing tasks[1]. [1] As an existence proof, I offer you one that I wrote for handling IPython's %magic commands. I just needed the formatted string, so I could just get away with overriding error(). https://github.com/ipython/ipython/blob/master/IPython/core/magic_arguments.py -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco
Back to comp.lang.python | Previous | Next — Previous in thread | Find similar | Unroll thread
Why is the argparse module so inflexible? Andrew Berg <robotsondrugs@gmail.com> - 2013-06-27 07:54 -0500
Re: Why is the argparse module so inflexible? Roy Smith <roy@panix.com> - 2013-06-27 09:08 -0400
Re: Why is the argparse module so inflexible? Andrew Berg <robotsondrugs@gmail.com> - 2013-06-27 08:49 -0500
Re: Why is the argparse module so inflexible? Dave Angel <davea@davea.name> - 2013-06-27 12:02 -0400
Re: Why is the argparse module so inflexible? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-27 22:49 +0000
Re: Why is the argparse module so inflexible? Cameron Simpson <cs@zip.com.au> - 2013-06-28 09:34 +1000
Re: Why is the argparse module so inflexible? Ethan Furman <ethan@stoneleaf.us> - 2013-06-28 18:36 -0700
Re: Why is the argparse module so inflexible? rusi <rustompmody@gmail.com> - 2013-06-28 21:12 -0700
Re: Why is the argparse module so inflexible? Terry Reedy <tjreedy@udel.edu> - 2013-06-29 00:37 -0400
Re: Why is the argparse module so inflexible? Roy Smith <roy@panix.com> - 2013-06-29 10:12 -0400
Re: Why is the argparse module so inflexible? Andrew Berg <robotsondrugs@gmail.com> - 2013-06-29 09:17 -0500
Re: Why is the argparse module so inflexible? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-06-29 05:28 +0000
Re: Why is the argparse module so inflexible? Marcin Szamotulski <mszamot@gmail.com> - 2013-06-29 13:38 +0100
Re: Why is the argparse module so inflexible? MRAB <python@mrabarnett.plus.com> - 2013-06-29 16:58 +0100
Re: Why is the argparse module so inflexible? Ethan Furman <ethan@stoneleaf.us> - 2013-06-29 12:17 -0700
Re: Why is the argparse module so inflexible? Modulok <modulok@gmail.com> - 2013-06-28 19:39 -0600
Re: Why is the argparse module so inflexible? Isaac To <isaac.to@gmail.com> - 2013-06-29 12:37 +0800
Re: Why is the argparse module so inflexible? Robert Kern <robert.kern@gmail.com> - 2013-06-27 20:47 +0100
csiph-web