Skip to content

Commit 5a61e5b

Browse files
committed
fix: unexpectedly sort the keys when building a table
Signed-off-by: Frost Ming <[email protected]>
1 parent a63be71 commit 5a61e5b

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

tests/test_toml_document.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,3 +1072,15 @@ def test_parse_subtables_no_extra_indent():
10721072
"""
10731073
doc = parse(expected)
10741074
assert doc.as_string() == expected
1075+
1076+
1077+
def test_item_preserves_the_order():
1078+
t = tomlkit.inline_table()
1079+
t.update({"a": 1, "b": 2})
1080+
doc = {"name": "foo", "table": t, "age": 42}
1081+
expected = """\
1082+
name = "foo"
1083+
table = {a = 1, b = 2}
1084+
age = 42
1085+
"""
1086+
assert tomlkit.dumps(doc) == expected

tomlkit/items.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ def item(value: Any, _parent: Item | None = None, _sort_keys: bool = False) -> I
155155
val = table_constructor(Container(), Trivia(), False)
156156
for k, v in sorted(
157157
value.items(),
158-
key=lambda i: (isinstance(i[1], dict), i[0] if _sort_keys else 1),
158+
key=lambda i: (isinstance(i[1], dict), i[0]) if _sort_keys else 1,
159159
):
160160
val[k] = item(v, _parent=val, _sort_keys=_sort_keys)
161161

0 commit comments

Comments
 (0)