From: Jack Diederich Date: Mon, 22 Feb 2010 19:55:22 +0000 (+0000) Subject: fixes issue #1522237, bad init check in _threading_local X-Git-Tag: v2.7a4~147 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1ce6136018b6e1447368e1cc9ec3b70b0dd8729d;p=thirdparty%2FPython%2Fcpython.git fixes issue #1522237, bad init check in _threading_local --- diff --git a/Lib/_threading_local.py b/Lib/_threading_local.py index 243d84ef7caf..e953597005eb 100644 --- a/Lib/_threading_local.py +++ b/Lib/_threading_local.py @@ -155,7 +155,7 @@ class _localbase(object): object.__setattr__(self, '_local__args', (args, kw)) object.__setattr__(self, '_local__lock', RLock()) - if args or kw and (cls.__init__ is object.__init__): + if (args or kw) and (cls.__init__ is object.__init__): raise TypeError("Initialization arguments are not supported") # We need to create the thread dict in anticipation of diff --git a/Lib/test/test_threading_local.py b/Lib/test/test_threading_local.py index 93ec12ba418e..ab3b358245b5 100644 --- a/Lib/test/test_threading_local.py +++ b/Lib/test/test_threading_local.py @@ -105,6 +105,21 @@ class ThreadingLocalTest(unittest.TestCase): self.assertTrue(passed[0]) + def test_arguments(self): + # Issue 1522237 + from thread import _local as local + from _threading_local import local as py_local + + for cls in (local, py_local): + class MyLocal(cls): + def __init__(self, *args, **kwargs): + pass + + MyLocal(a=1) + MyLocal(1) + self.assertRaises(TypeError, cls, a=1) + self.assertRaises(TypeError, cls, 1) + def test_main(): suite = unittest.TestSuite()