summaryrefslogtreecommitdiffstats
path: root/Lib/json
diff options
context:
space:
mode:
authorPieter Eendebak <pieter.eendebak@gmail.com>2024-05-06 08:04:39 (GMT)
committerGitHub <noreply@github.com>2024-05-06 08:04:39 (GMT)
commit05adfbba2abafcdd271bf144a7b3f80bcd927288 (patch)
treea52b118653d204eb15630e4aba5e4c2daa035a7d /Lib/json
parent7758be431807d574e0f1bbab003796585ae46719 (diff)
downloadcpython-05adfbba2abafcdd271bf144a7b3f80bcd927288.zip
cpython-05adfbba2abafcdd271bf144a7b3f80bcd927288.tar.gz
cpython-05adfbba2abafcdd271bf144a7b3f80bcd927288.tar.bz2
gh-95382: Improve performance of json encoder with indent (GH-118105)
Diffstat (limited to 'Lib/json')
-rw-r--r--Lib/json/encoder.py14
1 files changed, 7 insertions, 7 deletions
diff --git a/Lib/json/encoder.py b/Lib/json/encoder.py
index 597849e..323332f 100644
--- a/Lib/json/encoder.py
+++ b/Lib/json/encoder.py
@@ -244,15 +244,18 @@ class JSONEncoder(object):
return text
- if (_one_shot and c_make_encoder is not None
- and self.indent is None):
+ if self.indent is None or isinstance(self.indent, str):
+ indent = self.indent
+ else:
+ indent = ' ' * self.indent
+ if _one_shot and c_make_encoder is not None:
_iterencode = c_make_encoder(
- markers, self.default, _encoder, self.indent,
+ markers, self.default, _encoder, indent,
self.key_separator, self.item_separator, self.sort_keys,
self.skipkeys, self.allow_nan)
else:
_iterencode = _make_iterencode(
- markers, self.default, _encoder, self.indent, floatstr,
+ markers, self.default, _encoder, indent, floatstr,
self.key_separator, self.item_separator, self.sort_keys,
self.skipkeys, _one_shot)
return _iterencode(o, 0)
@@ -272,9 +275,6 @@ def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,
_intstr=int.__repr__,
):
- if _indent is not None and not isinstance(_indent, str):
- _indent = ' ' * _indent
-
def _iterencode_list(lst, _current_indent_level):
if not lst:
yield '[]'