[Python-checkins] cpython (merge 3.4 -> default): merge
raymond.hettinger
python-checkins at python.org
Tue Aug 12 21:45:38 CEST 2014
http://hg.python.org/cpython/rev/4d4a9094bdb0
changeset: 92088:4d4a9094bdb0
parent: 92086:f07b17de3b0d
parent: 92087:780693490c84
user: Raymond Hettinger <python at rcn.com>
date: Tue Aug 12 12:45:28 2014 -0700
summary:
merge
files:
Lib/functools.py | 6 ++++++
Lib/test/test_functools.py | 7 +++++++
Misc/NEWS | 3 +++
3 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/Lib/functools.py b/Lib/functools.py
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -392,6 +392,12 @@
# The internals of the lru_cache are encapsulated for thread safety and
# to allow the implementation to change (including a possible C version).
+ # Early detection of an erroneous call to @lru_cache without any arguments
+ # resulting in the inner function being passed to maxsize instead of an
+ # integer or None.
+ if maxsize is not None and not isinstance(maxsize, int):
+ raise TypeError('Expected maxsize to be an integer or None')
+
# Constants shared by all lru cache instances:
sentinel = object() # unique object used to signal cache misses
make_key = _make_key # build a key from the function arguments
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -1070,6 +1070,13 @@
self.assertEqual(test_func(DoubleEq(2)), # Trigger a re-entrant __eq__ call
DoubleEq(2)) # Verify the correct return value
+ def test_early_detection_of_bad_call(self):
+ # Issue #22184
+ with self.assertRaises(TypeError):
+ @functools.lru_cache
+ def f():
+ pass
+
class TestSingleDispatch(unittest.TestCase):
def test_simple_overloads(self):
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -118,6 +118,9 @@
- Issue #21448: Changed FeedParser feed() to avoid O(N**2) behavior when
parsing long line. Original patch by Raymond Hettinger.
+- Issue #22184: The functools LRU Cache decorator factory now gives an earlier
+ and clearer error message when the user forgets the required parameters.
+
- Issue #17923: glob() patterns ending with a slash no longer match non-dirs on
AIX. Based on patch by Delhallt.
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list