Fixed #24205 -- Deprecated Signal.disconnect weak parameter.

This commit is contained in:
Florian Apolloner 2015-01-21 19:26:51 +01:00 committed by Tim Graham
parent 851f5bd413
commit 16ee52d21d
4 changed files with 19 additions and 7 deletions

View File

@ -1,7 +1,9 @@
import sys
import threading
import warnings
import weakref
from django.utils.deprecation import RemovedInDjango21Warning
from django.utils.six.moves import range
if sys.version_info < (3, 4):
@ -133,7 +135,7 @@ class Signal(object):
self.receivers.append((lookup_key, receiver))
self.sender_receivers_cache.clear()
def disconnect(self, receiver=None, sender=None, weak=True, dispatch_uid=None):
def disconnect(self, receiver=None, sender=None, weak=None, dispatch_uid=None):
"""
Disconnect receiver from sender for signal.
@ -149,12 +151,12 @@ class Signal(object):
sender
The registered sender to disconnect
weak
The weakref state to disconnect
dispatch_uid
the unique identifier of the receiver to disconnect
"""
if weak is not None:
warnings.warn("Passing `weak` to disconnect has no effect.",
RemovedInDjango21Warning, stacklevel=2)
if dispatch_uid:
lookup_key = (dispatch_uid, _make_id(sender))
else:

View File

@ -15,7 +15,8 @@ about each item can often be found in the release notes of two versions prior.
See the :ref:`Django 1.9 release notes<deprecated-features-1.9>` for more
details on these changes.
* ...
* The ``weak`` argument to ``django.dispatch.signals.Signal.disconnect()`` will
be removed.
.. _deprecation-removed-in-2.0:

View File

@ -177,7 +177,11 @@ Miscellaneous
Features deprecated in 1.9
==========================
...
Miscellaneous
~~~~~~~~~~~~~
* The ``weak`` argument to ``django.dispatch.signals.Signal.disconnect()`` has
been deprecated as it has no effect.
.. removed-features-1.9:

View File

@ -275,7 +275,7 @@ error instance is returned in the tuple pair for the receiver that raised the er
Disconnecting signals
=====================
.. method:: Signal.disconnect([receiver=None, sender=None, weak=True, dispatch_uid=None])
.. method:: Signal.disconnect([receiver=None, sender=None, dispatch_uid=None])
To disconnect a receiver from a signal, call :meth:`Signal.disconnect`. The
arguments are as described in :meth:`.Signal.connect`. The method returns
@ -287,3 +287,8 @@ may be ``None`` if ``dispatch_uid`` is used to identify the receiver.
.. versionchanged:: 1.8
The boolean return value was added.
.. deprecated:: 1.9
The ``weak`` argument is deprecated as it has no effect. It will be removed
in Django 2.1.