Re: The bake-off
[email protected] Thu, 30 May 2002 16:21:53 +0200
| Newsgroups | gmane.comp.python.getopt |
|---|---|
| Message-ID | <[email protected]> |
[Moore, Paul Thu, May 30, 2002 at 02:39:29PM +0100] > From: [email protected] [mailto:[email protected]] > > thanks! I understand the criticism. Bear in mind though that > > i was *not* suggesting an alternative to Optik. > > That wasn't clear to me at the time... Sorry. probably my fault also. > > the idea was to make it *even cheaper* to write cmdline-tools > > with a rich interface. The basic idea is to construct a > > 'namespace'-mapping between the shell-cmdline and a python > > function (or class). I suggested to use Optik as the backend > > for this. I was (and probably still am <wink>) willing to > > implement this but it is difficult if there is no feedback :-) > > It sounds like you're essentially talking about an "application framework" > for simple command-line type scripts. If so, then my feeling is that it's a > nice idea, and probably something I'd play with occasionally. I don't know > if it would get much use in practice, though - it generally isn't too hard > to use something like getopt/Optik "by hand". true enough :-) btw, Zope and other web-frameworks map an URL to a method in python as well<wink>. I think that providing glue code in the standard lib that maps the command line to a python function would considerably lower the barrier to a) make up a nice-for-the-user-and-programmer cmdline-tool. b) offer your tool to others (which usually means it will be improved etc.pp.) > I'm not too bothered by the introspection aspect - Greg's concern that it's > excessively "clever" isn't a problem to me if it's behind the scenes. it's mostly straight forward. there is only one real problem... e.g. take this mapping [*]: def function( mode=('-m','%s','text'), # output mode can be 'html' or 'text' *files # list of input files to process ) it's not difficult to introspect the default values (the argspec) of the parameters. But it is somewhat tricky to get the line documentation (#...) after each attribute. Note, that is easy enough to call 'inspect.getsource(xyz)' to get the information, BUT the problem is: intospection generally does not work for objects living in the __main__ module :-( There are known workarounds but they are not pretty. > If you implement this, I promise I'll download it and try it out :-) i will someday :-) In the meantime i have done a reimplementation of the rlcompleter (command line completer) which works pretty nice plus some other stuff... cheers, holger [*] the more i think about it: Maybe it would be more practical and natural to map the cmdline to a class ...