Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-diskcache for
openSUSE:Factory checked in at 2022-01-17 22:33:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-diskcache (Old)
and /work/SRC/openSUSE:Factory/.python-diskcache.new.1892 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-diskcache"
Mon Jan 17 22:33:52 2022 rev:9 rq:946689 version:5.4.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-diskcache/python-diskcache.changes
2021-12-30 15:55:36.904663542 +0100
+++
/work/SRC/openSUSE:Factory/.python-diskcache.new.1892/python-diskcache.changes
2022-01-17 22:33:55.618239006 +0100
@@ -1,0 +2,9 @@
+Sat Jan 15 17:42:10 UTC 2022 - Dirk M??ller <[email protected]>
+
+- update to 5.4.0:
+ * test django 3.2
+ * Fix DjangoCache.delete to return True/False
+ * remove unused imports
+ * run isort
+
+-------------------------------------------------------------------
Old:
----
diskcache-5.3.0.tar.gz
New:
----
diskcache-5.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-diskcache.spec ++++++
--- /var/tmp/diff_new_pack.kv4X56/_old 2022-01-17 22:33:56.902239856 +0100
+++ /var/tmp/diff_new_pack.kv4X56/_new 2022-01-17 22:33:56.906239859 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-diskcache
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%global skip_python2 1
Name: python-diskcache
-Version: 5.3.0
+Version: 5.4.0
Release: 0
Summary: Disk and file backed cache
License: Apache-2.0
++++++ diskcache-5.3.0.tar.gz -> diskcache-5.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-diskcache-5.3.0/diskcache/__init__.py
new/python-diskcache-5.4.0/diskcache/__init__.py
--- old/python-diskcache-5.3.0/diskcache/__init__.py 2021-11-30
07:58:48.000000000 +0100
+++ new/python-diskcache-5.4.0/diskcache/__init__.py 2021-12-31
02:58:24.000000000 +0100
@@ -61,8 +61,8 @@
pass
__title__ = 'diskcache'
-__version__ = '5.3.0'
-__build__ = 0x050300
+__version__ = '5.4.0'
+__build__ = 0x050400
__author__ = 'Grant Jenks'
__license__ = 'Apache 2.0'
__copyright__ = 'Copyright 2016-2022 Grant Jenks'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-diskcache-5.3.0/diskcache/djangocache.py
new/python-diskcache-5.4.0/diskcache/djangocache.py
--- old/python-diskcache-5.3.0/diskcache/djangocache.py 2021-11-30
07:58:48.000000000 +0100
+++ new/python-diskcache-5.4.0/diskcache/djangocache.py 2021-12-31
02:58:24.000000000 +0100
@@ -220,7 +220,7 @@
"""
# pylint: disable=arguments-differ
key = self.make_key(key, version=version)
- self._cache.delete(key, retry)
+ return self._cache.delete(key, retry)
def incr(self, key, delta=1, version=None, default=None, retry=True):
"""Increment value by delta for item with key.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-diskcache-5.3.0/requirements.txt
new/python-diskcache-5.4.0/requirements.txt
--- old/python-diskcache-5.3.0/requirements.txt 2021-11-30 07:58:48.000000000
+0100
+++ new/python-diskcache-5.4.0/requirements.txt 2021-12-31 02:58:24.000000000
+0100
@@ -1,7 +1,7 @@
-e .
blue
coverage
-django==2.2.*
+django==3.2.*
django_redis
doc8
flake8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-diskcache-5.3.0/tests/test_djangocache.py
new/python-diskcache-5.4.0/tests/test_djangocache.py
--- old/python-diskcache-5.3.0/tests/test_djangocache.py 2021-11-30
07:58:48.000000000 +0100
+++ new/python-diskcache-5.4.0/tests/test_djangocache.py 2021-12-31
02:58:24.000000000 +0100
@@ -1,64 +1,24 @@
# Most of this file was copied from:
-#
https://raw.githubusercontent.com/django/django/stable/2.2.x/tests/cache/tests.py
+#
https://raw.githubusercontent.com/django/django/stable/3.2.x/tests/cache/tests.py
# Unit tests for cache framework
# Uses whatever cache backend is set in the test settings file.
-import copy
-import io
import os
import pickle
-import re
import shutil
import tempfile
-import threading
import time
-import unittest
-import warnings
from unittest import mock
from django.conf import settings
-from django.core import management, signals
-from django.core.cache import (
- DEFAULT_CACHE_ALIAS,
- CacheKeyWarning,
- InvalidCacheKey,
- cache,
- caches,
-)
-from django.core.cache.utils import make_template_fragment_key
-from django.db import close_old_connections, connection, connections
-from django.http import (
- HttpRequest,
- HttpResponse,
- HttpResponseNotModified,
- StreamingHttpResponse,
-)
+from django.core.cache import CacheKeyWarning, cache, caches
+from django.http import HttpResponse
from django.middleware.cache import (
- CacheMiddleware,
FetchFromCacheMiddleware,
UpdateCacheMiddleware,
)
-from django.middleware.csrf import CsrfViewMiddleware
-from django.template import engines
-from django.template.context_processors import csrf
-from django.template.response import TemplateResponse
-from django.test import (
- RequestFactory,
- SimpleTestCase,
- TestCase,
- TransactionTestCase,
- override_settings,
-)
+from django.test import RequestFactory, TestCase, override_settings
from django.test.signals import setting_changed
-from django.utils import timezone, translation
-from django.utils.cache import (
- get_cache_key,
- learn_cache_key,
- patch_cache_control,
- patch_vary_headers,
-)
-from django.utils.encoding import force_text
-from django.views.decorators.cache import cache_page
################################################################################
# Setup Django for models import.
@@ -88,6 +48,10 @@
raise pickle.PickleError()
+def empty_response(request):
+ return HttpResponse()
+
+
KEY_ERRORS_WITH_MEMCACHED_MSG = (
'Cache key contains characters that will cause errors if used with '
'memcached: %r'
@@ -138,6 +102,14 @@
# A common set of tests to apply to all cache backends
factory = RequestFactory()
+ # RemovedInDjango41Warning: python-memcached doesn't support .get() with
+ # default.
+ supports_get_with_default = True
+
+ # Some clients raise custom exceptions when .incr() or .decr() are called
+ # with a non-integer value.
+ incr_decr_type_error = TypeError
+
def tearDown(self):
cache.clear()
@@ -146,11 +118,15 @@
cache.set('key', 'value')
self.assertEqual(cache.get('key'), 'value')
+ def test_default_used_when_none_is_set(self):
+ """If None is cached, get() returns it instead of the default."""
+ cache.set('key_default_none', None)
+ self.assertIsNone(cache.get('key_default_none', default='default'))
+
def test_add(self):
# A key can be added to a cache
- cache.add('addkey1', 'value')
- result = cache.add('addkey1', 'newvalue')
- self.assertFalse(result)
+ self.assertIs(cache.add('addkey1', 'value'), True)
+ self.assertIs(cache.add('addkey1', 'newvalue'), False)
self.assertEqual(cache.get('addkey1'), 'value')
def test_prefix(self):
@@ -158,7 +134,7 @@
cache.set('somekey', 'value')
# should not be set in the prefixed cache
- self.assertFalse(caches['prefix'].has_key('somekey'))
+ self.assertIs(caches['prefix'].has_key('somekey'), False)
caches['prefix'].set('somekey', 'value2')
@@ -180,28 +156,43 @@
self.assertEqual(
cache.get_many(iter(['a', 'b', 'e'])), {'a': 'a', 'b': 'b'}
)
+ cache.set_many({'x': None, 'y': 1})
+ self.assertEqual(cache.get_many(['x', 'y']), {'x': None, 'y': 1})
def test_delete(self):
# Cache keys can be deleted
cache.set_many({'key1': 'spam', 'key2': 'eggs'})
self.assertEqual(cache.get('key1'), 'spam')
- cache.delete('key1')
+ self.assertIs(cache.delete('key1'), True)
self.assertIsNone(cache.get('key1'))
self.assertEqual(cache.get('key2'), 'eggs')
+ def test_delete_nonexistent(self):
+ self.assertIs(cache.delete('nonexistent_key'), False)
+
def test_has_key(self):
# The cache can be inspected for cache keys
cache.set('hello1', 'goodbye1')
- self.assertTrue(cache.has_key('hello1'))
- self.assertFalse(cache.has_key('goodbye1'))
+ self.assertIs(cache.has_key('hello1'), True)
+ self.assertIs(cache.has_key('goodbye1'), False)
cache.set('no_expiry', 'here', None)
- self.assertTrue(cache.has_key('no_expiry'))
+ self.assertIs(cache.has_key('no_expiry'), True)
+ cache.set('null', None)
+ self.assertIs(
+ cache.has_key('null'),
+ True if self.supports_get_with_default else False,
+ )
def test_in(self):
# The in operator can be used to inspect cache contents
cache.set('hello2', 'goodbye2')
self.assertIn('hello2', cache)
self.assertNotIn('goodbye2', cache)
+ cache.set('null', None)
+ if self.supports_get_with_default:
+ self.assertIn('null', cache)
+ else:
+ self.assertNotIn('null', cache)
def test_incr(self):
# Cache values can be incremented
@@ -213,6 +204,9 @@
self.assertEqual(cache.incr('answer', -10), 42)
with self.assertRaises(ValueError):
cache.incr('does_not_exist')
+ cache.set('null', None)
+ with self.assertRaises(self.incr_decr_type_error):
+ cache.incr('null')
def test_decr(self):
# Cache values can be decremented
@@ -224,6 +218,9 @@
self.assertEqual(cache.decr('answer', -10), 42)
with self.assertRaises(ValueError):
cache.decr('does_not_exist')
+ cache.set('null', None)
+ with self.assertRaises(self.incr_decr_type_error):
+ cache.decr('null')
def test_close(self):
self.assertTrue(hasattr(cache, 'close'))
@@ -295,24 +292,23 @@
time.sleep(2)
self.assertIsNone(cache.get('expire1'))
- cache.add('expire2', 'newvalue')
+ self.assertIs(cache.add('expire2', 'newvalue'), True)
self.assertEqual(cache.get('expire2'), 'newvalue')
- self.assertFalse(cache.has_key('expire3'))
+ self.assertIs(cache.has_key('expire3'), False)
def test_touch(self):
# cache.touch() updates the timeout.
cache.set('expire1', 'very quickly', timeout=1)
self.assertIs(cache.touch('expire1', timeout=4), True)
time.sleep(2)
- self.assertTrue(cache.has_key('expire1'))
+ self.assertIs(cache.has_key('expire1'), True)
time.sleep(3)
- self.assertFalse(cache.has_key('expire1'))
-
+ self.assertIs(cache.has_key('expire1'), False)
# cache.touch() works without the timeout argument.
cache.set('expire1', 'very quickly', timeout=1)
self.assertIs(cache.touch('expire1'), True)
time.sleep(2)
- self.assertTrue(cache.has_key('expire1'))
+ self.assertIs(cache.has_key('expire1'), True)
self.assertIs(cache.touch('nonexistent'), False)
@@ -333,13 +329,13 @@
# Test `add`
for (key, value) in stuff.items():
with self.subTest(key=key):
- cache.delete(key)
- cache.add(key, value)
+ self.assertIs(cache.delete(key), True)
+ self.assertIs(cache.add(key, value), True)
self.assertEqual(cache.get(key), value)
# Test `set_many`
for (key, value) in stuff.items():
- cache.delete(key)
+ self.assertIs(cache.delete(key), True)
cache.set_many(stuff)
for (key, value) in stuff.items():
with self.subTest(key=key):
@@ -359,7 +355,7 @@
self.assertEqual(value, decompress(compressed_result).decode())
# Test add
- cache.add('binary1-add', compressed_value)
+ self.assertIs(cache.add('binary1-add', compressed_value), True)
compressed_result = cache.get('binary1-add')
self.assertEqual(compressed_value, compressed_result)
self.assertEqual(value, decompress(compressed_result).decode())
@@ -405,14 +401,14 @@
def test_long_timeout(self):
"""
- Followe memcached's convention where a timeout greater than 30 days is
+ Follow memcached's convention where a timeout greater than 30 days is
treated as an absolute expiration timestamp instead of a relative
offset (#12399).
"""
cache.set('key1', 'eggs', 60 * 60 * 24 * 30 + 1) # 30 days + 1 second
self.assertEqual(cache.get('key1'), 'eggs')
- cache.add('key2', 'ham', 60 * 60 * 24 * 30 + 1)
+ self.assertIs(cache.add('key2', 'ham', 60 * 60 * 24 * 30 + 1), True)
self.assertEqual(cache.get('key2'), 'ham')
cache.set_many(
@@ -429,10 +425,9 @@
cache.set('key1', 'eggs', None)
self.assertEqual(cache.get('key1'), 'eggs')
- cache.add('key2', 'ham', None)
+ self.assertIs(cache.add('key2', 'ham', None), True)
self.assertEqual(cache.get('key2'), 'ham')
- added = cache.add('key1', 'new eggs', None)
- self.assertIs(added, False)
+ self.assertIs(cache.add('key1', 'new eggs', None), False)
self.assertEqual(cache.get('key1'), 'eggs')
cache.set_many({'key3': 'sausage', 'key4': 'lobster bisque'}, None)
@@ -440,7 +435,7 @@
self.assertEqual(cache.get('key4'), 'lobster bisque')
cache.set('key5', 'belgian fries', timeout=1)
- cache.touch('key5', timeout=None)
+ self.assertIs(cache.touch('key5', timeout=None), True)
time.sleep(2)
self.assertEqual(cache.get('key5'), 'belgian fries')
@@ -451,7 +446,7 @@
cache.set('key1', 'eggs', 0)
self.assertIsNone(cache.get('key1'))
- cache.add('key2', 'ham', 0)
+ self.assertIs(cache.add('key2', 'ham', 0), True)
self.assertIsNone(cache.get('key2'))
cache.set_many({'key3': 'sausage', 'key4': 'lobster bisque'}, 0)
@@ -459,7 +454,7 @@
self.assertIsNone(cache.get('key4'))
cache.set('key5', 'belgian fries', timeout=5)
- cache.touch('key5', timeout=0)
+ self.assertIs(cache.touch('key5', timeout=0), True)
self.assertIsNone(cache.get('key5'))
def test_float_timeout(self):
@@ -467,7 +462,12 @@
cache.set('key1', 'spam', 100.2)
self.assertEqual(cache.get('key1'), 'spam')
- def _perform_cull_test(self, cull_cache, initial_count, final_count):
+ def _perform_cull_test(self, cull_cache_name, initial_count, final_count):
+ try:
+ cull_cache = caches[cull_cache_name]
+ except InvalidCacheBackendError:
+ self.skipTest("Culling isn't implemented.")
+
# Create initial cache key entries. This will overflow the cache,
# causing a cull.
for i in range(1, initial_count):
@@ -480,10 +480,24 @@
self.assertEqual(count, final_count)
def test_cull(self):
- self._perform_cull_test(caches['cull'], 50, 29)
+ self._perform_cull_test('cull', 50, 29)
def test_zero_cull(self):
- self._perform_cull_test(caches['zero_cull'], 50, 19)
+ self._perform_cull_test('zero_cull', 50, 19)
+
+ def test_cull_delete_when_store_empty(self):
+ try:
+ cull_cache = caches['cull']
+ except InvalidCacheBackendError:
+ self.skipTest("Culling isn't implemented.")
+ old_max_entries = cull_cache._max_entries
+ # Force _cull to delete on first cached record.
+ cull_cache._max_entries = -1
+ try:
+ cull_cache.set('force_cull_delete', 'value', 1000)
+ self.assertIs(cull_cache.has_key('force_cull_delete'), True)
+ finally:
+ cull_cache._max_entries = old_max_entries
def _perform_invalid_key_test(self, key, expected_warning):
"""
@@ -500,10 +514,24 @@
old_func = cache.key_func
cache.key_func = func
+ tests = [
+ ('add', [key, 1]),
+ ('get', [key]),
+ ('set', [key, 1]),
+ ('incr', [key]),
+ ('decr', [key]),
+ ('touch', [key]),
+ ('delete', [key]),
+ ('get_many', [[key, 'b']]),
+ ('set_many', [{key: 1, 'b': 2}]),
+ ('delete_many', [{key: 1, 'b': 2}]),
+ ]
try:
- with self.assertWarns(CacheKeyWarning) as cm:
- cache.set(key, 'value')
- self.assertEqual(str(cm.warning), expected_warning)
+ for operation, args in tests:
+ with self.subTest(operation=operation):
+ with self.assertWarns(CacheKeyWarning) as cm:
+ getattr(cache, operation)(*args)
+ self.assertEqual(str(cm.warning), expected_warning)
finally:
cache.key_func = old_func
@@ -567,41 +595,41 @@
def test_cache_versioning_add(self):
# add, default version = 1, but manually override version = 2
- cache.add('answer1', 42, version=2)
+ self.assertIs(cache.add('answer1', 42, version=2), True)
self.assertIsNone(cache.get('answer1', version=1))
self.assertEqual(cache.get('answer1', version=2), 42)
- cache.add('answer1', 37, version=2)
+ self.assertIs(cache.add('answer1', 37, version=2), False)
self.assertIsNone(cache.get('answer1', version=1))
self.assertEqual(cache.get('answer1', version=2), 42)
- cache.add('answer1', 37, version=1)
+ self.assertIs(cache.add('answer1', 37, version=1), True)
self.assertEqual(cache.get('answer1', version=1), 37)
self.assertEqual(cache.get('answer1', version=2), 42)
# v2 add, using default version = 2
- caches['v2'].add('answer2', 42)
+ self.assertIs(caches['v2'].add('answer2', 42), True)
self.assertIsNone(cache.get('answer2', version=1))
self.assertEqual(cache.get('answer2', version=2), 42)
- caches['v2'].add('answer2', 37)
+ self.assertIs(caches['v2'].add('answer2', 37), False)
self.assertIsNone(cache.get('answer2', version=1))
self.assertEqual(cache.get('answer2', version=2), 42)
- caches['v2'].add('answer2', 37, version=1)
+ self.assertIs(caches['v2'].add('answer2', 37, version=1), True)
self.assertEqual(cache.get('answer2', version=1), 37)
self.assertEqual(cache.get('answer2', version=2), 42)
# v2 add, default version = 2, but manually override version = 1
- caches['v2'].add('answer3', 42, version=1)
+ self.assertIs(caches['v2'].add('answer3', 42, version=1), True)
self.assertEqual(cache.get('answer3', version=1), 42)
self.assertIsNone(cache.get('answer3', version=2))
- caches['v2'].add('answer3', 37, version=1)
+ self.assertIs(caches['v2'].add('answer3', 37, version=1), False)
self.assertEqual(cache.get('answer3', version=1), 42)
self.assertIsNone(cache.get('answer3', version=2))
- caches['v2'].add('answer3', 37)
+ self.assertIs(caches['v2'].add('answer3', 37), True)
self.assertEqual(cache.get('answer3', version=1), 42)
self.assertEqual(cache.get('answer3', version=2), 37)
@@ -609,73 +637,73 @@
cache.set('answer1', 42)
# has_key
- self.assertTrue(cache.has_key('answer1'))
- self.assertTrue(cache.has_key('answer1', version=1))
- self.assertFalse(cache.has_key('answer1', version=2))
-
- self.assertFalse(caches['v2'].has_key('answer1'))
- self.assertTrue(caches['v2'].has_key('answer1', version=1))
- self.assertFalse(caches['v2'].has_key('answer1', version=2))
+ self.assertIs(cache.has_key('answer1'), True)
+ self.assertIs(cache.has_key('answer1', version=1), True)
+ self.assertIs(cache.has_key('answer1', version=2), False)
+
+ self.assertIs(caches['v2'].has_key('answer1'), False)
+ self.assertIs(caches['v2'].has_key('answer1', version=1), True)
+ self.assertIs(caches['v2'].has_key('answer1', version=2), False)
def test_cache_versioning_delete(self):
cache.set('answer1', 37, version=1)
cache.set('answer1', 42, version=2)
- cache.delete('answer1')
+ self.assertIs(cache.delete('answer1'), True)
self.assertIsNone(cache.get('answer1', version=1))
self.assertEqual(cache.get('answer1', version=2), 42)
cache.set('answer2', 37, version=1)
cache.set('answer2', 42, version=2)
- cache.delete('answer2', version=2)
+ self.assertIs(cache.delete('answer2', version=2), True)
self.assertEqual(cache.get('answer2', version=1), 37)
self.assertIsNone(cache.get('answer2', version=2))
cache.set('answer3', 37, version=1)
cache.set('answer3', 42, version=2)
- caches['v2'].delete('answer3')
+ self.assertIs(caches['v2'].delete('answer3'), True)
self.assertEqual(cache.get('answer3', version=1), 37)
self.assertIsNone(cache.get('answer3', version=2))
cache.set('answer4', 37, version=1)
cache.set('answer4', 42, version=2)
- caches['v2'].delete('answer4', version=1)
+ self.assertIs(caches['v2'].delete('answer4', version=1), True)
self.assertIsNone(cache.get('answer4', version=1))
self.assertEqual(cache.get('answer4', version=2), 42)
def test_cache_versioning_incr_decr(self):
cache.set('answer1', 37, version=1)
cache.set('answer1', 42, version=2)
- cache.incr('answer1')
+ self.assertEqual(cache.incr('answer1'), 38)
self.assertEqual(cache.get('answer1', version=1), 38)
self.assertEqual(cache.get('answer1', version=2), 42)
- cache.decr('answer1')
+ self.assertEqual(cache.decr('answer1'), 37)
self.assertEqual(cache.get('answer1', version=1), 37)
self.assertEqual(cache.get('answer1', version=2), 42)
cache.set('answer2', 37, version=1)
cache.set('answer2', 42, version=2)
- cache.incr('answer2', version=2)
+ self.assertEqual(cache.incr('answer2', version=2), 43)
self.assertEqual(cache.get('answer2', version=1), 37)
self.assertEqual(cache.get('answer2', version=2), 43)
- cache.decr('answer2', version=2)
+ self.assertEqual(cache.decr('answer2', version=2), 42)
self.assertEqual(cache.get('answer2', version=1), 37)
self.assertEqual(cache.get('answer2', version=2), 42)
cache.set('answer3', 37, version=1)
cache.set('answer3', 42, version=2)
- caches['v2'].incr('answer3')
+ self.assertEqual(caches['v2'].incr('answer3'), 43)
self.assertEqual(cache.get('answer3', version=1), 37)
self.assertEqual(cache.get('answer3', version=2), 43)
- caches['v2'].decr('answer3')
+ self.assertEqual(caches['v2'].decr('answer3'), 42)
self.assertEqual(cache.get('answer3', version=1), 37)
self.assertEqual(cache.get('answer3', version=2), 42)
cache.set('answer4', 37, version=1)
cache.set('answer4', 42, version=2)
- caches['v2'].incr('answer4', version=1)
+ self.assertEqual(caches['v2'].incr('answer4', version=1), 38)
self.assertEqual(cache.get('answer4', version=1), 38)
self.assertEqual(cache.get('answer4', version=2), 42)
- caches['v2'].decr('answer4', version=1)
+ self.assertEqual(caches['v2'].decr('answer4', version=1), 37)
self.assertEqual(cache.get('answer4', version=1), 37)
self.assertEqual(cache.get('answer4', version=2), 42)
@@ -790,6 +818,13 @@
with self.assertRaises(ValueError):
cache.incr_version('does_not_exist')
+ cache.set('null', None)
+ if self.supports_get_with_default:
+ self.assertEqual(cache.incr_version('null'), 2)
+ else:
+ with self.assertRaises(self.incr_decr_type_error):
+ cache.incr_version('null')
+
def test_decr_version(self):
cache.set('answer', 42, version=2)
self.assertIsNone(cache.get('answer'))
@@ -814,6 +849,13 @@
with self.assertRaises(ValueError):
cache.decr_version('does_not_exist', version=2)
+ cache.set('null', None, version=2)
+ if self.supports_get_with_default:
+ self.assertEqual(cache.decr_version('null', version=2), 1)
+ else:
+ with self.assertRaises(self.incr_decr_type_error):
+ cache.decr_version('null', version=2)
+
def test_custom_key_func(self):
# Two caches with different key functions aren't visible to each other
cache.set('answer1', 42)
@@ -827,30 +869,33 @@
self.assertEqual(caches['custom_key2'].get('answer2'), 42)
def test_cache_write_unpicklable_object(self):
- update_middleware = UpdateCacheMiddleware()
- update_middleware.cache = cache
-
- fetch_middleware = FetchFromCacheMiddleware()
+ fetch_middleware = FetchFromCacheMiddleware(empty_response)
fetch_middleware.cache = cache
request = self.factory.get('/cache/test')
request._cache_update_cache = True
- get_cache_data = FetchFromCacheMiddleware().process_request(request)
+ get_cache_data = FetchFromCacheMiddleware(
+ empty_response
+ ).process_request(request)
self.assertIsNone(get_cache_data)
- response = HttpResponse()
content = 'Testing cookie serialization.'
- response.content = content
- response.set_cookie('foo', 'bar')
- update_middleware.process_response(request, response)
+ def get_response(req):
+ response = HttpResponse(content)
+ response.set_cookie('foo', 'bar')
+ return response
+
+ update_middleware = UpdateCacheMiddleware(get_response)
+ update_middleware.cache = cache
+ response = update_middleware(request)
get_cache_data = fetch_middleware.process_request(request)
self.assertIsNotNone(get_cache_data)
self.assertEqual(get_cache_data.content, content.encode())
self.assertEqual(get_cache_data.cookies, response.cookies)
- update_middleware.process_response(request, get_cache_data)
+ UpdateCacheMiddleware(lambda req: get_cache_data)(request)
get_cache_data = fetch_middleware.process_request(request)
self.assertIsNotNone(get_cache_data)
self.assertEqual(get_cache_data.content, content.encode())
@@ -869,7 +914,12 @@
self.assertIsNone(cache.get('projector'))
self.assertEqual(cache.get_or_set('projector', 42), 42)
self.assertEqual(cache.get('projector'), 42)
- self.assertEqual(cache.get_or_set('null', None), None)
+ self.assertIsNone(cache.get_or_set('null', None))
+ if self.supports_get_with_default:
+ # Previous get_or_set() stores None in the cache.
+ self.assertIsNone(cache.get('null', 'default'))
+ else:
+ self.assertEqual(cache.get('null', 'default'), 'default')
def test_get_or_set_callable(self):
def my_callable():
@@ -878,14 +928,16 @@
self.assertEqual(cache.get_or_set('mykey', my_callable), 'value')
self.assertEqual(cache.get_or_set('mykey', my_callable()), 'value')
- def test_get_or_set_callable_returning_none(self):
- self.assertIsNone(cache.get_or_set('mykey', lambda: None))
- # Previous get_or_set() doesn't store None in the cache.
- self.assertEqual(cache.get('mykey', 'default'), 'default')
+ self.assertIsNone(cache.get_or_set('null', lambda: None))
+ if self.supports_get_with_default:
+ # Previous get_or_set() stores None in the cache.
+ self.assertIsNone(cache.get('null', 'default'))
+ else:
+ self.assertEqual(cache.get('null', 'default'), 'default')
def test_get_or_set_version(self):
msg = "get_or_set() missing 1 required positional argument: 'default'"
- cache.get_or_set('brian', 1979, version=2)
+ self.assertEqual(cache.get_or_set('brian', 1979, version=2), 1979)
with self.assertRaisesMessage(TypeError, msg):
cache.get_or_set('brian')
with self.assertRaisesMessage(TypeError, msg):
@@ -949,6 +1001,11 @@
)
os.remove(fname)
+ def test_creates_cache_dir_if_nonexistent(self):
+ os.rmdir(self.dirname)
+ cache.set('foo', 'bar')
+ self.assertTrue(os.path.exists(self.dirname))
+
def test_clear_does_not_remove_cache_dir(self):
cache.clear()
self.assertTrue(
@@ -1026,19 +1083,6 @@
)
self.assertEqual(cache.pop(4, retry=False), 4)
- def test_pickle(self):
- letters = 'abcde'
- cache.clear()
-
- for num, val in enumerate(letters):
- cache.set(val, num)
-
- data = pickle.dumps(cache)
- other = pickle.loads(data)
-
- for key in letters:
- self.assertEqual(other.get(key), cache.get(key))
-
def test_cache(self):
subcache = cache.cache('test')
directory = os.path.join(cache.directory, 'cache', 'test')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python-diskcache-5.3.0/tox.ini
new/python-diskcache-5.4.0/tox.ini
--- old/python-diskcache-5.3.0/tox.ini 2021-11-30 07:58:48.000000000 +0100
+++ new/python-diskcache-5.4.0/tox.ini 2021-12-31 02:58:24.000000000 +0100
@@ -5,7 +5,7 @@
[testenv]
commands=pytest
deps=
- django==2.2.*
+ django==3.2.*
pytest
pytest-cov
pytest-django
@@ -31,7 +31,7 @@
changedir=docs
commands=make html
deps=
- django==2.2.*
+ django==3.2.*
sphinx
[testenv:flake8]
@@ -53,7 +53,7 @@
[testenv:pylint]
commands=pylint {toxinidir}/diskcache
deps=
- django==2.2.*
+ django==3.2.*
pylint
[testenv:rstcheck]