diff --git a/.github/workflows/pdoc.yml b/.github/workflows/pdoc.yml new file mode 100644 index 00000000..95ce637e --- /dev/null +++ b/.github/workflows/pdoc.yml @@ -0,0 +1,49 @@ +name: pdoc + +defaults: + run: + shell: bash + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + schedule: + - cron: '0 13 * * 4' + +jobs: + pdoc: + strategy: + matrix: + platform: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + persist-credentials: false + - uses: actions/setup-python@v5.2.0 + with: + python-version: 3.9 + - env: + JUPYTER_PLATFORM_DIRS: 1 + run: | + pip3 install pdoc nbformat + pip install -e . -e ./examples + + python - <&1 | tee build.log + exit `fgrep -v "warning: no previously-included files matching" buid.log | fgrep -i warning | wc -l` + twine check --strict dist/* + exit `tar tzf dist/*.tar.gz | fgrep ".ipynb" | wc -l` + cd .. + + - if: github.event_name == 'push' && github.ref == 'refs/heads/main' + uses: pypa/gh-action-pypi-publish@release/v1.12 + with: + attestations: false + repository_url: https://test.pypi.org/legacy/ + packages-dir: ${{ matrix.package-dir }}/dist + + - if: startsWith(github.ref, 'refs/tags') + uses: pypa/gh-action-pypi-publish@release/v1.12 + with: + attestations: false + packages-dir: ${{ matrix.package-dir }}/dist diff --git a/.github/workflows/tests+pypi.yml b/.github/workflows/tests.yml similarity index 67% rename from .github/workflows/tests+pypi.yml rename to .github/workflows/tests.yml index 9adbf8e4..ffecfce9 100644 --- a/.github/workflows/tests+pypi.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -name: tests+pypi +name: tests defaults: run: @@ -11,8 +11,6 @@ on: branches: [ main ] schedule: - cron: '0 13 * * 4' - release: - types: [published] jobs: precommit: @@ -21,44 +19,20 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-python@v5.2.0 with: - python-version: "3.10" + python-version: "3.10" - run: | pip install pre-commit pre-commit clean pre-commit autoupdate pre-commit run --all-files - nojit_and_codecov: - runs-on: ubuntu-latest - env: - NUMBA_DISABLE_JIT: 1 - steps: - - uses: actions/checkout@master - with: - submodules: recursive - fetch-depth: 0 - - uses: actions/setup-python@v5.2.0 - with: - python-version: 3.9 - - name: Generate coverage report - run: | - pip install -e .[tests] -e ./examples - pip install pytest-cov - pytest --durations=10 -We tests/unit_tests --cov-report=xml --cov=PyMPDATA - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 - with: - token: ${{ secrets.CODECOV_TOKEN }} - fail_ci_if_error: true - verbose: true - pylint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 with: submodules: recursive - fetch-depth: 0 + fetch-depth: 0 - name: Set up Python 3.9 uses: actions/setup-python@v5.2.0 with: @@ -79,53 +53,57 @@ jobs: # TODO #299 nbqa pylint --disable=fixme,trailing-whitespace,wrong-import-position,wrong-import-order,ungrouped-imports \ --disable=duplicate-code,invalid-name,missing-module-docstring,line-too-long,missing-function-docstring,redefined-outer-name,too-many-arguments,no-member,too-many-locals,cell-var-from-loop,missing-class-docstring $(git ls-files '*.ipynb') - pdoc: - strategy: - matrix: - platform: [ubuntu-latest, macos-latest, windows-latest] - runs-on: ${{ matrix.platform }} + + zenodo_json: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - uses: notiz-dev/github-action-json-property@release + with: + path: '.zenodo.json' + prop_path: 'creators' + + devops: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + submodules: recursive + fetch-depth: 0 # https://github.com/pypa/setuptools_scm/issues/480 + - run: pip install -r tests/devops_tests/requirements.txt + - run: pip install -e . -e ./examples + - env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: pytest --durations=10 -v -s -We -p no:unraisableexception -k "not run_notebooks" tests/devops_tests + + nojit_and_codecov: + needs: [ precommit, pylint, zenodo_json, devops ] + runs-on: ubuntu-latest + env: + NUMBA_DISABLE_JIT: 1 + steps: + - uses: actions/checkout@master with: submodules: recursive - persist-credentials: false + fetch-depth: 0 - uses: actions/setup-python@v5.2.0 with: python-version: 3.9 - - env: - JUPYTER_PLATFORM_DIRS: 1 + - name: Generate coverage report run: | - pip3 install pdoc nbformat - pip install -e . -e ./examples - - python - <> $GITHUB_ENV - + - env: NUMBA_OPT: 1 run: | @@ -165,7 +143,7 @@ jobs: python -m pytest --durations=10 -p no:unraisableexception -We -k "test_timing_3d" tests/smoke_tests examples: - needs: [pylint, precommit] + needs: [nojit_and_codecov] strategy: matrix: platform: [ubuntu-latest, macos-13, macos-14, windows-latest] @@ -217,7 +195,7 @@ jobs: # uses: mxschmitt/action-tmate@v3 # with: # limit-access-to-actor: true - + - if: ${{ github.ref == 'refs/heads/main' && matrix.platform == 'ubuntu-latest' && matrix.python-version == '3.12'}} uses: eine/tip@master with: @@ -226,58 +204,3 @@ jobs: /github/home/figures/*.svg /github/home/figures/*.gif - devops: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - fetch-depth: 0 # https://github.com/pypa/setuptools_scm/issues/480 - - run: pip install -r tests/devops_tests/requirements.txt - - run: pip install -e . -e ./examples - - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: pytest --durations=10 -v -s -We -p no:unraisableexception -k "not run_notebooks" tests/devops_tests - - dist: - strategy: - matrix: - package-dir: [".", "examples"] - fail-fast: false - runs-on: ubuntu-latest - needs: [tests, examples, devops] - permissions: - id-token: write - steps: - - uses: actions/checkout@v2 - with: - submodules: recursive - fetch-depth: 0 # https://github.com/pypa/setuptools_scm/issues/480 - - uses: actions/setup-python@v5.2.0 - with: - python-version: "3.10" - - - run: pip install twine build - - - run: | - unset CI - cd ${{ matrix.package-dir }} - python -m build 2>&1 | tee build.log - exit `fgrep -v "warning: no previously-included files matching" buid.log | fgrep -i warning | wc -l` - twine check --strict dist/* - exit `tar tzf dist/*.tar.gz | fgrep ".ipynb" | wc -l` - cd .. - - - if: github.event_name == 'push' && github.ref == 'refs/heads/main' - uses: pypa/gh-action-pypi-publish@release/v1.12 - with: - attestations: false - repository_url: https://test.pypi.org/legacy/ - packages-dir: ${{ matrix.package-dir }}/dist - - - if: startsWith(github.ref, 'refs/tags') - uses: pypa/gh-action-pypi-publish@release/v1.12 - with: - attestations: false - packages-dir: ${{ matrix.package-dir }}/dist -