mirror of
https://github.com/django/django.git
synced 2025-01-03 06:55:47 +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 copy
|
||||||
import itertools
|
import itertools
|
||||||
import operator
|
import operator
|
||||||
import warnings
|
|
||||||
from functools import total_ordering, wraps
|
from functools import total_ordering, wraps
|
||||||
|
|
||||||
|
|
||||||
@ -23,16 +22,7 @@ class cached_property:
|
|||||||
"__set_name__() on it."
|
"__set_name__() on it."
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, func, name=None):
|
def __init__(self, func):
|
||||||
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,
|
|
||||||
)
|
|
||||||
self.real_func = func
|
self.real_func = func
|
||||||
self.__doc__ = getattr(func, "__doc__")
|
self.__doc__ = getattr(func, "__doc__")
|
||||||
|
|
||||||
|
@ -427,7 +427,7 @@ https://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004
|
|||||||
.. module:: django.utils.functional
|
.. module:: django.utils.functional
|
||||||
:synopsis: Functional programming tools.
|
: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
|
The ``@cached_property`` decorator caches the result of a method with a
|
||||||
single ``self`` argument as a property. The cached result will persist
|
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
|
z = person.friends # does not call
|
||||||
x is z # is True
|
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)
|
.. class:: classproperty(method=None)
|
||||||
|
|
||||||
Similar to :py:func:`@classmethod <classmethod>`, the ``@classproperty``
|
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 ``SitemapIndexItem.__str__()`` method is removed.
|
||||||
|
|
||||||
* The ``CSRF_COOKIE_MASKED`` transitional setting 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 unittest import mock
|
||||||
|
|
||||||
from django.test import SimpleTestCase
|
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
|
from django.utils.functional import cached_property, classproperty, lazy
|
||||||
|
|
||||||
|
|
||||||
@ -108,30 +106,6 @@ class FunctionalTests(SimpleTestCase):
|
|||||||
for attr in attrs:
|
for attr in attrs:
|
||||||
self.assertCachedPropertyWorks(attr, Class)
|
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):
|
def test_cached_property_auto_name(self):
|
||||||
"""
|
"""
|
||||||
cached_property caches its value and behaves like a property
|
cached_property caches its value and behaves like a property
|
||||||
|
Loading…
Reference in New Issue
Block a user