mirror of
https://github.com/django/django.git
synced 2025-01-03 15:06:09 +00:00
Refs #30127 -- Removed name argument for django.utils.functional.cached_property().
Per deprecation timeline.
This commit is contained in:
parent
e01970e9d2
commit
5c10041f46
@ -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__")
|
||||
|
||||
|
@ -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``
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user