cytomining / pycytominer

Python package for processing image-based profiling data
https://pycytominer.readthedocs.io
BSD 3-Clause "New" or "Revised" License
80 stars 36 forks source link

Bug: Constrain python versioning within the `pyproject` file to match with CI #450

Closed axiomcura closed 1 month ago

axiomcura commented 2 months ago

Example code with output

This is the error below trying to install pycytominer with python 3.12

Package operations: 6 installs, 1 update, 0 removals

  - Downgrading numpy (2.1.1 /home/conda/feedstock_root/build_artifacts/numpy_1725411817006/work/dist/numpy-2.1.1-cp312-cp312-linux_x86_64.whl -> 1.24.4): Failed

  ChefBuildError

  Backend 'setuptools.build_meta:__legacy__' is not available.

  Cannot import 'setuptools.build_meta'

  at ~/.local/share/pypoetry/venv/lib/python3.10/site-packages/poetry/installation/chef.py:164 in _prepare
      160│ 
      161│                 error = ChefBuildError("\n\n".join(message_parts))
      162│ 
      163│             if error is not None:
    → 164│                 raise error from None
      165│ 
      166│             return path
      167│ 
      168│     def _prepare_sdist(self, archive: Path, destination: Path | None = None) -> Path:

Issue description

There is currently a minor issue where Pycytominer can be installed with Python 3.12, even though it hasn't been tested for compatibility. In the pyproject.toml and poetry.lock files, the Python version is set to >=3.8, which allows users with Python 3.12 to install Pycytominer, despite the lack of testing.

Integration testing only covers Python versions 3.8 to 3.11: Integration Test File

pyproject.toml file allowing 3.12 to be installed: Pyproject File

When attempting to use Python 3.12, an error occurs during the installation with Poetry (shown above).

It appears that a downgraded version of NumPy cannot be installed with Python 3.12, causing the installation to fail. This issue might need an adjustment to specify supported Python versions accurately or to test compatibility with Python 3.12.

Expected behavior

Pycytominer should be restricted from being installed by users with Python 3.12.

[tool.poetry.dependencies]
python          = ">=3.8,<3.12" # making it more restrictive 
numpy           = ">=1.16.5"
scipy           = ">=1.5"
pandas          = ">=1.2.0"
scikit-learn    = ">=0.21.2"
sqlalchemy      = ">=1.3.6, <2"
pyarrow         = ">=8.0.0"

Additional information

No response