m h wrote: > Perhaps this is OT, but since command line parsing is part of > configuration, I figure I'd throw it out there. My scripts often have > configuration that the command line can override and I loosely follow > the example hierarchy[0] listed in The Art of Unix Programming. > > Some configuration I want in a config file (but I want to override > from the command line) and sometimes it's very nice to use environment > variables for configuration. So I do something like this: > > Integration with command line options is an occasionally-requested feature for ConfigObj. I've always said I would be open to patches... In other words, yes I think there is demand for it. Whether it belongs *immediately* in the standard library is another matter, but if you wrote a layer that unified ConfigParser and argparse I think you will find that people use it. It is well outside the realm of this PEP however. All the best, Michael Foord > Chaining Configuration > ---------------------- > > Ugly code to cascade configuration > > >>>> class Unset(object): pass >>>> def cascade_value(opt=None, opt_name=None, env_name=None, cfg=None, cfg_section=None, cfg_name=None, default=None): >>>> > ... """ > ... opt - result of OptionParser.parse_args > ... opt_name - string of opt name you want to access > ... """ > ... # get from cmd line > ... value = Unset() > ... if opt and opt_name: > ... try: > ... value = opt.__getattr__(opt_name) > ... except AttributeError, e: > ... pass > ... if not isinstance(value, Unset): > ... return value > ... # get from ENV > ... if env_name: > ... try: > ... value = os.environ[env_name] > ... except KeyError, e: > ... pass > ... if not isinstance(value, Unset): > ... return value > ... # get from config file > ... if cfg and cfg_section and cfg_name: > ... try: > ... value = cfg.get(cfg_section, cfg_name) > ... except ConfigParser.NoOptionError, e: > ... pass > ... if not isinstance(value, Unset): > ... return value > ... return default > > > >>>> cascade_value(opt=opt, opt_name='author', cfg=cfg, cfg_section='Properties', cfg_name='author') >>>> > 'Matt' > > Does anyone else have interest in such functionality? Is it outside > the realm of this PEP? Ideally I'd like to have something like > ``env_name``, ``config_key`` named parameters for options, then pass > an optional list of configs files to the parser instance. Then rather > than looking solely at command line options, argparse could also pull > values from config files, then env and finally the command line. > > cheers, > > matt harrison > > > 0 - http://www.faqs.org/docs/artu/ch10s02.html > _______________________________________________ > Python-Dev mailing list > Python-Dev at python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: http://mail.python.org/mailman/options/python-dev/fuzzyman%40voidspace.org.uk > -- http://www.ironpythoninaction.com/ http://www.voidspace.org.uk/blog
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4