Skip to content
Merged
Show file tree
Hide file tree
Changes from 117 commits
Commits
Show all changes
118 commits
Select commit Hold shift + click to select a range
78122a4
add schedule to workflow, activate all feature/ branches and get rid …
p-ortega Dec 1, 2025
18f09aa
improve runcmd and add test to it
p-ortega Dec 1, 2025
c8e69fe
attempt to fix runcmd test
p-ortega Dec 1, 2025
736624f
add modflow devtools to test mf6 latest
p-ortega Dec 3, 2025
797166d
missing github token
p-ortega Dec 3, 2025
1bdd9a8
improve assertion when prep run to include when the libmf6 is in env …
p-ortega Dec 3, 2025
b94cd64
add more libraries to tox github
p-ortega Dec 3, 2025
87f83b1
moar trying
p-ortega Dec 3, 2025
a0e606c
not winning this
p-ortega Dec 3, 2025
7b574e2
back to try in tox
p-ortega Dec 3, 2025
b8029c9
moar
p-ortega Dec 3, 2025
53f265a
no which where inside tox
p-ortega Dec 3, 2025
14412ab
another try to point to the right PATH
p-ortega Dec 3, 2025
a8b3860
more try to point to the right PATH
p-ortega Dec 3, 2025
3f2dc0f
one more try to point to the right PATH
p-ortega Dec 3, 2025
0a90509
one more try to point to the right PATH
p-ortega Dec 3, 2025
4c31743
comment PATH out
p-ortega Dec 3, 2025
e9f2949
use DYLD PATH
p-ortega Dec 3, 2025
2154b7d
use PATH
p-ortega Dec 3, 2025
ff3f7d0
use default
p-ortega Dec 3, 2025
46ba251
move get modflow to commands
p-ortega Dec 4, 2025
3eba8b2
attempt to fix the PATH again
p-ortega Dec 4, 2025
6211915
roll back and add verbose in pytest
p-ortega Dec 4, 2025
5a62d72
typo
p-ortega Dec 4, 2025
7940332
back to try setenv
p-ortega Dec 4, 2025
05457fd
try with fallbacks
p-ortega Dec 4, 2025
019a009
try in github yaml
p-ortega Dec 4, 2025
526ae76
ruh roh
p-ortega Dec 4, 2025
4c95320
ruh roh
p-ortega Dec 4, 2025
1e44954
another attempt to github_env
p-ortega Dec 4, 2025
1082691
modflow bin path to tox
p-ortega Dec 4, 2025
7a28dd0
add briochh trick
p-ortega Dec 4, 2025
ced978f
change githubenv to path
p-ortega Dec 4, 2025
7f1c6c1
get dir
p-ortega Dec 4, 2025
81a4afd
add bindir to tox
p-ortega Dec 4, 2025
e7eceee
append path in tox
p-ortega Dec 4, 2025
9d263b0
export path before running tox
p-ortega Dec 4, 2025
8ad09bd
add mf6 check in command pre
p-ortega Dec 4, 2025
cff8913
typo
p-ortega Dec 4, 2025
a55f360
moar
p-ortega Dec 4, 2025
3bd00f2
add allowlist in tox
p-ortega Dec 4, 2025
216e935
append all paths
p-ortega Dec 4, 2025
a34a6c8
more testing
p-ortega Dec 5, 2025
1e45dea
another path ammend
p-ortega Dec 5, 2025
1a0f935
echoing
p-ortega Dec 5, 2025
038193b
allow echo
p-ortega Dec 5, 2025
97ba641
help
p-ortega Dec 5, 2025
547657b
other
p-ortega Dec 5, 2025
1e151a3
ru roh
p-ortega Dec 5, 2025
721ea7b
add debug
p-ortega Dec 5, 2025
b9cb686
more attempts
p-ortega Dec 5, 2025
06f7309
try with pixi
p-ortega Dec 5, 2025
01f4b94
pixi lock
p-ortega Dec 5, 2025
490670a
typo
p-ortega Dec 5, 2025
1e40960
Fix pixi environment names in CI workflows
p-ortega Dec 5, 2025
fe5dbe3
bump pixi version in ci
p-ortega Dec 5, 2025
814fab3
fix python versions
p-ortega Dec 5, 2025
d6c988f
dont forget pixi lock
p-ortega Dec 5, 2025
7e9f5ee
move install-package up
p-ortega Dec 5, 2025
a5b34cb
add test to check mf6 bins
p-ortega Dec 5, 2025
a9befdd
explicitly copy bin from env bindir
p-ortega Dec 5, 2025
fc530a9
add flag in utls prep bins
p-ortega Dec 5, 2025
ab4d9f2
turn off platform flag
p-ortega Dec 5, 2025
a2a2744
attempt to fix path to lib
p-ortega Dec 5, 2025
3bb1d8c
update mup3d run
p-ortega Dec 5, 2025
0177083
try to fix prep_to_run
p-ortega Dec 5, 2025
4993f2b
print lbiname
p-ortega Dec 5, 2025
2a8b04a
fix syntax
p-ortega Dec 5, 2025
1470509
found bug
p-ortega Dec 5, 2025
02dcd03
add breakpoint to debug
p-ortega Dec 5, 2025
dcf8424
print dll
p-ortega Dec 5, 2025
e49c0a6
testing
p-ortega Dec 5, 2025
e286f5c
skip test02
p-ortega Dec 5, 2025
18d7ba3
rollback
p-ortega Dec 5, 2025
3ef555d
try with nightly build
p-ortega Dec 5, 2025
c3aa083
add more output to pytest
p-ortega Dec 10, 2025
3e44feb
add more output to pytest
p-ortega Dec 10, 2025
3e9a327
no basetemp
p-ortega Dec 10, 2025
da7955e
no basetemp without -s
p-ortega Dec 10, 2025
1b4d04d
no-cov
p-ortega Dec 10, 2025
2b5b01a
skip test01
p-ortega Dec 10, 2025
c5bb47d
run tests in series only
p-ortega Dec 10, 2025
4858aad
try disabling coverage
p-ortega Dec 10, 2025
c39c5bc
try again
p-ortega Dec 10, 2025
f45acf0
try n auto
p-ortega Dec 10, 2025
ea6e3f4
shorter vv
p-ortega Dec 10, 2025
36cad5a
bump pixi
p-ortega Dec 10, 2025
77e8ae0
explicitly invoke pixi runs
p-ortega Dec 10, 2025
3584f8c
no profile
p-ortega Dec 10, 2025
c75970c
pixi run to shell
p-ortega Dec 10, 2025
a8a41b4
dunno
p-ortega Dec 10, 2025
5fa7e10
rollback
p-ortega Dec 10, 2025
e257334
add debugf
p-ortega Dec 10, 2025
52c0a7f
add install env
p-ortega Dec 10, 2025
b90495a
nthread=1
p-ortega Dec 10, 2025
f03cf92
run test in pixi bash
p-ortega Dec 10, 2025
5c19c6d
explicit pxi run
p-ortega Dec 10, 2025
e6f243b
install exes
p-ortega Dec 10, 2025
73e17dd
pass env in yml
p-ortega Dec 10, 2025
d4f49be
install-modflow inside
p-ortega Dec 10, 2025
9b1c9cf
add py version
p-ortega Dec 10, 2025
9452c5b
another attempt
p-ortega Dec 10, 2025
921ddee
move from nightly build to release
p-ortega Dec 11, 2025
04c4367
rollback
p-ortega Dec 11, 2025
a3c7b6d
syntax
p-ortega Dec 11, 2025
a7c813b
add some dll path printing
p-ortega Jan 14, 2026
4c62931
Merge branch 'develop' into feature/cmdrun
p-ortega Jan 14, 2026
777602f
get modflow from nightly build
p-ortega Jan 15, 2026
a870aa4
avoid flopy and pyemu locally for now
p-ortega Jan 15, 2026
1ef839b
loose requirement dev
p-ortega Jan 15, 2026
1258916
gitignore
p-ortega Jan 15, 2026
f5c1e50
Update Readme
p-ortega Jan 15, 2026
7c1f455
merge with remote
p-ortega Jan 15, 2026
28d6b9c
some minor fixes in tests
p-ortega Jan 28, 2026
dbba029
clean up
p-ortega Jan 28, 2026
316ccc1
explicitly bring the exe from the env for test05 and clean up imports
p-ortega Jan 28, 2026
686e01d
clean up README
p-ortega Jan 28, 2026
6dfa040
cleanup legacy tox
p-ortega Jan 30, 2026
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
37 changes: 37 additions & 0 deletions .github/workflows/ci-pixi-macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: mf6rtm continuous integration - macOS

on:
schedule:
- cron: '0 8 * * *' # run at 8 AM UTC (12 am PST)
push:
branches:
- develop
pull_request:
branches: [main, develop, feature/**]

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-latest]
python-version: ['310', '311', '312', '313']
fail-fast: false
steps:
- uses: actions/checkout@v4

- name: Setup pixi
uses: prefix-dev/[email protected]
with:
log-level: vvv
pixi-version: v0.41.4
cache: true
environments: py${{ matrix.python-version }}

- name: Install environment
run: pixi install -e py${{ matrix.python-version }}

- name: Run tests
run: pixi run -e py${{ matrix.python-version }} test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70 changes: 70 additions & 0 deletions .github/workflows/ci-pixi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
name: mf6rtm continuous integration

on:
schedule:
- cron: '0 8 * * *' # run at 8 AM UTC (12 am PST)
push:
branches:
- develop
pull_request:
branches: [main, develop, feature/**]

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
python-version: ['310', '311', '312', '313']
fail-fast: false
steps:
- uses: actions/checkout@v4

- name: Setup pixi
uses: prefix-dev/[email protected]
with:
pixi-version: v0.41.4
cache: true
environments: py${{ matrix.python-version }}

- name: Run tests
run: pixi run -e py${{ matrix.python-version }} test
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pixi
uses: prefix-dev/[email protected]
with:
pixi-version: v0.41.4
cache: true

- name: Run linting
run: pixi run lint

coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Setup pixi
uses: prefix-dev/[email protected]
with:
pixi-version: v0.41.4
cache: true
environments: py310

- name: Run tests with coverage
run: pixi run -e py310 test-cov
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload to Coveralls
run: pixi run -e py310 coveralls
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }}
47 changes: 0 additions & 47 deletions .github/workflows/tests_macos.yml

This file was deleted.

33 changes: 0 additions & 33 deletions .github/workflows/tests_main.yml

This file was deleted.

3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -191,8 +191,7 @@ pyrightconfig.json
*.png

#Python pixi environments
pixi.lock
pixi.toml
.pixi/

#Test output files
/autotest/test01/*
Expand Down
74 changes: 72 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,88 @@ Most options for each phreeqc block can be passed by adding list with options. H
All dependencies and executables are included in this repo. This package extensively uses [modflowapi](https://github.com/MODFLOW-USGS/modflowapi) and [phreeqcrm](https://github.com/usgs-coupled/phreeqcrm)

## Installation
The package can be installed through pip as:

### Quick Start with pip

The package can be installed via pip:

```commandline
pip install mf6rtm
```

### Manual Installation with Conda/Mamba

If you prefer conda/mamba, create a dedicated environment:

```commandline
mamba env create -f env.yml
mamba activate mf6rtm-dev
```

After activating the environment, install the MODFLOW6 executables:

```commandline
pip install modflow-devtools
get-modflow --subset mf6,libmf6,gridgen :python
```

Once installed, the executables in `envs/[env-name]/bin` will be automatically invoked whenever mf6rtm runs within the environment.

### Custom MODFLOW Versions

If you need custom or older versions of mf6 (e.g., for running PESTPP on an HPC cluster), place them in a separate directory and use the provided utility to bring them to the model working directory:

```Python
from mf6rtm import utils

utils.prep_bins(model_dir, src_path=path_to_bins)
```
### Running the benchmark notebooks
We have provided some benchmarks in the form of Jupyter notebooks. We have also included the executables needed to run them out of the box. Nevertheless, they can also be run using the executables downloaded with modflow-devtools.

## Developing
We recommend forking and cloning a local version of this repo. A development Conda environment is provided in the `env.yml` file, which should install all required dependencies to run tests and modify the package on the fly. To install the environment, use the following command:

### With Pixi (Recommended)

For development, we recommend using pixi for fast, reproducible environments:

```commandline
# Fork and clone the repository
git clone https://github.com/YOUR-USERNAME/mf6rtm.git
cd mf6rtm

# Install development environment with all dependencies
pixi install

# Run tests
pixi run test

# Run tests with coverage
pixi run test-cov

# Run linting
pixi run lint

# Test with specific Python version
pixi run -e py311 test

```

### With Conda/Mamba

Alternatively, use conda/mamba with the provided environment file:

```commandline
# Install environment
conda env create -f env.yml
conda activate mf6rtm-dev

# Install development dependencies
pip install -r requirements_dev.txt
```

The development dependencies for testing are located in `requirements_dev.txt`. We have also provided dependencies with flopy and pyemu inside the repo but feel free to use your own distribution.

## Funding
The developing of mf6rtm was kindly funded and supported by [Intera, Inc](https://www.intera.com).

Expand Down
2 changes: 1 addition & 1 deletion autotest/pytest.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[pytest]
addopts = -rs -vvv --color=yes --cov=mf6rtm
addopts = -ra --color=yes #--cov=mf6rtm
log_cli = True
log_cli_level = INFO

Expand Down
Loading