dask / crick

Streaming and approximate algorithms. WIP, use at own risk.
BSD 3-Clause "New" or "Revised" License
24 stars 17 forks source link

Crick fails to install via pip when wheel needs to be built #43

Closed dankerrigan closed 11 months ago

dankerrigan commented 11 months ago

Describe the issue:

pip install crick fails when building a wheel due to apparent errors in the pyproject.toml file. The issue is fixed by #41 but that change has not been released.

Minimal Complete Verifiable Example:

In a clean environment, run

pip install crick --no-cache-dir

Anything else we need to know?:

The output of the above command:


  Downloading crick-0.0.4.tar.gz (428 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 428.5/428.5 kB 680.9 kB/s eta 0:00:00
  Installing build dependencies: started
  Installing build dependencies: finished with status 'done'
  Getting requirements to build wheel: started
  Getting requirements to build wheel: finished with status 'error'
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [151 lines of output]
      <string>:4: DeprecationWarning:

        `numpy.distutils` is deprecated since NumPy 1.23.0, as a result
        of the deprecation of `distutils` itself. It will be removed for
        Python >= 3.12. For older Python versions it will remain present.
        It is recommended to use `setuptools < 60.0` for those Python versions.
        For more details, see:
          https://numpy.org/devdocs/reference/distutils_status_migration.html

      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-install-e9co2_0b/crick_1846722b288141f2872a28b5fddbd047/crick/space_saving.pyx
        tree = Parsing.p_module(s, pxd, full_module_name)
      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-install-e9co2_0b/crick_1846722b288141f2872a28b5fddbd047/crick/stats.pyx
        tree = Parsing.p_module(s, pxd, full_module_name)
      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/Cython/Compiler/Main.py:381: FutureWarning: Cython directive 'language_level' not set, using '3str' for now (Py3). This has changed from earlier releases! File: /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-install-e9co2_0b/crick_1846722b288141f2872a28b5fddbd047/crick/tdigest.pyx
        tree = Parsing.p_module(s, pxd, full_module_name)
      Compiling crick/tdigest.pyx because it changed.
      Compiling crick/space_saving.pyx because it changed.
      Compiling crick/stats.pyx because it changed.
      [1/3] Cythonizing crick/space_saving.pyx
      [2/3] Cythonizing crick/stats.pyx
      [3/3] Cythonizing crick/tdigest.pyx
      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:75: _MissingDynamic: `description` defined outside of `pyproject.toml` is ignored.
      !!

              ********************************************************************************
              The following seems to be defined outside of `pyproject.toml`:

              `description = 'High performance approximate and streaming algorithms'`

              According to the spec (see the link below), however, setuptools CANNOT
              consider this value unless `description` is listed as `dynamic`.

              https://packaging.python.org/en/latest/specifications/declaring-project-metadata/

              To prevent this problem, you can list `description` under `dynamic` or alternatively
              remove the `[project]` table from your file and rely entirely on other means of
              configuration.
              ********************************************************************************

      !!
        _handle_missing_dynamic(dist, project_table)
      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:75: _MissingDynamic: `readme` defined outside of `pyproject.toml` is ignored.
      !!

              ********************************************************************************
              The following seems to be defined outside of `pyproject.toml`:

              `readme = 'Crick\n=====\n\n|Build Status| |Conda Badge| |PyPI Badge|\n\nCrick is a fast library of approximate and streaming algorithms. It is still a\nwork in progress, use at your own risk.\n\nInstallation\n------------\n\nCrick is available via ``conda`` or ``pip``:\n\n::\n\n   # Install with conda\n   $ conda install crick -c conda-forge\n\n   # Install with pip\n   $ pip install crick\n\n.. |Build Status| image:: https://github.com/dask/crick/actions/workflows/tests.yml/badge.svg\n   :target: https://github.com/dask/crick/actions/workflows/tests.yml\n.. |PyPI Badge| image:: https://img.shields.io/pypi/v/crick.svg\n   :target: https://pypi.python.org/pypi/crick\n.. |Conda Badge| image:: https://anaconda.org/conda-forge/crick/badges/version.svg\n   :target: https://anaconda.org/conda-forge/crick\n'`

              According to the spec (see the link below), however, setuptools CANNOT
              consider this value unless `readme` is listed as `dynamic`.

              https://packaging.python.org/en/latest/specifications/declaring-project-metadata/

              To prevent this problem, you can list `readme` under `dynamic` or alternatively
              remove the `[project]` table from your file and rely entirely on other means of
              configuration.
              ********************************************************************************

      !!
        _handle_missing_dynamic(dist, project_table)
      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:75: _MissingDynamic: `license` defined outside of `pyproject.toml` is ignored.
      !!

              ********************************************************************************
              The following seems to be defined outside of `pyproject.toml`:

              `license = 'BSD'`

              According to the spec (see the link below), however, setuptools CANNOT
              consider this value unless `license` is listed as `dynamic`.

              https://packaging.python.org/en/latest/specifications/declaring-project-metadata/

              To prevent this problem, you can list `license` under `dynamic` or alternatively
              remove the `[project]` table from your file and rely entirely on other means of
              configuration.
              ********************************************************************************

      !!
        _handle_missing_dynamic(dist, project_table)
      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:75: _MissingDynamic: `authors` defined outside of `pyproject.toml` is ignored.
      !!

              ********************************************************************************
              The following seems to be defined outside of `pyproject.toml`:

              `authors = 'Jim Crist'`

              According to the spec (see the link below), however, setuptools CANNOT
              consider this value unless `authors` is listed as `dynamic`.

              https://packaging.python.org/en/latest/specifications/declaring-project-metadata/

              To prevent this problem, you can list `authors` under `dynamic` or alternatively
              remove the `[project]` table from your file and rely entirely on other means of
              configuration.
              ********************************************************************************

      !!
        _handle_missing_dynamic(dist, project_table)
      /private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py:75: _MissingDynamic: `keywords` defined outside of `pyproject.toml` is ignored.
      !!

              ********************************************************************************
              The following seems to be defined outside of `pyproject.toml`:

              `keywords = ['streaming approximate algorithms']`

              According to the spec (see the link below), however, setuptools CANNOT
              consider this value unless `keywords` is listed as `dynamic`.

              https://packaging.python.org/en/latest/specifications/declaring-project-metadata/

              To prevent this problem, you can list `keywords` under `dynamic` or alternatively
              remove the `[project]` table from your file and rely entirely on other means of
              configuration.
              ********************************************************************************

      !!
        _handle_missing_dynamic(dist, project_table)
      Traceback (most recent call last):
        File "/Users/.../conda/envs/crick-test/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
          main()
        File "/Users/.../conda/envs/crick-test/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
          json_out['return_val'] = hook(**hook_input['kwargs'])
        File "/Users/.../conda/envs/crick-test/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
          return hook(config_settings)
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 325, in get_requires_for_build_wheel
          return self._get_build_requires(config_settings, requirements=['wheel'])
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 295, in _get_build_requires
          self.run_setup()
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 311, in run_setup
          exec(code, locals())
        File "<string>", line 54, in <module>
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/__init__.py", line 103, in setup
          return distutils.core.setup(**attrs)
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/_distutils/core.py", line 159, in setup
          dist.parse_config_files()
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 627, in parse_config_files
          pyprojecttoml.apply_configuration(self, filename, ignore_option_errors)
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/pyprojecttoml.py", line 67, in apply_configuration
          return _apply(dist, config, filepath)
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py", line 56, in apply
          _apply_project_table(dist, config, root_dir)
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py", line 82, in _apply_project_table
          corresp(dist, value, root_dir)
        File "/private/var/folders/5l/v0p6xl4d5md7t7l6bfy7kh340000gp/T/pip-build-env-w99jvs0a/overlay/lib/python3.10/site-packages/setuptools/config/_apply_pyprojecttoml.py", line 163, in _long_description
          file = val.get("file") or []
      AttributeError: 'NoneType' object has no attribute 'get'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.```

**Environment**:

- Dask version: NA
- Python version: 3.10.13
- Operating System: MacOS on arm64
- Install method (conda, pip, source): pip
milesgranger commented 11 months ago

Should be fixed now with 0.0.5 https://github.com/dask/crick/releases/tag/0.0.5

Please reopen if not. :)

dankerrigan commented 11 months ago

Thank you so much! Is it possible to get an updated conda release as well? The latest there is 0.0.3.

milesgranger commented 11 months ago

You bet, https://github.com/conda-forge/crick-feedstock/pull/20 is poised to go in soon. :+1:

milesgranger commented 10 months ago

@dankerrigan it's just been merged, apologies for the delay!