Disconnect receiver from sender for signal. If weak references are used, disconnect need not be called. The receiver will be removed from dispatch automatically. Arguments: receiver The registered receiver to disconnect. May be none if
(self, receiver=None, sender=None, dispatch_uid=None)
| 177 | self.sender_receivers_cache.clear() |
| 178 | |
| 179 | def disconnect(self, receiver=None, sender=None, dispatch_uid=None): |
| 180 | """ |
| 181 | Disconnect receiver from sender for signal. |
| 182 | |
| 183 | If weak references are used, disconnect need not be called. The |
| 184 | receiver will be removed from dispatch automatically. |
| 185 | |
| 186 | Arguments: |
| 187 | |
| 188 | receiver |
| 189 | The registered receiver to disconnect. May be none if |
| 190 | dispatch_uid is specified. |
| 191 | |
| 192 | sender |
| 193 | The registered sender to disconnect |
| 194 | |
| 195 | dispatch_uid |
| 196 | the unique identifier of the receiver to disconnect |
| 197 | """ |
| 198 | if dispatch_uid: |
| 199 | lookup_key = (dispatch_uid, _make_id(sender)) |
| 200 | else: |
| 201 | lookup_key = (_make_id(receiver), _make_id(sender)) |
| 202 | |
| 203 | disconnected = False |
| 204 | with self.lock: |
| 205 | self._clear_dead_receivers() |
| 206 | for index in range(len(self.receivers)): |
| 207 | r_key, *_ = self.receivers[index] |
| 208 | if r_key == lookup_key: |
| 209 | disconnected = True |
| 210 | del self.receivers[index] |
| 211 | break |
| 212 | self.sender_receivers_cache.clear() |
| 213 | return disconnected |
| 214 | |
| 215 | def has_listeners(self, sender=None): |
| 216 | sync_receivers, async_receivers = self._live_receivers(sender) |