Published June 15, 2026
| Version v1.5.0
Software
Open
pyEQL: A python library for water chemistry
Description
Major Changes in pyEQL v1.5.0
- NEW FEATURE
Solution.get_saturation_index():pyEQLcan now display saturation indices for solid phases when using thenative,phreeqc, orphreeqc2026engines. (#395, @SuixiongTay, @YitongPan1) - NEW DEFAULT BEHAVIOR
NativeEOS: thenativemodeling engine (the default) now uses the natively-developedPhreeqc2026EOSfor speciation calculations, rather than the legacyPhreeqcEOSwhich was based on phreeqpython. Both PHREEQC wrappers are still available; the only thing that has changed in this release is which one thenativemodeling engine uses. (#422, @rkingsbury) - Added python 3.14; dropped python 3.10 support.
- Many bugfixes and small enhancements
Full Changelog
[1.5.0] - 2026-06-15
Added
- NEW FEATURE
Solution.get_saturation_index():pyEQLcan now display saturation indices for solid phases when using thenative,phreeqc, orphreeqc2026engines. (#395, @SuixiongTay, @YitongPan1) Solution.alkalinity: Alkalinity calculations now include an alternative definition based on the presence of weak acid-base species. Previously, the calculation only considered conservative cations and strong base anions, which meant that a solution that contained only weak acid/base species would return zero alkalinity. (#398, @SuixiongTay)Solution.get_transference_number: New method alias toget_transport_number(#420, @rkingsbury)- Added
python3.14 support (#404, @rkingsbury) - Docs: new charge balancing tutorial (#391, @SuixiongTay)
- Docs: new tutorial for solid-liquid-gas equilibrium (#390, @YitongPan1)
Solution.__init__now checks whether the suppliedpHandpEconditions are within the electrochemical stability limits of water, and logs a warning if they are not (#385, @YitongPan1)
Changed
- NEW DEFAULT BEHAVIOR
NativeEOS: thenativemodeling engine (the default) now uses the natively-developedPhreeqc2026EOSfor speciation calculations, rather than the legacyPhreeqcEOSwhich was based on phreeqpython. Both PHREEQC wrappers are still available; the only thing that has changed in this release is which one thenativemodeling engine uses. (#422, @rkingsbury) Solution.__init__: solutes can now be given using additional, common environmental unit abbreviations such as "ppm", "ppb", etc., aligning with the unit types supported inget_amount()(#414, @SuixiongTay)get_transport_number: Clarify that the quantity returned by this method is really the transference number, which is equal to the transport number whenever there are no concentration or pressure gradients. Also added a new methodget_transference_numberas an alias. (#420, @rkingsbury)utils.interpret_unitswas renamed toutils.translate_units()(#414, @SuixiongTay)- Solute properties are now pre-cached to enhance performance, especially when creating Solutions containing a large number of solutes (#384, @rkingsbury)
- migrate from
pymatgento[pymatgen-core](https://github.com/materialsproject/pymatgen-core). (#403, @rkingsbury)
Fixed
Phreeqc2026EOS: an error in the__deepcopy__method prevented this class from functioning properly with someSolutionmethods, such as arithmetic (+). (#421, @rkingsbury)from_preset/from_dict: there was a subtle bug in the calculation of solution volumes that could cause a pH / H+ inconsistency when re-creating solutions fromdictor files. This primarily affected solutions with many solutes and the discrepancy was small in quantitative terms, but prevented somepresetsfrom loading correctly.Solution.__init__: fix the way the moles of solvent are initially calculated. The previous approach contained an error and also used a fixed water concentration of 55.55 mol/L regardless of temperature or pressure. The calculation now uses the internalwater_substanceto retrieve the correct density and calculate the molarity. The flaw in the original method did not affect quantitative results because the initial amount of moles was immediately overwritten byadd_amountduring__init__. (#406, @rkingsbury)utils.standardize_formula(): Triiodide ion now correctly renders asBr3[-1]rather thanBr[-0.33333333](#410, @rkingsbury)utils.standardize_formula(): Sulfur species with fractional oxidation states such asS5[-2],S4[-2],S3 [-2], andS2[-2]now render correctly. Previously they were rendered asS[-0.4],S[-0.5],S[-0.66666667], andS[-1](#416, @SuixiongTay)- Docs: fixed issues with the built docs (#402, @YitongPan1; #401, @SuixiongTay)
- Packaging: remove
.gitignore'ed files fromscikit-build-coresdist (#392, @vineetbansal)
Removed
- Dropped
python3.10 support (#404, @rkingsbury)
Files
KingsburyLab/pyEQL-v1.5.0.zip
Files
(14.5 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:62dadc5501b43cca0223ff778b4cc20e
|
14.5 MB | Preview Download |
Additional details
Related works
- Is supplement to
- Software: https://github.com/KingsburyLab/pyEQL/tree/v1.5.0 (URL)
Software
- Repository URL
- https://github.com/KingsburyLab/pyEQL