If things look a little dusty around here, it's because I'm away on a mission for two years. I'll be back in August 2012, but in the mean time feel free to fork my projects on github.
Registrar
by Jared

I often find myself writing meta decorators:

_reg = {}
def register(name):
     def meta(func):
          _reg[name] = func
          return func
     return meta

Or some such thing. And that solution is very often enough. But, for the times when you need a bit more control, I've created Registrar. The situation that prompted me to write this was within the confines of a class -- and the functions were being "registered" before they became bound...

Anyway, here's a sample of Registrar in action:

from registrar import NamedRegistrar

class Spam:
    def __init__(self):
        self.events = self._events.bind(self)

        # or
        self.shop = Shoppe()
        for event, value in self._events.bind(self):
            self.show.addEventHandler(event, value[0], **value[2])

    ## setup events
    _events = NamedRegistrar()

    @_events('cheese', bubble=False)
    def onCheese(self, baz):
        pass

    @_events('eggs')
    def onEggs(self, baz):
        return 'no eggs. cheese.'
Bookmark and Share comments
project comments powered by Disqus