diff --git a/continuous_integration/environment-3.10.yaml b/continuous_integration/environment-3.10.yaml index 061e3777875..0902653ad71 100644 --- a/continuous_integration/environment-3.10.yaml +++ b/continuous_integration/environment-3.10.yaml @@ -44,6 +44,7 @@ dependencies: # Need recent version of s3fs to support newer aiobotocore versions # https://github.com/dask/s3fs/issues/514 - s3fs>=2021.8.0 + - click - cloudpickle - crick - cytoolz diff --git a/continuous_integration/environment-3.8.yaml b/continuous_integration/environment-3.8.yaml index 2b2220286ef..d4f384118fa 100644 --- a/continuous_integration/environment-3.8.yaml +++ b/continuous_integration/environment-3.8.yaml @@ -44,6 +44,7 @@ dependencies: # Need recent version of s3fs to support newer aiobotocore versions # https://github.com/dask/s3fs/issues/514 - s3fs>=2021.8.0 + - click - cloudpickle - crick - cytoolz diff --git a/continuous_integration/environment-3.9.yaml b/continuous_integration/environment-3.9.yaml index 6fbe3972221..7c9fb609f5c 100644 --- a/continuous_integration/environment-3.9.yaml +++ b/continuous_integration/environment-3.9.yaml @@ -44,6 +44,7 @@ dependencies: # Need recent version of s3fs to support newer aiobotocore versions # https://github.com/dask/s3fs/issues/514 - s3fs>=2021.8.0 + - click - cloudpickle - crick - cytoolz diff --git a/continuous_integration/environment-mindeps-array.yaml b/continuous_integration/environment-mindeps-array.yaml index d10b515095b..85fac2159ca 100644 --- a/continuous_integration/environment-mindeps-array.yaml +++ b/continuous_integration/environment-mindeps-array.yaml @@ -6,6 +6,7 @@ dependencies: - packaging=20.0 - python=3.8 - pyyaml>=5.3.1 + - click=7.0 - cloudpickle=1.1.1 - partd=0.3.10 - fsspec=0.6.0 diff --git a/continuous_integration/environment-mindeps-dataframe.yaml b/continuous_integration/environment-mindeps-dataframe.yaml index 9a5e9a2f7d9..ab2b634155c 100644 --- a/continuous_integration/environment-mindeps-dataframe.yaml +++ b/continuous_integration/environment-mindeps-dataframe.yaml @@ -6,6 +6,7 @@ dependencies: - packaging=20.0 - python=3.8 - pyyaml>=5.3.1 + - click=7.0 - cloudpickle=1.1.1 - partd=0.3.10 - fsspec=0.6.0 diff --git a/continuous_integration/environment-mindeps-distributed.yaml b/continuous_integration/environment-mindeps-distributed.yaml index 6bf3f0c340c..1d5dab72c71 100644 --- a/continuous_integration/environment-mindeps-distributed.yaml +++ b/continuous_integration/environment-mindeps-distributed.yaml @@ -6,6 +6,7 @@ dependencies: - packaging=20.0 - python=3.8 - pyyaml>=5.3.1 + - click=7.0 - cloudpickle=1.5.0 # this is in the min from distributed - partd=0.3.10 - fsspec=0.6.0 diff --git a/continuous_integration/environment-mindeps-non-optional.yaml b/continuous_integration/environment-mindeps-non-optional.yaml index 8e9b7e6da02..7a9981dd482 100644 --- a/continuous_integration/environment-mindeps-non-optional.yaml +++ b/continuous_integration/environment-mindeps-non-optional.yaml @@ -6,6 +6,7 @@ dependencies: - packaging=20.0 - python=3.8 - pyyaml>=5.3.1 + - click=7.0 - cloudpickle=1.1.1 - partd=0.3.10 - fsspec=0.6.0 diff --git a/continuous_integration/recipe/meta.yaml b/continuous_integration/recipe/meta.yaml index 0c34f06d835..269fef34f4b 100644 --- a/continuous_integration/recipe/meta.yaml +++ b/continuous_integration/recipe/meta.yaml @@ -25,6 +25,7 @@ requirements: run: - python >=3.8 + - click >=7.0 - cloudpickle >=1.1.1 - fsspec >=0.6.0 - packaging >=20.0 @@ -42,7 +43,6 @@ test: - dask info versions --help requires: - pip - - click about: home: https://github.com/dask/dask/ diff --git a/continuous_integration/scripts/test_imports.sh b/continuous_integration/scripts/test_imports.sh index e49f38a0ed1..1f259cc6e79 100644 --- a/continuous_integration/scripts/test_imports.sh +++ b/continuous_integration/scripts/test_imports.sh @@ -5,7 +5,7 @@ set -o errexit test_import () { echo "Create environment: python=$PYTHON_VERSION $1" # Create an empty environment - mamba create -q -y -n test-imports -c conda-forge python=$PYTHON_VERSION packaging pyyaml fsspec toolz partd cloudpickle $1 + mamba create -q -y -n test-imports -c conda-forge python=$PYTHON_VERSION packaging pyyaml fsspec toolz partd click cloudpickle $1 conda activate test-imports if [[ $1 =~ "distributed" ]]; then # dask[distributed] depends on the latest version of distributed diff --git a/dask/__main__.py b/dask/__main__.py index 8185642c09b..f41ff6e0aa3 100644 --- a/dask/__main__.py +++ b/dask/__main__.py @@ -1,25 +1,7 @@ -import sys - -try: - import click -except ImportError: - click = None +from dask.cli import run_cli def main(): - - if click is None: - msg = ( - "The dask command requires click to be installed.\n\n" - "Install with conda or pip:\n\n" - " conda install click\n" - " pip install click\n" - ) - print(msg, file=sys.stderr) - return 1 - - from dask.cli import run_cli - run_cli() diff --git a/dask/cli.py b/dask/cli.py index 5060b6d0a1b..87816ecce5c 100644 --- a/dask/cli.py +++ b/dask/cli.py @@ -1,20 +1,10 @@ import warnings +import click + from dask import __version__ from dask.compatibility import entry_points -try: - import click -except ImportError as e: - msg = ( - "The dask.cli module requires click to be installed.\n\n" - "Install with conda or pip:\n\n" - " conda install click\n" - " pip install click\n" - ) - raise ImportError(msg) from e - - CONTEXT_SETTINGS = { "help_option_names": ["-h", "--help"], "max_content_width": 88, diff --git a/dask/tests/test_cli.py b/dask/tests/test_cli.py index d57c4d8dcaa..46c611bf911 100644 --- a/dask/tests/test_cli.py +++ b/dask/tests/test_cli.py @@ -1,7 +1,3 @@ -import pytest - -click = pytest.importorskip("click") - import json import platform import sys @@ -9,6 +5,8 @@ # FIXME importing importlib.metadata fails when running the entire test suite with UPSTREAM_DEV=1 from importlib import metadata as importlib_metadata +import click +import pytest from click.testing import CliRunner import dask @@ -44,7 +42,7 @@ def test_info_versions(): assert table["distributed"] == distributed_version -@click.group +@click.group() def dummy_cli(): pass @@ -86,7 +84,7 @@ def test_register_command_ep(): assert dummy_cli.commands["good"] is good_command -@click.group +@click.group() def dummy_cli_2(): pass diff --git a/setup.py b/setup.py index e487caa1685..7949e17a7d4 100755 --- a/setup.py +++ b/setup.py @@ -33,6 +33,7 @@ ] install_requires = [ + "click >= 7.0", "cloudpickle >= 1.1.1", "fsspec >= 0.6.0", "packaging >= 20.0",