[EMAIL PROTECTED] (Cameron Laird) writes: > I'll rein myself in and suggest an even easier introduction > to this subject: configuration files. RARELY is the correct > answer to create a new syntax, although many development > organizations give the impression that's their first choice. > ".ini"-speak is a safe-enough choice. Most interesting, > though, is to interpret Python or some subset as a configu- > ration specification, so that one has immediately not just > HOME = "/some/folder" > STEP_LIMIT = 16 > but > pool_size = cpu_count * 30 > and even > if today == "Sunday": > total_process_maximum = 8 > available in the configuration language. Neat, eh?
I once carried this a step further, and used methodless classes as a configuration mechanism: class PlainFoo: # Values for a plain foo class FancyFoo(PlainFoo): # Overrides for just the things that are different The program that used this created needed lots of objects, in a variety of different flavers that were literally specified as "Just like PlainFoo, but with ...". Doing it this way made configuring things trivial. At the time, I attached "configuration variables" to instances. If I were going to do it today, I'd look into making the parent classes of the class that implements Foo dynanmic. plwm (an X11 window manager - sort of - built in top of python-xlib) carries this another step further. You configure your window manager by creating a subclass of the WindowManager (or other) class that mixes in the features you want, and sets the attributes to control specific features. It's very flexible - but at this point, the "configuration file" is a Python program, and not really suitable to use by non-programmers. > But if configuration is *that* powerful, then it can also > do great damage. How does one make Python interpretation safe? > That's a subject for another day. We're all waiting for this, somewhat impatiently :-). <mike -- Mike Meyer <[EMAIL PROTECTED]> http://www.mired.org/home/mwm/ Independent WWW/Perforce/FreeBSD/Unix consultant, email for more information. -- http://mail.python.org/mailman/listinfo/python-list