Contributing#
Branches#
branch |
role |
who changes it |
|---|---|---|
|
default branch, all work lands here |
pull requests, reviewed |
|
releases |
the owner, by promoting |
|
your work |
you |
A push to main publishes the changed packages on PyPI and deploys the web page.
A change in this repository#
git switch develop && git pull
git switch -c feature/<topic>
# work, commit
git push -u origin feature/<topic>
Open a pull request into
develop.The tests of the changed components run on the pull request. They must pass.
A code owner reviews (
.github/CODEOWNERS). Answer the comments with new commits.After the approval, merge.
Without write access: fork the repository, push the branch to the fork and open the pull request from there. The first run of the tests on a fork waits for an approval by a maintainer.
A change in a backend repository#
The backends with their own toolchain live in their own repositories, included here as submodules:
library/zoomy_amrex, library/zoomy_foam, library/zoomy_gui, library/zoomy_dmplex,
library/zoomy_firedrake, library/zoomy_fenicsx.
Each has one protected branch, main.
Pull request in the backend repository, into its
main, reviewed as above.After the merge, a pull request here into
developthat moves the submodule pointer:
git -C library/zoomy_amrex switch main && git -C library/zoomy_amrex pull
git add library/zoomy_amrex
git commit -m "zoomy_amrex: <what changed>"
A pointer to a commit that exists only in a fork fails the check Submodule pointers resolvable.
Tests#
tier |
when |
scope |
|---|---|---|
on change |
every pull request and push |
the fast tests of the changed components, at most 5 minutes each |
weekly |
Sunday night |
every test whose run takes at most 30 minutes |
manual |
before a release |
the full cross-backend matrix and the timings |
How to run them locally: Testing. A new tutorial: Adding a tutorial.
Conventions#
Docstrings and documentation in Markdown.
Options are typed enums, not strings.
Short commit messages that say what changed.
New third-party components go into the acknowledgements (
docs/book/references/third_party.bib).
Releases#
The version of a package is the version line of its pyproject.toml.
Raise it in the pull request that should be released. When main receives it, the package is published.