diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c9be411..9dce7ae 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -33,8 +33,8 @@ jobs: - name: configure conda and install code shell: bash -el {0} run: | - mamba install --yes --file=requirements.txt - mamba install --yes pytest flaky pip python-build setuptools_scm>=7 setuptools>=45 toml + conda install --yes --file=requirements.txt + conda install --yes pytest flaky pip python-build setuptools_scm>=7 setuptools>=45 toml pip install -e . - name: test versions diff --git a/.github/workflows/tests_mamba.yml b/.github/workflows/tests_mamba.yml index 8cddba2..c87a0e4 100644 --- a/.github/workflows/tests_mamba.yml +++ b/.github/workflows/tests_mamba.yml @@ -33,8 +33,9 @@ jobs: - name: configure conda and install code shell: bash -el {0} run: | - mamba install --yes --file=requirements.txt - mamba install --yes pytest flaky pip python-build setuptools_scm>=7 setuptools>=45 toml + conda install --yes --file=requirements.txt + conda install --yes --file=requirements-mamba.txt + conda install --yes pytest flaky pip python-build setuptools_scm>=7 setuptools>=45 toml pip install -e . - name: test versions diff --git a/conda_forge_feedstock_check_solvable/__init__.py b/conda_forge_feedstock_check_solvable/__init__.py index d89c85b..1316132 100644 --- a/conda_forge_feedstock_check_solvable/__init__.py +++ b/conda_forge_feedstock_check_solvable/__init__.py @@ -1,4 +1,3 @@ # flake8: noqa from ._version import __version__ from .check_solvable import is_recipe_solvable -from .mamba_solver import MambaSolver diff --git a/conda_forge_feedstock_check_solvable/check_solvable.py b/conda_forge_feedstock_check_solvable/check_solvable.py index 511b306..5943569 100644 --- a/conda_forge_feedstock_check_solvable/check_solvable.py +++ b/conda_forge_feedstock_check_solvable/check_solvable.py @@ -9,7 +9,6 @@ from ruamel.yaml import YAML import conda_forge_feedstock_check_solvable.utils -from conda_forge_feedstock_check_solvable.mamba_solver import mamba_solver_factory from conda_forge_feedstock_check_solvable.rattler_build import invoke_rattler_build from conda_forge_feedstock_check_solvable.rattler_solver import rattler_solver_factory from conda_forge_feedstock_check_solvable.utils import ( @@ -106,7 +105,7 @@ def _is_recipe_solvable( additional_channels=(), build_platform=None, verbosity=1, - solver="mamba", + solver="rattler", timeout_timer=None, fail_fast=False, ) -> Tuple[bool, List[str], Dict[str, bool]]: @@ -199,7 +198,7 @@ def _is_recipe_solvable_on_platform( arch, build_platform_arch=None, additional_channels=(), - solver_backend="mamba", + solver_backend="rattler", timeout_timer=None, fail_fast=False, ): @@ -308,6 +307,10 @@ def _is_recipe_solvable_on_platform( if solver_backend == "rattler": solver_factory = rattler_solver_factory elif solver_backend == "mamba": + from conda_forge_feedstock_check_solvable.mamba_solver import ( + mamba_solver_factory, + ) + solver_factory = mamba_solver_factory else: raise ValueError(f"Unknown solver backend {solver_backend}") diff --git a/pyproject.toml b/pyproject.toml index b10adfb..fbc3575 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,7 +12,7 @@ authors = [ {name = "conda-forge-tick development team", email = "condaforge@gmail.com"}, ] description = "A mamba-based package to check if a conda-forge feedstock is solvable." -dynamic = ["version", "dependencies"] +dynamic = ["version", "dependencies", "optional-dependencies"] license = {file = "LICENSE"} readme = "README.md" @@ -21,6 +21,7 @@ home = "https://github.com/regro/conda-forge-feedstock-check-solvable" [tool.setuptools.dynamic] dependencies = {file = ["requirements.txt"]} +optional-dependencies.mamba = { file = ["requirements-mamba.txt"] } [tool.setuptools.packages.find] exclude = ['tests*'] diff --git a/requirements-mamba.txt b/requirements-mamba.txt new file mode 100644 index 0000000..5d0a073 --- /dev/null +++ b/requirements-mamba.txt @@ -0,0 +1 @@ +libmambapy>=1.5.1,<2.0a0 diff --git a/requirements.txt b/requirements.txt index 963a84b..c223bf4 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,11 +5,10 @@ conda conda-package-handling conda-smithy conda-build -libmambapy>=1.5.1,<2.0a0 ruamel.yaml.jinja2 -conda-forge-metadata>=0.2.0 +conda-forge-metadata>=0.11.0 wurlitzer requests zstandard boltons>=23.0.0 -py-rattler>=0.6.2,<0.7a0 +py-rattler>=0.9.0,<0.10a0 diff --git a/tests/conftest.py b/tests/conftest.py index d53613e..73d1e3e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,11 +4,19 @@ import pytest -from conda_forge_feedstock_check_solvable.mamba_solver import mamba_solver_factory from conda_forge_feedstock_check_solvable.rattler_solver import rattler_solver_factory +try: + from conda_forge_feedstock_check_solvable.mamba_solver import ( + mamba_solver_factory, + ) +except Exception: + mamba_solver_factory = None + FEEDSTOCK_DIR = os.path.join(os.path.dirname(__file__), "test_feedstock") -ALL_SOLVERS = ["rattler", "mamba"] +ALL_SOLVERS = ["rattler"] +if mamba_solver_factory is not None: + ALL_SOLVERS.append("mamba") def pytest_addoption(parser): diff --git a/tests/test_solvers.py b/tests/test_solvers.py index 6c87452..61e6ac1 100644 --- a/tests/test_solvers.py +++ b/tests/test_solvers.py @@ -4,10 +4,14 @@ import pytest from flaky import flaky -from conda_forge_feedstock_check_solvable.mamba_solver import ( - MambaSolver, - mamba_solver_factory, -) +try: + from conda_forge_feedstock_check_solvable.mamba_solver import ( + MambaSolver, + mamba_solver_factory, + ) +except Exception: + MambaSolver = mamba_solver_factory = None + from conda_forge_feedstock_check_solvable.rattler_solver import ( RattlerSolver, rattler_solver_factory, @@ -227,6 +231,10 @@ def test_solvers_hang(solver_factory): assert res[0] +@pytest.mark.skipif( + MambaSolver is None or mamba_solver_factory is None, + reason="mamba not available", +) @pytest.mark.parametrize("mamba_factory", [MambaSolver, mamba_solver_factory]) @pytest.mark.parametrize("rattler_factory", [RattlerSolver, rattler_solver_factory]) def test_solvers_compare_output(mamba_factory, rattler_factory): @@ -373,6 +381,10 @@ def test_solvers_compare_output(mamba_factory, rattler_factory): } +@pytest.mark.skipif( + MambaSolver is None or mamba_solver_factory is None, + reason="mamba not available", +) @pytest.mark.parametrize("mamba_factory", [MambaSolver, mamba_solver_factory]) @pytest.mark.parametrize("rattler_factory", [RattlerSolver, rattler_solver_factory]) def test_solvers_python(mamba_factory, rattler_factory):