`ParseError` exception when handling TOML AoT
まだ誰も着手していません。
評価
調査の方向性
issue の TOML ドキュメントを使って失敗を再現し、提供されたスタックトレースを使用して parser.py、container.py、items.py を通るパースの流れを追跡します。ドキュメントが正常にパースされ、tomlkit.dumps(parsed) が ParseError なしで出力を生成すれば、修正は完了です。
索引モデルが issue の本文から書いたものです。
説明
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
- 主要言語
- Python
- スター
- 850
- フォーク
- 163
- 平均マージ
- 13分
- マージ済み PR(30日)
- 2
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
python-poetry/tomlkit のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
python-poetry/tomlkit#546 · コメント 2 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
python-poetry/tomlkit#603 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 52/100
python-poetry/tomlkit#580 · コメント 1 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 72/100
python-poetry/tomlkit#577 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 20/100
python-poetry/tomlkit#574 · コメント 5 件 ·
python-poetry/tomlkit の issue をすべて見る
似ている issue
-
bug confirmed issue
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
open-webui/open-webui#30750 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
OpenwaterHealth/openmotion-bloodflow-app#604 · コメント 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
good first issue
難易度 1/5 1時間未満 初心者へのやさしさ 90/100