Click 和 Black 版本与 Poetry 不兼容( ImportError: 无法从 'click' 导入名称 '_unicodefun' )

Cha*_*tte 0 python pre-commit-hook pre-commit.com

click 8.1.1 和 black <=22.1.0 之间的不兼容性已报告并显然已在此处修复

但显然诗歌仍然是一个问题,正如这里报道的(并且显然也已修复)

配置:

poetry run pre-commit run --all-files系统地运行结果:

black....................................................................Failed
- hook id: black
- exit code: 1

Traceback (most recent call last):
  File "/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/bin/black", line 8, in <module>
    sys.exit(patched_main())
  File "/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/lib/python3.9/site-packages/black/__init__.py", line 1372, in patched_main
    patch_click()
  File "/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/lib/python3.9/site-packages/black/__init__.py", line 1358, in patch_click
    from click import _unicodefun
ImportError: cannot import name '_unicodefun' from 'click' (/Users/charlotteweil1/.cache/pre-commit/repoqg3mkzrn/py_env-python3.9/lib/python3.9/site-packages/click/__init__.py)
Run Code Online (Sandbox Code Playgroud)

我尝试删除整个repoqg3mkzrn目录.cache/pre-commit并重新安装预提交,但行为是相同的:(

提前致谢!

Ant*_*ile 5

你需要检查你的.pre-commit-config.yaml——你几乎肯定在那里配置了过时的黑色版本。最简单的修复方法是运行pre-commit autoupdate以获取最新版本

或者,如果您想保留过时的版本,black可以强制使用旧版本的 click:

-   repo: https://github.com/psf/black
    rev: ...  # whatever old version
    hooks:
    -   id: black
        additional_dependencies: ['click<8.1']
Run Code Online (Sandbox Code Playgroud)

免责声明:我创建了预提交