Browse Source

Refs #30127 -- Removed name argument for django.utils.functional.cached_property().

Per deprecation timeline.
Mariusz Felisiak 2 years ago
parent
commit
5c10041f46
4 changed files with 5 additions and 43 deletions
  1. 1 11
      django/utils/functional.py
  2. 1 6
      docs/ref/utils.txt
  3. 3 0
      docs/releases/5.0.txt
  4. 0 26
      tests/utils_tests/test_functional.py

+ 1 - 11
django/utils/functional.py

@@ -1,7 +1,6 @@
 import copy
 import itertools
 import operator
-import warnings
 from functools import total_ordering, wraps
 
 
@@ -23,16 +22,7 @@ class cached_property:
             "__set_name__() on it."
         )
 
-    def __init__(self, func, name=None):
-        from django.utils.deprecation import RemovedInDjango50Warning
-
-        if name is not None:
-            warnings.warn(
-                "The name argument is deprecated as it's unnecessary as of "
-                "Python 3.6.",
-                RemovedInDjango50Warning,
-                stacklevel=2,
-            )
+    def __init__(self, func):
         self.real_func = func
         self.__doc__ = getattr(func, "__doc__")
 

+ 1 - 6
docs/ref/utils.txt

@@ -427,7 +427,7 @@ https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004
 .. module:: django.utils.functional
     :synopsis: Functional programming tools.
 
-.. class:: cached_property(func, name=None)
+.. class:: cached_property(func)
 
     The ``@cached_property`` decorator caches the result of a method with a
     single ``self`` argument as a property. The cached result will persist
@@ -509,11 +509,6 @@ https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004
         z = person.friends         # does not call
         x is z                     # is True
 
-    .. deprecated:: 4.1
-
-        The ``name`` parameter is deprecated and will be removed in Django 5.0
-        as it's unnecessary as of Python 3.6.
-
 .. class:: classproperty(method=None)
 
     Similar to :py:func:`@classmethod <classmethod>`, the ``@classproperty``

+ 3 - 0
docs/releases/5.0.txt

@@ -308,3 +308,6 @@ to remove usage of these features.
 * The ``SitemapIndexItem.__str__()`` method is removed.
 
 * The ``CSRF_COOKIE_MASKED`` transitional setting is removed.
+
+* The ``name`` argument of ``django.utils.functional.cached_property()`` is
+  removed.

+ 0 - 26
tests/utils_tests/test_functional.py

@@ -1,8 +1,6 @@
 from unittest import mock
 
 from django.test import SimpleTestCase
-from django.test.utils import ignore_warnings
-from django.utils.deprecation import RemovedInDjango50Warning
 from django.utils.functional import cached_property, classproperty, lazy
 
 
@@ -108,30 +106,6 @@ class FunctionalTests(SimpleTestCase):
         for attr in attrs:
             self.assertCachedPropertyWorks(attr, Class)
 
-    @ignore_warnings(category=RemovedInDjango50Warning)
-    def test_cached_property_name(self):
-        class Class:
-            def other_value(self):
-                """Here is the docstring..."""
-                return 1, object()
-
-            other = cached_property(other_value, name="other")
-            other2 = cached_property(other_value, name="different_name")
-
-        self.assertCachedPropertyWorks("other", Class)
-        # An explicit name is ignored.
-        obj = Class()
-        obj.other2
-        self.assertFalse(hasattr(obj, "different_name"))
-
-    def test_cached_property_name_deprecation_warning(self):
-        def value(self):
-            return 1
-
-        msg = "The name argument is deprecated as it's unnecessary as of Python 3.6."
-        with self.assertWarnsMessage(RemovedInDjango50Warning, msg):
-            cached_property(value, name="other_name")
-
     def test_cached_property_auto_name(self):
         """
         cached_property caches its value and behaves like a property