ember-cfd 0.1.0a1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ember_cfd-0.1.0a1/.flake8 +2 -0
- ember_cfd-0.1.0a1/.github/workflows/ci.yml +36 -0
- ember_cfd-0.1.0a1/.github/workflows/wheels.yml +113 -0
- ember_cfd-0.1.0a1/.gitignore +59 -0
- ember_cfd-0.1.0a1/.pre-commit-config.yaml +72 -0
- ember_cfd-0.1.0a1/.python-version +1 -0
- ember_cfd-0.1.0a1/.readthedocs.yaml +24 -0
- ember_cfd-0.1.0a1/COPYING +674 -0
- ember_cfd-0.1.0a1/Makefile +43 -0
- ember_cfd-0.1.0a1/PKG-INFO +114 -0
- ember_cfd-0.1.0a1/README.md +91 -0
- ember_cfd-0.1.0a1/docs/Makefile +12 -0
- ember_cfd-0.1.0a1/docs/_ext/tikz.py +102 -0
- ember_cfd-0.1.0a1/docs/_static/_tikz/cell_indexing_64b0bfa32a6f.svg +463 -0
- ember_cfd-0.1.0a1/docs/_static/_tikz/cell_indexing_6d75a7f863f0.svg +469 -0
- ember_cfd-0.1.0a1/docs/_static/_tikz/cell_indexing_c791f18305c0.svg +471 -0
- ember_cfd-0.1.0a1/docs/_static/_tikz/coordinate_system_5c381a977fe8.svg +88 -0
- ember_cfd-0.1.0a1/docs/_tikz/cell_indexing.tikz +150 -0
- ember_cfd-0.1.0a1/docs/_tikz/coordinate_system.tikz +90 -0
- ember_cfd-0.1.0a1/docs/algorithm.rst +223 -0
- ember_cfd-0.1.0a1/docs/api/average.rst +7 -0
- ember_cfd-0.1.0a1/docs/api/block.rst +8 -0
- ember_cfd-0.1.0a1/docs/api/convergence_history.rst +6 -0
- ember_cfd-0.1.0a1/docs/api/cut.rst +7 -0
- ember_cfd-0.1.0a1/docs/api/fluid.rst +14 -0
- ember_cfd-0.1.0a1/docs/api/grid.rst +8 -0
- ember_cfd-0.1.0a1/docs/api/patch.rst +95 -0
- ember_cfd-0.1.0a1/docs/api/solver.rst +11 -0
- ember_cfd-0.1.0a1/docs/auto_examples/images/sphx_glr_run_duct_001.png +0 -0
- ember_cfd-0.1.0a1/docs/auto_examples/images/sphx_glr_run_duct_002.png +0 -0
- ember_cfd-0.1.0a1/docs/auto_examples/images/thumb/sphx_glr_run_duct_thumb.png +0 -0
- ember_cfd-0.1.0a1/docs/auto_examples/run_duct.codeobj.json +884 -0
- ember_cfd-0.1.0a1/docs/auto_examples/run_duct.ipynb +223 -0
- ember_cfd-0.1.0a1/docs/auto_examples/run_duct.py +345 -0
- ember_cfd-0.1.0a1/docs/auto_examples/run_duct.py.md5 +1 -0
- ember_cfd-0.1.0a1/docs/auto_examples/run_duct.rst +557 -0
- ember_cfd-0.1.0a1/docs/auto_examples/run_duct.zip +0 -0
- ember_cfd-0.1.0a1/docs/conf.py +134 -0
- ember_cfd-0.1.0a1/docs/coordinate_system.rst +149 -0
- ember_cfd-0.1.0a1/docs/index.rst +36 -0
- ember_cfd-0.1.0a1/docs/install.rst +116 -0
- ember_cfd-0.1.0a1/docs/references.rst +7 -0
- ember_cfd-0.1.0a1/docs/refs.bib +54 -0
- ember_cfd-0.1.0a1/docs/solver_configuration.rst +15 -0
- ember_cfd-0.1.0a1/examples/README.txt +10 -0
- ember_cfd-0.1.0a1/examples/plot_block_basics.py +305 -0
- ember_cfd-0.1.0a1/examples/plot_cut_average.py +147 -0
- ember_cfd-0.1.0a1/examples/plot_isentropic_nozzle.py +160 -0
- ember_cfd-0.1.0a1/examples/plot_joule_cycle.py +115 -0
- ember_cfd-0.1.0a1/examples/plot_patches.py +179 -0
- ember_cfd-0.1.0a1/examples/plot_shocked_nozzle.py +208 -0
- ember_cfd-0.1.0a1/examples/run_duct.py +336 -0
- ember_cfd-0.1.0a1/pyproject.toml +87 -0
- ember_cfd-0.1.0a1/scripts/duct_cfl_sweep.sh +77 -0
- ember_cfd-0.1.0a1/scripts/mg_irs_bench.py +201 -0
- ember_cfd-0.1.0a1/scripts/run_duct.py +245 -0
- ember_cfd-0.1.0a1/setup.cfg +4 -0
- ember_cfd-0.1.0a1/setup.py +174 -0
- ember_cfd-0.1.0a1/src/ember/__init__.py +34 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/adapt.f90 +196 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/block.f90 +1 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/distribute.f90 +209 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/filter.f90 +94 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/geometry.f90 +285 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/indexing.f90 +86 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/inline_info.txt +0 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/interpolate.f90 +284 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/matvec.f90 +262 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/mixing.f90 +234 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/multigrid.f90 +191 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/operators.f90 +146 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/perfect.f90 +1 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/perturbation.f90 +362 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/polar.f90 +52 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/residual.f90 +984 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/scree.f90 +672 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/smooth_const.f90 +474 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/smooth_v2.f90 +881 -0
- ember_cfd-0.1.0a1/src/ember/_fortran/viscous.f90 +836 -0
- ember_cfd-0.1.0a1/src/ember/average.py +440 -0
- ember_cfd-0.1.0a1/src/ember/basepatch.py +956 -0
- ember_cfd-0.1.0a1/src/ember/block.py +3030 -0
- ember_cfd-0.1.0a1/src/ember/block_restart.py +282 -0
- ember_cfd-0.1.0a1/src/ember/block_util.py +558 -0
- ember_cfd-0.1.0a1/src/ember/collections.py +778 -0
- ember_cfd-0.1.0a1/src/ember/convergence_history.py +877 -0
- ember_cfd-0.1.0a1/src/ember/cooling.py +81 -0
- ember_cfd-0.1.0a1/src/ember/cusp.py +118 -0
- ember_cfd-0.1.0a1/src/ember/cut.py +1097 -0
- ember_cfd-0.1.0a1/src/ember/fluid.py +1147 -0
- ember_cfd-0.1.0a1/src/ember/fluxes.py +283 -0
- ember_cfd-0.1.0a1/src/ember/geometry.py +597 -0
- ember_cfd-0.1.0a1/src/ember/grid.py +2290 -0
- ember_cfd-0.1.0a1/src/ember/inlet.py +216 -0
- ember_cfd-0.1.0a1/src/ember/inviscid.py +24 -0
- ember_cfd-0.1.0a1/src/ember/mixing.py +350 -0
- ember_cfd-0.1.0a1/src/ember/mixing_communicator.py +260 -0
- ember_cfd-0.1.0a1/src/ember/nonmatch.py +123 -0
- ember_cfd-0.1.0a1/src/ember/nonmatch_communicator.py +146 -0
- ember_cfd-0.1.0a1/src/ember/outlet.py +580 -0
- ember_cfd-0.1.0a1/src/ember/patch.py +192 -0
- ember_cfd-0.1.0a1/src/ember/periodic.py +94 -0
- ember_cfd-0.1.0a1/src/ember/periodic_communicator.py +216 -0
- ember_cfd-0.1.0a1/src/ember/perturbation.py +630 -0
- ember_cfd-0.1.0a1/src/ember/plot3d.py +326 -0
- ember_cfd-0.1.0a1/src/ember/probe.py +29 -0
- ember_cfd-0.1.0a1/src/ember/rotating.py +68 -0
- ember_cfd-0.1.0a1/src/ember/set_iter.py +651 -0
- ember_cfd-0.1.0a1/src/ember/solver.py +556 -0
- ember_cfd-0.1.0a1/src/ember/struct.py +806 -0
- ember_cfd-0.1.0a1/src/ember/ts3.py +1581 -0
- ember_cfd-0.1.0a1/src/ember/util.py +1740 -0
- ember_cfd-0.1.0a1/src/ember/util_yaml.py +73 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/PKG-INFO +114 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/SOURCES.txt +179 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/dependency_links.txt +1 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/not-zip-safe +1 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/requires.txt +4 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/scm_file_list.json +175 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/scm_version.json +8 -0
- ember_cfd-0.1.0a1/src/ember_cfd.egg-info/top_level.txt +1 -0
- ember_cfd-0.1.0a1/tests/conftest.py +141 -0
- ember_cfd-0.1.0a1/tests/data/F_body_golden.npz +0 -0
- ember_cfd-0.1.0a1/tests/data/duct.cnv +0 -0
- ember_cfd-0.1.0a1/tests/data/log_duct.txt +5718 -0
- ember_cfd-0.1.0a1/tests/data/residual_golden.npz +0 -0
- ember_cfd-0.1.0a1/tests/test_average.py +987 -0
- ember_cfd-0.1.0a1/tests/test_block.py +2739 -0
- ember_cfd-0.1.0a1/tests/test_block_copy_patches.py +299 -0
- ember_cfd-0.1.0a1/tests/test_block_core.py +483 -0
- ember_cfd-0.1.0a1/tests/test_block_i_perk.py +37 -0
- ember_cfd-0.1.0a1/tests/test_block_set_iterative.py +1370 -0
- ember_cfd-0.1.0a1/tests/test_block_util.py +1101 -0
- ember_cfd-0.1.0a1/tests/test_convergence_history.py +504 -0
- ember_cfd-0.1.0a1/tests/test_cut.py +1717 -0
- ember_cfd-0.1.0a1/tests/test_cut_scipy_parity.py +125 -0
- ember_cfd-0.1.0a1/tests/test_fluid.py +590 -0
- ember_cfd-0.1.0a1/tests/test_fluxes.py +256 -0
- ember_cfd-0.1.0a1/tests/test_geometry.py +1116 -0
- ember_cfd-0.1.0a1/tests/test_grid.py +991 -0
- ember_cfd-0.1.0a1/tests/test_grid_connectivity.py +686 -0
- ember_cfd-0.1.0a1/tests/test_grid_resample.py +966 -0
- ember_cfd-0.1.0a1/tests/test_grid_utilities.py +2161 -0
- ember_cfd-0.1.0a1/tests/test_inviscid_patch.py +159 -0
- ember_cfd-0.1.0a1/tests/test_io.py +1413 -0
- ember_cfd-0.1.0a1/tests/test_mg_irs.py +301 -0
- ember_cfd-0.1.0a1/tests/test_mixing_integration.py +132 -0
- ember_cfd-0.1.0a1/tests/test_multigrid.py +386 -0
- ember_cfd-0.1.0a1/tests/test_nonmatch_communicator.py +537 -0
- ember_cfd-0.1.0a1/tests/test_nonmatch_patch.py +362 -0
- ember_cfd-0.1.0a1/tests/test_operators.py +400 -0
- ember_cfd-0.1.0a1/tests/test_outlet.py +273 -0
- ember_cfd-0.1.0a1/tests/test_patch.py +4673 -0
- ember_cfd-0.1.0a1/tests/test_periodic_communicator.py +199 -0
- ember_cfd-0.1.0a1/tests/test_perturbation.py +596 -0
- ember_cfd-0.1.0a1/tests/test_polar_source.py +124 -0
- ember_cfd-0.1.0a1/tests/test_read_probe_dat.py +376 -0
- ember_cfd-0.1.0a1/tests/test_residual_golden.py +140 -0
- ember_cfd-0.1.0a1/tests/test_residual_smoothing.py +133 -0
- ember_cfd-0.1.0a1/tests/test_scree_mg.py +452 -0
- ember_cfd-0.1.0a1/tests/test_set_F_body_golden.py +144 -0
- ember_cfd-0.1.0a1/tests/test_smooth.py +430 -0
- ember_cfd-0.1.0a1/tests/test_struct.py +1856 -0
- ember_cfd-0.1.0a1/tests/test_timestep_diffusion.py +96 -0
- ember_cfd-0.1.0a1/tests/test_ts3_probe.py +223 -0
- ember_cfd-0.1.0a1/tests/test_ts3_readback.py +178 -0
- ember_cfd-0.1.0a1/tests/test_update_filter.py +127 -0
- ember_cfd-0.1.0a1/tests/test_util.py +1876 -0
- ember_cfd-0.1.0a1/tests/test_viscous_periodic.py +153 -0
- ember_cfd-0.1.0a1/tests/test_wdist.py +289 -0
- ember_cfd-0.1.0a1/tools/build_docs.sh +8 -0
- ember_cfd-0.1.0a1/tools/check_compile.sh +47 -0
- ember_cfd-0.1.0a1/tools/check_dead_code.sh +15 -0
- ember_cfd-0.1.0a1/tools/check_member_order.py +120 -0
- ember_cfd-0.1.0a1/tools/check_no_claude_commit_msg.sh +10 -0
- ember_cfd-0.1.0a1/tools/check_no_typing.sh +26 -0
- ember_cfd-0.1.0a1/tools/check_spec0.py +85 -0
- ember_cfd-0.1.0a1/tools/check_stale_build_artifacts.sh +29 -0
- ember_cfd-0.1.0a1/tools/compile_wilkes.sh +107 -0
- ember_cfd-0.1.0a1/tools/profile_main_loop.py +39 -0
- ember_cfd-0.1.0a1/uv.lock +2238 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
|
|
14
|
+
- name: Install build dependencies
|
|
15
|
+
run: sudo apt-get update && sudo apt-get install -y gfortran ninja-build
|
|
16
|
+
|
|
17
|
+
- name: Install uv
|
|
18
|
+
uses: astral-sh/setup-uv@v5
|
|
19
|
+
|
|
20
|
+
- name: Install dependencies
|
|
21
|
+
run: uv sync --no-install-project
|
|
22
|
+
|
|
23
|
+
- name: Build wheel
|
|
24
|
+
run: uv build --wheel
|
|
25
|
+
|
|
26
|
+
- name: Install wheel
|
|
27
|
+
run: uv pip install --no-deps dist/*.whl
|
|
28
|
+
|
|
29
|
+
- name: Test
|
|
30
|
+
run: uv run --no-sync pytest tests
|
|
31
|
+
|
|
32
|
+
- name: Lint
|
|
33
|
+
run: uv run --no-sync ruff check src tests
|
|
34
|
+
|
|
35
|
+
- name: Check SPEC 0 compliance
|
|
36
|
+
run: uv run --no-sync python tools/check_spec0.py
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
name: Build wheels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-wheels:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v4
|
|
13
|
+
with:
|
|
14
|
+
# setuptools-scm needs full history and tags to compute the version
|
|
15
|
+
fetch-depth: 0
|
|
16
|
+
|
|
17
|
+
- name: Build wheels
|
|
18
|
+
uses: pypa/cibuildwheel@v4.1.0
|
|
19
|
+
|
|
20
|
+
- name: Build sdist
|
|
21
|
+
run: pipx run build --sdist --outdir wheelhouse
|
|
22
|
+
|
|
23
|
+
- uses: actions/upload-artifact@v4
|
|
24
|
+
with:
|
|
25
|
+
name: wheels
|
|
26
|
+
path: |
|
|
27
|
+
wheelhouse/*.whl
|
|
28
|
+
wheelhouse/*.tar.gz
|
|
29
|
+
|
|
30
|
+
verify-install:
|
|
31
|
+
needs: build-wheels
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/download-artifact@v4
|
|
35
|
+
with:
|
|
36
|
+
name: wheels
|
|
37
|
+
path: wheelhouse
|
|
38
|
+
|
|
39
|
+
- name: Start local package index
|
|
40
|
+
run: |
|
|
41
|
+
mkdir -p packages
|
|
42
|
+
pipx run --spec pypiserver pypi-server run -p 8080 -a . -P . packages &
|
|
43
|
+
# First run has to install pypiserver into a fresh pipx venv, so
|
|
44
|
+
# poll for readiness instead of assuming a fixed startup delay.
|
|
45
|
+
for i in $(seq 1 30); do
|
|
46
|
+
curl -sf http://localhost:8080/simple/ && break
|
|
47
|
+
sleep 1
|
|
48
|
+
done
|
|
49
|
+
curl -sf http://localhost:8080/simple/
|
|
50
|
+
|
|
51
|
+
- name: Publish wheels to local index
|
|
52
|
+
run: pipx run twine upload --repository-url http://localhost:8080/ -u x -p x wheelhouse/*.whl
|
|
53
|
+
|
|
54
|
+
- name: Install from local index
|
|
55
|
+
run: |
|
|
56
|
+
python -m venv verify-venv
|
|
57
|
+
verify-venv/bin/pip install --index-url http://localhost:8080/simple/ ember-cfd
|
|
58
|
+
|
|
59
|
+
- name: Smoke test the installed wheel
|
|
60
|
+
run: |
|
|
61
|
+
verify-venv/bin/python -c "from ember.fortran import set_residual; print('OK')"
|
|
62
|
+
|
|
63
|
+
publish-testpypi:
|
|
64
|
+
needs: verify-install
|
|
65
|
+
runs-on: ubuntu-latest
|
|
66
|
+
environment: testpypi
|
|
67
|
+
permissions:
|
|
68
|
+
id-token: write
|
|
69
|
+
steps:
|
|
70
|
+
- uses: actions/download-artifact@v4
|
|
71
|
+
with:
|
|
72
|
+
name: wheels
|
|
73
|
+
path: wheelhouse
|
|
74
|
+
|
|
75
|
+
- name: Publish to TestPyPI
|
|
76
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
77
|
+
with:
|
|
78
|
+
repository-url: https://test.pypi.org/legacy/
|
|
79
|
+
packages-dir: wheelhouse/
|
|
80
|
+
# Re-running a tag must not fail here just because TestPyPI already
|
|
81
|
+
# holds that version; publish-pypi is gated on this job succeeding.
|
|
82
|
+
skip-existing: true
|
|
83
|
+
|
|
84
|
+
- name: Install from TestPyPI
|
|
85
|
+
run: |
|
|
86
|
+
python -m venv testpypi-venv
|
|
87
|
+
# Dependencies (numpy, h5py, ...) generally aren't published on
|
|
88
|
+
# TestPyPI, so fall back to real PyPI for anything it's missing.
|
|
89
|
+
testpypi-venv/bin/pip install \
|
|
90
|
+
--index-url https://test.pypi.org/simple/ \
|
|
91
|
+
--extra-index-url https://pypi.org/simple/ \
|
|
92
|
+
ember-cfd
|
|
93
|
+
|
|
94
|
+
- name: Smoke test the installed package
|
|
95
|
+
run: |
|
|
96
|
+
testpypi-venv/bin/python -c "from ember.fortran import set_residual; print('OK')"
|
|
97
|
+
|
|
98
|
+
publish-pypi:
|
|
99
|
+
needs: publish-testpypi
|
|
100
|
+
runs-on: ubuntu-latest
|
|
101
|
+
environment: pypi
|
|
102
|
+
permissions:
|
|
103
|
+
id-token: write
|
|
104
|
+
steps:
|
|
105
|
+
- uses: actions/download-artifact@v4
|
|
106
|
+
with:
|
|
107
|
+
name: wheels
|
|
108
|
+
path: wheelhouse
|
|
109
|
+
|
|
110
|
+
- name: Publish to PyPI
|
|
111
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
112
|
+
with:
|
|
113
|
+
packages-dir: wheelhouse/
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Python-generated files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[oc]
|
|
4
|
+
build/
|
|
5
|
+
dist/
|
|
6
|
+
wheels/
|
|
7
|
+
*.egg-info
|
|
8
|
+
.coverage
|
|
9
|
+
|
|
10
|
+
examples/.ipynb_checkpoints
|
|
11
|
+
|
|
12
|
+
# Virtual environments
|
|
13
|
+
.venv
|
|
14
|
+
|
|
15
|
+
# Claude Code project instructions
|
|
16
|
+
CLAUDE.md
|
|
17
|
+
.claude/
|
|
18
|
+
|
|
19
|
+
*so
|
|
20
|
+
*.mod
|
|
21
|
+
|
|
22
|
+
# Editable install directory
|
|
23
|
+
/ember/
|
|
24
|
+
|
|
25
|
+
# Benchmark scripts
|
|
26
|
+
benchmark_*.py
|
|
27
|
+
|
|
28
|
+
doc/_build/
|
|
29
|
+
doc/_static/
|
|
30
|
+
docs/_build/
|
|
31
|
+
|
|
32
|
+
# sphinx-gallery generated output. plot_*.py examples are cheap and always
|
|
33
|
+
# regenerated, so their output stays ignored. run_*.py examples are expensive
|
|
34
|
+
# (see examples/README.txt) -- their generated output is committed so RTD and
|
|
35
|
+
# other clean-clone builds reuse it via sphinx-gallery's md5 cache instead of
|
|
36
|
+
# re-running the example; run `make docs-full` and `git add` the results
|
|
37
|
+
# after changing a run_*.py example.
|
|
38
|
+
docs/auto_examples/*
|
|
39
|
+
!docs/auto_examples/run_*
|
|
40
|
+
!docs/auto_examples/images
|
|
41
|
+
docs/auto_examples/images/*
|
|
42
|
+
!docs/auto_examples/images/sphx_glr_run_*.png
|
|
43
|
+
!docs/auto_examples/images/thumb
|
|
44
|
+
docs/auto_examples/images/thumb/*
|
|
45
|
+
!docs/auto_examples/images/thumb/sphx_glr_run_*.png
|
|
46
|
+
docs/sg_execution_times.rst
|
|
47
|
+
|
|
48
|
+
*.pkl
|
|
49
|
+
for-reference/
|
|
50
|
+
|
|
51
|
+
# Reference papers, profiler dumps, Fortran sources
|
|
52
|
+
*.pdf
|
|
53
|
+
*.lprof
|
|
54
|
+
*.f
|
|
55
|
+
|
|
56
|
+
# Archived/untracked scratch scripts and study outputs
|
|
57
|
+
archive/
|
|
58
|
+
|
|
59
|
+
matplotlibrc
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
3
|
+
rev: v6.0.0
|
|
4
|
+
hooks:
|
|
5
|
+
- id: trailing-whitespace
|
|
6
|
+
- id: end-of-file-fixer
|
|
7
|
+
- id: check-merge-conflict
|
|
8
|
+
- id: check-yaml
|
|
9
|
+
- id: check-toml
|
|
10
|
+
- id: debug-statements
|
|
11
|
+
|
|
12
|
+
- repo: local
|
|
13
|
+
hooks:
|
|
14
|
+
- id: check-fortran
|
|
15
|
+
name: check fortran syntax
|
|
16
|
+
entry: tools/check_compile.sh
|
|
17
|
+
language: script
|
|
18
|
+
files: \.f90$
|
|
19
|
+
pass_filenames: false
|
|
20
|
+
|
|
21
|
+
- id: check-no-typing
|
|
22
|
+
name: check no type annotations
|
|
23
|
+
entry: tools/check_no_typing.sh
|
|
24
|
+
language: script
|
|
25
|
+
files: ^src/ember/.*\.py$
|
|
26
|
+
pass_filenames: false
|
|
27
|
+
|
|
28
|
+
- id: check-dead-code
|
|
29
|
+
name: check dead code
|
|
30
|
+
entry: tools/check_dead_code.sh
|
|
31
|
+
language: script
|
|
32
|
+
pass_filenames: false
|
|
33
|
+
|
|
34
|
+
- id: check-stale-build-artifacts
|
|
35
|
+
name: check stale build artifacts
|
|
36
|
+
entry: tools/check_stale_build_artifacts.sh
|
|
37
|
+
language: script
|
|
38
|
+
pass_filenames: false
|
|
39
|
+
|
|
40
|
+
- id: check-member-order
|
|
41
|
+
name: check class member order
|
|
42
|
+
entry: uv run python tools/check_member_order.py
|
|
43
|
+
language: system
|
|
44
|
+
files: ^src/ember/.*\.py$
|
|
45
|
+
pass_filenames: true
|
|
46
|
+
|
|
47
|
+
- id: run-tests
|
|
48
|
+
name: run tests
|
|
49
|
+
entry: uv run pytest tests -q --tb=short
|
|
50
|
+
language: system
|
|
51
|
+
pass_filenames: false
|
|
52
|
+
always_run: true
|
|
53
|
+
|
|
54
|
+
- id: build-docs
|
|
55
|
+
name: build docs
|
|
56
|
+
entry: tools/build_docs.sh
|
|
57
|
+
language: script
|
|
58
|
+
files: ^(docs/.*|src/ember/.*\.py)$
|
|
59
|
+
pass_filenames: false
|
|
60
|
+
|
|
61
|
+
- id: no-claude-in-commit-msg
|
|
62
|
+
name: no Claude in commit message
|
|
63
|
+
entry: tools/check_no_claude_commit_msg.sh
|
|
64
|
+
language: script
|
|
65
|
+
stages: [commit-msg]
|
|
66
|
+
|
|
67
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
68
|
+
rev: v0.12.8
|
|
69
|
+
hooks:
|
|
70
|
+
- id: ruff-check
|
|
71
|
+
args: [--fix]
|
|
72
|
+
- id: ruff-format
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.13
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Read the Docs configuration file
|
|
2
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
3
|
+
|
|
4
|
+
# Required
|
|
5
|
+
version: 2
|
|
6
|
+
|
|
7
|
+
# Set the OS, Python version, and other tools you might need
|
|
8
|
+
build:
|
|
9
|
+
os: ubuntu-24.04
|
|
10
|
+
tools:
|
|
11
|
+
python: "3.13"
|
|
12
|
+
# gfortran is required to compile the Fortran extension module from
|
|
13
|
+
# source (there are no prebuilt wheels to install here).
|
|
14
|
+
apt_packages:
|
|
15
|
+
- gfortran
|
|
16
|
+
jobs:
|
|
17
|
+
install:
|
|
18
|
+
# dependency-groups support (--group) needs pip>=25.1
|
|
19
|
+
- pip install --upgrade pip
|
|
20
|
+
- pip install --group docs -e .
|
|
21
|
+
|
|
22
|
+
# Build documentation in the "docs/" directory with Sphinx
|
|
23
|
+
sphinx:
|
|
24
|
+
configuration: docs/conf.py
|