diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd341688..f8058c62 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -45,7 +45,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: [3.9, "3.10"] + python-version: ["3.9", "3.10"] steps: - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} diff --git a/pyproject.toml b/pyproject.toml index a0184458..5f747c2c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,11 +50,13 @@ dependencies = [ "pandas>=1.1.1, !=1.4.0", "scipy>=1.4.1", "scikit-learn>=0.21.2, <1.2.0", - "scvi-tools>=0.20.1", "matplotlib>=3.3.0" ] [project.optional-dependencies] +vi = [ + "scvi-tools>=0.20.1", +] louvain = [ "igraph", "louvain" @@ -78,7 +80,8 @@ dev = [ "pybind11", "pytest-cov", "igraph", - "setuptools_scm" + "scvi-tools>=0.20.1", + "setuptools_scm", ] docs = [ # Just until rtd.org understands pyproject.toml diff --git a/scvelo/tools/__init__.py b/scvelo/tools/__init__.py index b2e3e126..3a40aff1 100644 --- a/scvelo/tools/__init__.py +++ b/scvelo/tools/__init__.py @@ -1,3 +1,5 @@ +import contextlib + from scanpy.tools import diffmap, dpt, louvain, tsne, umap from ._em_model import ExpectationMaximizationModel @@ -11,7 +13,6 @@ recover_latent_time, ) from ._steady_state_model import SecondOrderSteadyStateModel, SteadyStateModel -from ._vi_model import VELOVI from .paga import paga from .rank_velocity_genes import rank_velocity_genes, velocity_clusters from .score_genes_cell_cycle import score_genes_cell_cycle @@ -23,6 +24,10 @@ from .velocity_graph import velocity_graph from .velocity_pseudotime import velocity_map, velocity_pseudotime +with contextlib.suppress(ImportError): + from ._vi_model import VELOVI + + __all__ = [ "align_dynamics", "differential_kinetic_test", @@ -54,5 +59,8 @@ "SteadyStateModel", "SecondOrderSteadyStateModel", "ExpectationMaximizationModel", - "VELOVI", ] +if "VELOVI" in locals(): + __all__ += ["VELOVI"] + +del contextlib