(dct, _current_indent_level)
| 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: |
no test coverage detected
searching dependent graphs…