`Array.add_line()` doesn't serialize as documented (or expected) and can even produce syntactically invalid TOML
维护者通常 3 天内回复
已经有一个关联 PR 被合并了。
评估
调研方向
从 Array.add_line 开始,跟踪 as_string 如何序列化单行数组,然后复现注释掉的示例,并通过 tomlkit.loads 验证输出。完成标准是:添加带注释的行会生成有效的 TOML,并且生成的数组序列化结果始终体现多行行为;为直接序列化和文档序列化都添加回归覆盖。
由索引模型根据 Issue 内容生成。
描述
Update: This seems to be part of a larger problem; see my comment below for additional context.
If an Array isn't multiline, then calling its .add_line method doesn't add a trailing line separator. When the added line includes a comment, this causes .as_string and similar to produce invalid TOML:
>>> import tomlkit
>>> array = tomlkit.array()
>>> array.add_line("foo", comment="bar")
>>> print(array.as_string())
[
"foo", # bar]
>>> doc = tomlkit.document()
>>> doc.add("array", array)
{'array': ['foo']}
>>> print(doc.as_string())
array = [
"foo", # bar]
>>> tomlkit.loads(doc.as_string())
Traceback (most recent call last):
File "<python-input-7>", line 1, in <module>
tomlkit.loads(doc.as_string())
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
File "/home/five35/.local/share/hatch/env/virtual/python-scripts/S8f9twao/python-scripts/lib/python3.14/site-packages/tomlkit/api.py", line 52, in loads
return parse(string)
File "/home/five35/.local/share/hatch/env/virtual/python-scripts/S8f9twao/python-scripts/lib/python3.14/site-packages/tomlkit/api.py", line 99, in parse
return Parser(string).parse()
~~~~~~~~~~~~~~~~~~~~^^
File "/home/five35/.local/share/hatch/env/virtual/python-scripts/S8f9twao/python-scripts/lib/python3.14/site-packages/tomlkit/parser.py", line 139, in parse
item = self._parse_item()
File "/home/five35/.local/share/hatch/env/virtual/python-scripts/S8f9twao/python-scripts/lib/python3.14/site-packages/tomlkit/parser.py", line 238, in _parse_item
return self._parse_key_value(True)
~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/home/five35/.local/share/hatch/env/virtual/python-scripts/S8f9twao/python-scripts/lib/python3.14/site-packages/tomlkit/parser.py", line 331, in _parse_key_value
val = self._parse_value()
File "/home/five35/.local/share/hatch/env/virtual/python-scripts/S8f9twao/python-scripts/lib/python3.14/site-packages/tomlkit/parser.py", line 435, in _parse_value
return self._parse_array()
~~~~~~~~~~~~~~~~~^^
File "/home/five35/.local/share/hatch/env/virtual/python-scripts/S8f9twao/python-scripts/lib/python3.14/site-packages/tomlkit/parser.py", line 612, in _parse_array
raise self.parse_error(UnexpectedCharError, self._current)
tomlkit.exceptions.UnexpectedCharError: Unexpected character: '\x00' at line 2 col 0
I think the simplest fix might be to make calling .add_line implicitly change single-line arrays to multiline. If nothing else, it doesn't make semantic sense to "add a line" to something which can't contain multiple lines, so hopefully that behavior wouldn't be surprising to anyone.
- 主要语言
- Python
- 星标
- 859
- 派生
- 186
- 平均合并
- 4 天 14 小时
- 30 天内合并 PR
- 22
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
python-poetry/tomlkit 的其他 Issue
-
Regression: impossible to dump multiline strings with leading newline可能已有人在做 @shivampwm2020 今天认领。 未关闭
难度 3/5 1-2 天 新手友好度 25/100
python-poetry/tomlkit#655 ·
维护者通常 3 天内回复
-
In-place array repetition changes values without updating serialized TOML可能已有人在做 @harbinresearcher 于 1 天前认领。 未关闭
难度 2/5 1-3 小时 新手友好度 35/100
python-poetry/tomlkit#646 · 1 条评论 ·
维护者通常 3 天内回复
-
tomlkit 0.15.1 fails on out-of-order table header可能重新可做 关联的 PR 已关闭且未合并。 未关闭
难度 4/5 3-5 天 新手友好度 45/100
python-poetry/tomlkit#632 ·
维护者通常 3 天内回复
-
`dumps(sort_keys=True)` only sorts the top level of a parsed document (nested tables / inline tables / AoT keep original order)可能已有人在做 @Sreekant13 于 15 天前认领。 未关闭
难度 5/5 一周以上 新手友好度 35/100
python-poetry/tomlkit#614 · 2 条评论 ·
维护者通常 3 天内回复
-
toml-test datetime cases use tomlkit's own parse_rfc3339 as the expected value, so they cannot detect datetime parsing bugs可能已有人在做 @ekanshul 于 6 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 68/100
python-poetry/tomlkit#603 ·
维护者通常 3 天内回复
查看 python-poetry/tomlkit 的全部 Issue
相似的 Issue
-
[Bug]: Streamed /v1/chat/completions sends unredacted agent error text (keys) in the final chunk可能已有人在做 @rodricksz4h5 今天认领。 未关闭area/streaming comp/gateway P2 type/security
难度 2/5 1-3 小时 新手友好度 78/100
NousResearch/hermes-agent#138245 ·
维护者通常 1 天内回复
-
[oblt-aw][autodoc] Update user onboarding guide for mandatory trigger CODEOWNERS step可能已有人在做 @github-actions 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 66/100
维护者通常 1 天内回复
-
correction metadata
难度 2/5 1 小时以内 新手友好度 68/100
acl-org/acl-anthology#10378 · 1 条评论 ·
维护者通常 1 天内回复
-
cloudtrail_multi_region_enabled_logging_management_events fails when the advanced event selector has a custom name可能已有人在做 @12YYCCYY16 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 78/100
prowler-cloud/prowler#13033 ·
维护者通常 1 天内回复
-
enhancement
难度 1/5 1-3 小时 新手友好度 88/100
graygarbage/HermesKey#23 ·