[Python-Dev] PEP 246, redux (original) (raw)

Clark C. Evans cce at clarkevans.com
Thu Jan 13 18:46:43 CET 2005


On Wed, Jan 12, 2005 at 01:15:20PM -0800, Guido van Rossum wrote: | [Clark] | > - add a flag to adapt, allowTransitive, which defaults to False || That wouldn't work very well when most adapt() calls are invoked | implicitly through signature declarations (per my blog's proposal).

Understood. This was a side-suggestion -- not the main thrust of my response. I'm writing to convince you that automatic "combined" adaptation, even as a last resort, is a bad idea. It should be manual, but we can provide easy mechanisms for application developers to specify combined adapters easily.

On Wed, Jan 12, 2005 at 02:57:11PM -0500, Clark C. Evans wrote: | On Wed, Jan 12, 2005 at 10:16:14AM -0800, Guido van Rossum wrote: | | But now, since I am still in favor of automatic "combined" adaptation | | as a last resort

A few problems with automatic "combined" adaptation:

  1. Handling the case of multiple adaptation pathways is one issue; how do you choose? There isn't a good cost algorithem since the goodness of an adapter depends largely on the programmer's need.

  2. Importing or commenting out the import of a module that may seem to have little bearing on a given chunk of code could cause subtle changes in behavior or adaptation errors, as a new path becomes available, or a previously working path is disabled.

  3. The technique causes people to want to say what is and isn't an adapter -- when this choice should be soly up to the appropriate developers. I'd rather not have to standardize that FileName -> File is a bad adaption, but File -> String is a good adaption. Or whatever is in vogue that year.

  4. It's overly complicated for what it does. I assert that this is a very minor use case. When transitive adaptation is needed, an explicit registration of an adapter can be made simple.

My current suggestion to make 'transitive adaption' easy for a application builder (one putting togeher components) has a few small parts:

In general, I think registries suffer all sorts of namespace and scoping issues, which is why I had proposed conform and adapt Extending registry mechanism with automatic 'transitive' adapters makes things even worse.

Cheers,

Clark

Clark C. Evans Prometheus Research, LLC. http://www.prometheusresearch.com/ o office: +1.203.777.2550 ~/ , mobile: +1.203.444.0557 // (( Prometheus Research: Transforming Data Into Knowledge \ , / - Research Exchange Database /\ - Survey & Assessment Technologies ` \ - Software Tools for Researchers ~ *



More information about the Python-Dev mailing list