diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c7a49825..b7be6ccc3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -90,261 +90,6 @@ jobs: name: asm_${{ matrix.name }} path: bld/asm/ - vis: - runs-on: ubuntu-20.04 - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - uses: actions/setup-node@v4 - with: - node-version: '18.x' - - name: Build vis - run: | - cd shared/vis - npm install - npm run build-prod - - name: Publish interpret-inline.js library - uses: actions/upload-artifact@v4 - with: - name: vis - path: shared/vis/dist - - npm: - needs: [bdist] # bdist is not needed but slow this step down - runs-on: ubuntu-20.04 - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - uses: actions/setup-node@v4 - with: - node-version: '18.x' - - name: Build npm package - run: | - cd shared/vis - npm install - npm run build-prod - npm pack - mkdir pkg - cp *.tgz pkg/ - - name: Publish npm package - uses: actions/upload-artifact@v4 - with: - name: npm - path: shared/vis/pkg - - R: - needs: [bdist] # bdist is not needed but slow this step down - runs-on: ubuntu-20.04 - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Build R package - run: | - cd R - sudo apt --yes update - sudo apt --yes install texlive-latex-base texlive-fonts-extra - Rscript build.R - - name: Display errors - if: failure() - run: cat bld/tmp/R/interpret.Rcheck/00install.out - - name: Publish R package - uses: actions/upload-artifact@v4 - with: - name: R - path: bld/R - - sdist: - runs-on: ubuntu-20.04 - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.9" - - name: Build sdist package - run: | - python -m pip install --upgrade pip setuptools wheel - cd python/interpret-core - python setup.py sdist -d ../../bld/sdist - cd ../interpret - python setup.py sdist -d ../../bld/sdist - - name: Publish sdist package - uses: actions/upload-artifact@v4 - with: - name: sdist - path: bld/sdist - - docs: - runs-on: ubuntu-20.04 - needs: [sdist] - permissions: - checks: write - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.9" - - name: Download sdist artifact - uses: actions/download-artifact@v4 - with: - name: sdist - path: bld/sdist - - name: Build docs - id: build_docs - continue-on-error: true - run: | - python -m pip install --upgrade pip setuptools wheel - install_file=$(echo bld/sdist/interpret_core-*.tar.gz) - install_file=$(basename "$install_file" .tar.gz) - python -m pip install "bld/sdist/$install_file.tar.gz[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" - cd "docs/" - pip install -r requirements.txt - /bin/sh ./build.sh - - name: Mark step with a warning - if: ${{ steps.build_docs.outcome == 'failure' }} - uses: actions/github-script@v6 - with: - script: | - github.rest.checks.create({ - owner: context.repo.owner, - repo: context.repo.repo, - name: 'Failed building docs', - head_sha: context.sha, - status: 'completed', - conclusion: 'neutral' - }) - - name: Publish docs - uses: actions/upload-artifact@v4 - with: - name: docs - path: docs/interpret/_build/html/ - - bdist: - runs-on: ubuntu-20.04 - needs: [bld, vis] - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.9" - - name: Download libebm artifacts - uses: actions/download-artifact@v4 - with: - pattern: libebm_* - merge-multiple: true - path: python/interpret-core/interpret/root/bld/lib/ - - name: Download vis artifact - uses: actions/download-artifact@v4 - with: - name: vis - path: python/interpret-core/interpret/root/bld/lib/ - - name: Build bdist package - run: | - python -m pip install --upgrade pip setuptools wheel - cd python/interpret-core - python setup.py bdist_wheel -d ../../bld/bdist - cd ../interpret - python setup.py bdist_wheel -d ../../bld/bdist - - name: Publish bdist package - uses: actions/upload-artifact@v4 - with: - name: bdist - path: bld/bdist - - powerlift: - needs: [bdist] # bdist is not needed but slow this step down - runs-on: ubuntu-20.04 - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.9" - - name: Build powerlift package - run: | - python -m pip install --upgrade pip setuptools wheel - cd python/powerlift - python setup.py bdist_wheel -d ../../bld/powerlift - - name: Publish powerlift package - uses: actions/upload-artifact@v4 - with: - name: powerlift - path: bld/powerlift - - test_powerlift: - needs: [powerlift] - strategy: - matrix: - include: - - name: linux_312_python - python_ver: "3.12" - image: ubuntu-latest - # - name: mac_312_python - # python_ver: "3.12" - # image: macos-latest - - name: win_312_python - python_ver: "3.12" - image: windows-latest - runs-on: ${{ matrix.image }} - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python_ver }} - - name: Download powerlift artifact - uses: actions/download-artifact@v4 - with: - name: powerlift - path: bld/powerlift - - name: pytest (non-win) - if: ${{ !startsWith(matrix.image, 'windows') }} - run: | - python -m pip install --upgrade pip setuptools wheel - install_file=$(echo bld/powerlift/powerlift-*.whl) - install_file=$(basename "$install_file" .whl) - python -m pip install "bld/powerlift/$install_file.whl[datasets,docker,postgres,mssql,aci,testing]" - mkdir -p "tmp/zqmr/t" - cp -R "python/powerlift/tests/" "tmp/zqmr/t/" - cd "tmp/zqmr/t" - python -m pytest -vv -n auto --cov=powerlift --cov-report=xml - - name: pytest (win) - if: ${{ startsWith(matrix.image, 'windows') }} - run: | - python -m pip install --upgrade pip setuptools wheel - $install_file = Get-ChildItem -Path "bld/powerlift" -Filter "powerlift-*.whl" - $install_file = $install_file.Name -replace '\.whl$', '' - $env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' - python -m pip install "bld/powerlift/$install_file.whl[datasets,docker,postgres,mssql,aci,testing]" - New-Item -Path "tmp/zqmr/t" -ItemType Directory -Force - xcopy /E "python\powerlift\tests\*" "tmp\zqmr\t\" - cd "tmp/zqmr/t" - $env:PATH += ";$env:GeckoWebDriver" - python -m pytest -vv -n auto --cov=powerlift --cov-report=xml - testC: needs: [bld] strategy: @@ -400,274 +145,3 @@ jobs: $env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' ./shared/libebm/tests/libebm_test.bat ${{ matrix.options }} ${{ matrix.existing }} ${{ matrix.scheduled }} - testS: - needs: [sdist] - strategy: - matrix: - include: - - name: linux_39_python - python_ver: "3.9" - image: ubuntu-latest - - name: linux_310_python - python_ver: "3.10" - image: ubuntu-latest - - name: linux_311_python - python_ver: "3.11" - image: ubuntu-latest - - name: linux_312_python - python_ver: "3.12" - image: ubuntu-latest - - name: mac_39_python - python_ver: "3.9" - image: macos-latest - - name: mac_310_python - python_ver: "3.10" - image: macos-latest - - name: mac_311_python - python_ver: "3.11" - image: macos-latest - - name: mac_312_python - python_ver: "3.12" - image: macos-latest - - name: win_39_python - python_ver: "3.9" - image: windows-latest - - name: win_310_python - python_ver: "3.10" - image: windows-latest - - name: win_311_python - python_ver: "3.11" - image: windows-latest - - name: win_312_python - python_ver: "3.12" - image: windows-latest - runs-on: ${{ matrix.image }} - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python_ver }} - - name: Download sdist artifact - uses: actions/download-artifact@v4 - with: - name: sdist - path: bld/sdist - - name: pytest (non-win) - if: ${{ !startsWith(matrix.image, 'windows') }} - run: | - python -m pip install --upgrade pip setuptools wheel - install_file=$(echo bld/sdist/interpret_core-*.tar.gz) - install_file=$(basename "$install_file" .tar.gz) - python -m pip install "bld/sdist/$install_file.tar.gz[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" - mkdir -p "tmp/zqmr/t" - tar -xzvf "bld/sdist/$install_file.tar.gz" -C "tmp/zqmr/t" "$install_file/tests" - cd "tmp/zqmr/t" - python -m pytest -vv -n auto --cov=interpret --cov-report=xml - - name: pytest (win) - if: ${{ startsWith(matrix.image, 'windows') }} - run: | - python -m pip install --upgrade pip setuptools wheel - $install_file = Get-ChildItem -Path "bld/sdist" -Filter "interpret_core-*.tar.gz" - $install_file = $install_file.Name -replace '\.tar\.gz$', '' - $env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' - python -m pip install "bld/sdist/$install_file.tar.gz[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" - New-Item -Path "tmp/zqmr/t" -ItemType Directory -Force - tar -xzvf "bld/sdist/$install_file.tar.gz" -C "tmp/zqmr/t" "$install_file/tests" - cd "tmp/zqmr/t" - $env:PATH += ";$env:GeckoWebDriver" - python -m pytest -vv -n auto --cov=interpret --cov-report=xml - - name: Code coverage report - if: always() - uses: codecov/codecov-action@v4 - with: - files: tmp/zqmr/t/coverage.xml - flags: sdist_${{ matrix.name }} - name: codecov_sdist_${{ matrix.name }} - token: ${{ secrets.CODECOV_TOKEN }} - - testB: - needs: [bdist] - strategy: - matrix: - include: - - name: linux_39_python - python_ver: "3.9" - image: ubuntu-latest - - name: linux_310_python - python_ver: "3.10" - image: ubuntu-latest - - name: linux_311_python - python_ver: "3.11" - image: ubuntu-latest - - name: linux_312_python - python_ver: "3.12" - image: ubuntu-latest - - name: mac_39_python - python_ver: "3.9" - image: macos-latest - - name: mac_310_python - python_ver: "3.10" - image: macos-latest - - name: mac_311_python - python_ver: "3.11" - image: macos-latest - - name: mac_312_python - python_ver: "3.12" - image: macos-latest - - name: win_39_python - python_ver: "3.9" - image: windows-latest - - name: win_310_python - python_ver: "3.10" - image: windows-latest - - name: win_311_python - python_ver: "3.11" - image: windows-latest - - name: win_312_python - python_ver: "3.12" - image: windows-latest - runs-on: ${{ matrix.image }} - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python_ver }} - - name: Download bdist artifact - uses: actions/download-artifact@v4 - with: - name: bdist - path: bld/bdist - - name: pytest (non-win) - if: ${{ !startsWith(matrix.image, 'windows') }} - run: | - python -m pip install --upgrade pip setuptools wheel - install_file=$(echo bld/bdist/interpret_core-*.whl) - install_file=$(basename "$install_file" .whl) - python -m pip install "bld/bdist/$install_file.whl[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" - mkdir -p "tmp/zqmr/t" - cp -R "python/interpret-core/tests/" "tmp/zqmr/t/" - cd "tmp/zqmr/t" - python -m pytest -vv -n auto --cov=interpret --cov-report=xml - - name: pytest (win) - if: ${{ startsWith(matrix.image, 'windows') }} - run: | - python -m pip install --upgrade pip setuptools wheel - $install_file = Get-ChildItem -Path "bld/bdist" -Filter "interpret_core-*.whl" - $install_file = $install_file.Name -replace '\.whl$', '' - $env:PATH += ';C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin' - python -m pip install "bld/bdist/$install_file.whl[debug,notebook,plotly,lime,sensitivity,shap,linear,treeinterpreter,aplr,dash,skoperules,testing]" - New-Item -Path "tmp/zqmr/t" -ItemType Directory -Force - xcopy /E "python\interpret-core\tests\*" "tmp\zqmr\t\" - cd "tmp/zqmr/t" - $env:PATH += ";$env:GeckoWebDriver" - python -m pytest -vv -n auto --cov=interpret --cov-report=xml - - name: Code coverage report - if: always() - uses: codecov/codecov-action@v4 - with: - files: tmp/zqmr/t/coverage.xml - flags: bdist_${{ matrix.name }} - name: codecov_bdist_${{ matrix.name }} - token: ${{ secrets.CODECOV_TOKEN }} - - testR: - needs: [R] - strategy: - matrix: - include: - - name: linux - image: ubuntu-latest - runs-on: ${{ matrix.image }} - steps: - - name: Set up R - uses: r-lib/actions/setup-r@v2 - with: - r-version: 'latest' - - name: Download R artifact - uses: actions/download-artifact@v4 - with: - name: R - path: bld/R - - name: R test - if: startsWith(matrix.image, 'ubuntu') - continue-on-error: true - run: | - sudo apt --yes update - sudo apt --yes install texlive-latex-base texlive-fonts-extra - install_file=$(echo bld/R/interpret_*.tar.gz) - install_file=$(basename "$install_file" .tar.gz) - cd bld/R - R CMD check --as-cran "$install_file.tar.gz" - - name: Display results - run: cat bld/R/interpret.Rcheck/00check.log - - format_clang: - runs-on: ubuntu-latest - permissions: - checks: write - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Check C++ code formatting with clang-format - id: check_cpp - continue-on-error: true - run: | - wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-16 main" | sudo tee /etc/apt/sources.list.d/llvm-toolchain-jammy-16.list - sudo apt --yes update - sudo apt --yes install clang-format-16 - find shared/libebm \( -iname "*.cpp" -o -iname "*.h" -o -iname "*.hpp" \) | xargs clang-format-16 -i -style=file - git diff --exit-code - - name: Mark step with a warning - if: ${{ steps.check_cpp.outcome == 'failure' }} - uses: actions/github-script@v6 - with: - script: | - github.rest.checks.create({ - owner: context.repo.owner, - repo: context.repo.repo, - name: 'Failed clang formatting check', - head_sha: context.sha, - status: 'completed', - conclusion: 'neutral' - }) - - format_ruff: - runs-on: ubuntu-latest - permissions: - checks: write - steps: - - name: Check out repo - uses: actions/checkout@v4 - with: - ref: ${{ github.event_name == 'workflow_dispatch' && inputs.commit_id || github.sha }} - - name: Check python matches ruff format - id: check_python - continue-on-error: true - run: | - cd python - python -m pip install --upgrade ruff - ruff format --check - - name: Mark step with a warning - if: ${{ steps.check_python.outcome == 'failure' }} - uses: actions/github-script@v6 - with: - script: | - github.rest.checks.create({ - owner: context.repo.owner, - repo: context.repo.repo, - name: 'Failed ruff formatting check', - head_sha: context.sha, - status: 'completed', - conclusion: 'neutral' - })