make array Hermitian before calling complex-to-real FFT #7193
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Conda package | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
permissions: read-all | |
env: | |
package-name: dpnp | |
# Follow oneAPI installation instruction for conda, since intel channel is not longer available | |
# channels-list: '-c dppy/label/dev -c intel -c conda-forge --override-channels' | |
channels-list: '-c dppy/label/dev -c https://software.repos.intel.com/python/conda/ -c conda-forge --override-channels' | |
ver-script-part1: "import json; f = open('version.json', 'r'); j = json.load(f); f.close(); " | |
ver-script-part2: "d = j['dpnp'][0]; print('='.join((d[s] for s in ('version', 'build'))))" | |
fetch-depth: 1 | |
# python 3.13 is blocked since BLAS requires "mkl<2025.0" (see https://github.com/conda-forge/blas-feedstock/pull/128 | |
# which depends on resolving MKL issue https://github.com/conda-forge/intel_repack-feedstock/issues/83) | |
python-ver-test-all-dtypes: '3.12' | |
test-env-name: 'test' | |
rerun-tests-on-failure: 'true' | |
rerun-tests-max-attempts: 2 | |
rerun-tests-timeout: 35 | |
jobs: | |
build: | |
name: Build | |
strategy: | |
fail-fast: false | |
matrix: | |
# python 3.13 is blocked since BLAS requires "mkl<2025.0" (see https://github.com/conda-forge/blas-feedstock/pull/128 | |
# which depends on resolving MKL issue https://github.com/conda-forge/intel_repack-feedstock/issues/83) | |
python: ['3.9', '3.10', '3.11', '3.12'] | |
os: [ubuntu-22.04, windows-2019] | |
permissions: | |
# Needed to cancel any previous runs that are not completed for a given workflow | |
actions: write | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: ${{ matrix.os == 'windows-2019' && 'cmd /C CALL {0}' || 'bash -el {0}' }} | |
env: | |
build-conda-pkg-env: 'environments/build_conda_pkg.yml' | |
build-env-name: 'build' | |
steps: | |
- name: Cancel Previous Runs | |
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1 | |
with: | |
access_token: ${{ github.token }} | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 0 | |
- name: Setup miniconda | |
id: setup_miniconda | |
continue-on-error: true | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.build-conda-pkg-env }} | |
activate-environment: ${{ env.build-env-name }} | |
- name: ReSetup miniconda | |
if: steps.setup_miniconda.outcome == 'failure' | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.build-conda-pkg-env }} | |
activate-environment: ${{ env.build-env-name }} | |
- name: List installed packages | |
run: mamba list | |
- name: Store conda paths as envs | |
shell: bash -el {0} | |
run: | | |
echo "CONDA_BLD=$CONDA_PREFIX/conda-bld/${{ runner.os == 'Linux' && 'linux' || 'win' }}-64/" | tr "\\\\" '/' >> $GITHUB_ENV | |
echo "WHEELS_OUTPUT_FOLDER=$GITHUB_WORKSPACE${{ runner.os == 'Linux' && '/' || '\\' }}" >> $GITHUB_ENV | |
- name: Build conda package | |
id: build_conda_pkg | |
continue-on-error: true | |
run: conda build --no-test --python ${{ matrix.python }} --numpy 2.0 ${{ env.channels-list }} conda-recipe | |
env: | |
MAX_BUILD_CMPL_MKL_VERSION: '2025.2a0' | |
- name: ReBuild conda package | |
if: steps.build_conda_pkg.outcome == 'failure' | |
run: conda build --no-test --python ${{ matrix.python }} --numpy 2.0 ${{ env.channels-list }} conda-recipe | |
env: | |
MAX_BUILD_CMPL_MKL_VERSION: '2025.2a0' | |
- name: Upload artifact | |
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
with: | |
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }} | |
path: ${{ env.CONDA_BLD }}${{ env.package-name }}-*.conda | |
- name: Upload wheels artifact | |
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
with: | |
name: ${{ env.package-name }} ${{ runner.os }} Wheels Python ${{ matrix.python }} | |
path: ${{ env.WHEELS_OUTPUT_FOLDER }}${{ env.package-name }}-*.whl | |
test_linux: | |
name: Test | |
needs: build | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash -el {0} | |
strategy: | |
fail-fast: false | |
matrix: | |
# python 3.13 is blocked due to MKL issue | |
python: ['3.9', '3.10', '3.11', '3.12'] | |
os: [ubuntu-latest] | |
env: | |
dpnp-repo-path: '${{ github.workspace }}/source/' | |
create-conda-channel-env: 'source/environments/create_conda_channel.yml' | |
channel-path: '${{ github.workspace }}/channel/' | |
pkg-path-in-channel: '${{ github.workspace }}/channel/linux-64/' | |
ver-json-path: '${{ github.workspace }}/version.json' | |
steps: | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: ${{ env.fetch-depth }} | |
path: ${{ env.dpnp-repo-path }} | |
- name: Download artifact | |
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
with: | |
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }} | |
path: ${{ env.pkg-path-in-channel }} | |
- name: Setup miniconda | |
id: setup_miniconda | |
continue-on-error: true | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.create-conda-channel-env }} | |
activate-environment: ${{ env.test-env-name }} | |
- name: ReSetup miniconda | |
if: steps.setup_miniconda.outcome == 'failure' | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.create-conda-channel-env }} | |
activate-environment: ${{ env.test-env-name }} | |
- name: Create conda channel | |
run: | | |
python -m conda_index ${{ env.channel-path }} | |
- name: Test conda channel | |
run: | | |
conda search ${{ env.package-name }} -c ${{ env.channel-path }} --override-channels --info --json > ${{ env.ver-json-path }} | |
cat ${{ env.ver-json-path }} | |
- name: Get package version | |
run: | | |
export PACKAGE_VERSION=$(python -c "${{ env.ver-script-part1 }} ${{ env.ver-script-part2 }}") | |
echo PACKAGE_VERSION=${PACKAGE_VERSION} | |
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV | |
# conda-index does not support python 3.13, but we need to test DPNP package with python 3.13 | |
- name: Remove conda-index | |
run: mamba remove conda-index | |
- name: Install dpnp | |
id: install_dpnp | |
continue-on-error: true | |
run: | | |
mamba install ${{ env.package-name }}=${{ env.PACKAGE_VERSION }} pytest pytest-xdist python=${{ matrix.python }} ${{ env.TEST_CHANNELS }} | |
env: | |
TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.channels-list }}' | |
- name: ReInstall dpnp | |
if: steps.install_dpnp.outcome == 'failure' | |
run: | | |
mamba install ${{ env.package-name }}=${{ env.PACKAGE_VERSION }} pytest pytest-xdist python=${{ matrix.python }} ${{ env.TEST_CHANNELS }} | |
env: | |
TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.channels-list }}' | |
- name: List installed packages | |
run: mamba list | |
- name: Smoke test | |
run: | | |
python -c "import dpctl; dpctl.lsplatform()" | |
python -c "import dpnp; print(dpnp.__version__)" | |
- name: Run tests | |
if: env.rerun-tests-on-failure != 'true' | |
run: | | |
if [[ "${{ matrix.python }}" == "${{ env.python-ver-test-all-dtypes }}" ]]; then | |
export DPNP_TEST_ALL_INT_TYPES=1 | |
python -m pytest -ra --pyargs ${{ env.package-name }}.tests | |
else | |
python -m pytest -n auto -ra --pyargs ${{ env.package-name }}.tests | |
fi | |
- name: Run tests | |
if: env.rerun-tests-on-failure == 'true' | |
id: run_tests_linux | |
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2 | |
with: | |
timeout_minutes: ${{ env.rerun-tests-timeout }} | |
max_attempts: ${{ env.rerun-tests-max-attempts }} | |
retry_on: any | |
command: | | |
. $CONDA/etc/profile.d/conda.sh | |
. $CONDA/etc/profile.d/mamba.sh | |
mamba activate ${{ env.test-env-name }} | |
if [[ "${{ matrix.python }}" == "${{ env.python-ver-test-all-dtypes }}" ]]; then | |
export DPNP_TEST_ALL_INT_TYPES=1 | |
python -m pytest -ra --pyargs ${{ env.package-name }}.tests | |
else | |
python -m pytest -n auto -ra --pyargs ${{ env.package-name }}.tests | |
fi | |
test_windows: | |
name: Test | |
needs: build | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: cmd /C CALL {0} | |
strategy: | |
fail-fast: false | |
matrix: | |
# python 3.13 is blocked due to MKL issue | |
python: ['3.9', '3.10', '3.11', '3.12'] | |
os: [windows-2019] | |
env: | |
dpnp-repo-path: '${{ github.workspace }}\source' | |
create-conda-channel-env: 'source\environments\create_conda_channel.yml' | |
channel-path: '${{ github.workspace }}\channel\' | |
pkg-path-in-channel: '${{ github.workspace }}\channel\win-64\' | |
ver-json-path: '${{ github.workspace }}\version.json' | |
steps: | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: ${{ env.fetch-depth }} | |
path: ${{ env.dpnp-repo-path }} | |
- name: Download artifact | |
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
with: | |
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }} | |
path: ${{ env.pkg-path-in-channel }} | |
- name: Store a path to package archive | |
run: | | |
@echo on | |
set SEARCH_SCRIPT="DIR ${{ env.pkg-path-in-channel }} /s/b | FINDSTR /r "dpnp-.*\.conda"" | |
FOR /F "tokens=* USEBACKQ" %%F IN (`%SEARCH_SCRIPT%`) DO ( | |
SET FULL_PACKAGE_PATH=%%F | |
) | |
echo FULL_PACKAGE_PATH: %FULL_PACKAGE_PATH% | |
(echo FULL_PACKAGE_PATH=%FULL_PACKAGE_PATH%) >> %GITHUB_ENV% | |
- name: Setup miniconda | |
id: setup_miniconda | |
continue-on-error: true | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.create-conda-channel-env }} | |
activate-environment: ${{ env.test-env-name }} | |
- name: ReSetup miniconda | |
if: steps.setup_miniconda.outcome == 'failure' | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.create-conda-channel-env }} | |
activate-environment: ${{ env.test-env-name }} | |
- name: Store conda paths as envs | |
run: | | |
@echo on | |
(echo CONDA_LIB_PATH=%CONDA_PREFIX%\Library\lib\) >> %GITHUB_ENV% | |
(echo CONDA_LIB_BIN_PATH=%CONDA_PREFIX%\Library\bin\) >> %GITHUB_ENV% | |
- name: Install conda-index | |
run: | | |
mamba install conda-index=${{ env.CONDA_INDEX_VERSION }} | |
- name: Create conda channel | |
run: | | |
@echo on | |
python -m conda_index ${{ env.channel-path }} | |
- name: Test conda channel | |
run: | | |
@echo on | |
conda search ${{ env.package-name }} -c ${{ env.channel-path }} --override-channels --info --json > ${{ env.ver-json-path }} | |
- name: Dump version.json | |
run: more ${{ env.ver-json-path }} | |
- name: Get package version | |
run: | | |
@echo on | |
set "SCRIPT=${{ env.ver-script-part1 }} ${{ env.ver-script-part2 }}" | |
FOR /F "tokens=* USEBACKQ" %%F IN (`python -c "%SCRIPT%"`) DO ( | |
set PACKAGE_VERSION=%%F | |
) | |
echo PACKAGE_VERSION: %PACKAGE_VERSION% | |
(echo PACKAGE_VERSION=%PACKAGE_VERSION%) >> %GITHUB_ENV% | |
# conda-index does not support python 3.13, but we need to test DPNP package with python 3.13 | |
- name: Remove conda-index | |
run: mamba remove conda-index | |
- name: Install dpnp | |
run: | | |
@echo on | |
mamba install ${{ env.package-name }}=${{ env.PACKAGE_VERSION }} pytest pytest-xdist python=${{ matrix.python }} ${{ env.TEST_CHANNELS }} | |
env: | |
TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.channels-list }}' | |
MAMBA_NO_LOW_SPEED_LIMIT: 1 | |
- name: List installed packages | |
run: mamba list | |
- name: Activate OCL CPU RT | |
shell: pwsh | |
run: | | |
$script_path="$env:CONDA_PREFIX\Scripts\set-intel-ocl-icd-registry.ps1" | |
if (Test-Path $script_path) { | |
&$script_path | |
} else { | |
Write-Warning "File $script_path was NOT found!" | |
} | |
# Check the variable assisting OpenCL CPU driver to find TBB DLLs which are not located where it expects them by default | |
$cl_cfg="$env:CONDA_PREFIX\Library\bin\cl.cfg" | |
Get-Content -Tail 5 -Path $cl_cfg | |
- name: Smoke test | |
run: | | |
python -c "import dpctl; dpctl.lsplatform()" | |
python -c "import dpnp; print(dpnp.__version__)" | |
- name: Run tests | |
if: env.rerun-tests-on-failure != 'true' | |
shell: pwsh | |
run: | | |
if (${{ matrix.python }} -eq ${{ env.python-ver-test-all-dtypes }}) { | |
$env:DPNP_TEST_ALL_INT_TYPES=1 | |
python -m pytest -ra --pyargs ${{ env.package-name }}.tests | |
} else { | |
python -m pytest -n auto -ra --pyargs ${{ env.package-name }}.tests | |
} | |
- name: Run tests | |
if: env.rerun-tests-on-failure == 'true' | |
id: run_tests_win | |
uses: nick-fields/retry@ce71cc2ab81d554ebbe88c79ab5975992d79ba08 # v3.0.2 | |
with: | |
timeout_minutes: ${{ env.rerun-tests-timeout }} | |
max_attempts: ${{ env.rerun-tests-max-attempts }} | |
retry_on: any | |
shell: pwsh | |
command: | | |
if ( ${{ matrix.python }} -eq ${{ env.python-ver-test-all-dtypes }} ) { | |
$env:DPNP_TEST_ALL_INT_TYPES=1 | |
python -m pytest -ra --pyargs ${{ env.package-name }}.tests | |
} else { | |
python -m pytest -n auto -ra --pyargs ${{ env.package-name }}.tests | |
} | |
upload: | |
name: Upload | |
needs: [test_linux, test_windows] | |
strategy: | |
fail-fast: false | |
matrix: | |
# python 3.13 is blocked due to MKL issue | |
python: ['3.9', '3.10', '3.11', '3.12'] | |
os: [ubuntu-22.04, windows-2019] | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: ${{ matrix.os == 'windows-2019' && 'cmd /C CALL {0}' || 'bash -el {0}' }} | |
env: | |
upload-conda-pkg-env: 'environments/upload_cleanup_conda_pkg.yml' | |
upload-env-name: 'upload' | |
if: | | |
(github.repository == 'IntelPython/dpnp') && | |
(github.ref == 'refs/heads/master' || (startsWith(github.ref, 'refs/heads/release') == true) || github.event_name == 'push' && contains(github.ref, 'refs/tags/')) | |
steps: | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: ${{ env.fetch-depth }} | |
- name: Download artifact | |
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
with: | |
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ matrix.python }} | |
- name: Download wheels artifact | |
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
with: | |
name: ${{ env.package-name }} ${{ runner.os }} Wheels Python ${{ matrix.python }} | |
- name: Setup miniconda | |
id: setup_miniconda | |
continue-on-error: true | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.upload-conda-pkg-env }} | |
activate-environment: ${{ env.upload-env-name }} | |
- name: ReSetup miniconda | |
if: steps.setup_miniconda.outcome == 'failure' | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.upload-conda-pkg-env }} | |
activate-environment: ${{ env.upload-env-name }} | |
- name: Package version | |
shell: bash -el {0} | |
run: | | |
echo "PACKAGE_VERSION=$(basename ${{ env.package-name }}-*.conda | sed 's/^${{ env.package-name }}-\([^-]*\).*/\1/')" >> $GITHUB_ENV | |
- name: Upload | |
run: | | |
anaconda --token ${{ env.ANACONDA_TOKEN }} upload --user dppy --label dev ${{ env.package-name }}-*.conda | |
env: | |
ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} | |
- name: Upload wheels | |
run: | | |
anaconda --token ${{ env.ANACONDA_TOKEN }} upload --user dppy --label dev ${{ env.package-name }}-*.whl --version ${{ env.PACKAGE_VERSION }} | |
env: | |
ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} | |
array-api-conformity: | |
name: Array API conformity | |
needs: build | |
permissions: | |
# Needed to add a comment to a pull request's issue | |
pull-requests: write | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
runs-on: ${{ matrix.os }} | |
defaults: | |
run: | |
shell: bash -el {0} | |
continue-on-error: true | |
env: | |
array-api-tests-path: '${{ github.workspace }}/array-api-tests/' | |
json-report-file: '${{ github.workspace }}/.report.json' | |
dpnp-repo-path: '${{ github.workspace }}/source/' | |
array-api-skips-file: '${{ github.workspace }}/source/.github/workflows/array-api-skips.txt' | |
create-conda-channel-env: 'source/environments/create_conda_channel.yml' | |
python-ver: '3.12' # it has to be aligned with python in create_conda_channel.yml | |
conda-env-name: 'array-api-conformity' | |
channel-path: '${{ github.workspace }}/channel/' | |
pkg-path-in-channel: '${{ github.workspace }}/channel/linux-64/' | |
ver-json-path: '${{ github.workspace }}/version.json' | |
steps: | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: ${{ env.fetch-depth }} | |
path: ${{ env.dpnp-repo-path }} | |
- name: Download artifact | |
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
with: | |
name: ${{ env.package-name }} ${{ runner.os }} Python ${{ env.python-ver }} | |
path: ${{ env.pkg-path-in-channel }} | |
- name: Setup miniconda | |
id: setup_miniconda | |
continue-on-error: true | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.create-conda-channel-env }} | |
activate-environment: ${{ env.conda-env-name }} | |
- name: ReSetup miniconda | |
if: steps.setup_miniconda.outcome == 'failure' | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.create-conda-channel-env }} | |
activate-environment: ${{ env.conda-env-name }} | |
- name: Create conda channel | |
run: | | |
python -m conda_index ${{ env.channel-path }} | |
- name: Test conda channel | |
run: | | |
conda search ${{ env.package-name }} -c ${{ env.channel-path }} --override-channels --info --json > ${{ env.ver-json-path }} | |
cat ${{ env.ver-json-path }} | |
- name: Get package version | |
run: | | |
export PACKAGE_VERSION=$(python -c "${{ env.ver-script-part1 }} ${{ env.ver-script-part2 }}") | |
echo PACKAGE_VERSION=${PACKAGE_VERSION} | |
echo "PACKAGE_VERSION=$PACKAGE_VERSION" >> $GITHUB_ENV | |
- name: Install dpnp | |
id: install_dpnp | |
continue-on-error: true | |
run: | | |
mamba install ${{ env.package-name }}=${{ env.PACKAGE_VERSION }} pytest python=${{ env.python-ver }} ${{ env.TEST_CHANNELS }} | |
env: | |
TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.channels-list }}' | |
- name: ReInstall dpnp | |
if: steps.install_dpnp.outcome == 'failure' | |
run: | | |
mamba install ${{ env.package-name }}=${{ env.PACKAGE_VERSION }} pytest python=${{ env.python-ver }} ${{ env.TEST_CHANNELS }} | |
env: | |
TEST_CHANNELS: '-c ${{ env.channel-path }} ${{ env.channels-list }}' | |
- name: List installed packages | |
run: mamba list | |
- name: Smoke test | |
run: | | |
python -c "import dpctl; dpctl.lsplatform()" | |
python -c "import dpnp; print(dpnp.__version__)" | |
- name: Clone array API tests repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
repository: 'data-apis/array-api-tests' | |
path: ${{ env.array-api-tests-path }} | |
fetch-depth: ${{ env.fetch-depth }} | |
submodules: 'recursive' | |
- name: Install array API test dependencies | |
run: | | |
pip install -r requirements.txt | |
working-directory: ${{ env.array-api-tests-path }} | |
- name: Install jq | |
run: | | |
sudo apt-get install jq | |
- name: List installed packages | |
run: mamba list | |
- name: Smoke test | |
run: | | |
python -c "import dpctl; dpctl.lsplatform()" | |
python -c "import dpnp; print(dpnp.__version__)" | |
- name: Run array API conformance tests | |
run: | | |
python -m pytest --json-report --json-report-file=${{ env.json-report-file }} --disable-deadline --skips-file ${{ env.array-api-skips-file }} array_api_tests || true | |
env: | |
ARRAY_API_TESTS_MODULE: 'dpnp' | |
ARRAY_API_TESTS_VERSION: '2024.12' | |
SYCL_CACHE_PERSISTENT: 1 | |
working-directory: ${{ env.array-api-tests-path }} | |
- name: Set GitHub environment variables | |
run: | | |
FILE=${{ env.json-report-file }} | |
if test -f "$FILE"; then | |
PASSED_TESTS=$(jq '.summary | .passed // 0' $FILE) | |
FAILED_TESTS=$(jq '.summary | .failed // 0' $FILE) | |
SKIPPED_TESTS=$(jq '.summary | .skipped // 0' $FILE) | |
MESSAGE="Array API standard conformance tests for dpnp=$PACKAGE_VERSION ran successfully. | |
Passed: $PASSED_TESTS | |
Failed: $FAILED_TESTS | |
Skipped: $SKIPPED_TESTS" | |
echo "MESSAGE<<EOF" >> $GITHUB_ENV | |
echo "$MESSAGE" >> $GITHUB_ENV | |
echo "EOF" >> $GITHUB_ENV | |
else | |
echo "Array API standard conformance tests failed to run for dpnp=$PACKAGE_VERSION." | |
exit 1 | |
fi | |
- name: Output API summary | |
run: echo "::notice ${{ env.MESSAGE }}" | |
- name: Post result to PR | |
if: ${{ github.event.pull_request && !github.event.pull_request.head.repo.fork }} | |
uses: mshick/add-pr-comment@b8f338c590a895d50bcbfa6c5859251edc8952fc # v2.8.2 | |
with: | |
message-id: array_api_results | |
message: | | |
${{ env.MESSAGE }} | |
cleanup_packages: | |
name: Clean up anaconda packages | |
needs: [upload] | |
runs-on: 'ubuntu-latest' | |
defaults: | |
run: | |
shell: bash -el {0} | |
env: | |
cleanup-conda-pkg-env: 'environments/upload_cleanup_conda_pkg.yml' | |
cleanup-env-name: 'cleanup' | |
steps: | |
- name: Checkout DPNP repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: ${{ env.fetch-depth }} | |
- name: Setup miniconda | |
id: setup_miniconda | |
continue-on-error: true | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.cleanup-conda-pkg-env }} | |
activate-environment: ${{ env.cleanup-env-name }} | |
- name: ReSetup miniconda | |
if: steps.setup_miniconda.outcome == 'failure' | |
uses: conda-incubator/setup-miniconda@505e6394dae86d6a5c7fbb6e3fb8938e3e863830 # v3.1.1 | |
with: | |
miniforge-version: latest | |
use-mamba: 'true' | |
conda-remove-defaults: 'true' | |
environment-file: ${{ env.cleanup-conda-pkg-env }} | |
activate-environment: ${{ env.cleanup-env-name }} | |
- name: Checkout repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
repository: IntelPython/devops-tools | |
fetch-depth: ${{ env.fetch-depth }} | |
- name: Cleanup old packages | |
run: | | |
python scripts/cleanup-old-packages.py \ | |
--verbose --force --token ${{ secrets.ANACONDA_TOKEN }} \ | |
--package dppy/${{ env.package-name }} --label dev |