Пример #1
0
    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)
Пример #2
0
 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)
Пример #3
0
    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)
Пример #4
0
 def __init__(self):
     axes = (("event_type", TypeAxis()), )
     self.registry = Registry(*axes)