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