Merge #10019: Fix regression relative to 2.6: add newlines if indent=0
Patch by Amaury Forgeot d'Arc, updated by Sando Tosi.
This commit is contained in:
commit
d5315482e9
|
@ -136,10 +136,10 @@ Basic Usage
|
|||
|
||||
If *indent* is a non-negative integer or string, then JSON array elements and
|
||||
object members will be pretty-printed with that indent level. An indent level
|
||||
of 0 or ``""`` will only insert newlines. ``None`` (the default) selects the
|
||||
most compact representation. Using an integer indent indents that many spaces
|
||||
per level. If *indent* is a string (such at '\t'), that string is used to indent
|
||||
each level.
|
||||
of 0, negative, or ``""`` will only insert newlines. ``None`` (the default)
|
||||
selects the most compact representation. Using a positive integer indent
|
||||
indents that many spaces per level. If *indent* is a string (such at '\t'),
|
||||
that string is used to indent each level.
|
||||
|
||||
If *separators* is an ``(item_separator, dict_separator)`` tuple, then it
|
||||
will be used instead of the default ``(', ', ': ')`` separators. ``(',',
|
||||
|
|
|
@ -233,7 +233,7 @@ class JSONEncoder(object):
|
|||
|
||||
|
||||
if (_one_shot and c_make_encoder is not None
|
||||
and not self.indent):
|
||||
and self.indent is None):
|
||||
_iterencode = c_make_encoder(
|
||||
markers, self.default, _encoder, self.indent,
|
||||
self.key_separator, self.item_separator, self.sort_keys,
|
||||
|
|
|
@ -2,6 +2,7 @@ from unittest import TestCase
|
|||
|
||||
import json
|
||||
import textwrap
|
||||
from io import StringIO
|
||||
|
||||
class TestIndent(TestCase):
|
||||
def test_indent(self):
|
||||
|
@ -43,3 +44,18 @@ class TestIndent(TestCase):
|
|||
self.assertEqual(h3, h)
|
||||
self.assertEqual(d2, expect.expandtabs(2))
|
||||
self.assertEqual(d3, expect)
|
||||
|
||||
def test_indent0(self):
|
||||
h = {3: 1}
|
||||
def check(indent, expected):
|
||||
d1 = json.dumps(h, indent=indent)
|
||||
self.assertEqual(d1, expected)
|
||||
|
||||
sio = StringIO()
|
||||
json.dump(h, sio, indent=indent)
|
||||
self.assertEqual(sio.getvalue(), expected)
|
||||
|
||||
# indent=0 should emit newlines
|
||||
check(0, '{\n"3": 1\n}')
|
||||
# indent=None is more compact
|
||||
check(None, '{"3": 1}')
|
||||
|
|
|
@ -53,6 +53,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #10019: Fixed regression in json module where an indent of 0 stopped
|
||||
adding newlines and acted instead like 'None'.
|
||||
|
||||
- Issue #5162: Treat services like frozen executables to allow child spawning
|
||||
from multiprocessing.forking on Windows.
|
||||
|
||||
|
|
Loading…
Reference in New Issue