示例#1
0
    def test_instance(self):
        obj = object()
        assert_raises(TypeError, util.as_interface, obj,
                          cls=self.Something)

        assert_raises(TypeError, util.as_interface, obj,
                          methods=('foo'))

        assert_raises(TypeError, util.as_interface, obj,
                          cls=self.Something, required=('foo'))

        obj = self.Something()
        eq_(obj, util.as_interface(obj, cls=self.Something))
        eq_(obj, util.as_interface(obj, methods=('foo',)))
        eq_(
            obj, util.as_interface(obj, cls=self.Something,
                                   required=('outofband',)))
        partial = self.Partial()

        slotted = self.Object()
        slotted.bar = lambda self: 123

        for obj in partial, slotted:
            eq_(obj, util.as_interface(obj, cls=self.Something))
            assert_raises(TypeError, util.as_interface, obj,
                              methods=('foo'))
            eq_(obj, util.as_interface(obj, methods=('bar',)))
            eq_(obj, util.as_interface(obj, cls=self.Something,
                                       required=('bar',)))
            assert_raises(TypeError, util.as_interface, obj,
                              cls=self.Something, required=('foo',))

            assert_raises(TypeError, util.as_interface, obj,
                              cls=self.Something, required=self.Something)
示例#2
0
    def test_instance(self):
        obj = object()
        assert_raises(TypeError, util.as_interface, obj,
                          cls=self.Something)

        assert_raises(TypeError, util.as_interface, obj,
                          methods=('foo'))

        assert_raises(TypeError, util.as_interface, obj,
                          cls=self.Something, required=('foo'))

        obj = self.Something()
        eq_(obj, util.as_interface(obj, cls=self.Something))
        eq_(obj, util.as_interface(obj, methods=('foo',)))
        eq_(
            obj, util.as_interface(obj, cls=self.Something,
                                   required=('outofband',)))
        partial = self.Partial()

        slotted = self.Object()
        slotted.bar = lambda self: 123

        for obj in partial, slotted:
            eq_(obj, util.as_interface(obj, cls=self.Something))
            assert_raises(TypeError, util.as_interface, obj,
                              methods=('foo'))
            eq_(obj, util.as_interface(obj, methods=('bar',)))
            eq_(obj, util.as_interface(obj, cls=self.Something,
                                       required=('bar',)))
            assert_raises(TypeError, util.as_interface, obj,
                              cls=self.Something, required=('foo',))

            assert_raises(TypeError, util.as_interface, obj,
                              cls=self.Something, required=self.Something)
示例#3
0
    def _adapt_listener(cls, self, listener):
        """Adapt a :class:`.PoolListener` to individual
        :class:`event.Dispatch` events.

        """

        listener = util.as_interface(listener, methods=('connect',
                                'first_connect', 'checkout', 'checkin'))
        if hasattr(listener, 'connect'):
            event.listen(self, 'connect', listener.connect)
        if hasattr(listener, 'first_connect'):
            event.listen(self, 'first_connect', listener.first_connect)
        if hasattr(listener, 'checkout'):
            event.listen(self, 'checkout', listener.checkout)
        if hasattr(listener, 'checkin'):
            event.listen(self, 'checkin', listener.checkin)
示例#4
0
    def _adapt_listener(cls, self, listener):
        """Adapt a :class:`.PoolListener` to individual
        :class:`event.Dispatch` events.

        """

        listener = util.as_interface(listener,
                                     methods=('connect', 'first_connect',
                                              'checkout', 'checkin'))
        if hasattr(listener, 'connect'):
            event.listen(self, 'connect', listener.connect)
        if hasattr(listener, 'first_connect'):
            event.listen(self, 'first_connect', listener.first_connect)
        if hasattr(listener, 'checkout'):
            event.listen(self, 'checkout', listener.checkout)
        if hasattr(listener, 'checkin'):
            event.listen(self, 'checkin', listener.checkin)
示例#5
0
    def add_listener(self, listener):
        """Add a ``PoolListener``-like object to this pool.

        ``listener`` may be an object that implements some or all of
        PoolListener, or a dictionary of callables containing implementations
        of some or all of the named methods in PoolListener.

        """

        listener = as_interface(listener, methods=("connect", "checkout", "checkin"))

        self.listeners.append(listener)
        if hasattr(listener, "connect"):
            self._on_connect.append(listener)
        if hasattr(listener, "checkout"):
            self._on_checkout.append(listener)
        if hasattr(listener, "checkin"):
            self._on_checkin.append(listener)
示例#6
0
    def add_listener(self, listener):
        """Add a ``PoolListener``-like object to this pool.

        ``listener`` may be an object that implements some or all of
        PoolListener, or a dictionary of callables containing implementations
        of some or all of the named methods in PoolListener.

        """

        listener = as_interface(listener,
                                methods=('connect', 'checkout', 'checkin'))

        self.listeners.append(listener)
        if hasattr(listener, 'connect'):
            self._on_connect.append(listener)
        if hasattr(listener, 'checkout'):
            self._on_checkout.append(listener)
        if hasattr(listener, 'checkin'):
            self._on_checkin.append(listener)
示例#7
0
    def test_dict(self):
        obj = {}

        self.assertRaises(TypeError, util.as_interface, obj,
                          cls=self.Something)
        self.assertRaises(TypeError, util.as_interface, obj,
                          methods=('foo'))
        self.assertRaises(TypeError, util.as_interface, obj,
                          cls=self.Something, required=('foo'))

        def assertAdapted(obj, *methods):
            assert isinstance(obj, type)
            found = set([m for m in dir(obj) if not m.startswith('_')])
            for method in methods:
                assert method in found
                found.remove(method)
            assert not found

        fn = lambda self: 123

        obj = {'foo': fn, 'bar': fn}

        res = util.as_interface(obj, cls=self.Something)
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, cls=self.Something, required=self.Something)
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, cls=self.Something, required=('foo',))
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, methods=('foo', 'bar'))
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, methods=('foo', 'bar', 'baz'))
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, methods=('foo', 'bar'), required=('foo',))
        assertAdapted(res, 'foo', 'bar')

        self.assertRaises(TypeError, util.as_interface, obj, methods=('foo',))

        self.assertRaises(TypeError, util.as_interface, obj,
                          methods=('foo', 'bar', 'baz'), required=('baz',))

        obj = {'foo': 123}
        self.assertRaises(TypeError, util.as_interface, obj, cls=self.Something)
示例#8
0
    def test_dict(self):
        obj = {}

        assert_raises(TypeError, util.as_interface, obj,
                          cls=self.Something)
        assert_raises(TypeError, util.as_interface, obj,
                          methods=('foo'))
        assert_raises(TypeError, util.as_interface, obj,
                          cls=self.Something, required=('foo'))

        def assertAdapted(obj, *methods):
            assert isinstance(obj, type)
            found = set([m for m in dir(obj) if not m.startswith('_')])
            for method in methods:
                assert method in found
                found.remove(method)
            assert not found

        fn = lambda self: 123

        obj = {'foo': fn, 'bar': fn}

        res = util.as_interface(obj, cls=self.Something)
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, cls=self.Something, required=self.Something)
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, cls=self.Something, required=('foo',))
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, methods=('foo', 'bar'))
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, methods=('foo', 'bar', 'baz'))
        assertAdapted(res, 'foo', 'bar')

        res = util.as_interface(obj, methods=('foo', 'bar'), required=('foo',))
        assertAdapted(res, 'foo', 'bar')

        assert_raises(TypeError, util.as_interface, obj, methods=('foo',))

        assert_raises(TypeError, util.as_interface, obj,
                          methods=('foo', 'bar', 'baz'), required=('baz',))

        obj = {'foo': 123}
        assert_raises(TypeError, util.as_interface, obj, cls=self.Something)