Skip to content

Commit 975aebb

Browse files
committed
fix: preserve list order when merging settings
1 parent a362006 commit 975aebb

2 files changed

Lines changed: 12 additions & 1 deletion

File tree

pylsp/_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def _merge_dicts_(a, b):
187187
if isinstance(a[key], dict) and isinstance(b[key], dict):
188188
yield (key, dict(_merge_dicts_(a[key], b[key])))
189189
elif isinstance(a[key], list) and isinstance(b[key], list):
190-
yield (key, list(set(a[key] + b[key])))
190+
yield (key, list(dict.fromkeys(a[key] + b[key])))
191191
elif b[key] is not None:
192192
yield (key, b[key])
193193
else:

test/test_utils.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,17 @@ def test_merge_dicts() -> None:
222222
) == {"a": False, "b": {"x": 123, "y": [], "z": 987}}
223223

224224

225+
def test_merge_dicts_preserves_list_order() -> None:
226+
assert _utils.merge_dicts({"items": [3, 2]}, {"items": [1, 3]}) == {
227+
"items": [3, 2, 1]
228+
}
229+
230+
overrides = ["--python-executable", "/tmp/venv/bin/python", True]
231+
assert _utils.merge_dicts({"overrides": []}, {"overrides": overrides}) == {
232+
"overrides": overrides
233+
}
234+
235+
225236
def test_clip_column() -> None:
226237
assert _utils.clip_column(0, [], 0) == 0
227238
assert _utils.clip_column(2, ["123"], 0) == 2

0 commit comments

Comments
 (0)