Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
90 commits
Select commit Hold shift + click to select a range
7a301be
add build and test ci
james-bruten-mo Oct 1, 2025
55a9c10
try removing quotes
james-bruten-mo Oct 1, 2025
fa91750
test
james-bruten-mo Oct 1, 2025
04c12b5
test
james-bruten-mo Oct 1, 2025
0cc7a9e
test
james-bruten-mo Oct 1, 2025
982391b
test
james-bruten-mo Oct 1, 2025
cfd3212
test
james-bruten-mo Oct 1, 2025
570c128
test
james-bruten-mo Oct 1, 2025
73b9c4e
test
james-bruten-mo Oct 1, 2025
ebf5915
test
james-bruten-mo Oct 1, 2025
8101b86
test
james-bruten-mo Oct 1, 2025
12b5822
test
james-bruten-mo Oct 1, 2025
46ecb97
test
james-bruten-mo Oct 1, 2025
9010fc8
test
james-bruten-mo Oct 1, 2025
2711ef5
test
james-bruten-mo Oct 1, 2025
5cb5537
test
james-bruten-mo Oct 1, 2025
d1d1c89
test
james-bruten-mo Oct 1, 2025
c97177e
test
james-bruten-mo Oct 1, 2025
217d6d4
test
james-bruten-mo Oct 1, 2025
4cf7114
test
james-bruten-mo Oct 1, 2025
eaa5b05
test
james-bruten-mo Oct 1, 2025
bf0fa56
test
james-bruten-mo Oct 1, 2025
24a7db6
test
james-bruten-mo Oct 1, 2025
bd4b25b
test
james-bruten-mo Oct 1, 2025
64a7f1f
test
james-bruten-mo Oct 1, 2025
281c1e3
test
james-bruten-mo Oct 1, 2025
0fa5ec7
test
james-bruten-mo Oct 1, 2025
54af5c1
test
james-bruten-mo Oct 1, 2025
1ae1521
test
james-bruten-mo Oct 1, 2025
42e9077
test
james-bruten-mo Oct 1, 2025
c528b1a
test
james-bruten-mo Oct 1, 2025
6af77df
test
james-bruten-mo Oct 1, 2025
a57fec4
test
james-bruten-mo Oct 1, 2025
b7b630e
test
james-bruten-mo Oct 1, 2025
47b31dd
test
james-bruten-mo Oct 1, 2025
482b039
test
james-bruten-mo Oct 1, 2025
d86ab99
test
james-bruten-mo Oct 1, 2025
48ed6ea
test
james-bruten-mo Oct 1, 2025
07f7e40
test
james-bruten-mo Oct 1, 2025
f08c15c
test
james-bruten-mo Oct 1, 2025
0760f5d
test
james-bruten-mo Oct 1, 2025
83f4fa5
test
james-bruten-mo Oct 1, 2025
4d64bc5
test
james-bruten-mo Oct 1, 2025
281466d
test
james-bruten-mo Oct 1, 2025
b6fa17f
test
james-bruten-mo Oct 2, 2025
deede5e
test
james-bruten-mo Oct 2, 2025
2170b17
test
james-bruten-mo Oct 2, 2025
75d49cd
test
james-bruten-mo Oct 2, 2025
e524a52
test
james-bruten-mo Oct 2, 2025
3e0bbb9
test
james-bruten-mo Oct 2, 2025
6d031b3
test
james-bruten-mo Oct 2, 2025
9a938fa
test
james-bruten-mo Oct 2, 2025
5fa642b
test
james-bruten-mo Oct 2, 2025
d1ea913
test
james-bruten-mo Oct 2, 2025
9cbeeaf
test
james-bruten-mo Oct 2, 2025
ab22a61
test
james-bruten-mo Oct 2, 2025
0008999
test
james-bruten-mo Oct 2, 2025
bbea4ae
test
james-bruten-mo Oct 2, 2025
13c15a3
test
james-bruten-mo Oct 2, 2025
522088f
test
james-bruten-mo Oct 2, 2025
d1d57cc
test
james-bruten-mo Oct 2, 2025
ff747ba
test
james-bruten-mo Oct 2, 2025
2bb28b4
test
james-bruten-mo Oct 2, 2025
d6d119f
test
james-bruten-mo Oct 2, 2025
b452d9d
test
james-bruten-mo Oct 2, 2025
6c536f8
test
james-bruten-mo Oct 2, 2025
41425e7
test
james-bruten-mo Oct 2, 2025
935c1e1
test
james-bruten-mo Oct 2, 2025
71b784d
test
james-bruten-mo Oct 2, 2025
0fbc5c4
test
james-bruten-mo Oct 2, 2025
400bb21
test
james-bruten-mo Oct 2, 2025
5ea69cc
test
james-bruten-mo Oct 2, 2025
8d2355a
test
james-bruten-mo Oct 2, 2025
d39cf38
test
james-bruten-mo Oct 2, 2025
248139c
update unit tests
james-bruten-mo Oct 2, 2025
8ab60d7
working unit tests
james-bruten-mo Oct 2, 2025
fa71ba9
save file
james-bruten-mo Oct 2, 2025
81a4e8f
Merge branch 'main' into build_and_test
james-bruten-mo Oct 2, 2025
664b43b
update urls
james-bruten-mo Oct 2, 2025
28fcbe4
update ci
james-bruten-mo Oct 2, 2025
defb218
update ci
james-bruten-mo Oct 2, 2025
6300eae
exclude matric
james-bruten-mo Oct 2, 2025
fe9a01d
exclude matric
james-bruten-mo Oct 2, 2025
cb3cabc
exclude matric
james-bruten-mo Oct 2, 2025
5082655
rename ci
james-bruten-mo Oct 2, 2025
7336486
update docs
james-bruten-mo Oct 2, 2025
918db32
rename docs
james-bruten-mo Oct 2, 2025
31f0c16
Update admin/install_mule.sh
james-bruten-mo Oct 2, 2025
21c268b
try without path
james-bruten-mo Oct 2, 2025
61aaba5
revert tests back
james-bruten-mo Oct 2, 2025
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
2 changes: 1 addition & 1 deletion .github/workflows/checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ permissions: read-all

jobs:

checks:
mule-checks:
runs-on: ubuntu-latest
timeout-minutes: 5

Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
---
name: CI
on: # yamllint disable-line rule:truthy
push:
branches:
- main
- 'releases/**'
pull_request:
types: [opened, synchronize, reopened]
workflow_dispatch:

permissions: read-all

jobs:
build-test-mule:
runs-on: ubuntu-24.04
timeout-minutes: 5
strategy:
max-parallel: 4
matrix:
python-version: ['3.12', '3.13']
numpy-version: ['1.26.4', '2.2.6']
exclude:
- python-version: '3.13'
numpy-version: '1.26.4'

steps:
- name: Checkout Mule
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
- name: Install Python Dependencies ${{ matrix.numpy-version }}
run: |
pip install setuptools
pip install six
pip install numpy==${{ matrix.numpy-version }}
- name: Build python-${{ matrix.python-version }}_numpy-${{ matrix.numpy-version }}
run: |
./admin/install_mule.sh ./_build/lib ./_build/bin
- name: Test python-${{ matrix.python-version }}_numpy-${{ matrix.numpy-version }}
run: |
cd _build/lib
for name in ./*; do
python -m unittest discover -v ${name##*/}.tests
done
4 changes: 2 additions & 2 deletions .github/workflows/docs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ permissions: read-all

jobs:

build:
build-docs:
runs-on: ubuntu-latest
timeout-minutes: 3

Expand Down Expand Up @@ -51,7 +51,7 @@ jobs:
deploy:
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
# Add a dependency to the build job
needs: build
needs: build-docs
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Gitignore created from github template

_build/

# Virtual environment
.venv/
uv.lock
Expand Down
16 changes: 14 additions & 2 deletions admin/install_mule.sh
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,15 @@ echo "[INFO] Installing against Python $PYTHONVER"

# Setup a temporary directory where the install will be initially created
SCRATCHDIR=$(mktemp -d)
SCRATCHLIB=$SCRATCHDIR/lib/$PYTHONEXEC/site-packages
pkg_loc=$($mule_python_exec -c "import site ; print(site.getsitepackages()[0])")
if [[ $pkg_loc == *"dist-packages"* ]]; then
debian_like=true
SCRATCHLIB=$SCRATCHDIR/local/lib/$PYTHONEXEC/dist-packages
else
debian_like=false
SCRATCHLIB=$SCRATCHDIR/lib/$PYTHONEXEC/site-packages
fi
echo "SCRATCHLIB $SCRATCHLIB"

# Make relative paths absolute
if [ ! ${LIB_DEST:0:1} == "/" ] ; then
Expand Down Expand Up @@ -384,7 +392,11 @@ function unpack_and_copy(){
else
cp -vr $egg*.*-info $BIN_DEST
fi
cp -vr $SCRATCHDIR/bin/* $BIN_DEST/
if $debian_like; then
cp -vr $SCRATCHDIR/local/bin/* $BIN_DEST/
else
cp -vr $SCRATCHDIR/bin/* $BIN_DEST/
fi
fi
}

Expand Down
21 changes: 12 additions & 9 deletions mule/lib/mule/tests/integration/test_DataOperator.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,15 +59,18 @@ def test(self):
ff.integer_constants.num_cols = num_cols // 4
ff.real_constants.col_spacing = col_spacing*4
with self.temp_filename() as temp_path:
ff.to_file(temp_path)
ff_back = FieldsFile.from_file(temp_path)
self.assertEqual(ff_back.integer_constants.num_cols, num_cols // 4)
self.assertEqual(ff_back.real_constants.col_spacing, col_spacing*4)
self.assertEqual(ff_back.fields[0].lbnpt, num_cols // 4)
self.assertEqual(ff_back.fields[0].bdx, col_spacing*4)
self.assertEqual(ff_back.fields[1].lbnpt, num_cols//4)
self.assertEqual(ff_back.fields[1].bdx, col_spacing*4)
self.assertEqual(ff_back.fields[1].get_data().shape, (73, 24))
try:
ff.to_file(temp_path)
ff_back = FieldsFile.from_file(temp_path)
self.assertEqual(ff_back.integer_constants.num_cols, num_cols // 4)
self.assertEqual(ff_back.real_constants.col_spacing, col_spacing*4)
self.assertEqual(ff_back.fields[0].lbnpt, num_cols // 4)
self.assertEqual(ff_back.fields[0].bdx, col_spacing*4)
self.assertEqual(ff_back.fields[1].lbnpt, num_cols//4)
self.assertEqual(ff_back.fields[1].bdx, col_spacing*4)
self.assertEqual(ff_back.fields[1].get_data().shape, (73, 24))
except NotImplementedError:
self.skipTest("Skipping tests as WGDOS packing library unavailable")


if __name__ == '__main__':
Expand Down
18 changes: 12 additions & 6 deletions mule/lib/mule/tests/unit/test_pp.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,12 @@ def test_read_ppfile_fix_grid(self, fname=None):
self.assertEqual(field.lbrel, rel)
self.assertEqual(field.lbvc, vc)

data = field.get_data()
self.assertEqual(data.shape[0], field.lbrow)
self.assertEqual(data.shape[1], field.lbnpt)
try:
data = field.get_data()
self.assertEqual(data.shape[0], field.lbrow)
self.assertEqual(data.shape[1], field.lbnpt)
except NotImplementedError:
self.skipTest("Skipping tests as WGDOS packing library unavailable")

def test_read_ppfile_var_grid(self, fname=None):

Expand All @@ -85,9 +88,12 @@ def test_read_ppfile_var_grid(self, fname=None):
self.assertEqual(field.lbrel, 3)
self.assertEqual(field.lbvc, 65)

data = field.get_data()
self.assertEqual(data.shape[0], field.lbrow)
self.assertEqual(data.shape[1], field.lbnpt)
try:
data = field.get_data()
self.assertEqual(data.shape[0], field.lbrow)
self.assertEqual(data.shape[1], field.lbnpt)
except NotImplementedError:
print("Skipping tests as WGDOS packing library unavailable")

expected_extra = [1, 2, 12, 13, 14, 15]
self.assertEqual(len(field.pp_extra_data), 6)
Expand Down
2 changes: 1 addition & 1 deletion um_packing/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# pyproject.toml
[build-system]
requires = ["setuptools >= 42.0.0", "numpy"]
build-backend = "setuptools.build_meta"
build-backend = "setuptools.build_meta"
2 changes: 1 addition & 1 deletion um_packing/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def run(self):
version="2024.11.1",
description="Unified Model packing library extension",
author="UM Systems Team",
url="https://code.metoffice.gov.uk/trac/um",
url="https://github.com/metoffice/mule",
cmdclass={"clean": CleanCommand},
package_dir={"": "lib"},
packages=["um_packing", "um_packing.tests"],
Expand Down
2 changes: 1 addition & 1 deletion um_ppibm/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# pyproject.toml
[build-system]
requires = ["setuptools >= 42.0.0", "numpy"]
build-backend = "setuptools.build_meta"
build-backend = "setuptools.build_meta"
2 changes: 1 addition & 1 deletion um_ppibm/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def run(self):
version="2024.11.1",
description="Unified Model pp conversion utility with IBM number format",
author="UM Systems Team",
url="https://code.metoffice.gov.uk/trac/um",
url="https://github.com/metoffice/mule",
cmdclass={"clean": CleanCommand},
package_dir={"": "lib"},
packages=[
Expand Down
2 changes: 1 addition & 1 deletion um_spiral_search/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# pyproject.toml
[build-system]
requires = ["setuptools >= 42.0.0", "numpy"]
build-backend = "setuptools.build_meta"
build-backend = "setuptools.build_meta"
2 changes: 1 addition & 1 deletion um_spiral_search/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def run(self):
version="2024.11.1",
description="Unified Model Spiral Search extension",
author="UM Systems Team",
url="https://code.metoffice.gov.uk/trac/um",
url="https://github.com/metoffice/mule",
cmdclass={"clean": CleanCommand},
package_dir={"": "lib"},
packages=["um_spiral_search", "um_spiral_search.tests"],
Expand Down
2 changes: 1 addition & 1 deletion um_sstpert/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# pyproject.toml
[build-system]
requires = ["setuptools >= 42.0.0", "numpy"]
build-backend = "setuptools.build_meta"
build-backend = "setuptools.build_meta"
2 changes: 1 addition & 1 deletion um_sstpert/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def run(self):
version="2024.11.1",
description="Unified Model SST-perturbation extension and utility",
author="UM Systems Team",
url="https://code.metoffice.gov.uk/trac/um",
url="https://github.com/metoffice/mule",
cmdclass={"clean": CleanCommand},
package_dir={"": "lib"},
packages=["um_sstpert"],
Expand Down
2 changes: 1 addition & 1 deletion um_utils/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# pyproject.toml
[build-system]
requires = ["setuptools >= 42.0.0", "numpy"]
build-backend = "setuptools.build_meta"
build-backend = "setuptools.build_meta"
2 changes: 1 addition & 1 deletion um_utils/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def run(self):
version="2024.11.1",
description="Unified Model Fields File utilities",
author="UM Systems Team",
url="https://code.metoffice.gov.uk/trac/um",
url="https://github.com/metoffice/mule",
cmdclass={"clean": CleanCommand},
package_dir={"": "lib"},
packages=[
Expand Down
2 changes: 1 addition & 1 deletion um_wafccb/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# pyproject.toml
[build-system]
requires = ["setuptools >= 42.0.0", "numpy"]
build-backend = "setuptools.build_meta"
build-backend = "setuptools.build_meta"
2 changes: 1 addition & 1 deletion um_wafccb/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def run(self):
version="2024.11.1",
description="Unified Model WAFC CB extension",
author="UM Systems Team",
url="https://code.metoffice.gov.uk/trac/um",
url="https://github.com/metoffice/mule",
cmdclass={"clean": CleanCommand},
package_dir={"": "lib"},
packages=["um_wafccb"],
Expand Down