Fix SF bug #1458903 with AST compiler.
def foo((x)): was getting recognized as requiring tuple unpacking
which is not correct.
Add tests for this case and the proper way to unpack a tuple of one:
def foo((x,)):
test_inpsect was incorrect before. I'm not sure why it was passing,
but that has been corrected with a test for both functions above.
This means the test (and therefore inspect.getargspec()) are broken in 2.4.
diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py
index 5b20ab3..45e3c49 100644
--- a/Lib/test/test_grammar.py
+++ b/Lib/test/test_grammar.py
@@ -255,6 +255,10 @@
d22v(*(1, 2, 3, 4))
d22v(1, 2, *(3, 4, 5))
d22v(1, *(2, 3), **{'d': 4})
+def d31v((x)): pass
+d31v(1)
+def d32v((x,)): pass
+d32v((1,))
### lambdef: 'lambda' [varargslist] ':' test
print 'lambdef'
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index ce346b9..79be369 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -304,10 +304,12 @@
self.assertArgSpecEquals(A.m, ['self'])
def test_getargspec_sublistofone(self):
- def sublistOfOne((foo)): return 1
-
+ def sublistOfOne((foo,)): return 1
self.assertArgSpecEquals(sublistOfOne, [['foo']])
+ def fakeSublistOfOne((foo)): return 1
+ self.assertArgSpecEquals(fakeSublistOfOne, ['foo'])
+
def test_classify_oldstyle(self):
class A:
def s(): pass