From 1f3e73361553bce1e7656338eb8e556cc3d0f68e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20K=C3=B6hler?= <27728103+Ceyron@users.noreply.github.com> Date: Fri, 18 Oct 2024 10:57:06 +0200 Subject: [PATCH 1/5] Add warning --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 3f5832c..599d703 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ + ⚠️ ⚠️ ⚠️ This is a pre-release version of the package to test the PyPI workflow. Proper release **with breaking API changes** will be by end of October. ⚠️ ⚠️ ⚠️

From a9a772a3f2f2d7991b71a28429d1b8a756835f47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20K=C3=B6hler?= <27728103+Ceyron@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:00:54 +0200 Subject: [PATCH 2/5] Add Test workflow --- .github/workflows/test.yml | 33 +++++++++++++++++++++++++++++++++ tests/requirements.txt | 2 ++ 2 files changed, 35 insertions(+) create mode 100644 .github/workflows/test.yml create mode 100644 tests/requirements.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..38457ee --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,33 @@ +name: Run tests + +on: [push, pull_request] + +permissions: + contents: read + +jobs: + run-test: + strategy: + matrix: + python-version: [ "3.10", "3.11", "3.12" ] + os: [ ubuntu-latest ] + fail-fast: false + runs-on: ${{ matrix.os }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r ./tests/requirements.txt + + - name: Test with pytest + run: | + python -m pip install . + python -m pytest tests/ \ No newline at end of file diff --git a/tests/requirements.txt b/tests/requirements.txt new file mode 100644 index 0000000..df05b4d --- /dev/null +++ b/tests/requirements.txt @@ -0,0 +1,2 @@ +jaxlib +pytest From 3cb90d30f2039fb70d619b23648d10f67e17d909 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20K=C3=B6hler?= <27728103+Ceyron@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:03:53 +0200 Subject: [PATCH 3/5] Rework readme --- README.md | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 599d703..92ecd80 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,5 @@ ⚠️ ⚠️ ⚠️ This is a pre-release version of the package to test the PyPI workflow. Proper release **with breaking API changes** will be by end of October. ⚠️ ⚠️ ⚠️ -

- -
- Exponax -
-

-

Efficient Differentiable PDE solvers built on top of JAX & Equinox.

@@ -16,7 +9,7 @@ DocumentationBackgroundRelated • - License + Acknowledgements

@@ -26,10 +19,10 @@ ## Installation ```bash -pip install git+ssh://git@github.com/Ceyron/exponax@main +pip install exponax ``` -Requires Python 3.10+ and JAX 0.4.13+ (and Equinox & Matplotlib). 👉 [JAX install guide](https://jax.readthedocs.io/en/latest/installation.html). +Requires Python 3.10+ and JAX 0.4.13+. 👉 [JAX install guide](https://jax.readthedocs.io/en/latest/installation.html). ## Quickstart @@ -91,13 +84,7 @@ For a next step, check out the [simple_advection_example_1d.ipynb](examples/simp ## Documentation -The following Jupyter notebooks showcase the usage of the package: - -1. [Simple Advection Example in 1d](docs/examples/simple_advection_example_1d.ipynb) -2. ... - -The documentation is still in progress. For now, the best way to get started is -to look at the examples and the docstrings in the code. +Documentation is available at [fkoehler.site/exponax](https://fkoehler.site/exponax/). ## Background @@ -169,12 +156,23 @@ This package also took much inspiration from the integral method of [2] and how to handle (de)aliasing. -## License +## Acknowledgements + +### Citation + +This package was developed as part of the `APEBench paper` (accepted at Neurips 2024), we will soon add the citation here. + +### Funding + +The main author (Felix Koehler) is a PhD student in the group of [Prof. Thuerey at TUM](https://ge.in.tum.de/) and his research is funded by the [Munich Center for Machine Learning](https://mcml.ai/). + +### License -MIT, see [here](LICENSE.txt) +MIT, see [here](https://github.com/Ceyron/exponax/blob/main/LICENSE.txt) --- > [fkoehler.site](https://fkoehler.site/)  ·  > GitHub [@ceyron](https://github.com/ceyron)  ·  -> X [@felix_m_koehler](https://twitter.com/felix_m_koehler) +> X [@felix_m_koehler](https://twitter.com/felix_m_koehler)  ·  +> LinkedIn [Felix Köhler](www.linkedin.com/in/felix-koehler) From 824154b37b18408b6111f1f0d1001b9f5d8f47c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20K=C3=B6hler?= <27728103+Ceyron@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:05:45 +0200 Subject: [PATCH 4/5] Ignore 3D visualization tests for now --- tests/test_viz.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_viz.py b/tests/test_viz.py index 045ac57..0440727 100644 --- a/tests/test_viz.py +++ b/tests/test_viz.py @@ -28,8 +28,8 @@ def test_plot_state_2d(): plt.close(fig) -def test_plot_state_3d(): - state = jax.random.normal(jax.random.PRNGKey(0), (1, 32, 32, 32)) +# def test_plot_state_3d(): +# state = jax.random.normal(jax.random.PRNGKey(0), (1, 32, 32, 32)) - fig = ex.viz.plot_state_3d(state) - plt.close(fig) +# fig = ex.viz.plot_state_3d(state) +# plt.close(fig) From 8959079f16863ae9122be9a607da068208d8271c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20K=C3=B6hler?= <27728103+Ceyron@users.noreply.github.com> Date: Fri, 18 Oct 2024 11:07:27 +0200 Subject: [PATCH 5/5] Add PyPI publishing workflow --- .github/workflows/publish.yml | 71 +++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml new file mode 100644 index 0000000..f5a7e15 --- /dev/null +++ b/.github/workflows/publish.yml @@ -0,0 +1,71 @@ +name: Publish Python Package + +on: + release: + types: [created] + +permissions: + contents: read + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: pip + cache-dependency-path: pyproject.toml + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r ./tests/requirements.txt + + - name: Run tests + run: | + python -m pip install . + python -m pytest tests/ + build: + runs-on: ubuntu-latest + needs: [test] + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: pyproject.toml + - name: Install dependencies + run: | + pip install setuptools wheel build + - name: Build + run: | + python -m build + - name: Store the distribution packages + uses: actions/upload-artifact@v4 + with: + name: python-packages + path: dist/ + publish: + name: Publish to PyPI + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + needs: [build] + environment: release + permissions: + id-token: write + steps: + - name: Download distribution packages + uses: actions/download-artifact@v4 + with: + name: python-packages + path: dist/ + - name: Publish to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 +