From 40dc612d1c1054f6f3c88765e9d992976dcee8f7 Mon Sep 17 00:00:00 2001 From: Vitaly Goldshteyn Date: Thu, 22 Aug 2019 10:49:21 +0200 Subject: [PATCH 1/2] Fix **kwargs in function call --- codegen.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/codegen.py b/codegen.py index 3a039c0..a343081 100644 --- a/codegen.py +++ b/codegen.py @@ -420,7 +420,10 @@ def write_comma(): self.visit(arg) for keyword in node.keywords: write_comma() - self.write(keyword.arg + '=') + if keyword.arg is not None: + self.write(keyword.arg + '=') + else: + self.write('**') self.visit(keyword.value) if node.starargs is not None: write_comma() From 56409e0fc0ea1e211deb56c342180adbf7a859d6 Mon Sep 17 00:00:00 2001 From: Vitaly Goldshteyn Date: Thu, 22 Aug 2019 11:04:04 +0200 Subject: [PATCH 2/2] Add function call test --- test.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test.py b/test.py index 1531e09..1572ee2 100644 --- a/test.py +++ b/test.py @@ -65,6 +65,10 @@ def test_import(self): self.assertPreserved("import intertools as iterators") self.assertPreserved("from math import floor as fl, ceil as cl") - + def test_function_call(self): + self.assertPreserved("f(x, 5, x=7)") + self.assertPreserved("f(x, **{'x': 7})") + self.assertPreserved("f(x, *['x'])") + if __name__ == '__main__': unittest.main()