From 5bed9031100e91ab786a9aa9af6ac4badc390556 Mon Sep 17 00:00:00 2001 From: Ryan Kingsbury Date: Tue, 17 Feb 2026 06:01:45 -0500 Subject: [PATCH 1/3] update CHANGELOG and AUTHORS for v1.4.0 --- AUTHORS.md | 1 + CHANGELOG.md | 32 ++++++++++++++++++++++---------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/AUTHORS.md b/AUTHORS.md index f048db45..461c8800 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -5,6 +5,7 @@ developed and maintained by the Kingsbury Lab at Princeton University. Other contributors, listed alphabetically, are: +- Vineet Basal (@vineetbansal) - Arpit Bhardwaj (@abhardwaj73) - Nikhil Dhruv (@NikhilDhruv) - Dhruv Duseja (@DhruvDuseja) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48d676d9..6df7f5f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,34 +5,46 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [1.4.0rc9] - 2026-02-05 +## [1.4.0] - 2026-02-17 ### Added -- `EOS`: Brand new, custom-compiled wrapper that interfaces directly with IPHREEQC modules distributed by USGS. This +- `Phreeqc2026EOS`: Brand new, custom-compiled wrapper that interfaces directly with IPHREEQC modules distributed by USGS. This new PHREEQC interface is accessible via the new `phreeqc2026` electrolyte modeling engine, and will be used - by default in the `native` engine in `v1.5.0`. (#306, #318, #318, #319, @vineetbansal) + by default in the `native` engine in `v1.5.0`. (#306, #318, #318, #319, #333, # @vineetbansal) +- `Solution.from_preset`: Added presets for 22 representative industrial wastewater compositions, explained in detail in + our recent preprint "Composition and Critical Mineral Content of Major Industrial Wastewaters: Implications for + Treatment and Resource Recovery Technologies," available at [https://doi.org/10.21203/rs.3.rs-8743330/] ### Changed - `Solution.equilibrate`: Added support for solid-liquid and gas-liquid equilibrium via three new kwargs - `atmopshere`, - `solids`, and `gases`. See docstring for details and usage.(#292, #294, @vineetbansal, @YitongPan1, @SuixiongTay) + `solids`, and `gases`. See docstring for details and usage.(#292, #294, #339, @vineetbansal, @YitongPan1, @SuixiongTay) - `get_components_by_element`: A new keyword argument `nested` was added to methods `get_components_by_element` and `get_el_amt_dict` of the `Solution` class. It defaults to `False` (no change from prior behavior), but can be set to `True` to return a 2-level dictionary, with the element symbol as the key at the top level, and the valence (float, or "unk" for unknown) as the key at the second level. This should make it easier for future code to calculate the total amount of a given element regardless of its valence. (#284, @vineetbansal) -- Docs: `sphinx-material` theme migrated to `sphinx-immaterial` (#2xX, @ugognw, @rkingsbury) +- `Solution.get_property`: Changed the `lru_cache` size to greatly enhance performance when creating `Solution` that + contain a large number of solutes (@vineetbansal, @SuixiongTay) +- Docs: `sphinx-material` theme migrated to `sphinx-immaterial` (#272, @ugognw, @rkingsbury) +- Docs: resolved all the `spinx` build warnings and errors (#338, @vineetbansal) +- Docs: Added documentation of `phreeqc2026` engine and new `equilibrate` features (#344, #349, @SuixiongTay, @YitongPan1) +- CI: Various changes to optimize our continuous integration testing workflows. Notably, changes to the docs (only) no + longer trigger unit tests of the code (only of the docs), and now test against a specific set of pinned dependencies + from `requirements.txt`. (#285, #314, #320, #327, #328, #330, #340, @vineetbansal, @rkingsbury) ### Fixed -- `NativeEOS` `equilibrate`: We check if the total amount for any element decreases (within a tolerance of 1e-16 moles) - after speciation. If so, we add all species containing that element back in (unless they have been added by Phreeqc - already). As a result, we replace neutral (aq) molecules, and ions with incorrect charge, with ions with charge - determined by phreeqc, without double-counting. Missing elements (e.g. Rh) are handled correctly as well, since species - with the missing element are re-introduced in the solution. (#282, @vineetbansal) +- `NativeEOS` `equilibrate`: Fixed a bug in which instantiating a solution with pure elements (e.g., `{'Na': '0.5 mol/L'}`) + and then calling `equilibrate` could cause that element to be "double counted." In other words, speciation calculations + would add `Na[+1]` to the solution but retain `Na` as well. This now works correctly. In addition, elements or species + that are missing from PHREEQC's database (e.g. Rh) are handled more robustly. (#282, #352, #355, @vineetbansal, @rkingsbury) +- `from_file`: Instantiating a `Solution` from a .yaml file now gives slightly more accurate results. Previously, there were + slight discrepancies in the volume of the loaded solution, compared to loading from .json or `dict`. (#347, @rkingsbury) - `standardize_formula`: Fixed incorrect reduction of dimers. For example, `(CO2)2` was being standardized to `CO2`, which could cause incorrect concentrations to be reported. Dimers are no longer reduced. (#309, @vineetbansal) +- `FormulaDict`: ensured that quantities are always represented by `python` floats and not `np.float64` (#342, @rkingsbury) ## [1.3.2] - 2025-09-15 From e1c8cc3521455a236ea42e5f3a8fb561d909dd55 Mon Sep 17 00:00:00 2001 From: Ryan Kingsbury Date: Tue, 17 Feb 2026 06:02:03 -0500 Subject: [PATCH 2/3] ignore AUTHORS.md in GH actions --- .github/workflows/docs.yml | 1 + .github/workflows/testing-pinned.yaml | 1 + .github/workflows/testing.yaml | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 2472a6ec..d693539a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -6,6 +6,7 @@ on: - main paths-ignore: - CHANGELOG.md + - AUTHORS.md jobs: docs: diff --git a/.github/workflows/testing-pinned.yaml b/.github/workflows/testing-pinned.yaml index 42632d33..1ac875a8 100644 --- a/.github/workflows/testing-pinned.yaml +++ b/.github/workflows/testing-pinned.yaml @@ -6,6 +6,7 @@ on: - main paths-ignore: - CHANGELOG.md + - AUTHORS.md - docs/** jobs: diff --git a/.github/workflows/testing.yaml b/.github/workflows/testing.yaml index 85e75d99..2b5934f1 100644 --- a/.github/workflows/testing.yaml +++ b/.github/workflows/testing.yaml @@ -7,6 +7,7 @@ on: - pourbaix paths-ignore: - CHANGELOG.md + - AUTHORS.md - docs/** concurrency: From 804ed8786ff684e21d8f2a0fb3c567d791bc602e Mon Sep 17 00:00:00 2001 From: Ryan Kingsbury Date: Tue, 17 Feb 2026 06:12:09 -0500 Subject: [PATCH 3/3] fix link in CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6df7f5f6..c845c3c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 by default in the `native` engine in `v1.5.0`. (#306, #318, #318, #319, #333, # @vineetbansal) - `Solution.from_preset`: Added presets for 22 representative industrial wastewater compositions, explained in detail in our recent preprint "Composition and Critical Mineral Content of Major Industrial Wastewaters: Implications for - Treatment and Resource Recovery Technologies," available at [https://doi.org/10.21203/rs.3.rs-8743330/] + Treatment and Resource Recovery Technologies," available at [https://doi.org/10.21203/rs.3.rs-8743330/v2] ### Changed