bpo-43521: Allow ast.unparse with empty sets and NaN (GH-24897)



Automerge-Triggered-By: GH:pablogsal
diff --git a/Lib/test/test_unparse.py b/Lib/test/test_unparse.py
index c7c8613..ce03272 100644
--- a/Lib/test/test_unparse.py
+++ b/Lib/test/test_unparse.py
@@ -199,6 +199,12 @@ def test_huge_float(self):
         self.check_ast_roundtrip("1e1000j")
         self.check_ast_roundtrip("-1e1000j")
 
+    def test_nan(self):
+        self.assertASTEqual(
+            ast.parse(ast.unparse(ast.Constant(value=float('nan')))),
+            ast.parse('1e1000 - 1e1000')
+        )
+
     def test_min_int(self):
         self.check_ast_roundtrip(str(-(2 ** 31)))
         self.check_ast_roundtrip(str(-(2 ** 63)))
@@ -252,6 +258,12 @@ def test_annotations(self):
     def test_set_literal(self):
         self.check_ast_roundtrip("{'a', 'b', 'c'}")
 
+    def test_empty_set(self):
+        self.assertASTEqual(
+            ast.parse(ast.unparse(ast.Set(elts=[]))),
+            ast.parse('{*()}')
+        )
+
     def test_set_comprehension(self):
         self.check_ast_roundtrip("{x for x in range(5)}")
 
@@ -326,9 +338,6 @@ def test_invalid_fstring_conversion(self):
     def test_invalid_fstring_backslash(self):
         self.check_invalid(ast.FormattedValue(value=ast.Constant(value="\\\\")))
 
-    def test_invalid_set(self):
-        self.check_invalid(ast.Set(elts=[]))
-
     def test_invalid_yield_from(self):
         self.check_invalid(ast.YieldFrom(value=None))