Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Update tomlkit to allow empty keys in pyproject.toml #1573

Open
@sandyowlet

Description

Description

tomlkit used to not allowed empty keys in toml file, but it has been fixed in #17.

Empty key is valid in pyproject.toml, see link:

[tool.setuptools]
# ...
package-dir = {"" = "src"}
 # directory containing all the packages (e.g. src/mypkg1, src/mypkg2)
# OR
[tool.setuptools.package-dir]
mypkg = "lib"
# mypkg.module corresponds to lib/module.py
"mypkg.subpkg1" = "lib1"
# mypkg.subpkg1.module1 corresponds to lib1/module1.py
"mypkg.subpkg2" = "lib2"
# mypkg.subpkg2.module2 corresponds to lib2/module2.py
# ...

Steps to reproduce

  1. A python package with below lines in pyproject.toml
# pyproject.toml
[tool.setuptools]
package-dir = { "" = "src" }
  1. Add commitizen check into pre-commit hooks
 - repo: https://github.com/commitizen-tools/commitizen
 rev: v1.17.0
 hooks:
 - id: commitizen
 stages: [commit-msg]
  1. Run pre-commit
    pre-commit run --all-files

Current behavior

commitizen check.........................................................Failed
- hook id: commitizen
- exit code: 1
Traceback (most recent call last):
 File "<frozen runpy>", line 198, in _run_module_as_main
 File "<frozen runpy>", line 88, in _run_code
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Scripts\cz.EXE\__main__.py", line 7, in <module>
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\commitizen\cli.py", line 179, in main
 conf = config.read_cfg()
 ^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\commitizen\config\__init__.py", line 60, in read_cfg
 _conf = TomlConfig(data=data, path=filename)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\commitizen\config\toml_config.py", line 10, in __init__
 self._parse_setting(data)
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\commitizen\config\toml_config.py", line 39, in _parse_setting
 doc = parse(data)
 ^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\api.py", line 51, in parse
 return Parser(string).parse()
 ^^^^^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\parser.py", line 153, in parse
 key, value = self._parse_table()
 ^^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\parser.py", line 1056, in _parse_table
 item = self._parse_item()
 ^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\parser.py", line 302, in _parse_item
 return self._parse_key_value(True)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\parser.py", line 387, in _parse_key_value
 val = self._parse_value()
 ^^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\parser.py", line 526, in _parse_value
 return self._parse_inline_table()
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\parser.py", line 710, in _parse_inline_table
 key, val = self._parse_key_value(False)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "...\pre-commit\repoztsxtdvg\py_env-python3\Lib\site-packages\tomlkit\parser.py", line 371, in _parse_key_value
 raise self.parse_error(EmptyKeyError)
tomlkit.exceptions.EmptyKeyError: Empty key at line 36 col 18
### Desired behavior
See above
### Screenshots
_No response_
### Environment
Commitizen Version: 4.8.3
Python Version: 3.10.16 (main, Mar 17 2025, 20:54:03) [MSC v.1943 64 bit (AMD64)]
Operating System: Windows

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /