Change how venv path is modified in vim plugin (#804)

- Check if black venv path is not already in `sys.path`
- Append (not insert) path so that black doesn't incorrectly import backports (e.g. `typing`)

Avoids this error if `typing` is present in venv:
```
Traceback (most recent call last):
  File "<string>", line 56, in <module>
  File "/home/josh/.virtualenvs/default/lib/python3.7/site-packages/black.py", line 19, in <module>
    from typing import (
  File "/home/josh/.virtualenvs/default/lib/python3.7/site-packages/typing.py", line 1356, in <module>
    class Callable(extra=collections_abc.Callable, metaclass=CallableMeta):
  File "/home/josh/.virtualenvs/default/lib/python3.7/site-packages/typing.py", line 1004, in __new__
    self._abc_registry = extra._abc_registry
AttributeError: type object 'Callable' has no attribute '_abc_registry'
```
This commit is contained in:
Josh Bode 2019-10-20 16:24:50 +02:00 committed by Łukasz Langa
parent b73ec93fa7
commit 9027ca63ca

View File

@ -94,8 +94,8 @@ def _initialize_black_env(upgrade=False):
print('DONE! You are all set, thanks for waiting ✨ 🍰 ✨') print('DONE! You are all set, thanks for waiting ✨ 🍰 ✨')
if first_install: if first_install:
print('Pro-tip: to upgrade Black in the future, use the :BlackUpgrade command and restart Vim.\n') print('Pro-tip: to upgrade Black in the future, use the :BlackUpgrade command and restart Vim.\n')
if sys.path[0] != virtualenv_site_packages: if virtualenv_site_packages not in sys.path:
sys.path.insert(0, virtualenv_site_packages) sys.path.append(virtualenv_site_packages)
return True return True
if _initialize_black_env(): if _initialize_black_env():