summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBatuhan Taşkaya <47358913+isidentical@users.noreply.github.com>2019-05-19 01:10:20 +0300
committerPablo Galindo <Pablogsal@gmail.com>2019-05-18 23:10:20 +0100
commitfa19a25c238d0769e6a5aa63ce05133d66043556 (patch)
tree077b992633fa929e61a03b606803d84a9f9f524a
parenteab99650799699f766c2660f4cfa8ff3f9e8457f (diff)
downloadcpython-git-fa19a25c238d0769e6a5aa63ce05133d66043556.tar.gz
Add support for PEP572 in ast_unparse.c (GH-13337)
-rw-r--r--Lib/test/test_future.py2
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2019-05-15-14-01-09.bpo-36826.GLrO3W.rst1
-rw-r--r--Python/ast_unparse.c13
3 files changed, 16 insertions, 0 deletions
diff --git a/Lib/test/test_future.py b/Lib/test/test_future.py
index 38de3dfdaf..cd320a266a 100644
--- a/Lib/test/test_future.py
+++ b/Lib/test/test_future.py
@@ -275,6 +275,8 @@ class AnnotationsFutureTestCase(unittest.TestCase):
eq('f((x for x in a), 2)')
eq('(((a)))', 'a')
eq('(((a, b)))', '(a, b)')
+ eq("(x:=10)")
+ eq("f'{(x:=10):=10}'")
if __name__ == "__main__":
diff --git a/Misc/NEWS.d/next/Core and Builtins/2019-05-15-14-01-09.bpo-36826.GLrO3W.rst b/Misc/NEWS.d/next/Core and Builtins/2019-05-15-14-01-09.bpo-36826.GLrO3W.rst
new file mode 100644
index 0000000000..5a1b51999f
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2019-05-15-14-01-09.bpo-36826.GLrO3W.rst
@@ -0,0 +1 @@
+Add NamedExpression kind support to ast_unparse.c
diff --git a/Python/ast_unparse.c b/Python/ast_unparse.c
index 25a5c698a1..5f366a188b 100644
--- a/Python/ast_unparse.c
+++ b/Python/ast_unparse.c
@@ -810,6 +810,17 @@ append_ast_await(_PyUnicodeWriter *writer, expr_ty e, int level)
}
static int
+append_named_expr(_PyUnicodeWriter *writer, expr_ty e, int level)
+{
+ APPEND_STR_IF(level > PR_TUPLE, "(");
+ APPEND_EXPR(e->v.NamedExpr.target, PR_ATOM);
+ APPEND_STR(":=");
+ APPEND_EXPR(e->v.NamedExpr.value, PR_ATOM);
+ APPEND_STR_IF(level > PR_TUPLE, ")");
+ return 0;
+}
+
+static int
append_ast_expr(_PyUnicodeWriter *writer, expr_ty e, int level)
{
switch (e->kind) {
@@ -867,6 +878,8 @@ append_ast_expr(_PyUnicodeWriter *writer, expr_ty e, int level)
return append_ast_list(writer, e);
case Tuple_kind:
return append_ast_tuple(writer, e, level);
+ case NamedExpr_kind:
+ return append_named_expr(writer, e, level);
default:
PyErr_SetString(PyExc_SystemError,
"unknown expression kind");