Author: Philip Jenvey <[email protected]>
Branch: py3.3
Changeset: r72630:4ced75933639
Date: 2014-07-31 18:19 -0700
http://bitbucket.org/pypy/pypy/changeset/4ced75933639/
Log: Merged in numerodix/pypy/py3.3-fixes (pull request #258)
fix incorrect value of kwargname (issue #1831)
diff --git a/pypy/interpreter/pycode.py b/pypy/interpreter/pycode.py
--- a/pypy/interpreter/pycode.py
+++ b/pypy/interpreter/pycode.py
@@ -60,7 +60,7 @@
else:
varargname = None
if code.co_flags & CO_VARKEYWORDS:
- kwargname = code.co_varnames[argcount]
+ kwargname = code.co_varnames[argcount+kwonlyargcount]
argcount += 1
else:
kwargname = None
diff --git a/pypy/interpreter/test/test_compiler.py
b/pypy/interpreter/test/test_compiler.py
--- a/pypy/interpreter/test/test_compiler.py
+++ b/pypy/interpreter/test/test_compiler.py
@@ -714,6 +714,27 @@
else:
py.test.fail("Did not raise")
+ def test_signature_kwargname(self):
+ from pypy.interpreter.pycode import cpython_code_signature
+ from pypy.interpreter.signature import Signature
+
+ def find_func(code):
+ for w_const in code.co_consts_w:
+ if isinstance(w_const, PyCode):
+ return w_const
+
+ snippet = 'def f(a, b, m=1, n=2, **kwargs): pass'
+ containing_co = self.compiler.compile(snippet, '<string>', 'single', 0)
+ co = find_func(containing_co)
+ sig = cpython_code_signature(co)
+ assert sig == Signature(['a', 'b', 'm', 'n'], None, 'kwargs', [])
+
+ snippet = 'def f(a, b, *, m=1, n=2, **kwargs): pass'
+ containing_co = self.compiler.compile(snippet, '<string>', 'single', 0)
+ co = find_func(containing_co)
+ sig = cpython_code_signature(co)
+ assert sig == Signature(['a', 'b'], None, 'kwargs', ['m', 'n'])
+
class AppTestCompiler:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit