Skip to content

Commit 83aa65c

Browse files
xhochyasottile
authored andcommitted
Add mamba support to language: conda
1 parent b944395 commit 83aa65c

File tree

2 files changed

+51
-2
lines changed

2 files changed

+51
-2
lines changed

pre_commit/languages/conda.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,15 @@ def in_env(
5050
yield
5151

5252

53+
def _conda_exe() -> str:
54+
if os.environ.get('PRE_COMMIT_USE_MICROMAMBA'):
55+
return 'micromamba'
56+
elif os.environ.get('PRE_COMMIT_USE_MAMBA'):
57+
return 'mamba'
58+
else:
59+
return 'conda'
60+
61+
5362
def install_environment(
5463
prefix: Prefix,
5564
version: str,
@@ -58,15 +67,17 @@ def install_environment(
5867
helpers.assert_version_default('conda', version)
5968
directory = helpers.environment_dir(ENVIRONMENT_DIR, version)
6069

70+
conda_exe = _conda_exe()
71+
6172
env_dir = prefix.path(directory)
6273
with clean_path_on_failure(env_dir):
6374
cmd_output_b(
64-
'conda', 'env', 'create', '-p', env_dir, '--file',
75+
conda_exe, 'env', 'create', '-p', env_dir, '--file',
6576
'environment.yml', cwd=prefix.prefix_dir,
6677
)
6778
if additional_dependencies:
6879
cmd_output_b(
69-
'conda', 'install', '-p', env_dir, *additional_dependencies,
80+
conda_exe, 'install', '-p', env_dir, *additional_dependencies,
7081
cwd=prefix.prefix_dir,
7182
)
7283

tests/languages/conda_test.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import pytest
2+
3+
from pre_commit import envcontext
4+
from pre_commit.languages.conda import _conda_exe
5+
6+
7+
@pytest.mark.parametrize(
8+
('ctx', 'expected'),
9+
(
10+
pytest.param(
11+
(
12+
('PRE_COMMIT_USE_MICROMAMBA', envcontext.UNSET),
13+
('PRE_COMMIT_USE_MAMBA', envcontext.UNSET),
14+
),
15+
'conda',
16+
id='default',
17+
),
18+
pytest.param(
19+
(
20+
('PRE_COMMIT_USE_MICROMAMBA', '1'),
21+
('PRE_COMMIT_USE_MAMBA', ''),
22+
),
23+
'micromamba',
24+
id='default',
25+
),
26+
pytest.param(
27+
(
28+
('PRE_COMMIT_USE_MICROMAMBA', ''),
29+
('PRE_COMMIT_USE_MAMBA', '1'),
30+
),
31+
'mamba',
32+
id='default',
33+
),
34+
),
35+
)
36+
def test_conda_exe(ctx, expected):
37+
with envcontext.envcontext(ctx):
38+
assert _conda_exe() == expected

0 commit comments

Comments
 (0)