diff --git a/tests/test_toml_document.py b/tests/test_toml_document.py index f5695f6..59b42d7 100644 --- a/tests/test_toml_document.py +++ b/tests/test_toml_document.py @@ -669,3 +669,16 @@ def test_repr(): ) assert repr(doc["namespace"]) == "{'key1': 'value1', 'key2': 'value2'}" + + +def test_deepcopy(): + content = """ +[tool] +name = "foo" +[tool.project.section] +option = "test" +""" + doc = parse(content) + copied = copy.deepcopy(doc) + assert copied == doc + assert copied.as_string() == content diff --git a/tomlkit/container.py b/tomlkit/container.py index 4e3ea12..e097636 100644 --- a/tomlkit/container.py +++ b/tomlkit/container.py @@ -654,13 +654,18 @@ def __reduce_ex__(self, protocol): return ( self.__class__, self._getstate(protocol), - (self._map, self._body, self._parsed), + (self._map, self._body, self._parsed, self._table_keys), ) def __setstate__(self, state): self._map = state[0] self._body = state[1] self._parsed = state[2] + self._table_keys = state[3] + + for key, item in self._body: + if key is not None: + dict.__setitem__(self, key.key, item.value) def copy(self): # type: () -> Container return copy.copy(self)