(dct, _current_indent_level)
| 605 | return key |
| 606 | |
| 607 | def _iterencode_dict(dct, _current_indent_level): |
| 608 | if not dct: |
| 609 | yield '{}' |
| 610 | return |
| 611 | if markers is not None: |
| 612 | markerid = id(dct) |
| 613 | if markerid in markers: |
| 614 | raise ValueError("Circular reference detected") |
| 615 | markers[markerid] = dct |
| 616 | yield '{' |
| 617 | if _indent is not None: |
| 618 | _current_indent_level += 1 |
| 619 | newline_indent = '\n' + (_indent * _current_indent_level) |
| 620 | item_separator = _item_separator + newline_indent |
| 621 | yield newline_indent |
| 622 | else: |
| 623 | newline_indent = None |
| 624 | item_separator = _item_separator |
| 625 | first = True |
| 626 | if _PY3: |
| 627 | iteritems = dct.items() |
| 628 | else: |
| 629 | iteritems = dct.iteritems() |
| 630 | if _item_sort_key: |
| 631 | items = [] |
| 632 | for k, v in dct.items(): |
| 633 | if not isinstance(k, string_types): |
| 634 | k = _stringify_key(k) |
| 635 | if k is None: |
| 636 | continue |
| 637 | items.append((k, v)) |
| 638 | items.sort(key=_item_sort_key) |
| 639 | else: |
| 640 | items = iteritems |
| 641 | for key, value in items: |
| 642 | if not (_item_sort_key or isinstance(key, string_types)): |
| 643 | key = _stringify_key(key) |
| 644 | if key is None: |
| 645 | # _skipkeys must be True |
| 646 | continue |
| 647 | if first: |
| 648 | first = False |
| 649 | else: |
| 650 | yield item_separator |
| 651 | yield _encoder(key) |
| 652 | yield _key_separator |
| 653 | try: |
| 654 | if isinstance(value, string_types): |
| 655 | yield _encoder(value) |
| 656 | elif _PY3 and isinstance(value, bytes) and _encoding is not None: |
| 657 | yield _encoder(value) |
| 658 | elif isinstance(value, RawJSON): |
| 659 | yield value.encoded_json |
| 660 | elif value is None: |
| 661 | yield 'null' |
| 662 | elif value is True: |
| 663 | yield 'true' |
| 664 | elif value is False: |
no test coverage detected
searching dependent graphs…