-
-
Notifications
You must be signed in to change notification settings - Fork 105
Open
Description
Hi!
I'm trying to parse a TOML document with tomlkit
version 0.13.3
and getting this exception:
tomlkit.exceptions.ParseError: Key "fruits" already exists.
The document seems valid to me.
Code
import tomlkit
DOCUMENT = """
[[shops.aaa.fruits]]
id = "apple"
[[shops.bbb.fruits]]
id = "orange"
[[shops.aaa.fruits]]
id = "banana"
"""
parsed = tomlkit.parse(DOCUMENT)
print(tomlkit.dumps(parsed))
Expected
The document is parsed successfully.
Actual
Parsing fails with a ParseError.
Stacktrace
Traceback (most recent call last):
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/parser.py", line 161, in parse
body.append(key, value)
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/container.py", line 252, in append
current.append(k, v)
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/items.py", line 1632, in append
_item = self._value[key]
~~~~~~~~~~~^^^^^
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/container.py", line 652, in __getitem__
item = self.item(key)
^^^^^^^^^^^^^^
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/container.py", line 476, in item
return OutOfOrderTableProxy(self, idx)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/container.py", line 846, in __init__
self._internal_container._raw_append(k, v)
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/container.py", line 319, in _raw_append
raise KeyAlreadyPresent(key)
tomlkit.exceptions.KeyAlreadyPresent: Key "fruits" already exists.
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/wfzx/dev/py/toml/main.py", line 15, in <module>
parsed = tomlkit.parse(DOCUMENT)
^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/api.py", line 93, in parse
return Parser(string).parse()
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/wfzx/dev/py/toml/venv/lib/python3.12/site-packages/tomlkit/parser.py", line 163, in parse
raise self.parse_error(ParseError, str(e)) from e
tomlkit.exceptions.ParseError: Key "fruits" already exists. at line 9 col 0
Metadata
Metadata
Assignees
Labels
No labels