diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f1770f0..cfca80b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @vtavana @ndgrigorian @antonwolfy @xaleryb @ekomarova +* @ndgrigorian @antonwolfy @xaleryb @jharlow-intel diff --git a/.github/workflows/build-with-clang.yml b/.github/workflows/build-with-clang.yml index eab2c32..8ef9883 100644 --- a/.github/workflows/build-with-clang.yml +++ b/.github/workflows/build-with-clang.yml @@ -13,8 +13,8 @@ jobs: strategy: matrix: - python: ["3.9", "3.10", "3.11", "3.12", "3.13"] - numpy_version: ["numpy'<2'", "numpy'>=2'"] + python: ["3.10", "3.11", "3.12", "3.13"] + numpy_version: ["numpy'>=2'"] env: ONEAPI_ROOT: /opt/intel/oneapi diff --git a/.github/workflows/build_pip.yaml b/.github/workflows/build_pip.yaml index 974d0b2..4cfbce8 100644 --- a/.github/workflows/build_pip.yaml +++ b/.github/workflows/build_pip.yaml @@ -22,7 +22,7 @@ jobs: strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13'] use_pre: ["", "--pre"] steps: diff --git a/.github/workflows/conda-package-cf.yml b/.github/workflows/conda-package-cf.yml index 1c69e07..891aa95 100644 --- a/.github/workflows/conda-package-cf.yml +++ b/.github/workflows/conda-package-cf.yml @@ -21,8 +21,6 @@ jobs: strategy: matrix: include: - - python: '3.9' - numpy: '2.0' - python: '3.10' numpy: '2.2' - python: '3.11' @@ -76,7 +74,7 @@ jobs: conda-recipe-cf - name: Upload artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} path: /usr/share/miniconda/conda-bld/linux-64/${{ env.PACKAGE_NAME }}-*.conda @@ -87,7 +85,7 @@ jobs: strategy: matrix: - python_ver: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python_ver: ['3.10', '3.11', '3.12', '3.13'] numpy: ['numpy">=2"'] experimental: [false] runner: [ubuntu-latest] @@ -97,7 +95,7 @@ jobs: steps: - name: Download artifact - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_ver }} @@ -158,8 +156,6 @@ jobs: strategy: matrix: include: - - python: '3.9' - numpy: '2.0' - python: '3.10' numpy: '2.2' - python: '3.11' @@ -215,7 +211,7 @@ jobs: echo "CONDA_BLD=$CONDA/conda-bld/win-64/" | tr "\\\\" '/' >> $GITHUB_ENV - name: Upload artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda @@ -229,7 +225,7 @@ jobs: strategy: matrix: - python_ver: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python_ver: ['3.10', '3.11', '3.12', '3.13'] numpy: ['numpy">=2"'] experimental: [false] runner: [windows-latest] @@ -240,7 +236,7 @@ jobs: steps: - name: Download artifact - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python_ver }} diff --git a/.github/workflows/conda-package.yml b/.github/workflows/conda-package.yml index b040f61..e58d1ee 100644 --- a/.github/workflows/conda-package.yml +++ b/.github/workflows/conda-package.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13'] steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 @@ -66,7 +66,7 @@ jobs: conda-recipe - name: Upload artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} path: /usr/share/miniconda/conda-bld/linux-64/${{ env.PACKAGE_NAME }}-*.conda @@ -77,7 +77,7 @@ jobs: strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13'] experimental: [false] runner: [ubuntu-latest] continue-on-error: ${{ matrix.experimental }} @@ -86,7 +86,7 @@ jobs: steps: - name: Download artifact - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} @@ -141,12 +141,7 @@ jobs: run: | CHANNELS="-c $GITHUB_WORKSPACE/channel ${{ env.CHANNELS }}" conda create -n ${{ env.TEST_ENV_NAME }} $PACKAGE_NAME=${{ env.PACKAGE_VERSION }} python=${{ matrix.python }} pytest $CHANNELS - if [[ "${{ matrix.python }}" != 3.9* ]]; then - # Intel channel only has scipy=1.10 for Python 3.9, which needs mkl<2025 - # while scipy needs to install numpy and mkl_random and mkl_random-1.2.11 requires mkl>=2025 - # so avoid installing scipy for Python 3.9 which means third_party/scipy tests will not run - conda install -n ${{ env.TEST_ENV_NAME }} "scipy>=1.10" $CHANNELS - fi + conda install -n ${{ env.TEST_ENV_NAME }} "scipy>=1.10" $CHANNELS # Test installed packages conda list -n ${{ env.TEST_ENV_NAME }} @@ -161,7 +156,7 @@ jobs: strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13'] steps: - name: Cancel Previous Runs uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 @@ -211,7 +206,7 @@ jobs: echo "CONDA_BLD=$CONDA/conda-bld/win-64/" | tr "\\\\" '/' >> $GITHUB_ENV - name: Upload artifact - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} path: ${{ env.CONDA_BLD }}${{ env.PACKAGE_NAME }}-*.conda @@ -225,7 +220,7 @@ jobs: strategy: matrix: - python: ['3.9', '3.10', '3.11', '3.12', '3.13'] + python: ['3.10', '3.11', '3.12', '3.13'] experimental: [false] runner: [windows-latest] continue-on-error: ${{ matrix.experimental }} @@ -235,7 +230,7 @@ jobs: steps: - name: Download artifact - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 + uses: actions/download-artifact@018cc2cf5baa6db3ef3c5f8a56943fffe632ef53 # v6.0.0 with: name: ${{ env.PACKAGE_NAME }} ${{ runner.os }} Python ${{ matrix.python }} @@ -315,10 +310,8 @@ jobs: ) SET "TEST_DEPENDENCIES=pytest" conda install -n ${{ env.TEST_ENV_NAME }} ${{ env.PACKAGE_NAME }}=%PACKAGE_VERSION% %TEST_DEPENDENCIES% python=${{ matrix.python }} -c ${{ env.workdir }}/channel ${{ env.CHANNELS }} - if ("${{ matrix.python }}" -ne "3.9") { - conda install -n ${{ env.TEST_ENV_NAME }} scipy -c ${{ env.workdir }}/channel ${{ env.CHANNELS }} + conda install -n ${{ env.TEST_ENV_NAME }} scipy -c ${{ env.workdir }}/channel ${{ env.CHANNELS }} } - - name: Report content of test environment shell: cmd /C CALL {0} run: | diff --git a/.github/workflows/openssf-scorecard.yml b/.github/workflows/openssf-scorecard.yml index dc8aca6..6a56ecc 100644 --- a/.github/workflows/openssf-scorecard.yml +++ b/.github/workflows/openssf-scorecard.yml @@ -61,7 +61,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: SARIF file path: results.sarif @@ -69,6 +69,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@64d10c13136e1c5bce3e5fbde8d4906eeaafc885 # v3.30.6 + uses: github/codeql-action/upload-sarif@0499de31b99561a6d14a36a5f662c2a54f91beee # v4.31.2 with: sarif_file: results.sarif diff --git a/CHANGELOG.md b/CHANGELOG.md index de58258..44d0f4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [dev] - YYYY-MM-DD + +### Added +* Enabled support of Python 3.14 [gh-234](https://github.com/IntelPython/mkl_fft/pull/234) + +### Removed +* Dropped support for Python 3.9 [gh-243](https://github.com/IntelPython/mkl_fft/pull/243) + ## [2.1.1] - 2025-10-09 ### Fixed diff --git a/conda-recipe-cf/meta.yaml b/conda-recipe-cf/meta.yaml index 9265287..de4af76 100644 --- a/conda-recipe-cf/meta.yaml +++ b/conda-recipe-cf/meta.yaml @@ -1,4 +1,4 @@ -{% set version = "2.1.1" %} +{% set version = "2.2.0dev0" %} {% set buildnumber = 0 %} package: diff --git a/conda-recipe/meta.yaml b/conda-recipe/meta.yaml index d071875..1b4c4c2 100644 --- a/conda-recipe/meta.yaml +++ b/conda-recipe/meta.yaml @@ -18,6 +18,7 @@ requirements: - {{ stdlib('c') }} host: - python + - python-gil # [py>=314] - pip - setuptools >=77 - mkl-devel @@ -26,6 +27,7 @@ requirements: - wheel >=0.41.3 run: - python + - python-gil # [py>=314] - mkl-service - {{ pin_compatible('numpy-base') }} @@ -34,12 +36,11 @@ test: - pytest -v --pyargs mkl_fft requires: - pytest - - scipy >=1.10 + # This is a temporary python restriction + - scipy >=1.10 # [py<314] imports: - mkl_fft - mkl_fft.interfaces - - mkl_fft.interfaces.numpy_fft - - mkl_fft.interfaces.scipy_fft about: home: http://github.com/IntelPython/mkl_fft diff --git a/mkl_fft/_version.py b/mkl_fft/_version.py index 58039f5..1916396 100644 --- a/mkl_fft/_version.py +++ b/mkl_fft/_version.py @@ -1 +1 @@ -__version__ = "2.1.1" +__version__ = "2.2.0dev0" diff --git a/mkl_fft/tests/third_party/scipy/test_basic.py b/mkl_fft/tests/third_party/scipy/test_basic.py index c18c593..25cd3d6 100644 --- a/mkl_fft/tests/third_party/scipy/test_basic.py +++ b/mkl_fft/tests/third_party/scipy/test_basic.py @@ -17,10 +17,7 @@ except ImportError: pytest.skip("This test file needs scipy", allow_module_level=True) else: - if np.lib.NumpyVersion(scipy.__version__) < "1.12.0": - # scipy from Intel channel is 1.10 with python 3.9 and 3.10 - pytest.skip("This test file needs scipy>=1.12", allow_module_level=True) - elif np.lib.NumpyVersion(scipy.__version__) < "1.14.0": + if np.lib.NumpyVersion(scipy.__version__) < "1.14.0": # For python-3.11 and 3.12, scipy<1.14 is installed from Intel channel # For python<=3.9, scipy<1.14 is installed from conda channel # pylint: disable=no-name-in-module diff --git a/pyproject.toml b/pyproject.toml index 3264dce..d3f6029 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,11 +38,11 @@ classifiers = [ "Programming Language :: C", "Programming Language :: Python", "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", + "Programming Language :: Python :: 3.14", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Software Development", "Topic :: Scientific/Engineering", @@ -57,7 +57,7 @@ keywords = ["DFTI", "FFT", "Fourier", "MKL"] license = "BSD-3-Clause" name = "mkl_fft" readme = {file = "README.md", content-type = "text/markdown"} -requires-python = ">=3.9,<3.14" +requires-python = ">=3.10,<3.15" [project.optional-dependencies] scipy_interface = ["scipy>=1.10"]