pyEQL 0.15.1__tar.gz → 1.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. {pyEQL-0.15.1 → pyeql-1.0.1}/.github/workflows/post-process.yml +1 -1
  2. {pyEQL-0.15.1 → pyeql-1.0.1}/.github/workflows/testing.yaml +1 -1
  3. {pyEQL-0.15.1 → pyeql-1.0.1}/.pre-commit-config.yaml +3 -1
  4. {pyEQL-0.15.1 → pyeql-1.0.1}/CHANGELOG.md +45 -2
  5. pyeql-1.0.1/CITATION.cff +26 -0
  6. {pyEQL-0.15.1/src/pyEQL.egg-info → pyeql-1.0.1}/PKG-INFO +9 -10
  7. {pyEQL-0.15.1 → pyeql-1.0.1}/README.md +4 -6
  8. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/changelog.md +45 -2
  9. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/pyeql_demo.ipynb +96 -121
  10. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/pyeql_tutorial_database.ipynb +415 -400
  11. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/pyeql_tutorial_osmotic_pressure.ipynb +16 -23
  12. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/index.md +1 -1
  13. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/installation.md +3 -0
  14. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/readme.md +4 -6
  15. pyeql-1.0.1/pyeql-logo.png +0 -0
  16. pyeql-1.0.1/pyeql-logo.svg +915 -0
  17. {pyEQL-0.15.1 → pyeql-1.0.1}/pyproject.toml +1 -0
  18. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.10.txt +128 -65
  19. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.10_extras.txt +138 -82
  20. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.11.txt +127 -64
  21. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.11_extras.txt +136 -81
  22. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.12.txt +127 -64
  23. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.12_extras.txt +136 -81
  24. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.9.txt +123 -66
  25. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/macos-latest_py3.9_extras.txt +133 -83
  26. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.10.txt +128 -65
  27. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.10_extras.txt +138 -82
  28. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.11.txt +127 -64
  29. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.11_extras.txt +136 -81
  30. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.12.txt +127 -64
  31. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.12_extras.txt +136 -81
  32. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.9.txt +123 -66
  33. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/ubuntu-latest_py3.9_extras.txt +133 -83
  34. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.10.txt +127 -65
  35. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.10_extras.txt +137 -82
  36. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.11.txt +126 -64
  37. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.11_extras.txt +135 -81
  38. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.12.txt +126 -64
  39. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.12_extras.txt +135 -81
  40. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.9.txt +122 -66
  41. {pyEQL-0.15.1 → pyeql-1.0.1}/requirements/windows-latest_py3.9_extras.txt +132 -83
  42. {pyEQL-0.15.1 → pyeql-1.0.1}/setup.cfg +4 -3
  43. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/__init__.py +9 -1
  44. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/activity_correction.py +24 -21
  45. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/engines.py +56 -42
  46. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/equilibrium.py +18 -12
  47. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/functions.py +8 -161
  48. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/salt_ion_match.py +1 -0
  49. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/solute.py +3 -0
  50. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/solution.py +189 -763
  51. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/utils.py +3 -0
  52. {pyEQL-0.15.1 → pyeql-1.0.1/src/pyEQL.egg-info}/PKG-INFO +9 -10
  53. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL.egg-info/SOURCES.txt +2 -1
  54. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL.egg-info/requires.txt +4 -3
  55. pyeql-1.0.1/tests/test_logging.py +20 -0
  56. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_phreeqc.py +16 -6
  57. pyEQL-0.15.1/pyeql-logo.png +0 -0
  58. pyEQL-0.15.1/pyeql-logo.svg +0 -740
  59. pyEQL-0.15.1/src/pyEQL/logging_system.py +0 -78
  60. {pyEQL-0.15.1 → pyeql-1.0.1}/.coveragerc +0 -0
  61. {pyEQL-0.15.1 → pyeql-1.0.1}/.gitattributes +0 -0
  62. {pyEQL-0.15.1 → pyeql-1.0.1}/.github/dependabot.yml +0 -0
  63. {pyEQL-0.15.1 → pyeql-1.0.1}/.github/pull_request_template.md +0 -0
  64. {pyEQL-0.15.1 → pyeql-1.0.1}/.github/release.yml +0 -0
  65. {pyEQL-0.15.1 → pyeql-1.0.1}/.github/workflows/release.yml +0 -0
  66. {pyEQL-0.15.1 → pyeql-1.0.1}/.github/workflows/upgrade_dependencies.yml +0 -0
  67. {pyEQL-0.15.1 → pyeql-1.0.1}/.gitignore +0 -0
  68. {pyEQL-0.15.1 → pyeql-1.0.1}/.readthedocs.yml +0 -0
  69. {pyEQL-0.15.1 → pyeql-1.0.1}/.zenodo.json +0 -0
  70. {pyEQL-0.15.1 → pyeql-1.0.1}/AUTHORS.md +0 -0
  71. {pyEQL-0.15.1 → pyeql-1.0.1}/COPYING +0 -0
  72. {pyEQL-0.15.1 → pyeql-1.0.1}/LICENSE.txt +0 -0
  73. {pyEQL-0.15.1 → pyeql-1.0.1}/MANIFEST.in +0 -0
  74. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/Makefile +0 -0
  75. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/_static/.gitignore +0 -0
  76. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/amounts.md +0 -0
  77. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/arithmetic.md +0 -0
  78. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/authors.md +0 -0
  79. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/chemistry.md +0 -0
  80. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/class_solution.md +0 -0
  81. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/conf.py +0 -0
  82. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/contributing.md +0 -0
  83. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/creating.md +0 -0
  84. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/database.md +0 -0
  85. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/engines.md +0 -0
  86. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/.ipynb_checkpoints/pyEQL_demo_1-checkpoint.ipynb +0 -0
  87. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/.ipynb_checkpoints/pyeql_demo-checkpoint.ipynb +0 -0
  88. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_database-checkpoint.ipynb +0 -0
  89. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_osmotic_pressure-checkpoint.ipynb +0 -0
  90. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/.ipynb_checkpoints/speedup-checkpoint.ipynb +0 -0
  91. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/pyEQL_demo_1.ipynb +0 -0
  92. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/examples/speedup.ipynb +0 -0
  93. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/internal.md +0 -0
  94. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/license.md +0 -0
  95. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/mixing.md +0 -0
  96. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/quickstart.md +0 -0
  97. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/requirements.txt +0 -0
  98. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/serialization.md +0 -0
  99. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/tutorials.md +0 -0
  100. {pyEQL-0.15.1 → pyeql-1.0.1}/docs/units.md +0 -0
  101. {pyEQL-0.15.1 → pyeql-1.0.1}/setup.py +0 -0
  102. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/database/geothermal.dat +0 -0
  103. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/database/llnl.dat +0 -0
  104. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/database/phreeqc_license.txt +0 -0
  105. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/database/pyeql_db.json +0 -0
  106. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/pint_custom_units.txt +0 -0
  107. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/presets/Ringers lactate.yaml +0 -0
  108. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/presets/normal saline.yaml +0 -0
  109. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/presets/rainwater.yaml +0 -0
  110. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/presets/seawater.yaml +0 -0
  111. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/presets/urine.yaml +0 -0
  112. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL/presets/wastewater.yaml +0 -0
  113. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL.egg-info/dependency_links.txt +0 -0
  114. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL.egg-info/not-zip-safe +0 -0
  115. {pyEQL-0.15.1 → pyeql-1.0.1}/src/pyEQL.egg-info/top_level.txt +0 -0
  116. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/conftest.py +0 -0
  117. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_activity.py +0 -0
  118. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_bulk_properties.py +0 -0
  119. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_debye_length.py +0 -0
  120. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_density.py +0 -0
  121. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_dielectric.py +0 -0
  122. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_effective_pitzer.py +0 -0
  123. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_equilibrium.py +0 -0
  124. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_functions.py +0 -0
  125. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_mixed_electrolyte_activity.py +0 -0
  126. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_osmotic_coeff.py +0 -0
  127. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_salt_matching.py +0 -0
  128. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_solute.py +0 -0
  129. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_solute_properties.py +0 -0
  130. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_solution.py +0 -0
  131. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_utils.py +0 -0
  132. {pyEQL-0.15.1 → pyeql-1.0.1}/tests/test_volume_concentration.py +0 -0
  133. {pyEQL-0.15.1 → pyeql-1.0.1}/tox.ini +0 -0
@@ -55,7 +55,7 @@ jobs:
55
55
  pip install -e ".[testing]"
56
56
  - name: Run tests
57
57
  run: |
58
- pytest --cov=src/pyEQL --cov-report=xml
58
+ pytest -n auto --cov=src/pyEQL --cov-report=xml
59
59
  - uses: codecov/codecov-action@v4
60
60
  with:
61
61
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -64,7 +64,7 @@ jobs:
64
64
  pip install -e ".[testing]"
65
65
  - name: Run tests
66
66
  run: |
67
- pytest --cov=src/pyEQL --cov-report=xml
67
+ pytest -n auto --cov=src/pyEQL --cov-report=xml
68
68
  - uses: codecov/codecov-action@v4
69
69
  with:
70
70
  token: ${{ secrets.CODECOV_TOKEN }}
@@ -27,7 +27,7 @@ repos:
27
27
  hooks:
28
28
  - id: codespell
29
29
  stages: [commit, commit-msg]
30
- exclude_types: [html]
30
+ exclude_types: [html, svg]
31
31
  additional_dependencies: [tomli] # needed to read pyproject.toml below py3.11
32
32
 
33
33
  - repo: https://github.com/pre-commit/pre-commit-hooks
@@ -38,7 +38,9 @@ repos:
38
38
  - id: destroyed-symlinks
39
39
  - id: end-of-file-fixer
40
40
  - id: mixed-line-ending
41
+ exclude_types: [svg]
41
42
  - id: trailing-whitespace
43
+ exclude_types: [svg]
42
44
 
43
45
  - repo: https://github.com/pre-commit/mirrors-prettier
44
46
  rev: v4.0.0-alpha.8
@@ -5,7 +5,51 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## Unreleased
8
+ ## [1.0.1] - 2024-06-17
9
+
10
+ ### Added
11
+
12
+ - Added `NPY201` ruleset to `ruff` configuration to check support for `numpy` 2.0
13
+
14
+ ### Fixed
15
+
16
+ - `NativeEOS` and `PHREEQCEOS` `equilibrate`: Fixed a charge balancing bug that cause repeated calls to `equlibrate` to
17
+ severely distort the pH and/or the composition. (#141)[https://github.com/KingsburyLab/pyEQL/issues/141]
18
+ - `UnicodeDecodeError` when trying to connect to ion database on non-English platforms ([#122](https://github.com/KingsburyLab/pyEQL/issues/122))
19
+
20
+ ### Changed
21
+
22
+ - Replace `math` with `numpy` functions throughout. This mainly changed calls to `log` and `exp`.
23
+ - Docs: Fix missing close parentheses in docstring (@Andrew S. Rosen)
24
+
25
+ ## [1.0.0] - 2024-03-17
26
+
27
+ ### Added
28
+
29
+ - `Solution.__init__`: new keyword argument `log_level` allows user to control the verbosity of log messages by setting
30
+ the level (e.g., ERROR, WARNING, etc.) that will be shown in stdout.
31
+ - Docs: added a note about a workaround for Apple M1/M2 Macs proposed by @xiaoxiaozhu123
32
+
33
+ ### Changed
34
+
35
+ - `Solution.__init__`: The deprecated format for specifying solutes (e.g., `[["Na+", "0.5 mol/L]]`)
36
+ which previously only generated log warning message, now raises a `DeprecationWarning`. Use dict-style input (e.g.,
37
+ `{"Na+":"0.5 mol/L"}`) instead.
38
+ - New logo! Updated the `pyEQL` logo (for the first time in 9 years!) to address an obsolete font in the .svg
39
+ and modernize the design.
40
+
41
+ ### Removed
42
+
43
+ - **BREAKING** All methods and functions (with the exception of `Solution.list_XXX` methods) previously marked with
44
+ deprecation warnings have been removed.
45
+
46
+ ## [0.15.1] - 2024-03-13
47
+
48
+ ### Fixed
49
+
50
+ - `Solution.get_total_amount`: Fixed an issue in which `ppm` units would fail.
51
+
52
+ ## [0.15.0] - 2024-03-13
9
53
 
10
54
  ### Added
11
55
 
@@ -19,7 +63,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
63
 
20
64
  ### Fixed
21
65
 
22
- - `Solution.get_total_amount`: Fixed an issue in which `ppm` units would fail.
23
66
  - `Solution`: Fixed an issue in which repeated calls to `equilibrate` when using `NativeEOS` or `PHREEQCEOS` would
24
67
  change the mass of the `Solution` slightly. This was attributed to the fact that `pyEQL` and `PHREEQC` use slightly
25
68
  different molecular weights for water.
@@ -0,0 +1,26 @@
1
+ cff-version: "1.2.0"
2
+ authors:
3
+ - family-names: Kingsbury
4
+ given-names: Ryan
5
+ orcid: "https://orcid.org/0000-0002-7168-3967"
6
+ doi: 10.5281/zenodo.8332915
7
+ message: If you use this software, please cite our article in the
8
+ Journal of Open Source Software.
9
+ preferred-citation:
10
+ authors:
11
+ - family-names: Kingsbury
12
+ given-names: Ryan
13
+ orcid: "https://orcid.org/0000-0002-7168-3967"
14
+ date-published: 2024-03-25
15
+ doi: 10.21105/joss.06295
16
+ issn: 2475-9066
17
+ issue: 95
18
+ journal: Journal of Open Source Software
19
+ publisher:
20
+ name: Open Journals
21
+ start: 6295
22
+ title: "pyEQL: A Python interface for water chemistry"
23
+ type: article
24
+ url: "https://joss.theoj.org/papers/10.21105/joss.06295"
25
+ volume: 9
26
+ title: "pyEQL: A Python interface for water chemistry"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyEQL
3
- Version: 0.15.1
3
+ Version: 1.0.1
4
4
  Summary: Python tools for solution chemistry
5
5
  Home-page: https://github.com/KingsburyLab/pyEQL
6
6
  Author: Ryan Kingsbury
@@ -19,18 +19,19 @@ License-File: LICENSE.txt
19
19
  License-File: COPYING
20
20
  License-File: AUTHORS.md
21
21
  Requires-Dist: pint>=0.19
22
- Requires-Dist: numpy
22
+ Requires-Dist: numpy<2
23
23
  Requires-Dist: scipy
24
- Requires-Dist: pymatgen>=2023.10.11
24
+ Requires-Dist: pymatgen==2024.5.1
25
25
  Requires-Dist: iapws
26
26
  Requires-Dist: monty
27
- Requires-Dist: maggma>=0.57.5
27
+ Requires-Dist: maggma>=0.67.0
28
28
  Requires-Dist: phreeqpython
29
29
  Provides-Extra: testing
30
30
  Requires-Dist: setuptools; extra == "testing"
31
31
  Requires-Dist: pre-commit; extra == "testing"
32
32
  Requires-Dist: pytest; extra == "testing"
33
33
  Requires-Dist: pytest-cov; extra == "testing"
34
+ Requires-Dist: pytest-xdist; extra == "testing"
34
35
  Requires-Dist: black; extra == "testing"
35
36
  Requires-Dist: mypy; extra == "testing"
36
37
  Requires-Dist: ruff; extra == "testing"
@@ -50,11 +51,9 @@ Requires-Dist: rich; extra == "full"
50
51
  [![PyPI version](https://badge.fury.io/py/pyEQL.svg)](https://badge.fury.io/py/pyEQL)
51
52
  [![status](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6/status.svg)](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6)
52
53
 
54
+ <img src="pyeql-logo.png" alt="pyEQL logo" style="width:600px;"/>
53
55
 
54
- ![pyeql logo](pyeql-logo.svg)
55
-
56
- A python interface for water chemistry
57
-
56
+ # A python interface for water chemistry
58
57
 
59
58
  ## Description
60
59
 
@@ -122,8 +121,8 @@ Detailed documentation is available at [https://pyeql.readthedocs.io/](https://p
122
121
  - [maggma](https://materialsproject.github.io/maggma/) - interface for accessing the property database
123
122
  - [scipy](https://www.scipy.org/) - for certain nonlinear equation solvers
124
123
 
125
- <!-- pyscaffold-notes -->
126
- ---
124
+ ## <!-- pyscaffold-notes -->
125
+
127
126
  pyEQL is licensed under LGPL.
128
127
 
129
128
  This project has been set up using PyScaffold 4.5. For details and usage
@@ -6,11 +6,9 @@
6
6
  [![PyPI version](https://badge.fury.io/py/pyEQL.svg)](https://badge.fury.io/py/pyEQL)
7
7
  [![status](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6/status.svg)](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6)
8
8
 
9
+ <img src="pyeql-logo.png" alt="pyEQL logo" style="width:600px;"/>
9
10
 
10
- ![pyeql logo](pyeql-logo.svg)
11
-
12
- A python interface for water chemistry
13
-
11
+ # A python interface for water chemistry
14
12
 
15
13
  ## Description
16
14
 
@@ -78,8 +76,8 @@ Detailed documentation is available at [https://pyeql.readthedocs.io/](https://p
78
76
  - [maggma](https://materialsproject.github.io/maggma/) - interface for accessing the property database
79
77
  - [scipy](https://www.scipy.org/) - for certain nonlinear equation solvers
80
78
 
81
- <!-- pyscaffold-notes -->
82
- ---
79
+ ## <!-- pyscaffold-notes -->
80
+
83
81
  pyEQL is licensed under LGPL.
84
82
 
85
83
  This project has been set up using PyScaffold 4.5. For details and usage
@@ -5,7 +5,51 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
- ## Unreleased
8
+ ## [1.0.1] - 2024-06-17
9
+
10
+ ### Added
11
+
12
+ - Added `NPY201` ruleset to `ruff` configuration to check support for `numpy` 2.0
13
+
14
+ ### Fixed
15
+
16
+ - `NativeEOS` and `PHREEQCEOS` `equilibrate`: Fixed a charge balancing bug that cause repeated calls to `equlibrate` to
17
+ severely distort the pH and/or the composition. (#141)[https://github.com/KingsburyLab/pyEQL/issues/141]
18
+ - `UnicodeDecodeError` when trying to connect to ion database on non-English platforms ([#122](https://github.com/KingsburyLab/pyEQL/issues/122))
19
+
20
+ ### Changed
21
+
22
+ - Replace `math` with `numpy` functions throughout. This mainly changed calls to `log` and `exp`.
23
+ - Docs: Fix missing close parentheses in docstring (@Andrew S. Rosen)
24
+
25
+ ## [1.0.0] - 2024-03-17
26
+
27
+ ### Added
28
+
29
+ - `Solution.__init__`: new keyword argument `log_level` allows user to control the verbosity of log messages by setting
30
+ the level (e.g., ERROR, WARNING, etc.) that will be shown in stdout.
31
+ - Docs: added a note about a workaround for Apple M1/M2 Macs proposed by @xiaoxiaozhu123
32
+
33
+ ### Changed
34
+
35
+ - `Solution.__init__`: The deprecated format for specifying solutes (e.g., `[["Na+", "0.5 mol/L]]`)
36
+ which previously only generated log warning message, now raises a `DeprecationWarning`. Use dict-style input (e.g.,
37
+ `{"Na+":"0.5 mol/L"}`) instead.
38
+ - New logo! Updated the `pyEQL` logo (for the first time in 9 years!) to address an obsolete font in the .svg
39
+ and modernize the design.
40
+
41
+ ### Removed
42
+
43
+ - **BREAKING** All methods and functions (with the exception of `Solution.list_XXX` methods) previously marked with
44
+ deprecation warnings have been removed.
45
+
46
+ ## [0.15.1] - 2024-03-13
47
+
48
+ ### Fixed
49
+
50
+ - `Solution.get_total_amount`: Fixed an issue in which `ppm` units would fail.
51
+
52
+ ## [0.15.0] - 2024-03-13
9
53
 
10
54
  ### Added
11
55
 
@@ -19,7 +63,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
19
63
 
20
64
  ### Fixed
21
65
 
22
- - `Solution.get_total_amount`: Fixed an issue in which `ppm` units would fail.
23
66
  - `Solution`: Fixed an issue in which repeated calls to `equilibrate` when using `NativeEOS` or `PHREEQCEOS` would
24
67
  change the mass of the `Solution` slightly. This was attributed to the fact that `pyEQL` and `PHREEQC` use slightly
25
68
  different molecular weights for water.