Skip to content

Commit 98a9fce

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into refactor/replace_os_path_join_with_Pathlib_path
2 parents 04a7dd8 + 9363f9b commit 98a9fce

122 files changed

Lines changed: 5240 additions & 2354 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.codecov.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@ ignore:
44
- "libensemble/tools/live_data/*"
55
- "libensemble/sim_funcs/executor_hworld.py"
66
- "libensemble/gen_funcs/persistent_tasmanian.py"
7+
- "libensemble/gen_classes/gpCAM.py"

.flake8

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ per-file-ignores =
3838

3939
# Need to set something before the APOSMM import
4040
libensemble/tests/regression_tests/test_persistent_aposmm*:E402
41+
libensemble/tests/regression_tests/test_asktell_aposmm_nlopt.py:E402
4142
libensemble/tests/regression_tests/test_persistent_gp_multitask_ax.py:E402
4243
libensemble/tests/functionality_tests/test_uniform_sampling_then_persistent_localopt_runs.py:E402
4344
libensemble/tests/functionality_tests/test_stats_output.py:E402

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pixi.lock filter=lfs diff=lfs merge=lfs -text

.github/workflows/basic.yml

Lines changed: 25 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ jobs:
1717
matrix:
1818
os: [ubuntu-latest]
1919
mpi-version: [mpich]
20-
python-version: ["3.10", "3.11", "3.12", "3.13"]
20+
python-version: ["py311", "py312", "py313", "py314"]
2121
comms-type: [m, l]
2222
include:
2323
- os: macos-latest
24-
python-version: "3.11"
24+
python-version: "py311"
2525
mpi-version: mpich
2626
comms-type: m
2727
- os: macos-latest
28-
python-version: "3.11"
28+
python-version: "py311"
2929
mpi-version: mpich
3030
comms-type: l
3131

@@ -40,65 +40,48 @@ jobs:
4040

4141
steps:
4242
- uses: actions/checkout@v6
43-
- name: Setup conda - Python ${{ matrix.python-version }}
44-
uses: conda-incubator/setup-miniconda@v3
4543
with:
46-
activate-environment: condaenv
47-
miniconda-version: "latest"
48-
python-version: ${{ matrix.python-version }}
49-
channels: conda-forge
50-
channel-priority: strict
51-
auto-update-conda: true
52-
53-
- name: Force-update certifi and pip
54-
run: |
55-
python --version
56-
python -m pip install --upgrade pip
57-
python -m pip install -I --upgrade certifi
58-
59-
- name: Install Ubuntu compilers
60-
if: matrix.os == 'ubuntu-latest'
61-
run: |
62-
conda install -c conda-forge gcc_linux-64
63-
pip install nlopt==2.9.0
44+
lfs: true
6445

65-
# Roundabout solution on macos for proper linking with mpicc
66-
- name: Install macOS compilers
67-
if: matrix.os == 'macos-latest'
68-
run: |
69-
conda install clang_osx-64
70-
pip install nlopt==2.8.0
46+
- name: Checkout lockfile
47+
run: git lfs checkout
7148

72-
- name: Install basic testing/feature dependencies
73-
run: |
74-
pip install -r install/testing_requirements.txt
75-
pip install -r install/misc_feature_requirements.txt
76-
source install/install_ibcdfo.sh
77-
conda install numpy scipy
49+
- uses: prefix-dev/setup-pixi@v0.9.4
50+
with:
51+
pixi-version: v0.55.0
52+
frozen: true
53+
environments: ${{ matrix.python-version }}
54+
activate-environment: ${{ matrix.python-version }}
7855

79-
- name: Install mpi4py and MPI from conda
56+
- name: Install IBCDFO
8057
run: |
81-
conda install mpi4py ${{ matrix.mpi-version }}
58+
pixi run -e ${{ matrix.python-version }} ./install/install_ibcdfo.sh
8259
8360
- name: Install libEnsemble, test flake8
8461
run: |
8562
pip install -e .
8663
flake8 libensemble
8764
65+
- name: Install mypy
66+
run: pip install mypy
67+
68+
- name: Run mypy (limited scope)
69+
run: mypy
70+
8871
- name: Remove various tests on newer pythons
89-
if: matrix.python-version >= '3.11'
72+
if: matrix.python-version == 'py311' || matrix.python-version == 'py312' || matrix.python-version == 'py313' || matrix.python-version == 'py314'
9073
run: |
91-
rm ./libensemble/tests/functionality_tests/test_local_sine_tutorial*.py # matplotlib errors on 3.12
74+
rm ./libensemble/tests/functionality_tests/test_local_sine_tutorial*.py # matplotlib errors on py312
9275
9376
- name: Run simple tests, Ubuntu
9477
if: matrix.os == 'ubuntu-latest'
9578
run: |
96-
./libensemble/tests/run_tests.py -A "-W error" -${{ matrix.comms-type }}
79+
./libensemble/tests/run_tests.py -A "-W error" -${{ matrix.comms-type }}
9780
9881
- name: Run simple tests, macOS
9982
if: matrix.os == 'macos-latest'
10083
run: |
101-
./libensemble/tests/run_tests.py -A "-W error" -${{ matrix.comms-type }}
84+
pixi run -e ${{ matrix.python-version }} ./libensemble/tests/run_tests.py -A "-W error" -${{ matrix.comms-type }}
10285
10386
- name: Merge coverage
10487
run: |
@@ -115,4 +98,4 @@ jobs:
11598
runs-on: ubuntu-latest
11699
steps:
117100
- uses: actions/checkout@v6
118-
- uses: crate-ci/typos@v1.40.0
101+
- uses: crate-ci/typos@v1.44.0

.github/workflows/extra.yml

Lines changed: 36 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,24 @@ jobs:
1111
matrix:
1212
os: [ubuntu-latest]
1313
mpi-version: [mpich]
14-
python-version: ['3.10', '3.11', '3.12', '3.13']
14+
python-version: ["py311e", "py312e", "py313e", "py314e"]
1515
comms-type: [m, l]
1616
include:
1717
- os: macos-latest
18-
python-version: '3.13'
18+
python-version: "py312e"
1919
mpi-version: mpich
2020
comms-type: m
2121
- os: macos-latest
22-
python-version: '3.13'
22+
python-version: "py312e"
2323
mpi-version: mpich
2424
comms-type: l
2525
- os: ubuntu-latest
26-
python-version: '3.12'
26+
python-version: "py312e"
2727
mpi-version: mpich
2828
comms-type: t
2929
- os: ubuntu-latest
30-
mpi-version: 'openmpi'
31-
python-version: '3.12'
30+
mpi-version: openmpi
31+
python-version: "py312e"
3232
comms-type: l
3333

3434
env:
@@ -42,93 +42,60 @@ jobs:
4242

4343
steps:
4444
- uses: actions/checkout@v6
45-
- name: Setup conda - Python ${{ matrix.python-version }}
46-
uses: conda-incubator/setup-miniconda@v3
4745
with:
48-
activate-environment: condaenv
49-
miniconda-version: 'latest'
50-
python-version: ${{ matrix.python-version }}
51-
channels: conda-forge
52-
channel-priority: strict
53-
auto-update-conda: true
54-
55-
- name: Force-update certifi
56-
run: |
57-
python --version
58-
pip install -I --upgrade certifi
59-
60-
- name: Install Ubuntu compilers
61-
if: matrix.os == 'ubuntu-latest'
62-
run: |
63-
conda install -c conda-forge gcc_linux-64
64-
pip install nlopt==2.9.0
65-
66-
# Roundabout solution on macos for proper linking with mpicc
67-
- name: Install macOS compilers
68-
if: matrix.os == 'macos-latest'
69-
run: |
70-
conda install clang_osx-64
71-
pip install nlopt==2.8.0
72-
73-
- name: Install mpi4py and MPI from conda
74-
run: |
75-
conda install mpi4py ${{ matrix.mpi-version }}
46+
lfs: true
7647

77-
- name: Install generator dependencies
78-
run: |
79-
conda env update --file install/gen_deps_environment.yml
80-
81-
- name: Install gpcam and octave # Neither yet support 3.13
82-
if: matrix.python-version <= '3.12'
83-
run: |
84-
pip install gpcam==8.1.13
85-
conda install octave
48+
- name: Checkout lockfile
49+
run: git lfs checkout
8650

87-
- name: Install surmise and Tasmanian
88-
if: matrix.os == 'ubuntu-latest'
89-
run: |
90-
pip install --upgrade git+https://github.com/bandframework/surmise.git
91-
pip install Tasmanian --user
92-
93-
- name: Install generator dependencies for Ubuntu tests
94-
if: matrix.os == 'ubuntu-latest' && matrix.python-version <= '3.12'
95-
run: |
96-
pip install scikit-build packaging
51+
- uses: prefix-dev/setup-pixi@v0.9.4
52+
with:
53+
pixi-version: v0.55.0
54+
cache: true
55+
frozen: true
56+
environments: ${{ matrix.python-version }}
57+
activate-environment: ${{ matrix.python-version }}
9758

9859
- name: Install other testing dependencies
9960
run: |
100-
pip install -r install/testing_requirements.txt
101-
pip install -r install/misc_feature_requirements.txt
102-
source install/install_ibcdfo.sh
103-
conda install numpy scipy
61+
pixi run -e ${{ matrix.python-version }} install/install_ibcdfo.sh
10462
10563
- name: Install libEnsemble, flake8, lock environment
10664
run: |
10765
pip install -e .
10866
flake8 libensemble
10967
110-
- name: Remove test using octave, gpcam on Python 3.13
111-
if: matrix.python-version >= '3.13'
68+
- name: Install gpcam
69+
if: matrix.python-version != 'py313e' && matrix.python-version != 'py314e'
11270
run: |
113-
rm ./libensemble/tests/regression_tests/test_persistent_fd_param_finder.py # needs octave, which doesn't yet support 3.13
114-
rm ./libensemble/tests/regression_tests/test_persistent_aposmm_external_localopt.py # needs octave, which doesn't yet support 3.13
115-
rm ./libensemble/tests/regression_tests/test_gpCAM.py # needs gpcam, which doesn't build on 3.13
71+
pixi run -e ${{ matrix.python-version }} pip install gpcam==8.1.13
11672
117-
- name: Install redis/proxystore
73+
- name: Remove test using octave, gpcam, globus-compute on Python 3.13
74+
if: matrix.python-version == 'py313e' || matrix.python-version == 'py314e'
11875
run: |
119-
pip install redis
120-
pip install proxystore==0.7.0
76+
rm ./libensemble/tests/unit_tests/test_ufunc_runners.py # needs globus-compute
77+
rm ./libensemble/tests/regression_tests/test_gpCAM.py # needs gpcam, which doesn't build on 3.13
78+
rm ./libensemble/tests/regression_tests/test_asktell_gpCAM.py # needs gpcam, which doesn't build on 3.13
79+
rm ./libensemble/tests/regression_tests/test_persistent_gp_multitask_ax.py # needs ax-platform, which doesn't yet support 3.14
80+
rm ./libensemble/tests/regression_tests/test_optimas_ax_mf.py # needs ax-platform, which doesn't yet support 3.14
81+
rm ./libensemble/tests/regression_tests/test_optimas_ax_sf.py # needs ax-platform, which doesn't yet support 3.14
12182
12283
- name: Start Redis
12384
if: matrix.os == 'ubuntu-latest'
12485
uses: supercharge/redis-github-action@v2
12586
with:
12687
redis-version: 7
12788

128-
- name: Run extensive tests
89+
- name: Run extensive tests, Ubuntu
90+
if: matrix.os == 'ubuntu-latest'
12991
run: |
13092
./libensemble/tests/run_tests.py -e -${{ matrix.comms-type }}
13193
94+
- name: Run extensive tests, macOS
95+
if: matrix.os == 'macos-latest'
96+
run: |
97+
pixi run -e ${{ matrix.python-version }} ./libensemble/tests/run_tests.py -e -${{ matrix.comms-type }}
98+
13299
- name: Merge coverage
133100
run: |
134101
mv libensemble/tests/.cov* .
@@ -144,4 +111,4 @@ jobs:
144111
runs-on: ubuntu-latest
145112
steps:
146113
- uses: actions/checkout@v6
147-
- uses: crate-ci/typos@v1.40.0
114+
- uses: crate-ci/typos@v1.44.0

.pre-commit-config.yaml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,39 @@
11
repos:
22
- repo: https://github.com/pre-commit/pre-commit-hooks
3-
rev: v5.0.0
3+
rev: v6.0.0
44
hooks:
55
- id: end-of-file-fixer
66
exclude: ^(.*\.xml|.*\.svg)$
77
- id: trailing-whitespace
88
exclude: ^(.*\.xml|.*\.svg)$
99

1010
- repo: https://github.com/pycqa/isort
11-
rev: 6.0.0
11+
rev: 7.0.0
1212
hooks:
1313
- id: isort
1414
args: [--profile=black, --line-length=120]
1515

1616
- repo: https://github.com/psf/black
17-
rev: 25.1.0
17+
rev: 25.12.0
1818
hooks:
1919
- id: black
2020
args: [--line-length=120]
2121

2222
- repo: https://github.com/PyCQA/flake8
23-
rev: 7.1.1
23+
rev: 7.3.0
2424
hooks:
2525
- id: flake8
2626
args: [--max-line-length=120]
2727

2828
- repo: https://github.com/asottile/blacken-docs
29-
rev: 1.19.1
29+
rev: 1.20.0
3030
hooks:
3131
- id: blacken-docs
3232
additional_dependencies: [black==22.12.0]
3333
files: ^(.*\.py|.*\.rst)$
3434
args: [--line-length=120]
35+
36+
- repo: https://github.com/pre-commit/mirrors-mypy
37+
rev: v1.19.1
38+
hooks:
39+
- id: mypy

.readthedocs.yml

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,32 @@ version: 2
33
build:
44
os: "ubuntu-22.04"
55
tools:
6-
python: "3.10"
6+
python: "3.12"
7+
commands:
8+
# from https://docs.readthedocs.com/platform/stable/build-customization.html#support-git-lfs-large-file-storage
9+
# Download and uncompress the binary
10+
# https://git-lfs.github.com/
11+
- wget https://github.com/git-lfs/git-lfs/releases/download/v3.1.4/git-lfs-linux-amd64-v3.1.4.tar.gz
12+
- tar xvfz git-lfs-linux-amd64-v3.1.4.tar.gz git-lfs
13+
# Modify LFS config paths to point where git-lfs binary was downloaded
14+
- git config filter.lfs.process "`pwd`/git-lfs filter-process"
15+
- git config filter.lfs.smudge "`pwd`/git-lfs smudge -- %f"
16+
- git config filter.lfs.clean "`pwd`/git-lfs clean -- %f"
17+
# Make LFS available in current repository
18+
- ./git-lfs install
19+
# Download content from remote
20+
- ./git-lfs fetch
21+
# Make local files to have the real content on them
22+
- ./git-lfs checkout
23+
- asdf plugin add pixi
24+
- asdf install pixi latest
25+
- asdf global pixi latest
26+
- pixi run -e docs build-docs
27+
- mkdir -p $READTHEDOCS_OUTPUT/html/
28+
- cp -r docs/_build/html/** $READTHEDOCS_OUTPUT/html/
729

830
sphinx:
931
configuration: docs/conf.py
1032

1133
formats:
1234
- pdf
13-
14-
python:
15-
install:
16-
- requirements: docs/requirements.txt
17-
- method: pip
18-
path: .
19-
extra_requirements:
20-
- docs

.wci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ description: |
1616
language: Python
1717

1818
release:
19-
version: 1.5.0
20-
date: 2025-04-10
19+
version: 1.6.0
20+
date: 2026-03-04
2121

2222
documentation:
2323
general: https://libensemble.readthedocs.io

0 commit comments

Comments
 (0)