diff --git a/.github/workflows/pythonapp.yml b/.github/workflows/cicd_tests.yml similarity index 63% rename from .github/workflows/pythonapp.yml rename to .github/workflows/cicd_tests.yml index 535ba187a8..8eb70e2533 100644 --- a/.github/workflows/pythonapp.yml +++ b/.github/workflows/cicd_tests.yml @@ -1,5 +1,4 @@ -# Jenkinsfile.monai-premerge -name: premerge +name: tests on: # quick tests for pull requests and the releasing branches @@ -14,25 +13,25 @@ on: concurrency: # automatically cancel the previously triggered workflows when there's a newer version - group: build-${{ github.event.pull_request.number || github.ref }} + group: cicd-tests-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +# These jobs run the CICD tests, type checking, and testing packaging and documentation generation. These use the +# minimum supported versions of Python and PyTorch in many places hard-coded as literals, so when support is dropped +# for a version it is important to go through all jobs and check the versions they use are correct. + jobs: - # caching of these jobs: - # - docker-py3-pip- (shared) - # - ubuntu py37 pip- - # - os-latest-pip- (shared) - flake8-py3: + static-checks: # Perform static type and other checks using runtests.sh runs-on: ubuntu-latest strategy: matrix: opt: ["codeformat", "pytype", "mypy"] steps: - uses: actions/checkout@v5 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: cache weekly timestamp id: pip-cache run: | @@ -48,14 +47,95 @@ jobs: find /opt/hostedtoolcache/* -maxdepth 0 ! -name 'Python' -exec rm -rf {} \; python -m pip install --upgrade pip wheel python -m pip install -r requirements-dev.txt - - name: Lint and type check + - name: Lint and type check with "./runtests.sh --build --${{ matrix.opt }}" run: | # clean up temporary files $(pwd)/runtests.sh --build --clean - # Github actions have 2 cores, so parallelize pytype - $(pwd)/runtests.sh --build --${{ matrix.opt }} -j 2 + # Github actions have multiple cores, so parallelize pytype + $(pwd)/runtests.sh --build --${{ matrix.opt }} -j $(nproc --all) - quick-py3: # full dependencies installed tests for different OS + min-dep: # Test with minumum dependencies installed for different OS, Python, and PyTorch combinations + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-latest, macOS-latest, ubuntu-latest] + python-version: ['3.10'] + pytorch-version: ['2.6.0'] + include: + # Test Python versions under Ubuntu with lowest PyTorch version supported + - os: ubuntu-latest + pytorch-version: '2.6.0' + python-version: '3.11' + - os: ubuntu-latest + pytorch-version: '2.6.0' + python-version: '3.12' + - os: ubuntu-latest + pytorch-version: '2.6.0' + python-version: '3.13' + + # Test PyTorch versions under Ubuntu with lowest Python version supported + - os: ubuntu-latest + python-version: '3.10' + pytorch-version: '2.7.1' + - os: ubuntu-latest + python-version: '3.10' + pytorch-version: '2.8.0' + - os: ubuntu-latest + python-version: '3.10' + pytorch-version: '2.9.0' + + timeout-minutes: 40 + steps: + - uses: actions/checkout@v5 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v6 + with: + python-version: ${{ matrix.python-version }} + - name: Prepare pip wheel + run: | + which python + python -m pip install --upgrade pip wheel + python -m pip install --user more-itertools>=8.0 + - name: cache weekly timestamp + id: pip-cache + run: | + echo "datew=$(date '+%Y-%V')" >> $GITHUB_OUTPUT + echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT + shell: bash + - name: cache for pip + uses: actions/cache@v4 + id: cache + with: + path: ${{ steps.pip-cache.outputs.dir }} + key: ${{ matrix.os }}-latest-pip-${{ steps.pip-cache.outputs.datew }} + - name: Install the minimum dependencies + run: | + # min. requirements + python -m pip install torch==${{ matrix.pytorch-version }} + python -m pip install -r requirements-min.txt + python -m pip list + BUILD_MONAI=0 python setup.py develop # no compile of extensions + shell: bash + - if: matrix.os == 'linux-gpu-runner' + name: Print GPU Info + run: | + nvidia-smi + python -c 'import torch; print(torch.rand(2,2).to("cuda:0"))' + shell: bash + - name: Run quick tests + run: | + python -c 'import torch; print(torch.__version__); print(torch.rand(5,3))' + python -c "import monai; monai.config.print_config()" + # ./runtests.sh --min + shell: bash + env: + QUICKTEST: True + NGC_API_KEY: ${{ secrets.NGC_API_KEY }} + NGC_ORG: ${{ secrets.NGC_ORG }} + NGC_TEAM: ${{ secrets.NGC_TEAM }} + + full-dep: # Test with full dependencies installed for different OS runners runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -71,14 +151,15 @@ jobs: maximum-size: 16GB disk-root: "D:" - uses: actions/checkout@v5 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: Prepare pip wheel run: | which python python -m pip install --upgrade pip wheel + python -m pip install --user more-itertools>=8.0 - name: cache weekly timestamp id: pip-cache run: | @@ -100,7 +181,7 @@ jobs: run: | python -m pip install --pre -U itk find /opt/hostedtoolcache/* -maxdepth 0 ! -name 'Python' -exec rm -rf {} \; - - name: Install the dependencies + - name: Install the complete dependencies run: | python -m pip install --user --upgrade pip wheel python -m pip install torch==2.5.1 torchvision==0.20.1 @@ -114,16 +195,16 @@ jobs: python setup.py develop --uninstall BUILD_MONAI=1 python setup.py develop # compile the cpp extensions shell: bash - - name: Run quick tests (CPU ${{ runner.os }}) + - name: Run quick tests run: | python -c 'import torch; print(torch.__version__); print(torch.rand(5,3))' python -c "import monai; monai.config.print_config()" - python -m unittest -v + # python -m unittest -v env: QUICKTEST: True PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python # https://github.com/Project-MONAI/MONAI/issues/4354 - packaging: + packaging: # Test package generation runs-on: ubuntu-latest env: QUICKTEST: True @@ -132,10 +213,10 @@ jobs: - uses: actions/checkout@v5 with: fetch-depth: 0 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: cache weekly timestamp id: pip-cache run: | @@ -210,14 +291,14 @@ jobs: env: PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION: python # https://github.com/Project-MONAI/MONAI/issues/4354 - build-docs: + build-docs: # Test building documentation runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: cache weekly timestamp id: pip-cache run: | @@ -239,7 +320,7 @@ jobs: cd docs/ make clean make html 2>&1 | tee tmp_log - if [[ $(grep -c "ERROR:" tmp_log) != 0 ]]; then echo "found errors"; grep "ERROR:" tmp_log; exit 1; fi + if [[ $(grep -c "ERROR:" tmp_log) != 0 ]]; then echo "Found errors:"; grep "ERROR:" tmp_log; exit 1; fi sed '/WARNING.*pip/d' tmp_log > tmp_log1; mv tmp_log1 tmp_log # monai#7133 - if [[ $(grep -c "WARNING:" tmp_log) != 0 ]]; then echo "found warnings"; grep "WARNING:" tmp_log; exit 1; fi + if [[ $(grep -c "WARNING:" tmp_log) != 0 ]]; then echo "Found warnings:"; grep "WARNING:" tmp_log; exit 1; fi shell: bash diff --git a/.github/workflows/conda.yml b/.github/workflows/conda.yml index fd680e14c8..bedbcec548 100644 --- a/.github/workflows/conda.yml +++ b/.github/workflows/conda.yml @@ -19,7 +19,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - python-version: ["3.9", "3.10"] + python-version: ["3.10", "3.11"] runs-on: ${{ matrix.os }} timeout-minutes: 46 # equal to max + 3*std over the last 600 successful runs env: diff --git a/.github/workflows/cron-ngc-bundle.yml b/.github/workflows/cron-ngc-bundle.yml index c9bebc7bff..141a0b9acc 100644 --- a/.github/workflows/cron-ngc-bundle.yml +++ b/.github/workflows/cron-ngc-bundle.yml @@ -18,10 +18,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: cache weekly timestamp id: pip-cache run: echo "datew=$(date '+%Y-%V')" >> $GITHUB_OUTPUT diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 4741dca858..5dd6fbe9f6 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -26,10 +26,10 @@ jobs: with: ref: dev fetch-depth: 0 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - shell: bash run: | git describe diff --git a/.github/workflows/pythonapp-gpu.yml b/.github/workflows/pythonapp-gpu.yml index 347b49bba3..8639127b4d 100644 --- a/.github/workflows/pythonapp-gpu.yml +++ b/.github/workflows/pythonapp-gpu.yml @@ -53,7 +53,7 @@ jobs: if [ ${{ matrix.environment }} = "PT230+CUDA124" ] then - PYVER=3.9 PYSFX=3 DISTUTILS=python3-distutils && \ + PYVER=3.10 PYSFX=3 DISTUTILS=python3-distutils && \ apt-get update && apt-get install -y --no-install-recommends \ curl \ pkg-config \ diff --git a/.github/workflows/pythonapp-min.yml b/.github/workflows/pythonapp-min.yml deleted file mode 100644 index 34a328672a..0000000000 --- a/.github/workflows/pythonapp-min.yml +++ /dev/null @@ -1,170 +0,0 @@ -# Jenkinsfile.monai-premerge -name: premerge-min - -on: - # quick tests for pull requests and the releasing branches - push: - branches: - - dev - - main - - releasing/* - pull_request: - head_ref-ignore: - - dev - -concurrency: - # automatically cancel the previously triggered workflows when there's a newer version - group: build-min-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true - -jobs: - # caching of these jobs: - # - docker-py3-pip- (shared) - # - ubuntu py37 pip- - # - os-latest-pip- (shared) - min-dep-os: # min dependencies installed tests for different OS - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [windows-latest, macOS-latest, ubuntu-latest] - timeout-minutes: 40 - steps: - - uses: actions/checkout@v5 - - name: Set up Python 3.9 - uses: actions/setup-python@v6 - with: - python-version: '3.9' - - name: Prepare pip wheel - run: | - which python - python -m pip install --upgrade pip wheel - - name: cache weekly timestamp - id: pip-cache - run: | - echo "datew=$(date '+%Y-%V')" >> $GITHUB_OUTPUT - echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - shell: bash - - name: cache for pip - uses: actions/cache@v4 - id: cache - with: - path: ${{ steps.pip-cache.outputs.dir }} - key: ${{ matrix.os }}-latest-pip-${{ steps.pip-cache.outputs.datew }} - - name: Install the dependencies - run: | - # min. requirements - python -m pip install torch --index-url https://download.pytorch.org/whl/cpu - python -m pip install -r requirements-min.txt - python -m pip list - BUILD_MONAI=0 python setup.py develop # no compile of extensions - shell: bash - - name: Run quick tests (CPU ${{ runner.os }}) - run: | - python -c 'import torch; print(torch.__version__); print(torch.rand(5,3))' - python -c "import monai; monai.config.print_config()" - ./runtests.sh --min - shell: bash - env: - QUICKTEST: True - NGC_API_KEY: ${{ secrets.NGC_API_KEY }} - NGC_ORG: ${{ secrets.NGC_ORG }} - NGC_TEAM: ${{ secrets.NGC_TEAM }} - - min-dep-py3: # min dependencies installed tests for different python - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - python-version: ['3.9', '3.10', '3.11', '3.12'] - timeout-minutes: 40 - steps: - - uses: actions/checkout@v5 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v6 - with: - python-version: ${{ matrix.python-version }} - - name: Prepare pip wheel - run: | - which python - python -m pip install --user --upgrade pip setuptools wheel - python -m pip install --user more-itertools>=8.0 - - name: cache weekly timestamp - id: pip-cache - run: | - echo "datew=$(date '+%Y-%V')" >> $GITHUB_OUTPUT - echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - shell: bash - - name: cache for pip - uses: actions/cache@v4 - id: cache - with: - path: ${{ steps.pip-cache.outputs.dir }} - key: ubuntu-latest-latest-pip-${{ steps.pip-cache.outputs.datew }} - - name: Install the dependencies - run: | - # min. requirements - python -m pip install torch --extra-index-url https://download.pytorch.org/whl/cpu - python -m pip install -r requirements-min.txt - python -m pip list - BUILD_MONAI=0 python setup.py develop # no compile of extensions - shell: bash - - name: Run quick tests (CPU ${{ runner.os }}) - run: | - python -c 'import torch; print(torch.__version__); print(torch.rand(5,3))' - python -c "import monai; monai.config.print_config()" - ./runtests.sh --min - env: - QUICKTEST: True - NGC_API_KEY: ${{ secrets.NGC_API_KEY }} - NGC_ORG: ${{ secrets.NGC_ORG }} - NGC_TEAM: ${{ secrets.NGC_TEAM }} - - min-dep-pytorch: # min dependencies installed tests for different pytorch - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - pytorch-version: ['2.5.1', '2.6.0', '2.7.1', '2.8.0'] - timeout-minutes: 40 - steps: - - uses: actions/checkout@v5 - - name: Set up Python 3.9 - uses: actions/setup-python@v6 - with: - python-version: '3.9' - - name: Prepare pip wheel - run: | - which python - python -m pip install --user --upgrade pip setuptools wheel - python -m pip install --user more-itertools>=8.0 - - name: cache weekly timestamp - id: pip-cache - run: | - echo "datew=$(date '+%Y-%V')" >> $GITHUB_OUTPUT - echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT - shell: bash - - name: cache for pip - uses: actions/cache@v4 - id: cache - with: - path: ${{ steps.pip-cache.outputs.dir }} - key: ubuntu-latest-latest-pip-${{ steps.pip-cache.outputs.datew }} - - name: Install the dependencies - run: | - # min. requirements - python -m pip install torch==${{ matrix.pytorch-version }} - python -m pip install -r requirements-min.txt - python -m pip list - BUILD_MONAI=0 python setup.py develop # no compile of extensions - shell: bash - - name: Run quick tests (pytorch ${{ matrix.pytorch-version }}) - run: | - python -c 'import torch; print(torch.__version__); print(torch.rand(5,3))' - python -c "import monai; monai.config.print_config()" - ./runtests.sh --min - env: - QUICKTEST: True - NGC_API_KEY: ${{ secrets.NGC_API_KEY }} - NGC_ORG: ${{ secrets.NGC_ORG }} - NGC_TEAM: ${{ secrets.NGC_TEAM }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3a8e8ffdf6..cfc2d4b7a4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.9', '3.10', '3.11'] + python-version: ['3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v5 with: @@ -64,14 +64,14 @@ jobs: env: QUICKTEST: True - - if: matrix.python-version == '3.9' && startsWith(github.ref, 'refs/tags/') + - if: matrix.python-version == '3.10' && startsWith(github.ref, 'refs/tags/') name: Upload artifacts uses: actions/upload-artifact@v5 with: name: dist path: dist/ - - if: matrix.python-version == '3.9' && startsWith(github.ref, 'refs/tags/') + - if: matrix.python-version == '3.10' && startsWith(github.ref, 'refs/tags/') name: Check artifacts run: | ls -al dist/ @@ -79,7 +79,7 @@ jobs: ls -al dist/ # remove publishing to Test PyPI as it is moved to blossom - # - if: matrix.python-version == '3.9' && startsWith(github.ref, 'refs/tags/') + # - if: matrix.python-version == '3.10' && startsWith(github.ref, 'refs/tags/') # name: Publish to Test PyPI # uses: pypa/gh-action-pypi-publish@release/v1 # with: @@ -97,10 +97,10 @@ jobs: # full history so that we can git describe with: fetch-depth: 0 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - shell: bash run: | find /opt/hostedtoolcache/* -maxdepth 0 ! -name 'Python' -exec rm -rf {} \; diff --git a/.github/workflows/setupapp.yml b/.github/workflows/setupapp.yml index acd72eaf6f..912d254334 100644 --- a/.github/workflows/setupapp.yml +++ b/.github/workflows/setupapp.yml @@ -81,7 +81,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ['3.9', '3.10', '3.11'] + python-version: ['3.10', '3.11', '3.12'] steps: - uses: actions/checkout@v5 with: @@ -127,10 +127,10 @@ jobs: install: # pip install from github url, the default branch is dev runs-on: ubuntu-latest steps: - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: cache weekly timestamp id: pip-cache run: | diff --git a/.github/workflows/weekly-preview.yml b/.github/workflows/weekly-preview.yml index 93d6f67f09..67a712fe2d 100644 --- a/.github/workflows/weekly-preview.yml +++ b/.github/workflows/weekly-preview.yml @@ -12,10 +12,10 @@ jobs: opt: ["codeformat", "pytype", "mypy"] steps: - uses: actions/checkout@v5 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: cache weekly timestamp id: pip-cache run: | @@ -46,10 +46,10 @@ jobs: with: ref: dev fetch-depth: 0 - - name: Set up Python 3.9 + - name: Set up Python 3.10 uses: actions/setup-python@v6 with: - python-version: '3.9' + python-version: '3.10' - name: Install setuptools run: | python -m pip install --user --upgrade setuptools wheel packaging diff --git a/docs/.readthedocs.yaml b/docs/.readthedocs.yaml index d2e2ee74a5..0212e806e8 100644 --- a/docs/.readthedocs.yaml +++ b/docs/.readthedocs.yaml @@ -6,7 +6,7 @@ version: 2 build: os: ubuntu-22.04 tools: - python: "3.9" + python: "3.10" sphinx: configuration: docs/source/conf.py python: diff --git a/docs/requirements.txt b/docs/requirements.txt index f44f41a6b2..7f4db0f704 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -6,7 +6,7 @@ itk>=5.2 nibabel parameterized scikit-image>=0.19.0 -scipy>=1.12.0; python_version >= '3.9' +scipy>=1.12.0 tensorboard commonmark==0.9.1 recommonmark==0.6.0 diff --git a/docs/source/installation.md b/docs/source/installation.md index b8befc10b4..bf7fa56138 100644 --- a/docs/source/installation.md +++ b/docs/source/installation.md @@ -19,7 +19,7 @@ --- -MONAI's core functionality is written in Python 3 (>= 3.9) and only requires [Numpy](https://numpy.org/) and [Pytorch](https://pytorch.org/). +MONAI's core functionality is written in Python 3 (>= 3.10) and only requires [Numpy](https://numpy.org/) and [Pytorch](https://pytorch.org/). The package is currently distributed via Github as the primary source code repository, and the Python package index (PyPI). The pre-built Docker images are made available on DockerHub. @@ -245,7 +245,7 @@ this will install PyTorch as well as `pytorch-cuda`, please follow https://pytor ```bash git clone https://github.com/Project-MONAI/MONAI.git cd MONAI/ -conda create -n python= # eg 3.9 +conda create -n python= # eg 3.10 conda env update -n -f environment-dev.yml ``` diff --git a/monai/apps/auto3dseg/auto_runner.py b/monai/apps/auto3dseg/auto_runner.py index 28ba2a88f9..9acab5d441 100644 --- a/monai/apps/auto3dseg/auto_runner.py +++ b/monai/apps/auto3dseg/auto_runner.py @@ -560,7 +560,7 @@ def set_device_info( cmd_prefix: command line prefix for subprocess running in BundleAlgo and EnsembleRunner. Default using env "CMD_PREFIX" or None, examples are: - - single GPU/CPU or multinode bcprun: "python " or "/opt/conda/bin/python3.9 ", + - single GPU/CPU or multinode bcprun: "python " or "/opt/conda/bin/python3.10", - single node multi-GPU running "torchrun --nnodes=1 --nproc_per_node=2 " If user define this prefix, please make sure --nproc_per_node matches cuda_visible_device or diff --git a/monai/auto3dseg/utils.py b/monai/auto3dseg/utils.py index 211f23c415..ff1be57629 100644 --- a/monai/auto3dseg/utils.py +++ b/monai/auto3dseg/utils.py @@ -407,7 +407,8 @@ def _prepare_cmd_default(cmd: str, cmd_prefix: str | None = None, **kwargs: Any) Args: cmd: the command or script to run in the distributed job. - cmd_prefix: the command prefix to run the script, e.g., "python", "python -m", "python3", "/opt/conda/bin/python3.9 ". + cmd_prefix: the command prefix to run the script, + e.g., "python", "python -m", "python3", "/opt/conda/bin/python3.10". kwargs: the keyword arguments to be passed to the script. Returns: diff --git a/requirements-dev.txt b/requirements-dev.txt index ff234c856e..e1422ea8ce 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,7 +2,7 @@ -r requirements-min.txt pytorch-ignite==0.4.11 gdown>=4.7.3 -scipy>=1.12.0; python_version >= '3.9' +scipy>=1.12.0 itk>=5.2 nibabel pillow!=8.3.0 # https://github.com/python-pillow/Pillow/issues/5571 @@ -27,7 +27,7 @@ ninja torchio torchvision psutil -cucim-cu12; platform_system == "Linux" and python_version >= "3.9" and python_version <= "3.10" +cucim-cu12; platform_system == "Linux" and python_version <= "3.10" openslide-python openslide-bin imagecodecs; platform_system == "Linux" or platform_system == "Darwin" diff --git a/setup.cfg b/setup.cfg index b3949213c2..5011b6382e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -21,9 +21,10 @@ classifiers = Intended Audience :: Healthcare Industry Programming Language :: C++ Programming Language :: Python :: 3 - Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 + Programming Language :: Python :: 3.12 + Programming Language :: Python :: 3.13 Topic :: Scientific/Engineering Topic :: Scientific/Engineering :: Artificial Intelligence Topic :: Scientific/Engineering :: Medical Science Apps. @@ -33,7 +34,7 @@ classifiers = Typing :: Typed [options] -python_requires = >= 3.9 +python_requires = >= 3.10 # for compiling and develop setup only # no need to specify the versions so that we could # compile for multiple targeted versions. @@ -42,7 +43,7 @@ setup_requires = ninja packaging install_requires = - torch>=2.4.1 + torch>=2.6.0 numpy>=1.24,<3.0 [options.extras_require] @@ -50,7 +51,7 @@ all = nibabel ninja scikit-image>=0.14.2 - scipy>=1.12.0; python_version >= '3.9' + scipy>=1.12.0 pillow tensorboard gdown>=4.7.3 @@ -61,7 +62,7 @@ all = tqdm>=4.47.0 lmdb psutil - cucim-cu12; platform_system == "Linux" and python_version >= '3.9' and python_version <= '3.10' + cucim-cu12; platform_system == "Linux" and python_version <= '3.10' openslide-python openslide-bin tifffile; platform_system == "Linux" or platform_system == "Darwin" @@ -95,7 +96,7 @@ ninja = skimage = scikit-image>=0.14.2 scipy = - scipy>=1.12.0; python_version >= '3.9' + scipy>=1.12.0 pillow = pillow!=8.3.0 tensorboard = @@ -117,7 +118,7 @@ lmdb = psutil = psutil cucim = - cucim-cu12; platform_system == "Linux" and python_version >= '3.9' and python_version <= '3.10' + cucim-cu12; platform_system == "Linux" and python_version <= '3.10' openslide = openslide-python openslide-bin