Skip to content

Commit 4da968a

Browse files
committed
Merge pull request #258 from meunierd/expanduser
Allow specifying python version relative to user's home directory.
2 parents 5e33213 + 6a580a0 commit 4da968a

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

pre_commit/languages/python.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,11 @@ def in_env(repo_cmd_runner, language_version):
3131

3232

3333
def norm_version(version):
34+
version = os.path.expanduser(version)
3435
if os.name == 'nt': # pragma: no cover (windows)
3536
if not distutils.spawn.find_executable(version):
37+
# expanduser introduces a leading slash
38+
version = version.strip('\\')
3639
# The default place for python on windows is:
3740
# C:\PythonXX\python.exe
3841
version = r'C:\{0}\python.exe'.format(version.replace('.', ''))

tests/repository_test.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from __future__ import unicode_literals
33

44
import io
5+
import os
56
import os.path
67
import shutil
78

@@ -12,6 +13,7 @@
1213
from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA
1314
from pre_commit.clientlib.validate_config import validate_config_extra
1415
from pre_commit.jsonschema_extensions import apply_defaults
16+
from pre_commit.languages.python import norm_version
1517
from pre_commit.languages.python import PythonEnv
1618
from pre_commit.repository import Repository
1719
from pre_commit.util import cmd_output
@@ -414,3 +416,15 @@ def test_local_repository():
414416
with pytest.raises(NotImplementedError):
415417
local_repo.manifest
416418
assert len(local_repo.hooks) == 1
419+
420+
421+
def test_norm_version_expanduser(): # pragma: no cover
422+
home = os.path.expanduser('~')
423+
if os.name == 'nt':
424+
path = r'~\python343'
425+
expected_path = r'C:{0}\python343\python.exe'.format(home)
426+
else:
427+
path = '~/.pyenv/versions/3.4.3/bin/python'
428+
expected_path = home + '/.pyenv/versions/3.4.3/bin/python'
429+
result = norm_version(path)
430+
assert result == expected_path

0 commit comments

Comments
 (0)