diff --git a/django/dispatch/dispatcher.py b/django/dispatch/dispatcher.py index b02adb8e80..a8181b7ec6 100644 --- a/django/dispatch/dispatcher.py +++ b/django/dispatch/dispatcher.py @@ -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: diff --git a/docs/internals/deprecation.txt b/docs/internals/deprecation.txt index cc8548a713..250ef1f6d3 100644 --- a/docs/internals/deprecation.txt +++ b/docs/internals/deprecation.txt @@ -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` for more details on these changes. -* ... +* The ``weak`` argument to ``django.dispatch.signals.Signal.disconnect()`` will + be removed. .. _deprecation-removed-in-2.0: diff --git a/docs/releases/1.9.txt b/docs/releases/1.9.txt index 61107583b0..a3ba70562c 100644 --- a/docs/releases/1.9.txt +++ b/docs/releases/1.9.txt @@ -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: diff --git a/docs/topics/signals.txt b/docs/topics/signals.txt index 7722379769..623e595daf 100644 --- a/docs/topics/signals.txt +++ b/docs/topics/signals.txt @@ -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.