[PEAK] adapt factory parameter

Stephen Haberman stephenh at chase3000.com
Wed Jun 9 23:05:05 EDT 2004


> protocols.declareAdapter(
>       multi_adapter(a1,a2),
>       provides=[ISQLFeature],
>       forObjects=[model.Attribute]
> )

I like this. I think I'll change it just a bit to be config driven, e.g.:

protocols.declareAdapter(
    adaptersFromConfig('app.adapters'),
    provides=[ISQLFeature],
    forObjects=[model.Attribute])

With config something like:

[app.adapters]
a = app.attributeAdapter
b = app.collectionAdapter

Where this is for the framework and then individual apps could by adding in
their config file:

[app.adapters]
c = theirapp.fooAdapter

Granted, the a..c key thing is odd, as I really don't need the key and will
probably ignore it, I just need to be able to loop over app.adapters values
defined in multiple config files and having just one (like below) wouldn't
work (in that the 2nd app-specific config file would have to completely
redefine adapters to be attributeAdapter, collectionAdapter, and fooAdapter,
instead of just specifying their own new fooAdapter).

[app]
adapters = [app.attributeAdapter, app.collectionAdapter]

So, thanks, I like this idiom. If you see any things stylistically I could
do that would make it cleaner or more PEAK-ish, e.g. that whole a..c key
thing, I'd appreciate it. But if not, that's fine, I'm pretty sure I can
plug along with this.

- Stephen





More information about the PEAK mailing list