Skip to content

Commit aae9af0

Browse files
committed
Allow newlines and trailing comma in inline tables
1 parent a613867 commit aae9af0

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/tomli/_parser.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -433,12 +433,14 @@ def parse_array(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, list]
433433
return pos + 1, array
434434

435435

436-
def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos, dict]:
436+
def parse_inline_table( # noqa: C901
437+
src: str, pos: Pos, parse_float: ParseFloat
438+
) -> tuple[Pos, dict]:
437439
pos += 1
438440
nested_dict = NestedDict()
439441
flags = Flags()
440442

441-
pos = skip_chars(src, pos, TOML_WS)
443+
pos = skip_comments_and_array_ws(src, pos)
442444
if src.startswith("}", pos):
443445
return pos + 1, nested_dict.dict
444446
while True:
@@ -453,16 +455,18 @@ def parse_inline_table(src: str, pos: Pos, parse_float: ParseFloat) -> tuple[Pos
453455
if key_stem in nest:
454456
raise suffixed_err(src, pos, f"Duplicate inline table key {key_stem!r}")
455457
nest[key_stem] = value
456-
pos = skip_chars(src, pos, TOML_WS)
458+
pos = skip_comments_and_array_ws(src, pos)
457459
c = src[pos : pos + 1]
458460
if c == "}":
459461
return pos + 1, nested_dict.dict
460462
if c != ",":
461463
raise suffixed_err(src, pos, "Unclosed inline table")
464+
pos += 1
465+
pos = skip_comments_and_array_ws(src, pos)
466+
if src.startswith("}", pos):
467+
return pos + 1, nested_dict.dict
462468
if isinstance(value, (dict, list)):
463469
flags.set(key, Flags.FROZEN, recursive=True)
464-
pos += 1
465-
pos = skip_chars(src, pos, TOML_WS)
466470

467471

468472
def parse_basic_str_escape(

0 commit comments

Comments
 (0)