MCPcopy Index your code
hub / github.com/python/cpython / _iterencode_dict

Function _iterencode_dict

Lib/json/encoder.py:328–413  ·  view source on GitHub ↗
(dct, _current_indent_level)

Source from the content-addressed store, hash-verified

326 del markers[markerid]
327
328 def _iterencode_dict(dct, _current_indent_level):
329 if not dct:
330 yield '{}'
331 return
332 if markers is not None:
333 markerid = id(dct)
334 if markerid in markers:
335 raise ValueError("Circular reference detected")
336 markers[markerid] = dct
337 yield '{'
338 if _indent is not None:
339 _current_indent_level += 1
340 newline_indent = '\n' + _indent * _current_indent_level
341 item_separator = _item_separator + newline_indent
342 else:
343 newline_indent = None
344 item_separator = _item_separator
345 first = True
346 if _sort_keys:
347 items = sorted(dct.items())
348 else:
349 items = dct.items()
350 for key, value in items:
351 if isinstance(key, str):
352 pass
353 # JavaScript is weakly typed for these, so it makes sense to
354 # also allow them. Many encoders seem to do something like this.
355 elif isinstance(key, float):
356 # see comment for int/float in _make_iterencode
357 key = _floatstr(key)
358 elif key is True:
359 key = 'true'
360 elif key is False:
361 key = 'false'
362 elif key is None:
363 key = 'null'
364 elif isinstance(key, int):
365 # see comment for int/float in _make_iterencode
366 key = int.__repr__(key)
367 elif _skipkeys:
368 continue
369 else:
370 raise TypeError(f'keys must be str, int, float, bool or None, '
371 f'not {key.__class__.__name__}')
372 if first:
373 first = False
374 if newline_indent is not None:
375 yield newline_indent
376 else:
377 yield item_separator
378 yield _encoder(key)
379 yield _key_separator
380 try:
381 if isinstance(value, str):
382 yield _encoder(value)
383 elif value is None:
384 yield 'null'
385 elif value is True:

Callers 2

_iterencode_listFunction · 0.85
_iterencodeFunction · 0.85

Calls 5

idFunction · 0.85
_iterencode_listFunction · 0.85
_iterencodeFunction · 0.85
itemsMethod · 0.45
__repr__Method · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…