Re: Status of PyProtocols
Michael Milverton <[email protected]> Sat, 19 Mar 2011 20:40:36 +0800
| Newsgroups | gmane.comp.python.peak |
|---|---|
| Message-ID | <[email protected]> |
Thanks for the reply and sorry about the duplicate message to the list, it's been a while since I last used a mailing list :) Anyway, I did check out the AddOn package and I love it, I'm already putting it to great use. I hope you continue to support it for a long time to come, it's fantastic. I'm using the abstract base classes too, I must admit to not paying much attention to this feature, probably because I was using PyProtocols. It's still a little sad to see PyProtocols rot, it was the best and easiest interface and adaptation library available for python and I really enjoyed using it. Keep up the great work, Thanks Michael Milverton On Sat, Mar 19, 2011 at 3:10 AM, P.J. Eby <pje-Wh6+Hckhi6HFNGf7iClzIwC/[email protected]> wrote: > At 06:12 PM 3/18/2011 +0800, Michael Milverton wrote: > >> Hi, I love PyProtocols and have used it since about 2005, but since it >> hasn't been updated in a while I'm kind of curious as to what it's future >> holds. I am a little hesitant to use it in code now because I'm worried that >> PyProtocols doesn't have a future. >> > > It really doesn't. Twisted's old interface system has died and been > replaced with zope.interface, and the interface/adaptation PEPs are just as > dead. Python since 2.6 is using the 'abc' module for interface declaration, > and PyProtocols doesn't have any support for it. > > PEAK-Rules, on the other hand, *does* support ABCs, and the combination of > abcs, generic functions, and add-ons (see the AddOns project on PyPI) can do > pretty much anything you could do with PyProtocols (except interoperate > directly with zope.interface). > > About the only thing that's lacking is the ability to actually "adapt" > something to something else; I do plan to add a generic Interface class to > support this at some point, but that's really just syntax sugar. > > If you write an interface like this today: > > class IFoo(abc): > @rules.abstract > def some_method(self, blah, blah): > ... > > Then you can simply say: > > IFoo.some_method(anObj, ...) > > instead of: > > IFoo(anObj).some_method(...) > > And in an implementation, you simply say: > > class Foo: > @rules.when(IFoo.some_method) > def some_method(self, blah, blah): > ... > > to register your implementation. > > In other words, It's really only if you're trying to be backward compatible > with a large code base that you need the additional syntax sugar. > > > > Also, would it be hard to remove the speedup setup and just have a pure >> python implementation? >> > > No, it's optional. At runtime, if the C code can't be imported, the Python > code is used in its place. > > _______________________________________________ PEAK mailing list [email protected] http://www.eby-sarna.com/mailman/listinfo/peak