What’s New#
v1.0.0#
New features#
Control object features including (optional) warnings for unused legacy options, and defined and enforced options. Also to_yaml() and __str__ implementations. (PR240) By James McCreight.
Example notebook of how to edit Parameters with associated bug fixes to do so. (PR232) By James McCreight.
Conda feedstock for pywatershed conda-forge/staged-recipes#23428. By Joseph Hughes.
Breaking changes#
Deprecations#
Deprecation of Control.load() for Control.load_prms(). (PR240) By James McCreight.
Performance#
Bug fixes#
Mass balance fix in PRMS snow for rain on snow followed by evaporation consuming the entire snow pack. (PR248) By James McCreight.
Fix mass balance issue in PRMSSnow is also present in PRMS, snow evap is not taken from freeh2o when there is no pk_ice. (PR236) By James McCreight.
Resolve issues with different ways of specifying necdf output options. (PR230) By James McCreight.
Resolve issues with different ways of specifiying netcdf output options. (PR230) By James McCreight.
PRMSSoilzone remove soil_moist_prev because soil_moist is not prognotic and PRMSRunoff was needing it in the advance and not getting the correct value. PRMSRunoff now depends on soil_lower_prev and soil_rechr_prev instead. (PR244) By James McCreight.
Documentation#
Implement sphinx_autodoc_typehints. (PR257) By James McCreight.
New gh-pages branch (without history) to publish “pywatershed notes” including the extended release notes for v1.0.0. This branch publishes analysis supporting the version 1.0.0 release.
Add about section for version 1.0 to describe how pywatershed matches PRMS’ NHM configuration and how to perform the comparison. (PR244) By James McCreight.
Internal changes#
New system for generating test_data, by calling generate_test_data.py from autotest/. The system helps autotest know if test data were generated and if they are up to date. (PR253) By James McCreight.
Apply pylint and flake8 everywhere as much as possible. (PR251) By James McCreight.
Remove diagnostic variables pkwater_equiv_change, pkwater_ante (PR248) By James McCreight.
Use v1 instead of main for fortran-lang/setup-fortran. (PR242, PR243) By Wes Bonelli.
Refactor test data generation to solve race condition for dependent tests. (PR237) By Wes Bonelli.
Refactor tests against PRMS for consistency, flexibility, and thoroughness. (PR244) By James McCreight.
v0.2.1 (19 July 2023)#
Bug fixes#
Package data was not properly installed. (PR219) By James McCreight.
Small addition to notebook 02 (PR219) By James McCreight.
v0.2.0 (18 July 2023)#
New features#
New example notebooks. Moved old notebooks to examples/developer. (PR204) By James McCreight.
New way to specify Model instantiation either in-memory or from yaml files using a model dictionary. The approach is loosely based on MODFLOW 6 input organization. See Model documentation. Introduced the concept of discretizations for PRMS, defining “dis_hru” and “dis_seg”. These are components of how model dictionaries are specified. (PR188) By James McCreight.
New Control.from_yaml() method. (PR188) By James McCreight.
What’s new workflow (behold!) per GH180 and PR181 By James McCreight.
Add automatic release workflow to PyPi as per GH178. Associated implementation of gitflow and semver conventions. Overhauled CONTRIBUTING.md, DEVELOPER.md, README.md, and .github/RELEASE.md to document adopted practices. Adoption of git-cliff to generate change logs by filtering comitt messages, see cliff.toml. Clean up of environment files and streamlining against pyproject.toml. Symlink gfortran dylibs to /usr/local/lib on macOS CI so PRMS binaries included in this repo can find them. (PR179) By Wes Bonelli.
Breaking changes#
Move Control attribute “config” to “options” for handling global options. (PR188) By James McCreight.
Remove arguments from Model initialization. Options pass via control, new set_options() method on Process and ConservativeProcess (PR188) By James McCreight.
Control no longer takes a Parameter object as an initialization argument. Process subclasses now require arguments discretization and parameters. The firstargument of Model not a indefinite number of processes, it is now either a list of Process subclasses or a model dictionary (see Model documentation. (PR188) By James McCreight.
Deprecations#
Performance#
Introduce ASV performance benchmarks for import and various NHM configurations in pywatershed. (GH170 and PR184) By James McCreight.
Bug fixes#
Remove non-pep-compliant post-release reset PR steps. (PR203) By Wes Bonelli.
Add doc building requirements to environment.yml (PR188) By James McCreight.
Revive fortran compiling for editable installs (PR188) By James McCreight.
Made the Parameter class data completely private by converting dicts to MappingProxyTypes and setting numpy.ndarrays to read-only. (GH177 and PR183) By James McCreight.
ModelGraph improvements and fixes (however result are platform dependent) (PR162) By James McCreight.
Documentation#
Model class, DatasetDict and general documentation overhaul (PR188) By James McCreight.
Internal changes#
Introduce precommit hooks: nbstripout, blackdoc, and doctoc. (PR197) By James McCreight.
Rename StorageUnit to ConservativeProcess that subclasses from a new Process class that contains most of the StorageUnit functionality. (PR188) By James McCreight.
New set_options() method on Process and ConservativeProcess to set their initialization options as ‘_` atrributes. (PR188) By James McCreight.
Clean up of how the calc_method option assigns function names to reduce the total amount of code and do it upon initialization. (PR188) By James McCreight.
Rename many modules to use lower-snake-case names including those in base/, atmoshpere/, and hydrology/ (PR188) By James McCreight.
NHM “self-driving” tests (PR160) By James McCreight.
Refactor dependencies for standard pypi installation. (PR164, GH178) By Joseph Hughes.
v0.1.1 (27 April 2023)#
Initial release.