Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
b3a01fe
added realization explorer notebook
jtwhite79 Nov 20, 2024
7aee043
ldflags for meson-armmac problems
jtwhite79 Nov 20, 2024
e73c264
realization notebook
jtwhite79 Nov 20, 2024
db86bba
fix
jtwhite79 Nov 20, 2024
6b95095
more words on the variogram notebook
jtwhite79 Nov 24, 2024
f7b749c
added hyper par explore to variogram notebook - yikes
jtwhite79 Dec 10, 2024
893eb1d
Update manual build with meson steps
kmarkovich Jan 20, 2025
163d822
Release 0.3.0 (#47)
mwtoews Feb 12, 2025
c9b8954
Merge branch 'main' into develop
mwtoews Feb 12, 2025
72d3899
Post-release 0.3.0
mwtoews Feb 12, 2025
fd8aef3
Merge remote-tracking branch 'upsteam/develop' into develop
jtwhite79 Feb 13, 2025
aa54129
Merge remote-tracking branch 'upsteam/main'
jtwhite79 Feb 13, 2025
fce124e
BLD/CI: fix build, assuming OSTYPE may also be 'cygwin' (#48)
mwtoews Mar 24, 2025
7cf08f3
[pre-commit.ci] pre-commit autoupdate (#49)
pre-commit-ci[bot] Apr 7, 2025
8d6b403
merge
jtwhite79 Apr 16, 2025
a4d7e28
[pre-commit.ci] pre-commit autoupdate (#51)
pre-commit-ci[bot] Sep 15, 2025
46ccd8e
[pre-commit.ci] pre-commit autoupdate (#54)
pre-commit-ci[bot] Oct 7, 2025
19477ec
Drop Python 3.9 and Intel macOS builds, add Python 3.14 testing (#55)
mwtoews Oct 28, 2025
f144ec5
Merge pull request #44 from kmarkovich/develop
jtwhite79 Nov 12, 2025
96af3a1
[pre-commit.ci] pre-commit autoupdate (#56)
pre-commit-ci[bot] Jan 5, 2026
757cdd5
Merge branch 'develop' of https://github.com/pypest/pypestutils
jtwhite79 Feb 6, 2026
38fe765
Merge branch 'develop' of https://github.com/pypest/pypestutils into …
jtwhite79 Feb 6, 2026
c7ab0c2
fix for StringArray madness
jtwhite79 Feb 6, 2026
0ae239d
trigger
jtwhite79 Feb 9, 2026
644e608
fix
jtwhite79 Feb 9, 2026
01791d7
fix
jtwhite79 Feb 9, 2026
96756db
Merge remote-tracking branch 'origin/develop'
jtwhite79 Mar 10, 2026
1880b90
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Mar 10, 2026
54b754b
nodef
jtwhite79 Apr 9, 2026
3e2e905
Merge branch 'main' of https://github.com/jtwhite79/pypestutils
jtwhite79 Apr 9, 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
18 changes: 7 additions & 11 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,13 @@ jobs:
arch: aarch64
- os: windows-2022
arch: AMD64
- os: macos-13
arch: x86_64
macosx_deployment_target: "13.0"
cmake_osx_architectures: x86_64
- os: macos-14
arch: arm64
macosx_deployment_target: "14.0"
cmake_osx_architectures: arm64

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Set up QEMU
if: runner.os == 'Linux' && matrix.arch == 'aarch64'
Expand All @@ -55,7 +51,7 @@ jobs:
if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
msystem: mingw64
path-type: inherit
install: >-
mingw-w64-x86_64-gcc-fortran
Expand All @@ -71,15 +67,15 @@ jobs:
run: bash scripts/build_lib.sh

- name: Build wheels
uses: pypa/cibuildwheel@v2.22.0
uses: pypa/cibuildwheel@v3.2.1
env:
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_ENVIRONMENT_MACOS:
FC=gfortran-13
MACOSX_DEPLOYMENT_TARGET='${{ matrix.macosx_deployment_target }}'
CMAKE_OSX_ARCHITECTURES='${{ matrix.cmake_osx_architectures }}'

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v5
with:
name: cibw-wheels-${{ matrix.os }}-${{ matrix.arch }}
path: ./wheelhouse/*.whl
Expand All @@ -88,12 +84,12 @@ jobs:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Build sdist
run: pipx run build --sdist

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v5
with:
name: cibw-sdist
path: dist/*.tar.gz
Expand All @@ -108,7 +104,7 @@ jobs:
# or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
# if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
steps:
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v6
with:
# unpacks all CIBW artifacts into dist/
pattern: cibw-*
Expand Down
9 changes: 5 additions & 4 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,22 @@ jobs:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.9", "3.13"] # run lower and upper versions
python-version: ["3.10", "3.14"] # run lower and upper versions

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Setup Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v5
uses: astral-sh/setup-uv@v7
with:
python-version: ${{ matrix.python-version }}
activate-environment: "true"

- name: Install MinGW-w64 tools (Windows)
if: runner.os == 'Windows'
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
msystem: mingw64
path-type: inherit
install: >-
mingw-w64-x86_64-gcc-fortran
Expand Down
10 changes: 5 additions & 5 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@ ci:
exclude: \.grb$
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: check-yaml
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.9.3
rev: v0.14.10
hooks:
# Run the linter.
- id: ruff
# Run the linter
- id: ruff-check
args: [ --fix ]
# Run the formatter.
# Run the formatter
- id: ruff-format
1 change: 1 addition & 0 deletions BUILD.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Or manually with these steps:
```bash
meson setup builddir # options
meson compile -C builddir
meson install -C builddir
```

After it is compiled, install to the Python module using:
Expand Down
2 changes: 1 addition & 1 deletion etc/environment.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: pypestutils

channels:
- conda-forge
- defaults
- nodefaults

dependencies:
- appdirs
Expand Down
4 changes: 2 additions & 2 deletions examples/exploring_lowlevel_pypestutils_functions.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -446,9 +446,9 @@
"metadata": {},
"outputs": [],
"source": [
"usite = hdsdf.site.unique()\n",
"usite = hdsdf.site.unique().tolist()\n",
"usite.sort()\n",
"usite_dict = {s: c for s, c in zip(usite, np.arange(usite.shape[0], dtype=int))}\n",
"usite_dict = {s: c for s, c in zip(usite, np.arange(len(usite), dtype=int))}\n",
"hdsdf.loc[:, \"isite\"] = hdsdf.site.apply(lambda x: usite_dict[x])\n",
"hdsdf.isite\n",
"hdsdf.sort_values(by=[\"isite\", \"time\"], inplace=True)\n",
Expand Down
4 changes: 2 additions & 2 deletions pypestutils/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,9 @@ def mod2obs_mf6(
print("WARNING: replacing existing 'totim' column in observation dataframe")
obsdf.loc[:, "totim"] = obsdf.datetime.apply(lambda x: x - start_datetime).dt.days

usite = obsdf.site.unique()
usite = obsdf.site.unique().tolist()
usite.sort()
usite_dict = {s: c for s, c in zip(usite, np.arange(usite.shape[0], dtype=int))}
usite_dict = {s: c for s, c in zip(usite, np.arange(len(usite), dtype=int))}
obsdf.loc[:, "isite"] = obsdf.site.apply(lambda x: usite_dict[x])
obsdf.sort_values(by=["isite", "totim"], inplace=True)

Expand Down
2 changes: 1 addition & 1 deletion pypestutils/version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Package version."""

# This is the only place to update version
__version__ = "0.3.0"
__version__ = "0.3.1.dev0"
9 changes: 4 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,24 @@ authors = [
readme = "README.md"
description = "PEST utilities for MODFLOW"
keywords = ["PEST", "MODFLOW", "groundwater", "model"]
license = {text = "Unlicense"}
license = "Unlicense"
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: The Unlicense (Unlicense)",
"Operating System :: Unix",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Fortran",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering :: Hydrology",
]
requires-python = ">=3.9"
requires-python = ">=3.10"
dependencies = [
"numpy",
"pandas",
Expand Down Expand Up @@ -59,7 +58,7 @@ version = {attr = "pypestutils.version.__version__"}
include = ["pypestutils", "pypestutils.*"]

[tool.cibuildwheel]
build = "cp39-*"
build = "cp310-*"
build-verbosity = 3
repair-wheel-command = "python scripts/repair_wheel.py -w {dest_dir} {wheel}"
test-requires = "tox"
Expand Down
7 changes: 5 additions & 2 deletions scripts/build_lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,14 @@ set -e
# always run from top of repo
cd $(dirname $0)/..


echo "Running $0 for \$OSTYPE=$OSTYPE ..."

# this needs bash
case "$OSTYPE" in
darwin*) libname=lib/libpestutils.dylib ;;
darwin*) libname=lib/libpestutils.dylib && export LDFLAGS="$LDFLAGS -Wl,-ld_classic";;
linux*) libname=lib/libpestutils.so ;;
msys* ) libname=bin/pestutils.dll ;;
msys*|cygwin ) libname=bin/pestutils.dll ;;
*) echo "unknown \$OSTYPE: $OSTYPE" && exit 1 ;;
esac

Expand Down
2 changes: 1 addition & 1 deletion tox.ini
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[tox]
requires =
tox>=4
env_list = py{39,310,311,312,313}
env_list = py{310,311,312,313,314}

[testenv]
description = run unit tests
Expand Down
Loading