From 81705409f4f5628cb0ff2aa284b10c74c80010fb Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 16:10:15 -0400 Subject: [PATCH 01/17] MAINT Adds CPython 3.10 testing [python-dev] --- .github/workflows/cpython-nightly.yml | 58 +++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .github/workflows/cpython-nightly.yml diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml new file mode 100644 index 0000000000000..fea98b4678239 --- /dev/null +++ b/.github/workflows/cpython-nightly.yml @@ -0,0 +1,58 @@ +name: CPython Nightly + +on: + schedule: + # Nightly build at 1:00 A.M. on Sunday + - cron: "0 1 * * 0" + pull_request: + # Manual run + workflow_dispatch: + +jobs: + nightly: + name: Nightly CPython-${{ matrix.python-version }} + if: "github.repository == 'scikit-learn/scikit-learn' && contains(github.event.head_commit.message, '[python-dev]')" + runs-on: ubuntu-20.04 + strategy: + matrix: + include: + - python-version: '3.10.0-alpha - 3.10.x' + install-numpy: 'pip' + install-scipy: 'git' + env: + INSTALL_NUMPY: ${{ matrix.install-numpy }} + INSTALL_SCIPY: ${{ matrix.install-scipy }} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install build dependencies + run: | + sudo apt-get install libatlas-base-dev liblapack-dev gfortran libgmp-dev libmpfr-dev libsuitesparse-dev libmpc-dev + pip install --upgrade pip setuptools + - name: Install python dependencies + run: | + pip install pytest pytest-xdist cython pybind11 + - name: Install numpy + run: | + if [[ $INSTALL_NUMPY == "pip" ]]; then + pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple numpy + else + pip install git+https://github.com/numpy/numpy.git + fi + - name: Install scipy + run: | + if [[ $INSTALL_SCIPY == "pip" ]]; then + pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple scipy + else + pip install pybind11 + pip install git+https://github.com/serge-sans-paille/pythran.git + pip install git+https://github.com/scipy/scipy.git + fi + - name: Install scikit-learn + run: | + python setup.py install + - name: Test scikit-learn + run: | + cd /tmp && python -m pytest -n 2 --pyargs sklearn From 3c153db4bf1e91ec7c465baab18907a437646a70 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 16:38:28 -0400 Subject: [PATCH 02/17] MAINT Use 'wheel' instead for a flag --- .github/workflows/cpython-nightly.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index fea98b4678239..cfd61428d0dbb 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -17,7 +17,7 @@ jobs: matrix: include: - python-version: '3.10.0-alpha - 3.10.x' - install-numpy: 'pip' + install-numpy: 'wheel' install-scipy: 'git' env: INSTALL_NUMPY: ${{ matrix.install-numpy }} @@ -36,14 +36,14 @@ jobs: pip install pytest pytest-xdist cython pybind11 - name: Install numpy run: | - if [[ $INSTALL_NUMPY == "pip" ]]; then + if [[ $INSTALL_NUMPY == "wheel" ]]; then pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple numpy else pip install git+https://github.com/numpy/numpy.git fi - name: Install scipy run: | - if [[ $INSTALL_SCIPY == "pip" ]]; then + if [[ $INSTALL_SCIPY == "wheel" ]]; then pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple scipy else pip install pybind11 From 5f9152e0128bf9dc77a3d1bdab373d6306123716 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 16:40:41 -0400 Subject: [PATCH 03/17] MAINT Removes pybind11 when it is not needed [python-dev] --- .github/workflows/cpython-nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index cfd61428d0dbb..5072b6c122b7c 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -33,7 +33,7 @@ jobs: pip install --upgrade pip setuptools - name: Install python dependencies run: | - pip install pytest pytest-xdist cython pybind11 + pip install pytest pytest-xdist cython - name: Install numpy run: | if [[ $INSTALL_NUMPY == "wheel" ]]; then From c4b9a74a061b730a6822187fbd2ff9432830fd66 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 17:03:06 -0400 Subject: [PATCH 04/17] CLN Depend on pep517 more [python-dev] --- .github/workflows/cpython-nightly.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 5072b6c122b7c..7d41e81d4d3c4 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -46,13 +46,11 @@ jobs: if [[ $INSTALL_SCIPY == "wheel" ]]; then pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple scipy else - pip install pybind11 - pip install git+https://github.com/serge-sans-paille/pythran.git pip install git+https://github.com/scipy/scipy.git fi - name: Install scikit-learn run: | - python setup.py install + pip install --no-build-isolation . - name: Test scikit-learn run: | cd /tmp && python -m pytest -n 2 --pyargs sklearn From bed166bea7a3f9a773f7fd66adc042fa926658ab Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 21:08:42 -0400 Subject: [PATCH 05/17] CLN Check skipping --- .github/workflows/cpython-nightly.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 7d41e81d4d3c4..04ca2d3743bf2 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -11,7 +11,6 @@ on: jobs: nightly: name: Nightly CPython-${{ matrix.python-version }} - if: "github.repository == 'scikit-learn/scikit-learn' && contains(github.event.head_commit.message, '[python-dev]')" runs-on: ubuntu-20.04 strategy: matrix: From 51a4a32b7a85abaa14da6fb6362848e344708f50 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 21:14:59 -0400 Subject: [PATCH 06/17] WIP [python-dev] --- .github/workflows/cpython-nightly.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 04ca2d3743bf2..7d41e81d4d3c4 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -11,6 +11,7 @@ on: jobs: nightly: name: Nightly CPython-${{ matrix.python-version }} + if: "github.repository == 'scikit-learn/scikit-learn' && contains(github.event.head_commit.message, '[python-dev]')" runs-on: ubuntu-20.04 strategy: matrix: From ae99c7244813a21a4c10f59fc23bc336897927b8 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 21:16:11 -0400 Subject: [PATCH 07/17] WIP [python-dev] --- .github/workflows/cpython-nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 7d41e81d4d3c4..4d5fe3fa5cdbf 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -11,7 +11,7 @@ on: jobs: nightly: name: Nightly CPython-${{ matrix.python-version }} - if: "github.repository == 'scikit-learn/scikit-learn' && contains(github.event.head_commit.message, '[python-dev]')" + if: "github.repository == 'scikit-learn/scikit-learn'" runs-on: ubuntu-20.04 strategy: matrix: From 84403c54d64655ed9c9e27070ad6aa3fb45b27db Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 21:23:18 -0400 Subject: [PATCH 08/17] WIP [python-dev] --- .github/workflows/cpython-nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 4d5fe3fa5cdbf..07e169dc9d974 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -11,7 +11,7 @@ on: jobs: nightly: name: Nightly CPython-${{ matrix.python-version }} - if: "github.repository == 'scikit-learn/scikit-learn'" + if: "github.repository == 'scikit-learn/scikit-learn' && contains(github.event.commits[0].message, '[python-dev]')" runs-on: ubuntu-20.04 strategy: matrix: From 8c1992b8bbab3da143dc3ff558e79e167e47d14d Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 21:40:41 -0400 Subject: [PATCH 09/17] WIP [python-dev] --- .github/workflows/cpython-nightly.yml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 07e169dc9d974..4cc92d9859374 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -9,9 +9,33 @@ on: workflow_dispatch: jobs: + check_build_trigger: + name: Check build trigger + runs-on: ubuntu-latest + if: github.repository == 'scikit-learn/scikit-learn' + outputs: + build: ${{ steps.check_build_trigger.outputs.build }} + + steps: + - name: Checkout scikit-learn + uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - id: check_build_trigger + name: Check build trigger + run: | + COMMIT_MSG=$(git log --no-merges -1 --oneline) + # The commit marker "[cd build]" will trigger the build when required + if [[ "$GITHUB_EVENT_NAME" == schedule || + "$COMMIT_MSG" =~ \[python-dev\] ]]; then + echo "::set-output name=build::true" + fi + nightly: name: Nightly CPython-${{ matrix.python-version }} - if: "github.repository == 'scikit-learn/scikit-learn' && contains(github.event.commits[0].message, '[python-dev]')" + needs: check_build_trigger + if: needs.check_build_trigger.outputs.build runs-on: ubuntu-20.04 strategy: matrix: From 8b4095f082065de6b6c07fecb4ed58ae0d666579 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 21:53:25 -0400 Subject: [PATCH 10/17] WIP [python-dev] --- .github/workflows/cpython-nightly.yml | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 4cc92d9859374..3ba4e2f8e594e 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -9,12 +9,12 @@ on: workflow_dispatch: jobs: - check_build_trigger: + get_latest_commit: name: Check build trigger runs-on: ubuntu-latest - if: github.repository == 'scikit-learn/scikit-learn' + if: "github.repository == 'scikit-learn/scikit-learn'" outputs: - build: ${{ steps.check_build_trigger.outputs.build }} + message: ${{ steps.get_commit.outputs.commit_msg }} steps: - name: Checkout scikit-learn @@ -22,20 +22,16 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - - id: check_build_trigger - name: Check build trigger + - id: get_commit + name: Get commit run: | COMMIT_MSG=$(git log --no-merges -1 --oneline) - # The commit marker "[cd build]" will trigger the build when required - if [[ "$GITHUB_EVENT_NAME" == schedule || - "$COMMIT_MSG" =~ \[python-dev\] ]]; then - echo "::set-output name=build::true" - fi + echo "::set-output name=commit_msg::$COMMIT_MSG" nightly: name: Nightly CPython-${{ matrix.python-version }} - needs: check_build_trigger - if: needs.check_build_trigger.outputs.build + needs: get_latest_commit + if: "contains(needs.get_latest_commit.outputs.commit_msg, '[python-dev]') || github.event_name == 'schedule' || github.event_name == 'workflow_run'" runs-on: ubuntu-20.04 strategy: matrix: From e7444acbbb0046d9f462353b6c1712002c0a52da Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 22:01:03 -0400 Subject: [PATCH 11/17] WIP [python-dev] --- .github/workflows/cpython-nightly.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 3ba4e2f8e594e..5e33a0793d9ef 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -25,8 +25,7 @@ jobs: - id: get_commit name: Get commit run: | - COMMIT_MSG=$(git log --no-merges -1 --oneline) - echo "::set-output name=commit_msg::$COMMIT_MSG" + echo "::set-output name=commit_msg::$(git log --no-merges -1 --oneline)" nightly: name: Nightly CPython-${{ matrix.python-version }} From c98f8f2d0ed43a6cbeac9990d8a2b1d0cb0092cd Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Sat, 4 Sep 2021 22:07:11 -0400 Subject: [PATCH 12/17] WIP [python-dev] --- .github/workflows/cpython-nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 5e33a0793d9ef..2758c5b7194cb 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest if: "github.repository == 'scikit-learn/scikit-learn'" outputs: - message: ${{ steps.get_commit.outputs.commit_msg }} + commit_msg: ${{ steps.get_commit.outputs.commit_msg }} steps: - name: Checkout scikit-learn From d5df2ea594704cd9a24060bf54266ff5ec253ef3 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 6 Sep 2021 15:07:51 -0400 Subject: [PATCH 13/17] BUG Install wheel [python-dev] --- .github/workflows/cpython-nightly.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 2758c5b7194cb..0d241f9ba60d2 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -52,7 +52,7 @@ jobs: pip install --upgrade pip setuptools - name: Install python dependencies run: | - pip install pytest pytest-xdist cython + pip install pytest pytest-xdist cython wheel - name: Install numpy run: | if [[ $INSTALL_NUMPY == "wheel" ]]; then From 72bf47b3bf08a26f60b37ed3a18207940ba4c116 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 6 Sep 2021 18:11:01 -0400 Subject: [PATCH 14/17] MAINT Adds cache --- .github/workflows/cpython-nightly.yml | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index 0d241f9ba60d2..c5192f2da7f8f 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -50,26 +50,35 @@ jobs: run: | sudo apt-get install libatlas-base-dev liblapack-dev gfortran libgmp-dev libmpfr-dev libsuitesparse-dev libmpc-dev pip install --upgrade pip setuptools + - name: Setup cache + uses: hendrikmuhs/ccache-action@v1 + with: + max-size: 1000M - name: Install python dependencies run: | pip install pytest pytest-xdist cython wheel - name: Install numpy run: | + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [[ $INSTALL_NUMPY == "wheel" ]]; then pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple numpy else - pip install git+https://github.com/numpy/numpy.git + git clone --recursive https://github.com/numpy/numpy.git ~/numpy + cd ~/numpy && pip install -e . fi - name: Install scipy run: | + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" if [[ $INSTALL_SCIPY == "wheel" ]]; then pip install -i https://pypi.anaconda.org/scipy-wheels-nightly/simple scipy else - pip install git+https://github.com/scipy/scipy.git + git clone --recursive https://github.com/scipy/scipy.git ~/scipy + cd ~/scipy && pip install -e . fi - name: Install scikit-learn run: | - pip install --no-build-isolation . + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" + pip install --no-build-isolation -e . - name: Test scikit-learn run: | cd /tmp && python -m pytest -n 2 --pyargs sklearn From 7d4d06f735e83ffb360dfec4e36a424ffa39f26d Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 6 Sep 2021 18:14:58 -0400 Subject: [PATCH 15/17] BLD [python-dev] From a645d22f0807d520ad908cf453ff6691968acd38 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 10 Sep 2021 09:12:30 -0400 Subject: [PATCH 16/17] CLN Address comments --- .github/workflows/cpython-nightly.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index c5192f2da7f8f..e43c3953dc0e3 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -27,7 +27,7 @@ jobs: run: | echo "::set-output name=commit_msg::$(git log --no-merges -1 --oneline)" - nightly: + nightly-cpython: name: Nightly CPython-${{ matrix.python-version }} needs: get_latest_commit if: "contains(needs.get_latest_commit.outputs.commit_msg, '[python-dev]') || github.event_name == 'schedule' || github.event_name == 'workflow_run'" @@ -41,6 +41,8 @@ jobs: env: INSTALL_NUMPY: ${{ matrix.install-numpy }} INSTALL_SCIPY: ${{ matrix.install-scipy }} + OMP_NUM_THREADS: '2' + OPENBLAS_NUM_THREADS: '2' steps: - uses: actions/checkout@v2 - uses: actions/setup-python@v2 @@ -78,7 +80,7 @@ jobs: - name: Install scikit-learn run: | export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH" - pip install --no-build-isolation -e . + pip install -v --no-build-isolation -e . - name: Test scikit-learn run: | cd /tmp && python -m pytest -n 2 --pyargs sklearn From 8f2fb8238fcad6403043d9ae7fb35c250a3bec00 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Wed, 15 Sep 2021 09:48:29 -0400 Subject: [PATCH 17/17] ENH Actually make it nightly --- .github/workflows/cpython-nightly.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cpython-nightly.yml b/.github/workflows/cpython-nightly.yml index e43c3953dc0e3..137157bc7e4a3 100644 --- a/.github/workflows/cpython-nightly.yml +++ b/.github/workflows/cpython-nightly.yml @@ -2,8 +2,8 @@ name: CPython Nightly on: schedule: - # Nightly build at 1:00 A.M. on Sunday - - cron: "0 1 * * 0" + # Nightly build at 1:00 A.M. + - cron: "0 1 * * *" pull_request: # Manual run workflow_dispatch: