zarr-python icon indicating copy to clipboard operation
zarr-python copied to clipboard

asciitree has no wheels

Open Carreau opened this issue 1 year ago • 10 comments

Zarr version

all

Numcodecs version

NA

Python Version

all

Operating System

all

Installation

pip install --only-binary ':all:' zarr

Description

Zarr depends on asciitree, which does not publish wheel.

When trying to install and avoiding tar.gz for various reasons this make it harder to install zarr.

The --only-binary ':all:' is useful in CI to make sure that binary artifact are available for all dependencies and usually to make sure the end user does not need to have a compiler. In some cases, you may want to ensure all your dependencies have wheels as you do not want code execution at install time. Plus, even for python, wheel install is usually faster, and dependency resolution does not need to run setup.py.

Because if depends on asciitree, zarr is one package cannot be installed with --only-binary ':all:' flag, and contaminate all the dependees. (you can use --no-binary asciitree to work around this specific dependency so not critical)

It would be great zarr would only rely on packages that have wheels.

As asciitree seem unmaintained, as author does not resond to issue asking for wheels, nor have seen a commit in 3years.

This is likely because its feature complete?

So solution might be:

  • Vendor asciitree
  • Repackage with wheel under a different package name (but same import name).
  • Custom code.

Steps to reproduce

$ pip install --only-binary ':all:' zarr
Collecting zarr
  Using cached zarr-2.14.2-py3-none-any.whl (203 kB)
  ...
  Using cached zarr-2.5.0-py3-none-any.whl (131 kB)
ERROR: Cannot install zarr==2.10.0, ... zarr==2.9.4 and zarr==2.9.5 because these package versions have conflicting dependencies.

The conflict is caused by:
    zarr 2.14.2 depends on asciitree
    ...
    zarr 2.5.0 depends on asciitree

To fix this you could try to:
1. loosen the range of package versions you've specified
2. remove package versions to allow pip attempt to solve the dependency conflict

ERROR: ResolutionImpossible: for help visit https://pip.pypa.io/en/latest/topics/dependency-resolution/#dealing-with-dependency-conflicts

Additional output

No response

Carreau avatar Mar 20 '23 18:03 Carreau