Skip to main content

Dask and Distributed version pinning for RAPIDS

Project description

Dask Metapackage

This repository provides metapackages for pip and conda that centralize the Dask version dependency across RAPIDS. Dask's API instability means that each RAPIDS release must pin to a very specific Dask release to avoid incompatibilities. These metapackages provide a centralized, versioned storehouse for that pinning. The rapids-dask-dependency package encodes both dask and distributed requirements.

Versioning the Metapackage Itself

This package is versioned just like the rest of RAPIDS: using CalVer, with alpha tags (trailing a*) for nightlies. Nightlies of the metapackage should be consumed just like nightlies of any other RAPIDS package:

  • conda packages should pin up to the minor version with a trailing .*, i.e. ==23.10.*. Conda will allow nightlies to match, so no further intervention is needed.
  • pip packages should have the same pin, but wheel building scripts must add an alpha spec >=0.0.0a0 when building nightlies to allow rapids-dask-dependency nightlies. This is the same strategy used to have RAPIDS repositories pull nightly versions of other RAPIDS dependencies (e.g. cudf requires rmm nightlies).

Strategy for Dask Nightlies

For conda, nightlies are published to the dask channel. The metapackage assumes that the dask/label/dev channel is included in a user's condarc so that the nightly will be found. During RAPIDS development phase, Dask versions should be specified using PEP 440-compatible versions like >=2023.7.1a0 so that nightlies may be picked up. Then, at release time these versions may be pinned.

For pip, dask and distributed do not publish nightly wheels. Therefore, the only option is for this metapackage to install those dependencies from source. To do so, the metapackage will encode dependencies in pyproject.toml as:

- dask @ git+https://github.com/dask/dask.git@main
- distributed @ git+https://github.com/dask/distributed.git@main

At release, these dependencies will be pinned to the desired versions. Note that encoding direct URLs as above is technically prohibited by the Python packaging specifications. However, while PyPI enforces this, the RAPIDS nightly index does not. Therefore, use of this versioning strategy currently prohibits rapids-dask-dependency nightlies from being uploaded to PyPI, and they must be hosted on the RAPIDS nightly pip index.

Patching

In addition to functioning as a metapackage, rapids-dask-dependency also includes code for patching dask itself. This package is never intended to be manually imported by the user. Instead, upon installation it installs a .pth file (see the site module documentation for how these work) that will be run whenever the Python interpreter starts. This file installs a custom meta path loader that intercepts all calls to import dask modules. This loader is set up to apply RAPIDS-specific patches to the modules, ensuring that regardless of import order issues dask modules will always be patched for RAPIDS-compatibility in environments where RAPIDS packages are installed.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rapids_dask_dependency-24.4.1.tar.gz (2.0 kB view details)

Uploaded Source

Built Distribution

rapids_dask_dependency-24.4.1-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file rapids_dask_dependency-24.4.1.tar.gz.

File metadata

  • Download URL: rapids_dask_dependency-24.4.1.tar.gz
  • Upload date:
  • Size: 2.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.10.0 readme-renderer/43.0 requests/2.31.0 requests-toolbelt/1.0.0 urllib3/2.2.1 tqdm/4.66.2 importlib-metadata/7.0.2 keyring/24.3.1 rfc3986/2.0.0 colorama/0.4.6 CPython/3.10.12

File hashes

Hashes for rapids_dask_dependency-24.4.1.tar.gz
Algorithm Hash digest
SHA256 c90c166297aa911642b2a5cad3735b8e1cf21de895ce9303dd6cae3a4d6c9057
MD5 0ed1ceac07ecd4f8005cf80cb3109e6f
BLAKE2b-256 4db395c2fa277a68449b4e2a6cbcc35ff4d2703cbe52d31e5857e2abf2208ea7

See more details on using hashes here.

File details

Details for the file rapids_dask_dependency-24.4.1-py3-none-any.whl.

File metadata

File hashes

Hashes for rapids_dask_dependency-24.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0713b99711cc2beda5e9bc52e4436c9d9131e9ab63c67c6628511703a7fefe3f
MD5 4b68b18b848e7b38aef3f2e5afc8c1b1
BLAKE2b-256 9a2f9d8f3729ceca95e876053d5f00c76631e6fadd31262476af1fa6245f9df4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page