pre-commit fails to install isort 5.11.4 with error "RuntimeError: The Poetry configuration is invalid"
Question:
pre-commit suddenly started to fail installing the isort hook in our builds today with the following error
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
An unexpected error has occurred: CalledProcessError: command: ('/builds/.../.cache/pre-commit/repo0_h0f938/py_env-python3.8/bin/python', '-mpip', 'install', '.')
return code: 1
expected return code: 0
[...]
stderr:
ERROR: Command errored out with exit status 1:
[...]
File "/tmp/pip-build-env-_3j1398p/overlay/lib/python3.8/site-packages/poetry/core/masonry/api.py", line 40, in prepare_metadata_for_build_wheel
poetry = Factory().create_poetry(Path(".").resolve(), with_groups=False)
File "/tmp/pip-build-env-_3j1398p/overlay/lib/python3.8/site-packages/poetry/core/factory.py", line 57, in create_poetry
raise RuntimeError("The Poetry configuration is invalid:n" + message)
RuntimeError: The Poetry configuration is invalid:
- [extras.pipfile_deprecated_finder.2] 'pip-shims<=0.3.4' does not match '^[a-zA-Z-_.0-9]+$'
It seems to be related with poetry configuration..
Answers:
Upgrading the hook to the freshly released isort 5.12.0 seems to be fixing the issue.
Looking at the commit stack from isort repo, it sounds like recent version of Poetry had a breaking change incompatible with isort <= 5.11.4 (commit)
Additional note: For people who must use python3.7
(the support was dropped in isort 5.12.0
), isort released the hotfix 5.11.5
.
https://github.com/PyCQA/isort/releases/tag/5.11.5
5.11.5 January 30 2023 [hotfix]
Fixed incompatiblity with latest poetry version
Related isort issue: https://github.com/PyCQA/isort/issues/2083#issuecomment-1408300628
Adding to this post because it took a few more things to get my system working…
Project fix
.pre-commit-config.yaml
based on docs
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
args: ['--order-by-type', '--length-sort', "--profile", "black", "--filter-files"]
name: isort (python)
- id: isort
name: isort (cython)
types: [cython]
- id: isort
name: isort (pyi)
types: [pyi]
pin specific poetry-core version (isort issue & hot fix)
[build-system]
requires = ["poetry-core>=1.3.2"]
build-backend = "poetry.core.masonry.api"
System fix
uninstall/reinstall poetry using official installer
uninstall
curl -sSL https://install.python-poetry.org | python3 - --uninstall
curl -sSL https://install.python-poetry.org | POETRY_UNINSTALL=1 python3 -
check .zshrc and remove other instances of poetry via cat ~/.zshrc | grep poetry
install
curl -sSL https://install.python-poetry.org | python3 -
echo "export PATH="/Users/$USER/.local/bin:$PATH"" >> "$HOME/.zshrc"
Running pre-commit autoupdate
was sufficient to fix it on my machine.
This will update isort
version in .pre-commit-config.yaml
to 5.12.0+, as well as all the other pre-commit utilities.
For me the solution was:
pre-commit autoupdate
pre-commit suddenly started to fail installing the isort hook in our builds today with the following error
[INFO] Installing environment for https://github.com/pycqa/isort.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
An unexpected error has occurred: CalledProcessError: command: ('/builds/.../.cache/pre-commit/repo0_h0f938/py_env-python3.8/bin/python', '-mpip', 'install', '.')
return code: 1
expected return code: 0
[...]
stderr:
ERROR: Command errored out with exit status 1:
[...]
File "/tmp/pip-build-env-_3j1398p/overlay/lib/python3.8/site-packages/poetry/core/masonry/api.py", line 40, in prepare_metadata_for_build_wheel
poetry = Factory().create_poetry(Path(".").resolve(), with_groups=False)
File "/tmp/pip-build-env-_3j1398p/overlay/lib/python3.8/site-packages/poetry/core/factory.py", line 57, in create_poetry
raise RuntimeError("The Poetry configuration is invalid:n" + message)
RuntimeError: The Poetry configuration is invalid:
- [extras.pipfile_deprecated_finder.2] 'pip-shims<=0.3.4' does not match '^[a-zA-Z-_.0-9]+$'
It seems to be related with poetry configuration..
Upgrading the hook to the freshly released isort 5.12.0 seems to be fixing the issue.
Looking at the commit stack from isort repo, it sounds like recent version of Poetry had a breaking change incompatible with isort <= 5.11.4 (commit)
Additional note: For people who must use python3.7
(the support was dropped in isort 5.12.0
), isort released the hotfix 5.11.5
.
https://github.com/PyCQA/isort/releases/tag/5.11.5
5.11.5 January 30 2023 [hotfix]
Fixed incompatiblity with latest poetry version
Related isort issue: https://github.com/PyCQA/isort/issues/2083#issuecomment-1408300628
Adding to this post because it took a few more things to get my system working…
Project fix
.pre-commit-config.yaml
based on docs
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
args: ['--order-by-type', '--length-sort', "--profile", "black", "--filter-files"]
name: isort (python)
- id: isort
name: isort (cython)
types: [cython]
- id: isort
name: isort (pyi)
types: [pyi]
pin specific poetry-core version (isort issue & hot fix)
[build-system]
requires = ["poetry-core>=1.3.2"]
build-backend = "poetry.core.masonry.api"
System fix
uninstall/reinstall poetry using official installer
uninstall
curl -sSL https://install.python-poetry.org | python3 - --uninstall
curl -sSL https://install.python-poetry.org | POETRY_UNINSTALL=1 python3 -
check .zshrc and remove other instances of poetry via
cat ~/.zshrc | grep poetry
install
curl -sSL https://install.python-poetry.org | python3 -
echo "export PATH="/Users/$USER/.local/bin:$PATH"" >> "$HOME/.zshrc"
Running pre-commit autoupdate
was sufficient to fix it on my machine.
This will update isort
version in .pre-commit-config.yaml
to 5.12.0+, as well as all the other pre-commit utilities.
For me the solution was:
pre-commit autoupdate