On Fri, Aug 26, 2005 at 12:00:39PM +0400, firstname.lastname@example.org wrote:
On Fri, 26 Aug 2005 16:30:26 +1000 Andrew Bennetts wrote:
Could somebody give any rationale why this condition shouldn't always hold:
foo = IFoo(bar) assert IFoo.providedBy(foo)
Seems it is not unreasonable to expect this behaviour, because it is exactly what interfaces are all about, or am I wrong?
That's a pretty reasonable expectation. I think emitting a warning if this doesn't hold would be a sane thing to do, and it wouldn't break any code.
For me, raising CannotAdapt would be better choice. After all, getting an object that implements requested interface is the very thing what adaptation is used for.
If I, say, adapt WovenContext to ISession, I get a session object which does not implement the ISession interface itself. Absurdly.
Yep. But that's a trivially fixable bug in that adapter. And this is exactly why raising an exception would be bad -- it will break code that otherwise works fine. Even though such code is arguably buggy, Twisted tries reasonably hard not to break backwards compatibility without warning. We couldn't raise CannotAdapt here without first giving DeprecationWarnings for at least one release.