Author: Armin Rigo <[email protected]>
Branch: py3.6
Changeset: r97136:9329c29caa2c
Date: 2019-08-10 01:05 +0200
http://bitbucket.org/pypy/pypy/changeset/9329c29caa2c/

Log:    hg merge default

diff --git a/extra_tests/test_json.py b/extra_tests/test_json.py
--- a/extra_tests/test_json.py
+++ b/extra_tests/test_json.py
@@ -27,3 +27,22 @@
 @given(jsondata)
 def test_roundtrip(d):
     assert json.loads(json.dumps(d)) == d
+
+def test_skipkeys():
+    assert json.dumps({Ellipsis: 42}, skipkeys=True) == '{}'
+    assert json.dumps({Ellipsis: 42, 3: 4}, skipkeys=True) == '{"3": 4}'
+    assert json.dumps({3: 4, Ellipsis: 42}, skipkeys=True) == '{"3": 4}'
+    assert json.dumps({Ellipsis: 42, NotImplemented: 43}, skipkeys=True) \
+                 == '{}'
+    assert json.dumps({3: 4, Ellipsis: 42, NotImplemented: 43}, skipkeys=True)\
+                 == '{"3": 4}'
+    assert json.dumps({Ellipsis: 42, 3: 4, NotImplemented: 43}, skipkeys=True)\
+                 == '{"3": 4}'
+    assert json.dumps({Ellipsis: 42, NotImplemented: 43, 3: 4}, skipkeys=True)\
+                 == '{"3": 4}'
+    assert json.dumps({3: 4, 5: 6, Ellipsis: 42}, skipkeys=True) \
+                 == '{"3": 4, "5": 6}'
+    assert json.dumps({3: 4, Ellipsis: 42, 5: 6}, skipkeys=True) \
+                 == '{"3": 4, "5": 6}'
+    assert json.dumps({Ellipsis: 42, 3: 4, 5: 6}, skipkeys=True) \
+                 == '{"3": 4, "5": 6}'
diff --git a/lib-python/3/json/encoder.py b/lib-python/3/json/encoder.py
--- a/lib-python/3/json/encoder.py
+++ b/lib-python/3/json/encoder.py
@@ -269,10 +269,6 @@
             items = d.items()
 
         for key, v in items:
-            if first:
-                first = False
-            else:
-                builder.append(separator)
             if isinstance(key, str):
                 pass
             # JavaScript is weakly typed for these, so it makes sense to
@@ -292,6 +288,10 @@
                 continue
             else:
                 raise TypeError("key " + repr(key) + " is not a string")
+            if first:
+                first = False
+            else:
+                builder.append(separator)
             builder.append('"')
             builder.append(self.__encoder(key))
             builder.append('"')
diff --git a/rpython/memory/gctransform/transform.py 
b/rpython/memory/gctransform/transform.py
--- a/rpython/memory/gctransform/transform.py
+++ b/rpython/memory/gctransform/transform.py
@@ -17,6 +17,7 @@
 from rpython.rlib.rarithmetic import ovfcheck
 from rpython.rtyper.lltypesystem.lloperation import llop
 from rpython.translator.simplify import cleanup_graph
+from rpython.memory.gctransform.log import log
 
 
 class GcHighLevelOp(object):
@@ -138,9 +139,15 @@
         return any_inlining
 
     def inline_helpers_and_postprocess(self, graphs):
+        next_dot = 0
         for graph in graphs:
             any_inlining = self.inline and self.inline_helpers_into(graph)
             self.postprocess_graph(graph, any_inlining)
+            #
+            next_dot -= 1
+            if next_dot <= 0:
+                log.dot()
+                next_dot = 50
 
     def postprocess_graph(self, graph, any_inlining):
         pass
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to