diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml deleted file mode 100644 index de59f415..00000000 --- a/.github/workflows/automerge.yml +++ /dev/null @@ -1,21 +0,0 @@ -name: Bot auto-merge -on: - pull_request: # yamllint disable-line rule:truthy - workflow_run: - workflows: ["Black", "Coverage", "Pip check", "Minimal Installation Test", "Notebooks", "Unittests", "Unittest Lower Bound"] - types: [completed] - -permissions: - contents: write - pull-requests: write - -jobs: - autobot: - runs-on: ubuntu-latest - if: (github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'pre-commit-ci[bot]') && github.event.pull_request.conclusion == 'success' && github.repository == 'pyiron/pysqa' - steps: - - name: Enable auto-merge for bot PRs - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/black.yml b/.github/workflows/black.yml deleted file mode 100644 index 41abd1d4..00000000 --- a/.github/workflows/black.yml +++ /dev/null @@ -1,18 +0,0 @@ -# This workflow is used to check the differences and find conflict markers or whitespace errors - -name: Black - -on: - push: - branches: [ main ] - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: psf/black@stable - with: - options: "--check --diff" - src: ./${{ github.event.repository.name }} diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml deleted file mode 100644 index f3f817a8..00000000 --- a/.github/workflows/coverage.yml +++ /dev/null @@ -1,46 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Coverage - -on: - push: - branches: [ main ] - pull_request: - -env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }} - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup environment - run: | - cp .ci_support/environment.yml environment.yml - echo "- flux-core =0.59.0" >> environment.yml - echo -e "channels:\n - conda-forge\n" > .condarc - - name: Setup Mambaforge - uses: conda-incubator/setup-miniconda@v3 - with: - python-version: '3.12' - miniforge-version: latest - condarc-file: .condarc - environment-file: environment.yml - - name: Install - shell: bash -l {0} - run: | - pip install versioneer[toml]==0.29 - pip install . --no-deps --no-build-isolation - - name: Test - shell: bash -l {0} - run: > - flux start - coverage run --omit="pysqa/_version.py,tests/*" -m unittest discover tests - - name: Collect Coverage - shell: bash -l {0} - run: coverage xml - - name: Coveralls - uses: coverallsapp/github-action@v2 diff --git a/.github/workflows/format_black.yml b/.github/workflows/format_black.yml deleted file mode 100644 index 283b41e0..00000000 --- a/.github/workflows/format_black.yml +++ /dev/null @@ -1,35 +0,0 @@ -# This workflow will checkout the branch of the PR, apply black formatting and commit the result to the PR. Does not work for forks. - -name: Format black - -on: - pull_request: - types: [labeled] - -jobs: - build: - if: contains(github.event.pull_request.labels.*.name, 'format_black' ) - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - token: ${{ secrets.DEPENDABOT_WORKFLOW_TOKEN }} - ref: ${{ github.event.pull_request.head.ref }} # Check out the head of the actual branch, not the PR - fetch-depth: 0 # otherwise, you will fail to push refs to dest repo - - name: format black - uses: psf/black@stable - with: - options: "" - src: ./${{ github.event.repository.name }} - - name: commit - run: | - git config --local user.email "pyiron@mpie.de" - git config --local user.name "pyiron-runner" - git commit -m "Format black" -a - - name: push - uses: ad-m/github-push-action@master - with: - github_token: ${{ secrets.DEPENDABOT_WORKFLOW_TOKEN }} - branch: ${{ github.event.pull_request.head.ref }} diff --git a/.github/workflows/mini.yml b/.github/workflows/mini.yml deleted file mode 100644 index 43ceaea1..00000000 --- a/.github/workflows/mini.yml +++ /dev/null @@ -1,36 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Minimal Installation Test - -on: - push: - branches: [ main ] - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Setup environment - run: | - cp .ci_support/environment.yml environment.yml - sed -i '/defusedxml/d' environment.yml - sed -i '/paramiko/d' environment.yml - sed -i '/tqdm/d' environment.yml - echo -e "channels:\n - conda-forge\n" > .condarc - - name: Setup Mambaforge - uses: conda-incubator/setup-miniconda@v3 - with: - python-version: '3.13' - miniforge-version: latest - condarc-file: .condarc - environment-file: environment.yml - - name: Test - shell: bash -l {0} - run: | - pip install versioneer[toml]==0.29 - pip install . --no-deps --no-build-isolation - python -m unittest discover tests diff --git a/.github/workflows/notebooks.yml b/.github/workflows/notebooks.yml deleted file mode 100644 index 6e3e42db..00000000 --- a/.github/workflows/notebooks.yml +++ /dev/null @@ -1,43 +0,0 @@ -# This workflow is used to test, if the code is compatible with jupyter notebooks providing usage examples - -name: Notebooks - -on: - push: - branches: [ main ] - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Merge Notebook environment - run: | - cp binder/environment.yml environment.yml - tail --lines=+4 .ci_support/environment-notebooks.yml >> environment.yml - echo -e "channels:\n - conda-forge\n" > .condarc - - name: Setup Mambaforge - uses: conda-incubator/setup-miniconda@v3 - with: - python-version: "3.12" - miniforge-version: latest - condarc-file: .condarc - environment-file: environment.yml - - name: Install - shell: bash -l {0} - run: | - pip install versioneer[toml]==0.29 - pip install . --no-deps --no-build-isolation - mkdir config - cp -r tests/config/flux config - - name: Notebooks with config - shell: bash -l {0} - run: > - flux start - papermill notebooks/example_config.ipynb example-config-out.ipynb -k "python3" - - name: Notebooks dynamic - shell: bash -l {0} - run: > - flux start - papermill notebooks/example_queue_type.ipynb example-queue-type-out.ipynb -k "python3" diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml new file mode 100644 index 00000000..7eb62cfd --- /dev/null +++ b/.github/workflows/pipeline.yml @@ -0,0 +1,238 @@ +name: Pipeline + +on: + push: + branches: [ main ] + pull_request: + +jobs: + black: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: psf/black@stable + with: + options: "--check --diff" + src: ./${{ github.event.repository.name }} + + black_fix: # in most cases pre-commit is faster + needs: [black] + if: failure() + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + token: ${{ secrets.DEPENDABOT_WORKFLOW_TOKEN }} + ref: ${{ github.event.pull_request.head.ref }} # Check out the head of the actual branch, not the PR + fetch-depth: 0 # otherwise, you will fail to push refs to dest repo + - name: format black + uses: psf/black@stable + with: + options: "" + src: "./${{ github.event.repository.name }}" + - name: commit + run: | + git config --local user.email "pyiron@mpie.de" + git config --local user.name "pyiron-runner" + git commit -m "Format black" -a + - name: push + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.DEPENDABOT_WORKFLOW_TOKEN }} + branch: ${{ github.event.pull_request.head.ref }} + + coverage: + needs: [black] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup environment + run: | + cp .ci_support/environment.yml environment.yml + echo "- flux-core =0.59.0" >> environment.yml + echo -e "channels:\n - conda-forge\n" > .condarc + - name: Setup Mambaforge + uses: conda-incubator/setup-miniconda@v3 + with: + python-version: '3.12' + miniforge-version: latest + condarc-file: .condarc + environment-file: environment.yml + - name: Install + shell: bash -l {0} + run: | + pip install versioneer[toml]==0.29 + pip install . --no-deps --no-build-isolation + - name: Test + shell: bash -l {0} + run: > + flux start + coverage run --omit="pysqa/_version.py,tests/*" -m unittest discover tests + - name: Collect Coverage + shell: bash -l {0} + run: coverage xml + - name: Coveralls + uses: coverallsapp/github-action@v2 + + minimal: + needs: [black] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup environment + run: | + cp .ci_support/environment.yml environment.yml + sed -i '/defusedxml/d' environment.yml + sed -i '/paramiko/d' environment.yml + sed -i '/tqdm/d' environment.yml + echo -e "channels:\n - conda-forge\n" > .condarc + - name: Setup Mambaforge + uses: conda-incubator/setup-miniconda@v3 + with: + python-version: '3.13' + miniforge-version: latest + condarc-file: .condarc + environment-file: environment.yml + - name: Test + shell: bash -l {0} + run: | + pip install versioneer[toml]==0.29 + pip install . --no-deps --no-build-isolation + python -m unittest discover tests + + notebooks: + needs: [black] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Merge Notebook environment + run: | + cp binder/environment.yml environment.yml + tail --lines=+4 .ci_support/environment-notebooks.yml >> environment.yml + echo -e "channels:\n - conda-forge\n" > .condarc + - name: Setup Mambaforge + uses: conda-incubator/setup-miniconda@v3 + with: + python-version: "3.12" + miniforge-version: latest + condarc-file: .condarc + environment-file: environment.yml + - name: Install + shell: bash -l {0} + run: | + pip install versioneer[toml]==0.29 + pip install . --no-deps --no-build-isolation + mkdir config + cp -r tests/config/flux config + - name: Notebooks with config + shell: bash -l {0} + run: > + flux start + papermill notebooks/example_config.ipynb example-config-out.ipynb -k "python3" + - name: Notebooks dynamic + shell: bash -l {0} + run: > + flux start + papermill notebooks/example_queue_type.ipynb example-queue-type-out.ipynb -k "python3" + + pip_check: + needs: [black] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Conda config + run: echo -e "channels:\n - conda-forge\n" > .condarc + - name: Setup Mambaforge + uses: conda-incubator/setup-miniconda@v3 + with: + python-version: '3.13' + miniforge-version: latest + condarc-file: .condarc + environment-file: .ci_support/environment.yml + - name: Pip check + shell: bash -l {0} + run: | + pip install versioneer[toml]==0.29 + pip install . --no-deps --no-build-isolation + pip check + + unittest_matrix: + needs: [black] + runs-on: ${{ matrix.operating-system }} + strategy: + matrix: + include: + - operating-system: macos-latest + python-version: '3.13' + + - operating-system: windows-latest + python-version: '3.13' + + - operating-system: ubuntu-latest + python-version: '3.13' + + - operating-system: ubuntu-latest + python-version: '3.12' + + - operating-system: ubuntu-latest + python-version: '3.11' + + - operating-system: ubuntu-latest + python-version: '3.10' + + - operating-system: ubuntu-latest + python-version: 3.9 + + steps: + - uses: actions/checkout@v4 + - name: Conda config + shell: bash -l {0} + run: echo -e "channels:\n - conda-forge\n" > .condarc + - name: Setup Mambaforge + uses: conda-incubator/setup-miniconda@v3 + with: + python-version: ${{ matrix.python-version }} + miniforge-version: latest + condarc-file: .condarc + environment-file: .ci_support/environment.yml + - name: Test + shell: bash -l {0} + run: | + pip install versioneer[toml]==0.29 + pip install . --no-deps --no-build-isolation + python -m unittest discover tests + + unittest_old: + needs: [black] + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Conda config + run: echo -e "channels:\n - conda-forge\n" > .condarc + - name: Setup Mambaforge + uses: conda-incubator/setup-miniconda@v3 + with: + python-version: '3.9' + miniforge-version: latest + condarc-file: .condarc + environment-file: .ci_support/environment-old.yml + - name: Test + shell: bash -l {0} + run: | + pip install versioneer[toml]==0.29 + pip install . --no-deps --no-build-isolation + python -m unittest discover tests + + autobot: + needs: [unittest_old, unittest_matrix, pip_check, notebooks, minimal, coverage] + permissions: + contents: write + pull-requests: write + runs-on: ubuntu-latest + if: (github.event.pull_request.user.login == 'dependabot[bot]' || github.event.pull_request.user.login == 'pre-commit-ci[bot]') + steps: + - name: Enable auto-merge for bot PRs + run: gh pr merge --auto --squash "$PR_URL" + env: + PR_URL: ${{github.event.pull_request.html_url}} + GH_TOKEN: ${{secrets.GITHUB_TOKEN}} \ No newline at end of file diff --git a/.github/workflows/pypicheck.yml b/.github/workflows/pypicheck.yml deleted file mode 100644 index 6af8d244..00000000 --- a/.github/workflows/pypicheck.yml +++ /dev/null @@ -1,31 +0,0 @@ -# This workflow is used to test, if the installation of the pypi package works - -name: Pip check - -on: - push: - branches: [ main ] - pull_request: - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: Conda config - run: echo -e "channels:\n - conda-forge\n" > .condarc - - name: Setup Mambaforge - uses: conda-incubator/setup-miniconda@v3 - with: - python-version: '3.13' - miniforge-version: latest - condarc-file: .condarc - environment-file: .ci_support/environment.yml - - name: Pip check - shell: bash -l {0} - run: | - pip install versioneer[toml]==0.29 - pip install . --no-deps --no-build-isolation - pip check diff --git a/.github/workflows/unittest.yml b/.github/workflows/unittest.yml deleted file mode 100644 index 32a9e8c7..00000000 --- a/.github/workflows/unittest.yml +++ /dev/null @@ -1,55 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Unittests - -on: - push: - branches: [ main ] - pull_request: - -jobs: - build: - runs-on: ${{ matrix.operating-system }} - strategy: - matrix: - include: - - operating-system: macos-latest - python-version: '3.13' - - - operating-system: windows-latest - python-version: '3.13' - - - operating-system: ubuntu-latest - python-version: '3.13' - - - operating-system: ubuntu-latest - python-version: '3.12' - - - operating-system: ubuntu-latest - python-version: '3.11' - - - operating-system: ubuntu-latest - python-version: '3.10' - - - operating-system: ubuntu-latest - python-version: 3.9 - - steps: - - uses: actions/checkout@v4 - - name: Conda config - shell: bash -l {0} - run: echo -e "channels:\n - conda-forge\n" > .condarc - - name: Setup Mambaforge - uses: conda-incubator/setup-miniconda@v3 - with: - python-version: ${{ matrix.python-version }} - miniforge-version: latest - condarc-file: .condarc - environment-file: .ci_support/environment.yml - - name: Test - shell: bash -l {0} - run: | - pip install versioneer[toml]==0.29 - pip install . --no-deps --no-build-isolation - python -m unittest discover tests diff --git a/.github/workflows/unittests_old.yml b/.github/workflows/unittests_old.yml deleted file mode 100644 index 1fb43d30..00000000 --- a/.github/workflows/unittests_old.yml +++ /dev/null @@ -1,30 +0,0 @@ -# This workflow will install Python dependencies, run tests and lint with a variety of Python versions -# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions - -name: Unittest Lower Bound - -on: - push: - branches: [ main ] - pull_request: - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Conda config - run: echo -e "channels:\n - conda-forge\n" > .condarc - - name: Setup Mambaforge - uses: conda-incubator/setup-miniconda@v3 - with: - python-version: '3.9' - miniforge-version: latest - condarc-file: .condarc - environment-file: .ci_support/environment-old.yml - - name: Test - shell: bash -l {0} - run: | - pip install versioneer[toml]==0.29 - pip install . --no-deps --no-build-isolation - python -m unittest discover tests diff --git a/README.md b/README.md index 96686a4d..8f86775e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # pysqa -[![Unittests](https://github.com/pyiron/pysqa/actions/workflows/unittest.yml/badge.svg)](https://github.com/pyiron/pysqa/actions/workflows/unittest.yml) +[![Pipeline](https://github.com/pyiron/pysqa/actions/workflows/pipeline.yml/badge.svg)](https://github.com/pyiron/pysqa/actions/workflows/pipeline.yml) [![Documentation Status](https://readthedocs.org/projects/pysqa/badge/?version=latest)](https://pysqa.readthedocs.io/en/latest/?badge=latest) [![Coverage Status](https://coveralls.io/repos/github/pyiron/pysqa/badge.svg?branch=main)](https://coveralls.io/github/pyiron/pysqa?branch=main) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/pyiron/pysqa/HEAD?labpath=example_config.ipynb)