From: Allan B. W. <all...@ya...> - 2004-07-28 02:44:56
|
Okay, I got all the NOs. Is there any interest in providing a facility that accomplishes what I set out to do in the first place? Thanks Allan -----Original Message----- From: opt...@li... [mailto:opt...@li...] On Behalf Of Greg Ward Sent: Tuesday, July 27, 2004 18:15 To: Allan B. Wilson Cc: opt...@li... Subject: Re: [optik] Suggested optparse enhancement On 03 July 2004, Allan B. Wilson said: > [I have submitted this as a feature request on sourceforge.net, but > wanted to solicit input from list members as well.] Sorry for the long delay -- I was on vacation, then too busy enjoying the summer to spend time on the computer, and then busy getting Optik 1.5a1 ready. *Now* I can take a look at this. > Of course, on Unix/Linux I could just define a shell alias that sets > particular options, but decided it would be more convenient to have > optparse set defaults from a .ini file (if it exists). This way I can > create a different .ini file as appropriate for each system (or > situation) and optparse will set "local" defaults. Hmmm. Afraid I don't like it -- it feels too much like it's imposing policy, rather than providing mechanism. What if I want my application to use an environment variable instead? Or a ~/.myapprc file? Requiring a config file in the same directory as the script is a bad idea -- it means ordinary users can't customize the behaviour of /usr/local/bin/myapp! Imposing both location and syntax of the proposed config file really bothers me. (And I have a deep, ingrained loathing of Python's ConfigParser module that I really cannot put my finger on. Sigh.) Oh, one other thing: > def add_option(self, *args, **kwargs): > if self.cp and kwargs.has_key("default") and kwargs.has_key("dest") and self.cp.has_option("Defaults", kwargs["dest"]): > argstring = self.cp.get("Defaults", kwargs["dest"]) > argtype = type(kwargs["default"]) > if argtype is bool: kwargs["default"] = bool(argstring.capitalize() == "True" or argstring == "1" or argstring.capitalize() == "Yes") > elif argtype is float: kwargs["default"] = float(argstring) > elif argtype is int: kwargs["default"] = int(argstring) > elif argtype is long: kwargs["default"] = long(argstring) > elif argtype is str: kwargs["default"] = str(argstring) > OptionParser.add_option(self, *args, **kwargs) This is wrong. You should be digging through the option value converters in self.option_class.TYPE_CHECKER to convert values. Take a look at how default values are handled in Optik 1.5 (or current CVS) -- see OptionParser.get_default_values(). Oh, and finally: please don't post code with lines longer than 80 columns; it's really ugly and hard to read. Greg -- Greg Ward <gw...@py...> http://www.gerg.ca/ I'm a lumberjack and I'm OK / I sleep all night and I work all day ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click _______________________________________________ optik-users mailing list opt...@li... https://lists.sourceforge.net/lists/listinfo/optik-users |