예제 #1
0
 def testShortCircuit(self):
     """Test that creation short-circuits to reuse existing references"""
     sd = {}
     for s in self.ss:
         sd[s] = 1
     for t in self.ts:
         if hasattr(t, 'x'):
             self.assertIn(safe_ref(t.x), sd)
         else:
             self.assertIn(safe_ref(t), sd)
예제 #2
0
 def testShortCircuit(self):
     """Test that creation short-circuits to reuse existing references"""
     sd = {}
     for s in self.ss:
         sd[s] = 1
     for t in self.ts:
         if hasattr(t, 'x'):
             self.assertIn(safe_ref(t.x), sd)
         else:
             self.assertIn(safe_ref(t), sd)
예제 #3
0
    def test_shortcircuit(self):
        """test_shortcircuit

        Test that creation short-circuits to reuse existing references

        """
        sd = {}
        for s in self.ss:
            sd[s] = 1
        for t in self.ts:
            if hasattr(t, 'x'):
                assert safe_ref(t.x) in sd
            else:
                assert safe_ref(t) in sd
예제 #4
0
    def test_shortcircuit(self):
        """test_shortcircuit

        Test that creation short-circuits to reuse existing references

        """
        sd = {}
        for s in self.ss:
            sd[s] = 1
        for t in self.ts:
            if hasattr(t, 'x'):
                assert safe_ref(t.x) in sd
            else:
                assert safe_ref(t) in sd
예제 #5
0
    def test_in(self):
        """test_in

        Test the "in" operator for safe references (cmp)

        """
        for t in self.ts[:50]:
            self.assertTrue(safe_ref(t.x) in self.ss)
    def test_in(self):
        """test_in

        Test the "in" operator for safe references (cmp)

        """
        for t in self.ts[:50]:
            self.assertIn(safe_ref(t.x), self.ss)
예제 #7
0
 def setUp(self):
     ts = []
     ss = []
     for x in xrange(5000):
         t = Class1()
         ts.append(t)
         s = safe_ref(t.x, self._closure)
         ss.append(s)
     ts.append(fun)
     ss.append(safe_ref(fun, self._closure))
     for x in xrange(30):
         t = Class2()
         ts.append(t)
         s = safe_ref(t, self._closure)
         ss.append(s)
     self.ts = ts
     self.ss = ss
     self.closureCount = 0
예제 #8
0
 def setUp(self):
     ts = []
     ss = []
     for x in range(5000):
         t = Class1()
         ts.append(t)
         s = safe_ref(t.x, self._closure)
         ss.append(s)
     ts.append(fun)
     ss.append(safe_ref(fun, self._closure))
     for x in range(30):
         t = Class2()
         ts.append(t)
         s = safe_ref(t, self._closure)
         ss.append(s)
     self.ts = ts
     self.ss = ss
     self.closureCount = 0
예제 #9
0
    def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):
        """Connect receiver to sender for signal.

        :param receiver: A function or an instance method which is to
            receive signals. Receivers must be hashable objects.

            if weak is :const:`True`, then receiver must be weak-referencable
            (more precisely :func:`saferef.safe_ref()` must be able to create a
            reference to the receiver).

            Receivers must be able to accept keyword arguments.

            If receivers have a `dispatch_uid` attribute, the receiver will
            not be added if another receiver already exists with that
            `dispatch_uid`.

        :keyword sender: The sender to which the receiver should respond.
            Must either be of type :class:`Signal`, or :const:`None` to receive
            events from any sender.

        :keyword weak: Whether to use weak references to the receiver.
            By default, the module will attempt to use weak references to the
            receiver objects. If this parameter is false, then strong
            references will be used.

        :keyword dispatch_uid: An identifier used to uniquely identify a
            particular instance of a receiver. This will usually be a
            string, though it may be anything hashable.

        """
        if dispatch_uid:
            lookup_key = (dispatch_uid, _make_id(sender))
        else:
            lookup_key = (_make_id(receiver), _make_id(sender))

        if weak:
            receiver = saferef.safe_ref(receiver,
                                        on_delete=self._remove_receiver)

        for r_key, _ in self.receivers:
            if r_key == lookup_key:
                break
        else:
            self.receivers.append((lookup_key, receiver))
예제 #10
0
    def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):
        """Connect receiver to sender for signal.

        :param receiver: A function or an instance method which is to
            receive signals. Receivers must be hashable objects.

            if weak is :const:`True`, then receiver must be weak-referencable
            (more precisely :func:`saferef.safe_ref()` must be able to create a
            reference to the receiver).

            Receivers must be able to accept keyword arguments.

            If receivers have a ``dispatch_uid`` attribute, the receiver will
            not be added if another receiver already exists with that
            ``dispatch_uid``.

        :keyword sender: The sender to which the receiver should respond.
            Must either be of type :class:`Signal`, or :const:`None` to receive
            events from any sender.

        :keyword weak: Whether to use weak references to the receiver.
            By default, the module will attempt to use weak references to the
            receiver objects. If this parameter is false, then strong
            references will be used.

        :keyword dispatch_uid: An identifier used to uniquely identify a
            particular instance of a receiver. This will usually be a
            string, though it may be anything hashable.

        """
        if dispatch_uid:
            lookup_key = (dispatch_uid, _make_id(sender))
        else:
            lookup_key = (_make_id(receiver), _make_id(sender))

        if weak:
            receiver = saferef.safe_ref(receiver,
                                        on_delete=self._remove_receiver)

        for r_key, _ in self.receivers:
            if r_key == lookup_key:
                break
        else:
            self.receivers.append((lookup_key, receiver))
예제 #11
0
 def testIn(self):
     """Test the "in" operator for safe references (cmp)"""
     for t in self.ts[:50]:
         self.assertTrue(safe_ref(t.x) in self.ss)