[stdlib-sig] Breaking out the stdlib

Michael Foord michael at voidspace.org.uk
Tue Sep 15 21:13:35 CEST 2009


Laura Creighton wrote:
> In a message of Tue, 15 Sep 2009 19:41:25 BST, Paul Moore writes:
>   
>> MAL pointed out http://code.activestate.com/recipes/573441/ - extended
>> optparse to allow definition of required options. Given that one of
>> the requirements that argparse is claimed to meet where optparse
>> doesn't is supporting required arguments, how come this simple recipe
>> hasn't been incorporated into optparse?
>>
>> The optparse/argparse case seems to rest on the argument that optparse
>> cannot be extended to do what argparse does. It seems like this isn't
>> true for all requirements. (And maybe some others could be addressed
>> by judiciously deprecating support for specific internal details that
>> maybe should not have been documented in the first place...)
>>     
>
> Maybe, but this simple recipe only works for options which are
> unconditionally required.  What I needed was a solution for options
> that are conditionally required -- if you have option X then you
> must have option Q.
>
> But optparse is particularly unhappy about this, and about other
> things.  If you type command --verbose --brief, and these are
> toggles, then you will get the last one processed, brief in this
> case.  There is no easy way to say 'now please roll over and die'
> because you have an incompatible set of options.  I wrote code 
> that changed optparse to do what I wanted, but boy, was it ugly.
> I can maybe dig it up somewhere.  And when I went knocking, asking 
> optparse's author about how he would recommend that I solve my 
> problem using optparse in a way that was less ugly, I was told
> that my problem wasn't to be solved using optparse.
>
> So I would surmise that the reason this recipe isn't in the standard
> library is optparse's author didn't want it in optparse.
>
>   

Plus, more useful than required options are required positional 
arguments - which optparse doesn't handle at all (and exposes features 
that makes handling them difficult to do in a backwards incompatible way).

Required options are easy to do yourself - just check for their presence 
and error out if they aren't there. It is the other features that are 
more difficult.

Michael

>> Paul.
>> _______________________________________________
>> stdlib-sig mailing list
>> stdlib-sig at python.org
>> http://mail.python.org/mailman/listinfo/stdlib-sig
>>     


-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog




More information about the stdlib-sig mailing list