conda-incubator / conda-pypi

Better PyPI interoperability for the conda ecosystem
https://conda-incubator.github.io/conda-pypi/
MIT License
12 stars 1 forks source link

Improve "conda availability" assertions with index queries #4

Closed jaimergp closed 4 months ago

jaimergp commented 9 months ago

Grayskull's logic to determine whether a package is available on conda or not is based purely on the existence of the package name in anaconda.org/{channel}.

There's no concept of index, multiple channels or spec compatibility. To ensure that we try to install conda packages that indeed exists, we need to check whether the specs calculated by grayskull result in any records being found in the computed index (e.g. a recent version required by some pip package might not be available on conda-forge yet, in that case we use pip's).

jaimergp commented 9 months ago

This env.yml reproduces the current problem:

channels:
- conda-forge
dependencies:
- python=3.10
- tensorflow=0.14
- pyyaml
- pip
- pip:
  - tensorflow-addons==0.14.0  
  # note the .0 here -------^; we need to be exact because 0.14 is not a real version
  - tf-models-official

This calculates:

conda will install:
 - cython
 - pillow
 - gin-config
 - google-api-python-client[version='>=1.6.7']
 - immutabledict
 - kaggle[version='>=1.3.9']
 - matplotlib-base
 - numpy[version='>=1.20']
 - oauth2client
 - pandas[version='>=0.22.0']
 - psutil[version='>=5.4.3']
 - py-cpuinfo[version='>=3.3.0']
 - pycocotools
 - pyyaml[version='>=6.0.0']
 - sacrebleu
 - scipy[version='>=0.19.1']
 - sentencepiece
 - seqeval
 - six
 - tensorflow-datasets
 - tensorflow-hub[version='>=0.6.0']
 - tensorflow[version='>=2.14.0,<2.15.dev0']
 - tf-slim[version='>=1.1.0']
pip will install:
 - tensorflow-addons==0.14.0
 - opencv-python-headless
 - tensorflow-model-optimization>=0.4.1
 - tensorflow-text>=2.14.0,<2.15.dev0
 - tf-models-official==2.14.0

But tf-slim >=1.1.0 doesn't have matches in conda-forge.

jaimergp commented 4 months ago

This is being done as of #12