[Zope3-dev] RFC: Use ConfigParser for High-Level Configuration
Chris Withers
chris at simplistix.co.uk
Tue Mar 21 03:36:08 EST 2006
Hi Stuart,
Stuart Bishop wrote:
>> What were the problematic bits?
>
> # Disgusting hack to use our extended config file schema rather than the
> # Z3 one. TODO: Add command line options or other to Z3 to enable overriding
> # this -- StuartBishop 20050406
> from zdaemon.zdoptions import ZDOptions
> ZDOptions.schemafile = os.path.abspath(os.path.join(
> os.path.dirname(__file__), 'lib', 'canonical',
> 'config', 'schema.xml'))
>
> Also, there is only one schema.xml so multiple components can't each insert
> their own blob of configuration information into the global schema.
Okay, so I can see two potential problems here:
1. Zope 3's schema.xml has the same problem that Zope 2's used to have -
no generic multisection where other frameworks/products/whatever can
insert their own bits of configuration. I suspect fixing that schema.xml
(which involves inserting one or two lines ;-) would remove the need for
your monkeypatch above.
2. Are you aware of the component.xml stuff that Dieter referred to?
>>> We lost a fair bit of flexibility doing it this way. Field validation
>>> needs
>>> to be done the ZConfig way.
>> How would you prefer to do it?
>
> Validation of the entire config file, and if there are one or more errors
> output a readable report at the end with error messages returned by the
> validators. The current mechanism just spits out exceptions, which is really
> bad for configuration files aimed at end users.
Agreed, this is something that could be added to ZConfig. Or Zope 3
could catch those exceptions and morph them into useful messages.
Admittedly, you wouldn't get all the errors though, so ZConfig could do
with some enhancement here...
> If I have a non-required section foo, containing a non-required key bar, if
> I try and access config.foo.bar I get an AttributeError. I should get the
> default value for bar.
Okay, probably a bug. Have you reported this to the ZConfig author(s)?
>> My main gripe with the .ini format is the lack of hierarchy, but then I
>> worry that with XML we'll suffer from an overly complex schema...
>
> Why would you want a schema for the XML?
xml freaks like schemas ;-)
Although I actually probably should have said "I worry that we'll end up
with overly complex and badly structured xml *cough*zcml*cough*...
> - validation handlers would be registered for a particular XML namespace
...yay! we love namespaces *sigh*
> - Config file is loaded into a set of data structures, one for
> each XML namespace
That's not a bad idea though...
> - warnings are emitted if there are XML namespaces loaded that don't have
> a validator.
Why? If people don't want validators, don't force them...
> Of course, .ini would be able to emit more meaningfull error messages:
> foo/bar/1 in section [whatever] is required, but not found
> blah/whatever in section [whatever] is not a valid url
> section [baz] is required but does not exist.
I'm all for just fixing the bugs in ZConfig and I think you'll be happy
enough. Not sure it's worth the huge upheavels :-S
cheers,
Chris
--
Simplistix - Content Management, Zope & Python Consulting
- http://www.simplistix.co.uk
More information about the Zope3-dev
mailing list