Skip to content

Commit cff98a6

Browse files
committed
Recover from invalid python virtualenvs
1 parent 64dd893 commit cff98a6

File tree

15 files changed

+76
-6
lines changed

15 files changed

+76
-6
lines changed

pre_commit/languages/all.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
# return 'default' if there is no better option.
2222
# """
2323
#
24+
# def healthy(repo_cmd_runner, language_version):
25+
# """Return whether or not the environment is considered functional."""
26+
#
2427
# def install_environment(repo_cmd_runner, version, additional_dependencies):
2528
# """Installs a repository in the given repository. Note that the current
2629
# working directory will already be inside the repository.

pre_commit/languages/docker.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
ENVIRONMENT_DIR = 'docker'
1616
PRE_COMMIT_LABEL = 'PRE_COMMIT'
1717
get_default_version = helpers.basic_get_default_version
18+
healthy = helpers.basic_healthy
1819

1920

2021
def md5(s): # pragma: windows no cover

pre_commit/languages/golang.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
ENVIRONMENT_DIR = 'golangenv'
1717
get_default_version = helpers.basic_get_default_version
18+
healthy = helpers.basic_healthy
1819

1920

2021
def get_env_patch(venv):

pre_commit/languages/helpers.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,7 @@ def assert_no_additional_deps(lang, additional_deps):
3737

3838
def basic_get_default_version():
3939
return 'default'
40+
41+
42+
def basic_healthy(repo_cmd_runner, language_version):
43+
return True

pre_commit/languages/node.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
ENVIRONMENT_DIR = 'node_env'
1515
get_default_version = helpers.basic_get_default_version
16+
healthy = helpers.basic_healthy
1617

1718

1819
def get_env_patch(venv): # pragma: windows no cover

pre_commit/languages/pcre.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
ENVIRONMENT_DIR = None
1010
GREP = 'ggrep' if sys.platform == 'darwin' else 'grep'
1111
get_default_version = helpers.basic_get_default_version
12+
healthy = helpers.basic_healthy
1213

1314

1415
def install_environment(repo_cmd_runner, version, additional_dependencies):

pre_commit/languages/python.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
from pre_commit.languages import helpers
1111
from pre_commit.parse_shebang import find_executable
1212
from pre_commit.util import clean_path_on_failure
13+
from pre_commit.util import cmd_output
1314
from pre_commit.xargs import xargs
1415

1516

1617
ENVIRONMENT_DIR = 'py_env'
17-
get_default_version = helpers.basic_get_default_version
1818

1919

2020
def bin_dir(venv):
@@ -83,6 +83,14 @@ def get_default_version():
8383
return get_default_version()
8484

8585

86+
def healthy(repo_cmd_runner, language_version):
87+
with in_env(repo_cmd_runner, language_version):
88+
retcode, _, _ = cmd_output(
89+
'python', '-c', 'import datetime, io, os, weakref', retcode=None,
90+
)
91+
return retcode == 0
92+
93+
8694
def norm_version(version):
8795
if os.name == 'nt': # pragma: no cover (windows)
8896
# Try looking up by name

pre_commit/languages/ruby.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
ENVIRONMENT_DIR = 'rbenv'
1919
get_default_version = helpers.basic_get_default_version
20+
healthy = helpers.basic_healthy
2021

2122

2223
def get_env_patch(venv, language_version): # pragma: windows no cover

pre_commit/languages/script.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
ENVIRONMENT_DIR = None
88
get_default_version = helpers.basic_get_default_version
9+
healthy = helpers.basic_healthy
910

1011

1112
def install_environment(repo_cmd_runner, version, additional_dependencies):

pre_commit/languages/swift.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
ENVIRONMENT_DIR = 'swift_env'
1313
get_default_version = helpers.basic_get_default_version
14+
healthy = helpers.basic_healthy
1415
BUILD_DIR = '.build'
1516
BUILD_CONFIG = 'release'
1617

0 commit comments

Comments
 (0)