diff --git a/tests/test_toml_document.py b/tests/test_toml_document.py index 1cdfb9c..7e6bfa1 100644 --- a/tests/test_toml_document.py +++ b/tests/test_toml_document.py @@ -965,6 +965,20 @@ def test_replace_preserve_sep() -> None: ) +def test_replace_table_with_itself_preserves_display_name() -> None: + content = """\ +[keys.a] +[keys .'a'.'c'] + 'd'\t= 'e' +""" + doc = parse(content) + + for mode in doc["keys"]: + doc["keys"][mode] = doc["keys"][mode] + + assert doc.as_string() == content + + def test_replace_with_table_of_nested() -> None: example = """\ [a] diff --git a/tomlkit/container.py b/tomlkit/container.py index 75e0901..5c579a6 100644 --- a/tomlkit/container.py +++ b/tomlkit/container.py @@ -862,7 +862,7 @@ def _replace_at( value.trivia.trail = v.trivia.trail self._body[idx] = (new_key, value) - if hasattr(value, "invalidate_display_name"): + if value is not v and hasattr(value, "invalidate_display_name"): value.invalidate_display_name() if isinstance(value, Table):