AdaptionFailure: How to use Interfaces with PyProtocols ?

Nebur tmp1 at reifenberg.de
Fri Feb 10 06:14:12 EST 2006


Hi,
I tried to understand the docs of Peak's PyProtocols, and failed.
I use PyProtocols v0.93 final. I fetched the ...tar.gz file for Linux
and installed it using the setup.py.
Here's my Hello-World-like example, that defines a Duck, which
"implements" the given Interface:


 from protocols import Interface,adapt,advise

 class Quackable(Interface):
	 def quack(loudness):
		 """ print how loud to quack """
 class Duck:
	 advise(instancesProvide=[Quackable,])
	 def quack(self, loudness):
		 print "quack! %s loud"%(loudness)

 if __name__ == "__main__":
	 d = adapt(Duck, Quackable) # this line raises the failure
	 d.quack(3)

************ But it does not work that way. It get this
"AdaptionFailure" :

  File "...interfaces.py", line 14, in ?
    d = adapt(Duck, Quackable)
  File "C:\cygwin\home\pje\PyProtocols\src/protocols/_speedups.pyx",
line 199, in _speedups.adapt
  File "C:\cygwin\home\pje\PyProtocols\src/protocols/_speedups.pyx",
line 188, in _speedups._adapt
protocols.adapters.AdaptationFailure: ("Can't adapt", <class
__main__.Duck at 0xb7bcc47c>, <class '__main__.Quackable'>)

***************

Or is my Duck code wrong ?  Anybody knowing how to use an Interface ?
Thank you very much-
 Nebur

Remark:There seems to be some windows stuff in PyProtocols ("C:\...") -
a bug ? (I re-installed PyProtocols with option --without-speedups but
nothing changed.)




More information about the Python-list mailing list