From 61ad1ea92b1f4df992b0ef1dcc7c781da2413815 Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Mon, 24 Nov 2014 08:36:10 -0500 Subject: [PATCH] Removed django.utils.functional.memoize per deprecation timeline. refs #21351. --- django/utils/functional.py | 25 ------------------------- tests/decorators/tests.py | 8 +------- tests/deprecation/tests.py | 15 --------------- 3 files changed, 1 insertion(+), 47 deletions(-) diff --git a/django/utils/functional.py b/django/utils/functional.py index aa0d6f850a..9e4df4b2f7 100644 --- a/django/utils/functional.py +++ b/django/utils/functional.py @@ -2,10 +2,8 @@ import copy import operator from functools import wraps import sys -import warnings from django.utils import six -from django.utils.deprecation import RemovedInDjango19Warning from django.utils.six.moves import copyreg @@ -18,29 +16,6 @@ def curry(_curried_func, *args, **kwargs): return _curried -def memoize(func, cache, num_args): - """ - Wrap a function so that results for any argument tuple are stored in - 'cache'. Note that the args to the function must be usable as dictionary - keys. - - Only the first num_args are considered when creating the key. - """ - warnings.warn("memoize wrapper is deprecated and will be removed in " - "Django 1.9. Use django.utils.lru_cache instead.", - RemovedInDjango19Warning, stacklevel=2) - - @wraps(func) - def wrapper(*args): - mem_args = args[:num_args] - if mem_args in cache: - return cache[mem_args] - result = func(*args) - cache[mem_args] = result - return result - return wrapper - - class cached_property(object): """ Decorator that converts a method with a single self argument into a diff --git a/tests/decorators/tests.py b/tests/decorators/tests.py index 467901eebf..30423e7c80 100644 --- a/tests/decorators/tests.py +++ b/tests/decorators/tests.py @@ -1,13 +1,12 @@ from functools import wraps, update_wrapper from unittest import TestCase -import warnings from django.contrib.admin.views.decorators import staff_member_required from django.contrib.auth.decorators import login_required, permission_required, user_passes_test from django.http import HttpResponse, HttpRequest, HttpResponseNotAllowed from django.middleware.clickjacking import XFrameOptionsMiddleware from django.utils.decorators import method_decorator -from django.utils.functional import allow_lazy, lazy, memoize +from django.utils.functional import allow_lazy, lazy from django.views.decorators.cache import cache_page, never_cache, cache_control from django.views.decorators.clickjacking import xframe_options_deny, xframe_options_sameorigin, xframe_options_exempt from django.views.decorators.http import require_http_methods, require_GET, require_POST, require_safe, condition @@ -63,11 +62,6 @@ full_decorator = compose( lazy, ) -# suppress the deprecation warning of memoize -with warnings.catch_warnings(): - warnings.filterwarnings('ignore') - fully_decorated = memoize(fully_decorated, {}, 1) - fully_decorated = full_decorator(fully_decorated) diff --git a/tests/deprecation/tests.py b/tests/deprecation/tests.py index 5cf06f0fdf..cae03a8424 100644 --- a/tests/deprecation/tests.py +++ b/tests/deprecation/tests.py @@ -9,7 +9,6 @@ from django.test.utils import reset_warning_registry from django.utils import six, translation from django.utils.deprecation import RenameMethodsBase from django.utils.encoding import force_text -from django.utils.functional import memoize class RenameManagerMethods(RenameMethodsBase): @@ -214,20 +213,6 @@ class DeprecatedChineseLanguageCodes(SimpleTestCase): ]) -class DeprecatingMemoizeTest(SimpleTestCase): - def test_deprecated_memoize(self): - """ - Ensure the correct warning is raised when memoize is used. - """ - with warnings.catch_warnings(record=True) as recorded: - warnings.simplefilter('always') - memoize(lambda x: x, {}, 1) - msg = str(recorded.pop().message) - self.assertEqual(msg, - 'memoize wrapper is deprecated and will be removed in Django ' - '1.9. Use django.utils.lru_cache instead.') - - class DeprecatingSimpleTestCaseUrls(unittest.TestCase): def test_deprecation(self):