Description
When committing a pyproject.toml file that uses dependency group includes and the commitizen pre-commit hook, a tomlkit.exceptions.MixedArrayTypesError is raised, failing the check and preventing the commit.
This happens when using uv as dependency manager, I don't know about others.
Steps to reproduce
- Create a blank project with
uv init cz-dgi and enter with cd cz-dgi
- Add the following
pyproject.toml:
[project]
name = "czdgi"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"commitizen>=4.8.2",
"pre-commit>=4.2.0",
]
[dependency-groups]
nums = [
"pandas>=2.2.3",
]
test = [
{include-group = "nums"},
"pytest>=8.4.0",
]
- Create a
.pre-commit-config.yaml with the following content:
- pre-commit
- commit-msg
repos:
- repo: https://github.com/commitizen-tools/commitizen
rev: v1.17.0
hooks:
- id: commitizen
stages: [ commit-msg ]
- Run
uv run pre-commit install --install-hooks to install hooks
- Try to commit
Current behavior
The commit check fails with error:
commitizen check.........................................................Failed
- hook id: commitizen
- exit code: 1
Traceback (most recent call last):
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/bin/cz", line 8, in <module>
sys.exit(main())
^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/commitizen/cli.py", line 179, in main
conf = config.read_cfg()
^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/commitizen/config/__init__.py", line 60, in read_cfg
_conf = TomlConfig(data=data, path=filename)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/commitizen/config/toml_config.py", line 10, in __init__
self._parse_setting(data)
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/commitizen/config/toml_config.py", line 39, in _parse_setting
doc = parse(data)
^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/tomlkit/api.py", line 51, in parse
return Parser(string).parse()
^^^^^^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/tomlkit/parser.py", line 153, in parse
key, value = self._parse_table()
^^^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/tomlkit/parser.py", line 1056, in _parse_table
item = self._parse_item()
^^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/tomlkit/parser.py", line 302, in _parse_item
return self._parse_key_value(True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/tomlkit/parser.py", line 387, in _parse_key_value
val = self._parse_value()
^^^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/tomlkit/parser.py", line 524, in _parse_value
return self._parse_array()
^^^^^^^^^^^^^^^^^^^
File "/home/kinami/.cache/pre-commit/repoo6u1swju/py_env-python3/lib/python3.12/site-packages/tomlkit/parser.py", line 680, in _parse_array
raise self.parse_error(MixedArrayTypesError)
tomlkit.exceptions.MixedArrayTypesError: Mixed types found in array at line 19 col 1
Desired behavior
The pyproject.toml gets parsed correctly and no errors appear.
Screenshots
No response
Environment
Commitizen Version: 4.8.2
Python Version: 3.12.10 (main, May 17 2025, 13:50:06) [Clang 20.1.4 ]
Operating System: Linux
Description
When committing a
pyproject.tomlfile that uses dependency group includes and the commitizen pre-commit hook, atomlkit.exceptions.MixedArrayTypesErroris raised, failing the check and preventing the commit.This happens when using
uvas dependency manager, I don't know about others.Steps to reproduce
uv init cz-dgiand enter withcd cz-dgipyproject.toml:.pre-commit-config.yamlwith the following content:uv run pre-commit install --install-hooksto install hooksCurrent behavior
The commit check fails with error:
Desired behavior
The
pyproject.tomlgets parsed correctly and no errors appear.Screenshots
No response
Environment
Commitizen Version: 4.8.2
Python Version: 3.12.10 (main, May 17 2025, 13:50:06) [Clang 20.1.4 ]
Operating System: Linux