When running our lint checks with the Python Black package, an error comes up:
ImportError: cannot import name ‘_unicodefun’ from ‘click’ (/Users/robot/.cache/pre-commit/repo3u71ccm2/py_env-python3.9/lib/python3.9/site-packages/click/init.py)`
In researching this, I found the following related issues:
- ImportError: cannot import name ‘_unicodefun’ from ‘click’ #2976
- ImportError: cannot import name ‘_unicodefun’ from ‘click’ #6013
How can I solve this problem? Is this a false positive from the linter? Do I need to modify my code?
Advertisement
Answer
This has been fixed by Black 22.3.0. Versions before that won’t work with click 8.1.0.
Incompatible with click 8.1.0 (ImportError: cannot import name ‘_unicodefun’ from ‘click’) #2964
E.g.: black.yml
python-version: 3.8 - name: install black run: | - pip install black==20.8b1 + pip install black==22.3.0 - name: run black run: | black . --check --line-length 100
https://github.com/Clinical-Genomics/cgbeacon2/pull/221/files
As a workaround, pin click
to the last version via pip install --upgrade click==8.0.2
.