summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorJack Diederich <jackdied@gmail.com>2010-02-22 19:55:46 (GMT)
committerJack Diederich <jackdied@gmail.com>2010-02-22 19:55:46 (GMT)
commit561d5aa47f78198a12ff197e0daff55680547d46 (patch)
tree9f01b4aa6726951f77dc2cab9f4d9c9b8e5821f9 /Lib
parentdc8c2adad6af2e3c8cd120cb6498816dc1b5b2d2 (diff)
downloadcpython-561d5aa47f78198a12ff197e0daff55680547d46.zip
cpython-561d5aa47f78198a12ff197e0daff55680547d46.tar.gz
cpython-561d5aa47f78198a12ff197e0daff55680547d46.tar.bz2
fixes issue #1522237, bad init check in _threading_local
Diffstat (limited to 'Lib')
-rw-r--r--Lib/_threading_local.py2
-rw-r--r--Lib/test/test_threading_local.py15
2 files changed, 16 insertions, 1 deletions
diff --git a/Lib/_threading_local.py b/Lib/_threading_local.py
index 6e8a8d8..b0edc03 100644
--- a/Lib/_threading_local.py
+++ b/Lib/_threading_local.py
@@ -154,7 +154,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 f72119b..cd2bed9 100644
--- a/Lib/test/test_threading_local.py
+++ b/Lib/test/test_threading_local.py
@@ -106,6 +106,21 @@ class ThreadingLocalTest(unittest.TestCase):
self.assertTrue(passed)
+ 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()