From 7fb5107e80d65953b084ab74aabb01b12c95d40c Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 20 Jan 2021 13:03:14 -0500 Subject: [PATCH 01/23] bump version --- scprep/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scprep/version.py b/scprep/version.py index deae1c8e..af3f47f7 100644 --- a/scprep/version.py +++ b/scprep/version.py @@ -1,4 +1,4 @@ # author: Scott Gigante # (C) 2018 Krishnaswamy Lab GPLv2 -__version__ = "1.0.12" +__version__ = "1.0.13a0" From a4b1ae94c5ee3495d80a02533a5d71bbb7645947 Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 09:42:15 -0500 Subject: [PATCH 02/23] require packaging --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 62b07929..78833a6b 100644 --- a/setup.py +++ b/setup.py @@ -8,6 +8,7 @@ "scikit-learn>=0.19.1", "decorator>=4.3.0", "pandas>=0.25", + "packaging", ] optional_requires = [ From 999740c38c86fb899c39457bae470dd8bde77e05 Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 09:42:30 -0500 Subject: [PATCH 03/23] don't plot means of empty columns --- scprep/plot/jitter.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scprep/plot/jitter.py b/scprep/plot/jitter.py index c0f75927..49c9d177 100644 --- a/scprep/plot/jitter.py +++ b/scprep/plot/jitter.py @@ -195,12 +195,12 @@ def jitter( # Plotting means if plot_means: + plot_x_means = [ + i for i in range(len(params.x_labels)) if np.any(params.x_coords == i) + ] ax.scatter( - np.arange(len(params.x_labels)), - [ - np.nanmean(params.y[params.x_coords == i]) - for i in range(len(params.x_labels)) - ], + plot_x_means, + [np.nanmean(params.y[params.x_coords == i]) for i in plot_x_means], c=means_c, edgecolors="black", lw=1.5, From 673d74012956589353d6933931853fc98edbbb8c Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 09:42:35 -0500 Subject: [PATCH 04/23] revert version --- scprep/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scprep/version.py b/scprep/version.py index af3f47f7..deae1c8e 100644 --- a/scprep/version.py +++ b/scprep/version.py @@ -1,4 +1,4 @@ # author: Scott Gigante # (C) 2018 Krishnaswamy Lab GPLv2 -__version__ = "1.0.13a0" +__version__ = "1.0.12" From 903e354fb1d2d8720e5efe570dfb20137ddfd3bf Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 09:42:59 -0500 Subject: [PATCH 05/23] bump version --- scprep/version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scprep/version.py b/scprep/version.py index deae1c8e..d6e6e024 100644 --- a/scprep/version.py +++ b/scprep/version.py @@ -1,4 +1,4 @@ # author: Scott Gigante # (C) 2018 Krishnaswamy Lab GPLv2 -__version__ = "1.0.12" +__version__ = "1.0.13" From bc158f8ca063f0bdee792e05dd0b02a5ac7bfa9e Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 10:25:47 -0500 Subject: [PATCH 06/23] patch matplotlib --- scprep/__init__.py | 17 +++-------------- scprep/_patch.py | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 14 deletions(-) create mode 100644 scprep/_patch.py diff --git a/scprep/__init__.py b/scprep/__init__.py index 1156e639..1b2d97f1 100644 --- a/scprep/__init__.py +++ b/scprep/__init__.py @@ -15,18 +15,7 @@ import scprep.reduce import scprep.run -import pandas as _pd -import packaging.version as _packaging_version +from . import _patch -if _packaging_version.parse(_pd.__version__) < _packaging_version.parse("2.0"): - - def _fill_value(self): - # Used in reindex_indexer - try: - return self.values.dtype.fill_value - except AttributeError: - return self.values.dtype.na_value - - from pandas.core.internals.blocks import ExtensionBlock as _ExtensionBlock - - setattr(_ExtensionBlock, "fill_value", property(_fill_value)) +_patch.patch_fill_value() +_patch.patch_matplotlib_backend() diff --git a/scprep/_patch.py b/scprep/_patch.py new file mode 100644 index 00000000..e62e985a --- /dev/null +++ b/scprep/_patch.py @@ -0,0 +1,26 @@ +import matplotlib as mpl +import packaging.version +import pandas as pd + + +def patch_fill_value(): + if packaging.version.parse(pd.__version__) < packaging.version.parse("2.0"): + + def _fill_value(self): + # Used in reindex_indexer + try: + return self.values.dtype.fill_value + except AttributeError: + return self.values.dtype.na_value + + from pandas.core.internals.blocks import ExtensionBlock + + setattr(ExtensionBlock, "fill_value", property(_fill_value)) + + +def patch_matplotlib_backend(): + if packaging.version.parse(mpl.__version__) < packaging.version.parse("4.0"): + try: + mpl.backend_bases + except AttributeError: + import matplotlib.backend_bases From a4790e74242ee6cc3e2a4222e96d68b5a125ec3a Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 10:32:45 -0500 Subject: [PATCH 07/23] noqa --- scprep/_patch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scprep/_patch.py b/scprep/_patch.py index e62e985a..ab3ddb2c 100644 --- a/scprep/_patch.py +++ b/scprep/_patch.py @@ -23,4 +23,4 @@ def patch_matplotlib_backend(): try: mpl.backend_bases except AttributeError: - import matplotlib.backend_bases + import matplotlib.backend_bases # noqa From 456bac050e4fc7184df66fa6034384f8f8176296 Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 11:03:23 -0500 Subject: [PATCH 08/23] modify patch --- scprep/_patch.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/scprep/_patch.py b/scprep/_patch.py index ab3ddb2c..9f6d3b9f 100644 --- a/scprep/_patch.py +++ b/scprep/_patch.py @@ -1,4 +1,5 @@ import matplotlib as mpl +import matplotlib.pyplot as plt import packaging.version import pandas as pd @@ -21,6 +22,8 @@ def _fill_value(self): def patch_matplotlib_backend(): if packaging.version.parse(mpl.__version__) < packaging.version.parse("4.0"): try: - mpl.backend_bases + plt.matplotlib.backend_bases except AttributeError: - import matplotlib.backend_bases # noqa + import matplotlib.backend_bases as _bases + + plt.matplotlib.backend_bases = _bases From 2b938936dff2736db877adcd2fa7a7069efc304f Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 11:05:07 -0500 Subject: [PATCH 09/23] better reporting --- test/test_lazyload.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/test_lazyload.py b/test/test_lazyload.py index 7e23bc41..8ad698ce 100644 --- a/test/test_lazyload.py +++ b/test/test_lazyload.py @@ -32,9 +32,9 @@ def test_builtins(): pass assert ( getattr(scprep._lazyload, module).__class__ is scprep._lazyload.AliasModule - ) + ), module try: getattr(scprep._lazyload, module).__version__ except AttributeError: pass - assert getattr(scprep._lazyload, module).__class__ is type(scprep) + assert getattr(scprep._lazyload, module).__class__ is type(scprep), module From ec69c140c502d5d3d3719f231dd23cf881ba6273 Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 11:40:08 -0500 Subject: [PATCH 10/23] more reporting --- test/_test_lazyload.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/_test_lazyload.py b/test/_test_lazyload.py index da566078..e933a052 100644 --- a/test/_test_lazyload.py +++ b/test/_test_lazyload.py @@ -15,10 +15,10 @@ def test_lazyload(): if module == "anndata2ri" and sys.version_info[:2] < (3, 6): continue if module in preloaded_modules: - assert getattr(scprep._lazyload, module).__class__ is type(scprep) + assert getattr(scprep._lazyload, module).__class__ is type(scprep), module else: assert ( getattr(scprep._lazyload, module).__class__ is scprep._lazyload.AliasModule - ) + ), module assert module not in scprep_loaded, module From 99f9e6c9e786c221013a4cf0418690c86e613852 Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 11:46:27 -0500 Subject: [PATCH 11/23] reformat --- test/test_hdf5.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_hdf5.py b/test/test_hdf5.py index 882ded34..cee47972 100644 --- a/test/test_hdf5.py +++ b/test/test_hdf5.py @@ -68,7 +68,7 @@ def test_get_node_invalid(): def test_get_values_invalid(): utils.assert_raises_message( TypeError, - "Expected h5py.Dataset or tables.CArray. " "Got ", + "Expected h5py.Dataset or tables.CArray. Got ", scprep.io.hdf5.get_values, "invalid", ) From 7e0e4b34d90d2171513559ae38b0190e6f370433 Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 11:46:37 -0500 Subject: [PATCH 12/23] just ignore backend_bases error --- scprep/__init__.py | 1 - scprep/_patch.py | 12 ------------ scprep/plot/utils.py | 5 ++++- 3 files changed, 4 insertions(+), 14 deletions(-) diff --git a/scprep/__init__.py b/scprep/__init__.py index 1b2d97f1..f5674ba3 100644 --- a/scprep/__init__.py +++ b/scprep/__init__.py @@ -18,4 +18,3 @@ from . import _patch _patch.patch_fill_value() -_patch.patch_matplotlib_backend() diff --git a/scprep/_patch.py b/scprep/_patch.py index 9f6d3b9f..da5b136b 100644 --- a/scprep/_patch.py +++ b/scprep/_patch.py @@ -1,5 +1,3 @@ -import matplotlib as mpl -import matplotlib.pyplot as plt import packaging.version import pandas as pd @@ -17,13 +15,3 @@ def _fill_value(self): from pandas.core.internals.blocks import ExtensionBlock setattr(ExtensionBlock, "fill_value", property(_fill_value)) - - -def patch_matplotlib_backend(): - if packaging.version.parse(mpl.__version__) < packaging.version.parse("4.0"): - try: - plt.matplotlib.backend_bases - except AttributeError: - import matplotlib.backend_bases as _bases - - plt.matplotlib.backend_bases = _bases diff --git a/scprep/plot/utils.py b/scprep/plot/utils.py index d54bc0af..4ab07191 100644 --- a/scprep/plot/utils.py +++ b/scprep/plot/utils.py @@ -14,7 +14,10 @@ def _with_default(param, default): def _mpl_is_gui_backend(): - backend = mpl.get_backend() + try: + backend = mpl.get_backend() + except Exception: + return False if backend in ["module://ipykernel.pylab.backend_inline", "agg"]: return False else: From bd9c24a9cb65c0f5446e690370a7efaba17fd86f Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 11:53:21 -0500 Subject: [PATCH 13/23] switch package install order; temporarily block tests to save cache --- .github/workflows/run_tests.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index d71eab3c..1497f2c1 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -101,6 +101,13 @@ jobs: restore-keys: | ${{ runner.os }}-renv-${{ steps.setup-r.outputs.installed-r-version }}- + - name: Install package & dependencies + run: | + python -m pip install --upgrade "pip<=21.0" + pip install --use-deprecated=legacy-resolver -U wheel setuptools + pip install --use-deprecated=legacy-resolver -U .[test,r] + python -c "import scprep" + - name: Install R packages run: | if (!requireNamespace("renv", quietly = TRUE)) install.packages("renv") @@ -109,15 +116,8 @@ jobs: renv::install("bioc::slingshot") shell: Rscript {0} - - name: Install package & dependencies - run: | - python -m pip install --upgrade "pip<=21.0" - pip install --use-deprecated=legacy-resolver -U wheel setuptools - pip install --use-deprecated=legacy-resolver -U .[test,r] - python -c "import scprep" - - name: Run tests - run: nose2 -vvv + run: echo nose2 -vvv - name: Coveralls env: From 83b8e86f8e98b74e34982a7c77c6b1b2e391a4d6 Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 11:54:04 -0500 Subject: [PATCH 14/23] add tests back in --- .github/workflows/run_tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 1497f2c1..1f947a96 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -117,7 +117,7 @@ jobs: shell: Rscript {0} - name: Run tests - run: echo nose2 -vvv + run: nose2 -vvv - name: Coveralls env: From 98a3c8dc03462ba20a3134410460c11ff0182cdc Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 13:47:08 -0500 Subject: [PATCH 15/23] install h5py and tables from sourcenstall h5py and tables from binary --- .github/workflows/run_tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 1f947a96..a5cf9f30 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -72,7 +72,7 @@ jobs: if: runner.os == 'Linux' run: | sudo apt-get update -qq - sudo apt-get install -y pandoc gfortran libblas-dev liblapack-dev libedit-dev llvm-dev libcurl4-openssl-dev ffmpeg + sudo apt-get install -y pandoc gfortran libblas-dev liblapack-dev libedit-dev llvm-dev libcurl4-openssl-dev ffmpeg libhdf5-dev - name: Set up Python uses: actions/setup-python@v2 @@ -105,6 +105,7 @@ jobs: run: | python -m pip install --upgrade "pip<=21.0" pip install --use-deprecated=legacy-resolver -U wheel setuptools + pip install --use-deprecated=legacy-resolver -U --no-binary :all: h5py tables pip install --use-deprecated=legacy-resolver -U .[test,r] python -c "import scprep" From 4b514a92f681698c118d658c023674dd604a862f Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 13:52:36 -0500 Subject: [PATCH 16/23] force reinstall --- .github/workflows/run_tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index a5cf9f30..55150abf 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -105,8 +105,8 @@ jobs: run: | python -m pip install --upgrade "pip<=21.0" pip install --use-deprecated=legacy-resolver -U wheel setuptools - pip install --use-deprecated=legacy-resolver -U --no-binary :all: h5py tables - pip install --use-deprecated=legacy-resolver -U .[test,r] + pip install --use-deprecated=legacy-resolver -U --no-binary :all: --force-reinstall h5py tables + pip install --use-deprecated=legacy-resolver -U .[test] python -c "import scprep" - name: Install R packages From c41ad3fb85eef7d44ef684a54e57f3f1be13941d Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 14:06:16 -0500 Subject: [PATCH 17/23] install deps first --- .github/workflows/run_tests.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index 55150abf..fac53dad 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -34,12 +34,14 @@ jobs: - name: Install tools run: | - python -m pip install --upgrade "pip<=21.0" - pip install --use-deprecated=legacy-resolver -U wheel setuptools - pip install --use-deprecated=legacy-resolver -U black flake8 + python -m pip install --upgrade pip + pip install -U wheel setuptools + pip install -U black flake8 + - name: Lint with Black run: | black . --check --diff + - name: Lint with flake8 run: | flake8 scprep @@ -103,10 +105,13 @@ jobs: - name: Install package & dependencies run: | - python -m pip install --upgrade "pip<=21.0" - pip install --use-deprecated=legacy-resolver -U wheel setuptools - pip install --use-deprecated=legacy-resolver -U --no-binary :all: --force-reinstall h5py tables - pip install --use-deprecated=legacy-resolver -U .[test] + python -m pip install --upgrade pip + pip install --upgrade wheel setuptools + pip install --upgrade .[test] + # install hdy5 libs from source + pip install --upgrade Cython + pip install --upgrade --no-binary=h5py h5py + pip install --upgrade --no-binbary=tables tables python -c "import scprep" - name: Install R packages From 81a4c6cfa040482a311beb0eb868a3149f3f6f8f Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 14:14:24 -0500 Subject: [PATCH 18/23] try a different way --- .github/workflows/run_tests.yml | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index fac53dad..c3ee57b8 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -106,12 +106,9 @@ jobs: - name: Install package & dependencies run: | python -m pip install --upgrade pip - pip install --upgrade wheel setuptools - pip install --upgrade .[test] - # install hdy5 libs from source - pip install --upgrade Cython - pip install --upgrade --no-binary=h5py h5py - pip install --upgrade --no-binbary=tables tables + pip install --upgrade wheel setuptools Cython + pip uninstall -y h5py tables + pip install --upgrade --no-binary=h5py,tables .[test] python -c "import scprep" - name: Install R packages From f02e55e20a358ec36a3db14719611edc267df2aa Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 14:52:59 -0500 Subject: [PATCH 19/23] remove test --- test.png | Bin 88464 -> 0 bytes test/_test_lazyload.py | 2 +- test/test_lazyload.py | 23 +++++++++++------------ 3 files changed, 12 insertions(+), 13 deletions(-) delete mode 100644 test.png diff --git a/test.png b/test.png deleted file mode 100644 index 01c74e2d7e564d313d1d078688c4bdc0e477405a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88464 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%0A_X;>5?3-z!)-N6EfD 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

2#*Ccj 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 S Date: Wed, 10 Feb 2021 14:54:58 -0500 Subject: [PATCH 20/23] fix assertion order --- test/_test_lazyload.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/_test_lazyload.py b/test/_test_lazyload.py index 84e8431b..5a24993b 100644 --- a/test/_test_lazyload.py +++ b/test/_test_lazyload.py @@ -14,6 +14,7 @@ def test_lazyload(): for module in scprep._lazyload._importspec.keys(): if module == "anndata2ri" and sys.version_info[:2] < (3, 6): continue + assert module not in scprep_loaded, module if module in postloaded_modules: assert getattr(scprep._lazyload, module).__class__ is type(scprep), module else: @@ -21,4 +22,3 @@ def test_lazyload(): getattr(scprep._lazyload, module).__class__ is scprep._lazyload.AliasModule ), module - assert module not in scprep_loaded, module From a82fe37fa79cf0fc70f65cf403cc6fc20f07aaba Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 15:30:54 -0500 Subject: [PATCH 21/23] fix lazyload testing --- test/test_lazyload.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/test/test_lazyload.py b/test/test_lazyload.py index 7d06dd95..d212197b 100644 --- a/test/test_lazyload.py +++ b/test/test_lazyload.py @@ -24,16 +24,16 @@ def test_lazyload(): def test_builtins(): - for module in scprep._lazyload._importspec.keys(): - if module == "anndata2ri" and sys.version_info[:2] < (3, 6): + for module_name in scprep._lazyload._importspec.keys(): + if module_name == "anndata2ri" and sys.version_info[:2] < (3, 6): continue - with mock.patch.dict(sys.modules, {module: None}): - assert ( - getattr(scprep._lazyload, module).__class__ - is scprep._lazyload.AliasModule - ), module - try: - getattr(scprep._lazyload, module).__version__ - except AttributeError: - pass - assert getattr(scprep._lazyload, module).__class__ is type(scprep), module + with mock.patch.dict(sys.modules): + if module_name in sys.modules: + del sys.modules[module_name] + module = getattr(scprep._lazyload, module_name) + assert module.__class__ is scprep._lazyload.AliasModule, ( + module_name, + module, + ) + module.__file__ + assert module.__class__ is type(scprep), (module_name, module) From 6bb14986a49c0a234a1eda3f0a769612fe2fc6bb Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 15:32:08 -0500 Subject: [PATCH 22/23] bump anndata2ri --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 78833a6b..fd09f748 100644 --- a/setup.py +++ b/setup.py @@ -42,7 +42,7 @@ doc_requires += ["autodocsumm!=0.2.0"] else: test_requires += ["matplotlib>=3.0", "rpy2>=3.0", "black"] - optional_requires += ["anndata2ri"] + optional_requires += ["anndata2ri>=1.0.6"] doc_requires += ["autodocsumm"] version_py = os.path.join(os.path.dirname(__file__), "scprep", "version.py") From da274aa33da91788a6d1af644485cee626b112af Mon Sep 17 00:00:00 2001 From: Scott Gigante Date: Wed, 10 Feb 2021 15:33:10 -0500 Subject: [PATCH 23/23] install from source didn't help --- .github/workflows/run_tests.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/run_tests.yml b/.github/workflows/run_tests.yml index c3ee57b8..be00719e 100644 --- a/.github/workflows/run_tests.yml +++ b/.github/workflows/run_tests.yml @@ -74,7 +74,7 @@ jobs: if: runner.os == 'Linux' run: | sudo apt-get update -qq - sudo apt-get install -y pandoc gfortran libblas-dev liblapack-dev libedit-dev llvm-dev libcurl4-openssl-dev ffmpeg libhdf5-dev + sudo apt-get install -y pandoc gfortran libblas-dev liblapack-dev libedit-dev llvm-dev libcurl4-openssl-dev ffmpeg - name: Set up Python uses: actions/setup-python@v2 @@ -106,9 +106,8 @@ jobs: - name: Install package & dependencies run: | python -m pip install --upgrade pip - pip install --upgrade wheel setuptools Cython - pip uninstall -y h5py tables - pip install --upgrade --no-binary=h5py,tables .[test] + pip install --upgrade wheel setuptools + pip install --upgrade .[test] python -c "import scprep" - name: Install R packages