My current suggestion to make 'transitive adaption' easy for a application builder (one putting togeher components) has a few small parts:
- If an adaptation is not found, raise an error, but list in the error message two additional things: (a) what possible adaptation paths exist, and (b) how to register one of these paths in their module.
- A simple method to register an adaption path, the error message above can even give the exact line needed,
adapt.registerPath(from=A,to=C,via=B)
I'd just like to note that this won't solve my use case for transitive adaptation. To keep backwards compatibility, I can't depend on the application developer to register an adapter path from A through IResource to INewResource. Trying to adapt A to INewResource needs to just work. I can't register the path either, because I (the framework author) don't know anything about A.
A solution that would work is if I have to explicitly declare the adapter from IResource to INewResource as 'safe', as long as I don't also have to declare the adapter from A to IResource as 'safe'. (That is, I suppose -- in a transitive adapter chain, all except one adapter in the chain would have to be declared 'safe').
I don't know whether or not it's worthwhile to have this encoded in the framework, as it is clearly possible to do it on my own in any case. I'll leave that for others to debate. :)
James
_______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com