(src: str, pos: Pos, parse_float: ParseFloat)
| 512 | |
| 513 | |
| 514 | def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, dict[str, Any]]: |
| 515 | pos += 1 |
| 516 | nested_dict = NestedDict() |
| 517 | flags = Flags() |
| 518 | |
| 519 | pos = skip_comments_and_array_ws(src, pos) |
| 520 | if src.startswith("}", pos): |
| 521 | return pos + 1, nested_dict.dict |
| 522 | while True: |
| 523 | pos, key, value = parse_key_value_pair(src, pos, parse_float) |
| 524 | key_parent, key_stem = key[:-1], key[-1] |
| 525 | if flags.is_(key, Flags.FROZEN): |
| 526 | raise TOMLDecodeError(f"Cannot mutate immutable namespace {key}", src, pos) |
| 527 | try: |
| 528 | nest = nested_dict.get_or_create_nest(key_parent, access_lists=False) |
| 529 | except KeyError: |
| 530 | raise TOMLDecodeError("Cannot overwrite a value", src, pos) from None |
| 531 | if key_stem in nest: |
| 532 | raise TOMLDecodeError(f"Duplicate inline table key {key_stem!r}", src, pos) |
| 533 | nest[key_stem] = value |
| 534 | pos = skip_comments_and_array_ws(src, pos) |
| 535 | c = src[pos : pos + 1] |
| 536 | if c == "}": |
| 537 | return pos + 1, nested_dict.dict |
| 538 | if c != ",": |
| 539 | raise TOMLDecodeError("Unclosed inline table", src, pos) |
| 540 | pos += 1 |
| 541 | pos = skip_comments_and_array_ws(src, pos) |
| 542 | if src.startswith("}", pos): |
| 543 | return pos + 1, nested_dict.dict |
| 544 | if isinstance(value, (dict, list)): |
| 545 | flags.set(key, Flags.FROZEN, recursive=True) |
| 546 | |
| 547 | |
| 548 | def parse_basic_str_escape( |
no test coverage detected
searching dependent graphs…