Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Run CI with uv #1423

Merged
merged 5 commits into from
Mar 14, 2024
Merged

Run CI with uv #1423

merged 5 commits into from
Mar 14, 2024

Conversation

flying-sheep
Copy link
Member

@flying-sheep flying-sheep commented Mar 14, 2024

@ivirshup --pre works:

 + scanpy==1.10.0rc2

Copy link

codecov bot commented Mar 14, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 84.09%. Comparing base (20adb70) to head (39c9f0a).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1423      +/-   ##
==========================================
- Coverage   86.29%   84.09%   -2.21%     
==========================================
  Files          36       36              
  Lines        5612     5602      -10     
==========================================
- Hits         4843     4711     -132     
- Misses        769      891     +122     
Flag Coverage Δ
gpu-tests ?

Flags with carried forward coverage won't be shown. Click here to find out more.

see 10 files with indirect coverage changes

@ivirshup
Copy link
Member

I think uv is able to resolve an environment before downloading wheels (not sure why pip can't if uv can though), so we could also get better caching behaviour with

  • An initial step that does uv pip install --dry-run --output-file requirements-lock.txt {env-specific}
  • Use requirements-lock.txt + python version as the cache key
  • Create environment with uv pip install -r requirements-lock.txt

But it's also fast enough already we don't really need to worry about it if we don't want. We're not getting charged for bandwidth.

@flying-sheep
Copy link
Member Author

Pip will definitely resolve environments before downloading wheels, too. I’ve closely followed the path to get there, so I know. What makes you think it possibly doesn’t?

@ivirshup
Copy link
Member

this
pip install --no-cache-dir --dry-run ".[dev,test]"
Processing /mnt/workspace/repos/scanpy
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting anndata>=0.8 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading anndata-0.10.6-py3-none-any.whl.metadata (6.6 kB)
Collecting h5py>=3.1 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading h5py-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.5 kB)
Collecting joblib (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading joblib-1.3.2-py3-none-any.whl.metadata (5.4 kB)
Collecting legacy-api-wrap>=1.4 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading legacy_api_wrap-1.4-py3-none-any.whl.metadata (1.8 kB)
Collecting matplotlib>=3.6 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.8 kB)
Collecting natsort (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading natsort-8.4.0-py3-none-any.whl.metadata (21 kB)
Collecting networkx>=2.7 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading networkx-3.2.1-py3-none-any.whl.metadata (5.2 kB)
Collecting numba>=0.56 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading numba-0.59.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.metadata (2.7 kB)
Collecting numpy>=1.23 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (61 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 61.0/61.0 kB 2.6 MB/s eta 0:00:00
Collecting packaging>=21.3 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading packaging-24.0-py3-none-any.whl.metadata (3.2 kB)
Collecting pandas>=1.5 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (19 kB)
Collecting patsy (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading patsy-0.5.6-py2.py3-none-any.whl.metadata (3.5 kB)
Collecting pynndescent>=0.5 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pynndescent-0.5.11-py3-none-any.whl.metadata (6.8 kB)
Collecting scikit-learn>=0.24 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (11 kB)
Collecting scipy>=1.8 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (60 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.4/60.4 kB 15.2 MB/s eta 0:00:00
Collecting seaborn>=0.13 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading seaborn-0.13.2-py3-none-any.whl.metadata (5.4 kB)
Collecting session-info (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading session_info-1.0.0.tar.gz (24 kB)
  Preparing metadata (setup.py) ... done
Collecting statsmodels>=0.13 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading statsmodels-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (9.5 kB)
Collecting tqdm (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading tqdm-4.66.2-py3-none-any.whl.metadata (57 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 57.6/57.6 kB 17.3 MB/s eta 0:00:00
Collecting umap-learn!=0.5.0,>=0.5 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading umap-learn-0.5.5.tar.gz (90 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 90.9/90.9 kB 17.5 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting pre-commit (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pre_commit-3.6.2-py2.py3-none-any.whl.metadata (1.3 kB)
Collecting setuptools-scm (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading setuptools_scm-8.0.4-py3-none-any.whl.metadata (6.4 kB)
Collecting zarr (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading zarr-2.17.1-py3-none-any.whl.metadata (5.7 kB)
Collecting array-api-compat!=1.5,>1.4 (from anndata>=0.8->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading array_api_compat-1.4.1-py3-none-any.whl.metadata (13 kB)
Collecting contourpy>=1.0.1 (from matplotlib>=3.6->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (5.8 kB)
Collecting cycler>=0.10 (from matplotlib>=3.6->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading cycler-0.12.1-py3-none-any.whl.metadata (3.8 kB)
Collecting fonttools>=4.22.0 (from matplotlib>=3.6->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading fonttools-4.49.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (159 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 159.1/159.1 kB 26.3 MB/s eta 0:00:00
Collecting kiwisolver>=1.3.1 (from matplotlib>=3.6->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (6.4 kB)
Collecting pillow>=8 (from matplotlib>=3.6->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl.metadata (9.7 kB)
Collecting pyparsing>=2.3.1 (from matplotlib>=3.6->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pyparsing-3.1.2-py3-none-any.whl.metadata (5.1 kB)
Collecting python-dateutil>=2.7 (from matplotlib>=3.6->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB)
Collecting llvmlite<0.43,>=0.42.0dev0 (from numba>=0.56->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading llvmlite-0.42.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.8 kB)
Collecting pytz>=2020.1 (from pandas>=1.5->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pytz-2024.1-py2.py3-none-any.whl.metadata (22 kB)
Collecting tzdata>=2022.7 (from pandas>=1.5->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading tzdata-2024.1-py2.py3-none-any.whl.metadata (1.4 kB)
Collecting threadpoolctl>=2.0.0 (from scikit-learn>=0.24->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading threadpoolctl-3.3.0-py3-none-any.whl.metadata (13 kB)
Collecting six (from patsy->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading six-1.16.0-py2.py3-none-any.whl.metadata (1.8 kB)
Collecting cfgv>=2.0.0 (from pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading cfgv-3.4.0-py2.py3-none-any.whl.metadata (8.5 kB)
Collecting identify>=1.0.0 (from pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading identify-2.5.35-py2.py3-none-any.whl.metadata (4.4 kB)
Collecting nodeenv>=0.11.1 (from pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading nodeenv-1.8.0-py2.py3-none-any.whl.metadata (21 kB)
Collecting pyyaml>=5.1 (from pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting virtualenv>=20.10.0 (from pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading virtualenv-20.25.1-py3-none-any.whl.metadata (4.4 kB)
Collecting dask>=2022.09.2 (from dask[array]>=2022.09.2; extra == "dask"->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading dask-2024.3.0-py3-none-any.whl.metadata (3.8 kB)
Collecting igraph>=0.10 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading igraph-0.11.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (3.9 kB)
Collecting leidenalg>=0.9.0 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading leidenalg-0.10.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (10 kB)
Collecting scikit-image (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading scikit_image-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (13 kB)
Collecting profimp (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading profimp-0.1.0.tar.gz (193 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 193.4/193.4 kB 54.8 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting pytest-cov (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pytest_cov-4.1.0-py3-none-any.whl.metadata (26 kB)
Collecting pytest-mock (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pytest_mock-3.12.0-py3-none-any.whl.metadata (3.8 kB)
Collecting pytest-nunit (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pytest-nunit-1.0.7.tar.gz (15 kB)
  Preparing metadata (setup.py) ... done
Collecting pytest>=7.4.2 (from scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pytest-8.1.1-py3-none-any.whl.metadata (7.6 kB)
Collecting stdlib_list (from session-info->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading stdlib_list-0.10.0-py3-none-any.whl.metadata (3.3 kB)
Requirement already satisfied: setuptools in /mnt/workspace/mambaforge/envs/test-pip/lib/python3.12/site-packages (from setuptools-scm->scanpy==1.10.0rc2.dev19+ga6126980) (69.2.0)
Collecting typing-extensions (from setuptools-scm->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading typing_extensions-4.10.0-py3-none-any.whl.metadata (3.0 kB)
Collecting asciitree (from zarr->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading asciitree-0.3.3.tar.gz (4.0 kB)
  Preparing metadata (setup.py) ... done
Collecting numcodecs>=0.10.0 (from zarr->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading numcodecs-0.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.8 kB)
Collecting fasteners (from zarr->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading fasteners-0.19-py3-none-any.whl.metadata (4.9 kB)
Collecting click>=8.1 (from dask>=2022.09.2->dask[array]>=2022.09.2; extra == "dask"->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading click-8.1.7-py3-none-any.whl.metadata (3.0 kB)
Collecting cloudpickle>=1.5.0 (from dask>=2022.09.2->dask[array]>=2022.09.2; extra == "dask"->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading cloudpickle-3.0.0-py3-none-any.whl.metadata (7.0 kB)
Collecting fsspec>=2021.09.0 (from dask>=2022.09.2->dask[array]>=2022.09.2; extra == "dask"->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading fsspec-2024.2.0-py3-none-any.whl.metadata (6.8 kB)
Collecting partd>=1.2.0 (from dask>=2022.09.2->dask[array]>=2022.09.2; extra == "dask"->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading partd-1.4.1-py3-none-any.whl.metadata (4.6 kB)
Collecting toolz>=0.10.0 (from dask>=2022.09.2->dask[array]>=2022.09.2; extra == "dask"->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading toolz-0.12.1-py3-none-any.whl.metadata (5.1 kB)
Collecting texttable>=1.6.2 (from igraph>=0.10->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading texttable-1.7.0-py2.py3-none-any.whl.metadata (9.8 kB)
Collecting iniconfig (from pytest>=7.4.2->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading iniconfig-2.0.0-py3-none-any.whl.metadata (2.6 kB)
Collecting pluggy<2.0,>=1.4 (from pytest>=7.4.2->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pluggy-1.4.0-py3-none-any.whl.metadata (4.3 kB)
Collecting distlib<1,>=0.3.7 (from virtualenv>=20.10.0->pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading distlib-0.3.8-py2.py3-none-any.whl.metadata (5.1 kB)
Collecting filelock<4,>=3.12.2 (from virtualenv>=20.10.0->pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading filelock-3.13.1-py3-none-any.whl.metadata (2.8 kB)
Collecting platformdirs<5,>=3.9.1 (from virtualenv>=20.10.0->pre-commit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading platformdirs-4.2.0-py3-none-any.whl.metadata (11 kB)
Collecting pbr!=2.1.0,>=2.0.0 (from profimp->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading pbr-6.0.0-py2.py3-none-any.whl.metadata (1.3 kB)
Collecting coverage>=5.2.1 (from coverage[toml]>=5.2.1->pytest-cov->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (8.2 kB)
Collecting attrs (from pytest-nunit->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading attrs-23.2.0-py3-none-any.whl.metadata (9.5 kB)
Collecting imageio>=2.27 (from scikit-image->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading imageio-2.34.0-py3-none-any.whl.metadata (4.9 kB)
Collecting tifffile>=2022.8.12 (from scikit-image->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading tifffile-2024.2.12-py3-none-any.whl.metadata (31 kB)
Collecting lazy_loader>=0.3 (from scikit-image->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading lazy_loader-0.3-py3-none-any.whl.metadata (4.3 kB)
Collecting locket (from partd>=1.2.0->dask>=2022.09.2->dask[array]>=2022.09.2; extra == "dask"->scanpy==1.10.0rc2.dev19+ga6126980)
  Downloading locket-1.0.0-py2.py3-none-any.whl.metadata (2.8 kB)
Downloading anndata-0.10.6-py3-none-any.whl (122 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 122.1/122.1 kB 175.6 MB/s eta 0:00:00
Downloading h5py-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.7/4.7 MB 38.7 MB/s eta 0:00:00
Downloading legacy_api_wrap-1.4-py3-none-any.whl (15 kB)
Downloading matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 11.6/11.6 MB 67.6 MB/s eta 0:00:00
Downloading networkx-3.2.1-py3-none-any.whl (1.6 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.6/1.6 MB 113.5 MB/s eta 0:00:00
Downloading numba-0.59.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.7/3.7 MB 87.1 MB/s eta 0:00:00
Downloading numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (18.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 18.0/18.0 MB 117.8 MB/s eta 0:00:00
Downloading packaging-24.0-py3-none-any.whl (53 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 53.5/53.5 kB 290.1 MB/s eta 0:00:00
Downloading pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.7/12.7 MB 114.1 MB/s eta 0:00:00
Downloading pynndescent-0.5.11-py3-none-any.whl (55 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 55.8/55.8 kB 295.9 MB/s eta 0:00:00
Downloading joblib-1.3.2-py3-none-any.whl (302 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 302.2/302.2 kB 327.7 MB/s eta 0:00:00
Downloading scikit_learn-1.4.1.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.2/12.2 MB 141.3 MB/s eta 0:00:00
Downloading scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (37.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 37.8/37.8 MB 148.6 MB/s eta 0:00:00
Downloading seaborn-0.13.2-py3-none-any.whl (294 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 294.9/294.9 kB 348.1 MB/s eta 0:00:00
Downloading statsmodels-0.14.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.7/10.7 MB 146.9 MB/s eta 0:00:00
Downloading patsy-0.5.6-py2.py3-none-any.whl (233 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 233.9/233.9 kB 353.5 MB/s eta 0:00:00
Downloading natsort-8.4.0-py3-none-any.whl (38 kB)
Downloading pre_commit-3.6.2-py2.py3-none-any.whl (204 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 204.2/204.2 kB 334.7 MB/s eta 0:00:00
Downloading setuptools_scm-8.0.4-py3-none-any.whl (42 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 42.1/42.1 kB 268.6 MB/s eta 0:00:00
Downloading tqdm-4.66.2-py3-none-any.whl (78 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 78.3/78.3 kB 311.6 MB/s eta 0:00:00
Downloading zarr-2.17.1-py3-none-any.whl (207 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 207.5/207.5 kB 345.2 MB/s eta 0:00:00
Downloading array_api_compat-1.4.1-py3-none-any.whl (30 kB)
Downloading cfgv-3.4.0-py2.py3-none-any.whl (7.2 kB)
Downloading contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (303 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 303.9/303.9 kB 348.5 MB/s eta 0:00:00
Downloading cycler-0.12.1-py3-none-any.whl (8.3 kB)
Downloading dask-2024.3.0-py3-none-any.whl (1.2 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 242.1 MB/s eta 0:00:00
Downloading fonttools-4.49.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.9/4.9 MB 81.9 MB/s eta 0:00:00
Downloading identify-2.5.35-py2.py3-none-any.whl (98 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 98.9/98.9 kB 308.6 MB/s eta 0:00:00
Downloading igraph-0.11.4-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.3/3.3 MB 150.7 MB/s eta 0:00:00
Downloading kiwisolver-1.4.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.5/1.5 MB 253.3 MB/s eta 0:00:00
Downloading leidenalg-0.10.2-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.0/2.0 MB 229.8 MB/s eta 0:00:00
Downloading llvmlite-0.42.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (43.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 43.8/43.8 MB 146.7 MB/s eta 0:00:00
Downloading nodeenv-1.8.0-py2.py3-none-any.whl (22 kB)
Downloading numcodecs-0.12.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.9 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 7.9/7.9 MB 147.5 MB/s eta 0:00:00
Downloading pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl (4.5 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4.5/4.5 MB 162.3 MB/s eta 0:00:00
Downloading pyparsing-3.1.2-py3-none-any.whl (103 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 103.2/103.2 kB 315.8 MB/s eta 0:00:00
Downloading pytest-8.1.1-py3-none-any.whl (337 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 337.4/337.4 kB 330.9 MB/s eta 0:00:00
Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl (229 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 229.9/229.9 kB 316.6 MB/s eta 0:00:00
Downloading pytz-2024.1-py2.py3-none-any.whl (505 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 505.5/505.5 kB 344.2 MB/s eta 0:00:00
Downloading PyYAML-6.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (724 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 725.0/725.0 kB 335.4 MB/s eta 0:00:00
Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Downloading threadpoolctl-3.3.0-py3-none-any.whl (17 kB)
Downloading tzdata-2024.1-py2.py3-none-any.whl (345 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 345.4/345.4 kB 333.7 MB/s eta 0:00:00
Downloading virtualenv-20.25.1-py3-none-any.whl (3.8 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.8/3.8 MB 105.1 MB/s eta 0:00:00
Downloading fasteners-0.19-py3-none-any.whl (18 kB)
Downloading pytest_cov-4.1.0-py3-none-any.whl (21 kB)
Downloading pytest_mock-3.12.0-py3-none-any.whl (9.8 kB)
Downloading scikit_image-0.22.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.0 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 15.0/15.0 MB 148.0 MB/s eta 0:00:00
Downloading stdlib_list-0.10.0-py3-none-any.whl (79 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 79.8/79.8 kB 263.9 MB/s eta 0:00:00
Downloading typing_extensions-4.10.0-py3-none-any.whl (33 kB)
Downloading click-8.1.7-py3-none-any.whl (97 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 97.9/97.9 kB 328.2 MB/s eta 0:00:00
Downloading cloudpickle-3.0.0-py3-none-any.whl (20 kB)
Downloading coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (238 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 238.9/238.9 kB 301.9 MB/s eta 0:00:00
Downloading distlib-0.3.8-py2.py3-none-any.whl (468 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 468.9/468.9 kB 338.2 MB/s eta 0:00:00
Downloading filelock-3.13.1-py3-none-any.whl (11 kB)
Downloading fsspec-2024.2.0-py3-none-any.whl (170 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 170.9/170.9 kB 335.8 MB/s eta 0:00:00
Downloading imageio-2.34.0-py3-none-any.whl (313 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 313.4/313.4 kB 342.4 MB/s eta 0:00:00
Downloading lazy_loader-0.3-py3-none-any.whl (9.1 kB)
Downloading partd-1.4.1-py3-none-any.whl (18 kB)
Downloading pbr-6.0.0-py2.py3-none-any.whl (107 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 107.5/107.5 kB 322.9 MB/s eta 0:00:00
Downloading platformdirs-4.2.0-py3-none-any.whl (17 kB)
Downloading pluggy-1.4.0-py3-none-any.whl (20 kB)
Downloading texttable-1.7.0-py2.py3-none-any.whl (10 kB)
Downloading tifffile-2024.2.12-py3-none-any.whl (224 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 224.5/224.5 kB 342.6 MB/s eta 0:00:00
Downloading toolz-0.12.1-py3-none-any.whl (56 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 56.1/56.1 kB 289.1 MB/s eta 0:00:00
Downloading attrs-23.2.0-py3-none-any.whl (60 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 60.8/60.8 kB 289.3 MB/s eta 0:00:00
Downloading iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
Downloading locket-1.0.0-py2.py3-none-any.whl (4.4 kB)
Would install PyYAML-6.0.1 anndata-0.10.6 array_api_compat-1.4.1 asciitree-0.3.3 attrs-23.2.0 cfgv-3.4.0 click-8.1.7 cloudpickle-3.0.0 contourpy-1.2.0 coverage-7.4.3 cycler-0.12.1 dask-2024.3.0 distlib-0.3.8 fasteners-0.19 filelock-3.13.1 fonttools-4.49.0 fsspec-2024.2.0 h5py-3.10.0 identify-2.5.35 igraph-0.11.4 imageio-2.34.0 iniconfig-2.0.0 joblib-1.3.2 kiwisolver-1.4.5 lazy_loader-0.3 legacy-api-wrap-1.4 leidenalg-0.10.2 llvmlite-0.42.0 locket-1.0.0 matplotlib-3.8.3 natsort-8.4.0 networkx-3.2.1 nodeenv-1.8.0 numba-0.59.0 numcodecs-0.12.1 numpy-1.26.4 packaging-24.0 pandas-2.2.1 partd-1.4.1 patsy-0.5.6 pbr-6.0.0 pillow-10.2.0 platformdirs-4.2.0 pluggy-1.4.0 pre-commit-3.6.2 profimp-0.1.0 pynndescent-0.5.11 pyparsing-3.1.2 pytest-8.1.1 pytest-cov-4.1.0 pytest-mock-3.12.0 pytest-nunit-1.0.7 python-dateutil-2.9.0.post0 pytz-2024.1 scanpy-1.10.0rc2.dev19+ga6126980 scikit-image-0.22.0 scikit-learn-1.4.1.post1 scipy-1.12.0 seaborn-0.13.2 session_info-1.0.0 setuptools-scm-8.0.4 six-1.16.0 statsmodels-0.14.1 stdlib-list-0.10.0 texttable-1.7.0 threadpoolctl-3.3.0 tifffile-2024.2.12 toolz-0.12.1 tqdm-4.66.2 typing_extensions-4.10.0 tzdata-2024.1 umap-learn-0.5.5 virtualenv-20.25.1 zarr-2.17.1

@flying-sheep
Copy link
Member Author

flying-sheep commented Mar 14, 2024

This … shows that it doesn’t download wheels until it has to:

Downloading anndata-0.10.6-py3-none-any.whl.metadata

uv uses the same metadata API, it’s just faster in some other way.

PyPI by now has backfilled metadata for everything that has wheels, excluding like 50 ancient releases with broken wheels.

@flying-sheep flying-sheep requested a review from ivirshup March 14, 2024 16:05
@ivirshup
Copy link
Member

This … shows that it doesn’t download wheels until it has to:

Downloading anndata-0.10.6-py3-none-any.whl.metadata

FWIW, pip was downloading the wheels in the --dry-run right after that, while uv doesn't.

@flying-sheep
Copy link
Member Author

FWIW, pip was downloading the wheels in the --dry-run right after that, while uv doesn't.

Yeah, I guess that’s a difference in their interpretation of “dry run”.

I think something like this should avoid downloading wheels in the end: pip install --dry-run --ignore-installed --no-cache-dir --quiet --report=- scanpy

@flying-sheep flying-sheep requested a review from ivirshup March 14, 2024 16:34
@ivirshup ivirshup enabled auto-merge (squash) March 14, 2024 16:45
@ivirshup ivirshup merged commit 920de97 into main Mar 14, 2024
15 checks passed
@ivirshup ivirshup deleted the uv branch March 14, 2024 16:46
meeseeksmachine pushed a commit to meeseeksmachine/anndata that referenced this pull request Mar 14, 2024
flying-sheep added a commit that referenced this pull request Mar 14, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants