[Product-Developers] Re: zc.buildout, substitution and templating

Thomas Lotze thomas at thomas-lotze.de
Thu Sep 3 17:04:41 UTC 2009

Encolpe Degoute wrote:

> As zc.buildout is using something near string.template I patched
> gocept.recipe.env to replace '$' by '$$' and collective.recipe.template to
> replace '$$' by '$'.

For the record: gocept.recipe.env hasn't yet been patched; I'd rather
discuss the issue first before applying your patch.

> As _sub method in builout just split text around '$$' and join it again
> with '$$' we need to make the replacement with the result of this
> method.
> Is it the good way to deal with escaping data ? Or is this a bug of
> zc.buildout ?

I think it's a bug in zc.buildout if it cannot read the configuration
storage it wrote earlier itself. A good API for dealing with configuration
options shouldn't require client code such as recipes to care about
encoding and decoding values in order to work around the details of
buildout's option representation. This would be awkward and, as we can see
with the issue at hand, would only work if all client code handled the
encoding consistently.

I therefore propose fixing buildout so that it encodes option values when
writing .installed.cfg just as it would decode them when reading the file.


More information about the Product-Developers mailing list