At 02:28 PM 6/25/2007 -0500, Ian Bicking wrote: >Potentially a Zope-style minimal event framework would work. Maybe >something like: > > send_signal(signal_name, signal_data) > subscribe(signal_name, listener)
That was what I was wondering, too, except I was thinking it would be sufficient to use entry points for subscription, but only invoke the entry points whose modules are in sys.modules. In other words, never actually import a module in order to invoke a callback. That way, subscription is a natural side effect of importing the modules that contain the listeners. Something like: def send_signal(group, name, *args, **kw): for ep in iter_entry_points(group, name): if ep.module_name in sys.modules: ep.load()(*args, **kw) would then be sufficient. pkg_resources is currently proposed for inclusion in Python 2.6 (per PEP 365), so there wouldn't even be any non-stdlib requirements then. And of course the implementation is trivial enough to copy into any code that wants to send signals. Of course, if you want prioritized callbacks, you can always sort the ep.load() results using a priority attribute or some such. I'm not sure priority makes much sense, though, due to the difficulty of determining a global priority scheme. _______________________________________________ Web-SIG mailing list Web-SIG@python.org Web SIG: http://www.python.org/sigs/web-sig Unsubscribe: http://mail.python.org/mailman/options/web-sig/archive%40mail-archive.com