def test_two_axes(self): from generic.registry import Registry from generic.registry import SimpleAxis from generic.registry import TypeAxis registry = Registry(('type', TypeAxis()), ('name', SimpleAxis())) target1 = Target('one') registry.register(target1, object) target2 = Target('two') registry.register(target2, DummyA) target3 = Target('three') registry.register(target3, DummyA, 'foo') context1 = object() self.assertEqual(registry.lookup(context1), target1) context2 = DummyB() self.assertEqual(registry.lookup(context2), target2) self.assertEqual(registry.lookup(context2, 'foo'), target3) target4 = object() registry.register(target4, DummyB) self.assertEqual(registry.lookup(context2), target4) self.assertEqual(registry.lookup(context2, 'foo'), target3)
def test_get_registration(self): from generic.registry import Registry from generic.registry import SimpleAxis from generic.registry import TypeAxis registry = Registry(('type', TypeAxis()), ('name', SimpleAxis())) registry.register('one', object) registry.register('two', DummyA, 'foo') self.assertEqual(registry.get_registration(object), 'one') self.assertEqual(registry.get_registration(DummyA, 'foo'), 'two') self.assertEqual(registry.get_registration(object, 'foo'), None) self.assertEqual(registry.get_registration(DummyA), None)
def __init__(self, argspec, params_arity): """ Initialize dispatcher with ``argspec`` of type :class:`inspect.ArgSpec` and ``params_arity`` that represent number params.""" # Check if we have enough positional arguments for number of type params if arity(argspec) < params_arity: raise TypeError("Not enough positional arguments " "for number of type parameters provided.") self.argspec = argspec self.params_arity = params_arity axis = [("arg_%d" % n, TypeAxis()) for n in range(params_arity)] self.registry = Registry(*axis)
def __init__(self): axes = (("event_type", TypeAxis()), ) self.registry = Registry(*axes)