From 090170796917e6f2516ad6638fd55e194d7def5b Mon Sep 17 00:00:00 2001 From: Frost Ming Date: Thu, 15 Sep 2022 11:18:45 +0800 Subject: [PATCH] fix: rendering table in nested arrays (#236) * fix: rendering table in nested arrays * fix linter issue --- tests/test_write.py | 7 +++++++ tomlkit/items.py | 6 +++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/tests/test_write.py b/tests/test_write.py index 58752d93..9eb3e8ab 100644 --- a/tests/test_write.py +++ b/tests/test_write.py @@ -17,3 +17,10 @@ def test_escape_special_characters_in_key(): expected = '"foo\\nbar" = "baz"\n' assert expected == dumps(d) assert loads(dumps(d))["foo\nbar"] == "baz" + + +def test_write_inline_table_in_nested_arrays(): + d = {"foo": [[{"a": 1}]]} + expected = "foo = [[{a = 1}]]\n" # noqa: FS003 + assert expected == dumps(d) + assert loads(dumps(d))["foo"] == [[{"a": 1}]] diff --git a/tomlkit/items.py b/tomlkit/items.py index 48bdfc65..43ddecd9 100644 --- a/tomlkit/items.py +++ b/tomlkit/items.py @@ -184,7 +184,11 @@ def item( return val elif isinstance(value, (list, tuple)): - if value and all(isinstance(v, dict) for v in value): + if ( + value + and all(isinstance(v, dict) for v in value) + and (_parent is None or isinstance(_parent, Table)) + ): a = AoT([]) table_constructor = Table else: