Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions .github/workflows/pdoc.yml
Original file line number Diff line number Diff line change
@@ -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 - <<EOF
import glob, nbformat
for notebook_path in glob.glob('examples/PyMPDATA_examples/*/*.ipynb'):
with open(notebook_path, encoding="utf8") as fin:
with open(notebook_path + ".badges.md", 'w') as fout:
fout.write(nbformat.read(fin, nbformat.NO_CONVERT).cells[0].source)
EOF

PDOC_ALLOW_EXEC=1 python -We -m pdoc -o html PyMPDATA examples/PyMPDATA_examples -t docs/templates --math
- if: ${{ github.ref == 'refs/heads/main' && matrix.platform == 'ubuntu-latest' }}
uses: JamesIves/github-pages-deploy-action@4.1.1
with:
branch: pdoc
folder: html
clean: true
57 changes: 57 additions & 0 deletions .github/workflows/pypi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: pypi

defaults:
run:
shell: bash

on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: '0 13 * * 4'
release:
types: [published]

jobs:
dist:
strategy:
matrix:
package-dir: [".", "examples"]
fail-fast: false
runs-on: ubuntu-latest
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
169 changes: 46 additions & 123 deletions .github/workflows/tests+pypi.yml → .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: tests+pypi
name: tests

defaults:
run:
Expand All @@ -11,8 +11,6 @@ on:
branches: [ main ]
schedule:
- cron: '0 13 * * 4'
release:
types: [published]

jobs:
precommit:
Expand All @@ -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:
Expand All @@ -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 - <<EOF
import glob, nbformat
for notebook_path in glob.glob('examples/PyMPDATA_examples/*/*.ipynb'):
with open(notebook_path, encoding="utf8") as fin:
with open(notebook_path + ".badges.md", 'w') as fout:
fout.write(nbformat.read(fin, nbformat.NO_CONVERT).cells[0].source)
EOF

PDOC_ALLOW_EXEC=1 python -We -m pdoc -o html PyMPDATA examples/PyMPDATA_examples -t docs/templates --math
- if: ${{ github.ref == 'refs/heads/main' && matrix.platform == 'ubuntu-latest' }}
uses: JamesIves/github-pages-deploy-action@4.1.1
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:
BRANCH: pdoc
FOLDER: html
CLEAN: true

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'
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
verbose: true

tests:
timeout-minutes: 120
needs: [nojit_and_codecov, pylint, pdoc, precommit, zenodo_json]
needs: [nojit_and_codecov]
strategy:
matrix:
platform: [ubuntu-latest, macos-13, macos-14, windows-latest]
Expand All @@ -138,7 +116,7 @@ jobs:
- uses: actions/checkout@v2
with:
submodules: recursive
fetch-depth: 0
fetch-depth: 0

- uses: actions/setup-python@v5.2.0
with:
Expand All @@ -152,7 +130,7 @@ jobs:
# https://github.com/numba/numba/issues/6350#issuecomment-728174860
- if: startsWith(matrix.platform, 'ubuntu-')
run: echo NUMBA_THREADING_LAYER=omp >> $GITHUB_ENV

- env:
NUMBA_OPT: 1
run: |
Expand All @@ -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]
Expand Down Expand Up @@ -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:
Expand All @@ -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