MCPcopy Index your code
hub / github.com/RustPython/RustPython / _iterencode_dict

Function _iterencode_dict

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

Source from the content-addressed store, hash-verified

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

Callers 2

_iterencode_listFunction · 0.85
_iterencodeFunction · 0.85

Calls 7

idFunction · 0.85
sortedFunction · 0.85
isinstanceFunction · 0.85
_iterencode_listFunction · 0.85
_iterencodeFunction · 0.85
add_noteMethod · 0.80
itemsMethod · 0.45

Tested by

no test coverage detected