Skip to content

Dependency on numpymaxflow prevents using python > 3.12 or numpy > 1.26 #1881

@ellisdg

Description

@ellisdg

Describe the bug
Monailabel depends on numpymaxflow which requires numpy version 1.26, which is not available for python versions past 3.12.
This dependency can break new installations unless the python version of the environment is forced to be <= 3.12 #1817 .

To Reproduce
Steps to reproduce the behavior with conda:

  1. Create a new environment: conda create -n monailabel
  2. Activate: conda activate monailabel
  3. Install python 3.13: conda install python==3.13
  4. Install monailabel: pip install monailabel

Output:

Collecting monailabel
  Downloading monailabel-0.8.5-202411252313-py3-none-any.whl.metadata (23 kB)
Collecting monai>=1.4.0 (from monai[fire,gdown,ignite,itk,lmdb,mlflow,nibabel,openslide,pillow,psutil,skimage,tensorboard,torchvision,tqdm]>=1.4.0->monailabel)
  Downloading monai-1.5.1-py3-none-any.whl.metadata (13 kB)
Collecting uvicorn>=0.29.0 (from monailabel)
  Downloading uvicorn-0.38.0-py3-none-any.whl.metadata (6.8 kB)
Collecting pydantic>=2.7.0 (from monailabel)
  Downloading pydantic-2.12.5-py3-none-any.whl.metadata (90 kB)
Collecting pydantic-settings>=2.2.1 (from monailabel)
  Downloading pydantic_settings-2.12.0-py3-none-any.whl.metadata (3.4 kB)
Collecting python-dotenv>=1.0.1 (from monailabel)
  Downloading python_dotenv-1.2.1-py3-none-any.whl.metadata (25 kB)
Collecting fastapi>=0.110.2 (from monailabel)
  Downloading fastapi-0.125.0-py3-none-any.whl.metadata (30 kB)
Collecting python-multipart>=0.0.9 (from monailabel)
  Downloading python_multipart-0.0.21-py3-none-any.whl.metadata (1.8 kB)
Collecting httpx>=0.27.0 (from monailabel)
  Using cached httpx-0.28.1-py3-none-any.whl.metadata (7.1 kB)
Collecting schedule>=1.2.1 (from monailabel)
  Downloading schedule-1.2.2-py3-none-any.whl.metadata (3.8 kB)
Collecting dicomweb-client>=0.59.1 (from dicomweb-client[gcp]>=0.59.1->monailabel)
  Downloading dicomweb_client-0.60.1-py3-none-any.whl.metadata (3.5 kB)
Collecting timeloop>=1.0.2 (from monailabel)
  Downloading timeloop-1.0.2.tar.gz (2.9 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
  Preparing metadata (pyproject.toml) ... done
Collecting expiringdict>=1.2.2 (from monailabel)
  Downloading expiringdict-1.2.2-py3-none-any.whl.metadata (3.7 kB)
Collecting expiring_dict>=1.1.0 (from monailabel)
  Downloading expiring_dict-1.1.2-py3-none-any.whl.metadata (1.3 kB)
Collecting cachetools>=5.3.3 (from monailabel)
  Downloading cachetools-6.2.4-py3-none-any.whl.metadata (5.6 kB)
Collecting watchdog>=4.0.0 (from monailabel)
  Downloading watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl.metadata (44 kB)
Collecting pydicom>=2.4.4 (from monailabel)
  Downloading pydicom-3.0.1-py3-none-any.whl.metadata (9.4 kB)
Collecting pydicom-seg>=0.4.1 (from monailabel)
  Downloading pydicom_seg-0.4.1-py3-none-any.whl.metadata (5.2 kB)
Collecting pynetdicom>=2.0.2 (from monailabel)
  Downloading pynetdicom-3.0.4-py3-none-any.whl.metadata (24 kB)
Collecting pynrrd>=1.0.0 (from monailabel)
  Downloading pynrrd-1.1.3-py3-none-any.whl.metadata (5.4 kB)
Collecting numpymaxflow>=0.0.7 (from monailabel)
  Downloading numpymaxflow-0.0.7.tar.gz (14 kB)
  Installing build dependencies ... error
  error: subprocess-exited-with-error
  
  × installing build dependencies for numpymaxflow did not run successfully.
  │ exit code: 1
  ╰─> [5 lines of output]
      Collecting setuptools
        Using cached setuptools-80.9.0-py3-none-any.whl.metadata (6.6 kB)
      ERROR: Ignored the following versions that require a different python version: 1.21.2 Requires-Python >=3.7,<3.11; 1.21.3 Requires-Python >=3.7,<3.11; 1.21.4 Requires-Python >=3.7,<3.11; 1.21.5 Requires-Python >=3.7,<3.11; 1.21.6 Requires-Python >=3.7,<3.11; 1.26.0 Requires-Python >=3.9,<3.13; 1.26.1 Requires-Python >=3.9,<3.13
      ERROR: Could not find a version that satisfies the requirement numpy==1.26.0 (from versions: 1.3.0, 1.4.1, 1.5.0, 1.5.1, 1.6.0, 1.6.1, 1.6.2, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.8.1, 1.8.2, 1.9.0, 1.9.1, 1.9.2, 1.9.3, 1.10.0.post2, 1.10.1, 1.10.2, 1.10.4, 1.11.0, 1.11.1, 1.11.2, 1.11.3, 1.12.0, 1.12.1, 1.13.0, 1.13.1, 1.13.3, 1.14.0, 1.14.1, 1.14.2, 1.14.3, 1.14.4, 1.14.5, 1.14.6, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0, 1.16.1, 1.16.2, 1.16.3, 1.16.4, 1.16.5, 1.16.6, 1.17.0, 1.17.1, 1.17.2, 1.17.3, 1.17.4, 1.17.5, 1.18.0, 1.18.1, 1.18.2, 1.18.3, 1.18.4, 1.18.5, 1.19.0, 1.19.1, 1.19.2, 1.19.3, 1.19.4, 1.19.5, 1.20.0, 1.20.1, 1.20.2, 1.20.3, 1.21.0, 1.21.1, 1.22.0, 1.22.1, 1.22.2, 1.22.3, 1.22.4, 1.23.0, 1.23.1, 1.23.2, 1.23.3, 1.23.4, 1.23.5, 1.24.0, 1.24.1, 1.24.2, 1.24.3, 1.24.4, 1.25.0, 1.25.1, 1.25.2, 1.26.2, 1.26.3, 1.26.4, 2.0.0, 2.0.1, 2.0.2, 2.1.0, 2.1.1, 2.1.2, 2.1.3, 2.2.0, 2.2.1, 2.2.2, 2.2.3, 2.2.4, 2.2.5, 2.2.6, 2.3.0, 2.3.1, 2.3.2, 2.3.3, 2.3.4, 2.3.5, 2.4.0rc1)
      ERROR: No matching distribution found for numpy==1.26.0
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed to build 'numpymaxflow' when installing build dependencies for numpymaxflow

Expected behavior
Monailabel should be compatible with newer versions of python and numpy.

Additional details
Numpymaxflow was last updated in October 2024 (https://github.com/masadcv/numpymaxflow/commits/main/).
There is an open feature request from October 2024 on Numpymaxflow to upgrade to compatibility with Numpy 2, but the maintainer does not seem to be responding to comments (masadcv/numpymaxflow#22).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions