pyEQL 1.1.4__tar.gz → 1.1.6__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 (128) hide show
  1. {pyeql-1.1.4 → pyeql-1.1.6}/.github/workflows/post-process.yml +11 -5
  2. {pyeql-1.1.4 → pyeql-1.1.6}/.github/workflows/release.yml +1 -1
  3. {pyeql-1.1.4 → pyeql-1.1.6}/AUTHORS.md +7 -4
  4. {pyeql-1.1.4 → pyeql-1.1.6}/CHANGELOG.md +34 -0
  5. {pyeql-1.1.4/src/pyEQL.egg-info → pyeql-1.1.6}/PKG-INFO +12 -12
  6. {pyeql-1.1.4 → pyeql-1.1.6}/docs/authors.md +7 -4
  7. {pyeql-1.1.4 → pyeql-1.1.6}/docs/changelog.md +34 -0
  8. {pyeql-1.1.4 → pyeql-1.1.6}/pyproject.toml +11 -11
  9. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.10.txt +21 -21
  10. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.10_extras.txt +36 -36
  11. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.11.txt +21 -21
  12. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.11_extras.txt +35 -35
  13. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.12.txt +21 -21
  14. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.12_extras.txt +35 -35
  15. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.9.txt +22 -21
  16. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/macos-latest_py3.9_extras.txt +37 -36
  17. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.10.txt +21 -21
  18. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.10_extras.txt +36 -36
  19. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.11.txt +21 -21
  20. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.11_extras.txt +35 -35
  21. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.12.txt +21 -21
  22. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.12_extras.txt +35 -35
  23. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.9.txt +22 -21
  24. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/ubuntu-latest_py3.9_extras.txt +37 -36
  25. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.10.txt +21 -21
  26. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.10_extras.txt +36 -36
  27. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.11.txt +21 -21
  28. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.11_extras.txt +35 -35
  29. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.12.txt +21 -21
  30. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.12_extras.txt +35 -35
  31. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.9.txt +22 -21
  32. {pyeql-1.1.4 → pyeql-1.1.6}/requirements/windows-latest_py3.9_extras.txt +37 -36
  33. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/functions.py +27 -13
  34. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/solution.py +4 -6
  35. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/utils.py +6 -0
  36. {pyeql-1.1.4 → pyeql-1.1.6/src/pyEQL.egg-info}/PKG-INFO +12 -12
  37. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL.egg-info/requires.txt +11 -11
  38. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_functions.py +19 -3
  39. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_solution.py +1 -0
  40. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_utils.py +2 -0
  41. {pyeql-1.1.4 → pyeql-1.1.6}/.coveragerc +0 -0
  42. {pyeql-1.1.4 → pyeql-1.1.6}/.gitattributes +0 -0
  43. {pyeql-1.1.4 → pyeql-1.1.6}/.github/dependabot.yml +0 -0
  44. {pyeql-1.1.4 → pyeql-1.1.6}/.github/pull_request_template.md +0 -0
  45. {pyeql-1.1.4 → pyeql-1.1.6}/.github/release.yml +0 -0
  46. {pyeql-1.1.4 → pyeql-1.1.6}/.github/workflows/testing.yaml +0 -0
  47. {pyeql-1.1.4 → pyeql-1.1.6}/.github/workflows/upgrade_dependencies.yml +0 -0
  48. {pyeql-1.1.4 → pyeql-1.1.6}/.gitignore +0 -0
  49. {pyeql-1.1.4 → pyeql-1.1.6}/.pre-commit-config.yaml +0 -0
  50. {pyeql-1.1.4 → pyeql-1.1.6}/.readthedocs.yml +0 -0
  51. {pyeql-1.1.4 → pyeql-1.1.6}/.zenodo.json +0 -0
  52. {pyeql-1.1.4 → pyeql-1.1.6}/CITATION.cff +0 -0
  53. {pyeql-1.1.4 → pyeql-1.1.6}/COPYING +0 -0
  54. {pyeql-1.1.4 → pyeql-1.1.6}/LICENSE.txt +0 -0
  55. {pyeql-1.1.4 → pyeql-1.1.6}/MANIFEST.in +0 -0
  56. {pyeql-1.1.4 → pyeql-1.1.6}/README.md +0 -0
  57. {pyeql-1.1.4 → pyeql-1.1.6}/docs/Makefile +0 -0
  58. {pyeql-1.1.4 → pyeql-1.1.6}/docs/_static/.gitignore +0 -0
  59. {pyeql-1.1.4 → pyeql-1.1.6}/docs/amounts.md +0 -0
  60. {pyeql-1.1.4 → pyeql-1.1.6}/docs/arithmetic.md +0 -0
  61. {pyeql-1.1.4 → pyeql-1.1.6}/docs/chemistry.md +0 -0
  62. {pyeql-1.1.4 → pyeql-1.1.6}/docs/class_solution.md +0 -0
  63. {pyeql-1.1.4 → pyeql-1.1.6}/docs/conf.py +0 -0
  64. {pyeql-1.1.4 → pyeql-1.1.6}/docs/contributing.md +0 -0
  65. {pyeql-1.1.4 → pyeql-1.1.6}/docs/creating.md +0 -0
  66. {pyeql-1.1.4 → pyeql-1.1.6}/docs/database.md +0 -0
  67. {pyeql-1.1.4 → pyeql-1.1.6}/docs/engines.md +0 -0
  68. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/.ipynb_checkpoints/pyEQL_demo_1-checkpoint.ipynb +0 -0
  69. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/.ipynb_checkpoints/pyeql_demo-checkpoint.ipynb +0 -0
  70. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_database-checkpoint.ipynb +0 -0
  71. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_osmotic_pressure-checkpoint.ipynb +0 -0
  72. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/.ipynb_checkpoints/speedup-checkpoint.ipynb +0 -0
  73. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/pyEQL_demo_1.ipynb +0 -0
  74. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/pyeql_demo.ipynb +0 -0
  75. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/pyeql_tutorial_database.ipynb +0 -0
  76. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/pyeql_tutorial_osmotic_pressure.ipynb +0 -0
  77. {pyeql-1.1.4 → pyeql-1.1.6}/docs/examples/speedup.ipynb +0 -0
  78. {pyeql-1.1.4 → pyeql-1.1.6}/docs/index.md +0 -0
  79. {pyeql-1.1.4 → pyeql-1.1.6}/docs/installation.md +0 -0
  80. {pyeql-1.1.4 → pyeql-1.1.6}/docs/internal.md +0 -0
  81. {pyeql-1.1.4 → pyeql-1.1.6}/docs/license.md +0 -0
  82. {pyeql-1.1.4 → pyeql-1.1.6}/docs/mixing.md +0 -0
  83. {pyeql-1.1.4 → pyeql-1.1.6}/docs/quickstart.md +0 -0
  84. {pyeql-1.1.4 → pyeql-1.1.6}/docs/readme.md +0 -0
  85. {pyeql-1.1.4 → pyeql-1.1.6}/docs/requirements.txt +0 -0
  86. {pyeql-1.1.4 → pyeql-1.1.6}/docs/serialization.md +0 -0
  87. {pyeql-1.1.4 → pyeql-1.1.6}/docs/tutorials.md +0 -0
  88. {pyeql-1.1.4 → pyeql-1.1.6}/docs/units.md +0 -0
  89. {pyeql-1.1.4 → pyeql-1.1.6}/pyeql-logo.png +0 -0
  90. {pyeql-1.1.4 → pyeql-1.1.6}/pyeql-logo.svg +0 -0
  91. {pyeql-1.1.4 → pyeql-1.1.6}/setup.cfg +0 -0
  92. {pyeql-1.1.4 → pyeql-1.1.6}/setup.py +0 -0
  93. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/__init__.py +0 -0
  94. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/activity_correction.py +0 -0
  95. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/database/geothermal.dat +0 -0
  96. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/database/llnl.dat +0 -0
  97. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/database/phreeqc_license.txt +0 -0
  98. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/database/pyeql_db.json +0 -0
  99. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/engines.py +0 -0
  100. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/equilibrium.py +0 -0
  101. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/presets/Ringers lactate.yaml +0 -0
  102. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/presets/normal saline.yaml +0 -0
  103. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/presets/rainwater.yaml +0 -0
  104. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/presets/seawater.yaml +0 -0
  105. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/presets/urine.yaml +0 -0
  106. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/presets/wastewater.yaml +0 -0
  107. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/salt_ion_match.py +0 -0
  108. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL/solute.py +0 -0
  109. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL.egg-info/SOURCES.txt +0 -0
  110. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL.egg-info/dependency_links.txt +0 -0
  111. {pyeql-1.1.4 → pyeql-1.1.6}/src/pyEQL.egg-info/top_level.txt +0 -0
  112. {pyeql-1.1.4 → pyeql-1.1.6}/tests/conftest.py +0 -0
  113. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_activity.py +0 -0
  114. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_bulk_properties.py +0 -0
  115. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_debye_length.py +0 -0
  116. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_density.py +0 -0
  117. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_dielectric.py +0 -0
  118. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_effective_pitzer.py +0 -0
  119. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_equilibrium.py +0 -0
  120. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_logging.py +0 -0
  121. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_mixed_electrolyte_activity.py +0 -0
  122. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_osmotic_coeff.py +0 -0
  123. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_phreeqc.py +0 -0
  124. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_salt_matching.py +0 -0
  125. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_solute.py +0 -0
  126. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_solute_properties.py +0 -0
  127. {pyeql-1.1.4 → pyeql-1.1.6}/tests/test_volume_concentration.py +0 -0
  128. {pyeql-1.1.4 → pyeql-1.1.6}/tox.ini +0 -0
@@ -33,26 +33,32 @@ jobs:
33
33
  strategy:
34
34
  max-parallel: 6
35
35
  matrix:
36
- python-version: ["3.9", "3.10", "3.11", "3.12"]
36
+ version:
37
+ - { python: "3.9", resolution: highest, extras: testing }
38
+ - { python: "3.10", resolution: lowest-direct, extras: testing }
39
+ - { python: "3.11", resolution: highest, extras: testing }
40
+ - { python: "3.12", resolution: lowest-direct, extras: testing }
37
41
  os:
38
42
  - ubuntu-latest
39
43
  - macos-latest
40
44
  - windows-latest
41
45
  - macos-14
42
46
  exclude:
43
- - os: macos-14
44
- python-version: "3.9"
47
+ - {version: {
48
+ python: "3.9" },
49
+ os: macos-14 }
45
50
  runs-on: ${{ matrix.os }}
46
51
  steps:
47
52
  - uses: actions/checkout@v4
48
53
  - name: Setup Python
49
54
  uses: actions/setup-python@v5
50
55
  with:
51
- python-version: ${{ matrix.python-version }}${{ matrix.dev }}
56
+ python-version: ${{ matrix.version.python }}
52
57
  - name: Install test requirements
53
58
  run: |
54
59
  python -m pip install --upgrade pip
55
- pip install -e ".[testing]"
60
+ pip install uv
61
+ uv pip install '.[${{ matrix.version.extras }}]' --system --resolution=${{ matrix.version.resolution }}
56
62
  - name: Run tests
57
63
  run: |
58
64
  pytest -n auto --cov=src/pyEQL --cov-report=xml
@@ -57,4 +57,4 @@ jobs:
57
57
  tox -e clean,build
58
58
 
59
59
  - name: Upload to PyPi
60
- uses: pypa/gh-action-pypi-publish@v1.8.14
60
+ uses: pypa/gh-action-pypi-publish@v1.10.0
@@ -5,9 +5,12 @@ developed and maintained by the Kingsbury Lab at Princeton University.
5
5
 
6
6
  Other contributors, listed alphabetically, are:
7
7
 
8
- * Kirill Pushkarev (@kirill-push)
9
- * Dhruv Duseja (@DhruvDuseja)
10
- * Andrew Rosen (@arosen93)
11
- * Hernan Grecco (@hgrecco)
8
+ - Arpit Bhardwaj (@abhardwaj73)
9
+ - Dhruv Duseja (@DhruvDuseja)
10
+ - Hernan Grecco (@hgrecco)
11
+ - Jaebeom Park (@Jaebeom-P)
12
+ - Kirill Pushkarev (@kirill-push)
13
+ - Andrew Rosen (@arosen93)
14
+ - Sui Xiong Tay (@SuixiongTay)
12
15
 
13
16
  (If you think that your name belongs here, please let the maintainer know)
@@ -5,6 +5,40 @@ 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
+ ## [1.1.6] - 2024-09-01
9
+
10
+ ### Fixed
11
+
12
+ - `Solution.get_total_amount`: Bugfix that caused an error when called on certain elements
13
+ without specifying an oxidation state. For example, `get_total_amount('N')` could raise
14
+ an exception in a solution containing `Na` (but no `N`) due to a flaw in a logical
15
+ test.
16
+ - `Solution._adjust_charge_balance`: Removed a misleading and redundant log message (#162, @SuixiongTay)
17
+
18
+ ### Added
19
+
20
+ - `gibbs_mix`: A new keyword argument `activity_correction` was added to `gibbs_mix`. It defaults
21
+ to `True` (no change from prior behavior), but can be set to `False` in order to calculate the
22
+ ideal mixing energy, which is equivalent to only considering entropic effects. (#178, @Jaebeom-P)
23
+ - `standardize_formula`: Improve formatting of ammonium sulfate salts. Aqueous ammonium sulfate previously
24
+ standardized to `H8S(NO2)2(aq)`, now it will display as `(NH4)2SO4(aq)`.
25
+
26
+ ### Changed
27
+
28
+ - **BREAKING** `entropy_mix` now returns the ideal mixing _entropy_ in units of J/K rather than the mixing
29
+ _energy_ in J. This was done to improve clarity with respect to the function name. An `activity_correction`
30
+ kwarg was added to `gibbs_mix` so that you can still calculate the ideal mixing energy by setting it to `False`.
31
+ (#178, @Jaebeom-P)
32
+ - Revise documentation of `gibbs_mix`, `entropy_mix`, and `donnan_eql`. (#178, @Jaebeom-P)
33
+ - CI: Improve comprehensiveness of CI dependency testing. (#163, #164, @abhardwaj73)
34
+
35
+ ## [1.1.5] - 2024-07-28
36
+
37
+ ### Fixed
38
+
39
+ - `Solution`: Hotfix to remove a stray `assert` statement in `_adjust_charge_balance`
40
+ that would sometimes cause errors in`pH` charge balancing.
41
+
8
42
  ## [1.1.4] - 2024-07-28
9
43
 
10
44
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyEQL
3
- Version: 1.1.4
3
+ Version: 1.1.6
4
4
  Summary: A python interface for solution chemistry
5
5
  Author-email: Ryan Kingsbury <kingsbury@princeton.edu>
6
6
  Project-URL: Docs, https://pyeql.readthedocs.io/
@@ -21,22 +21,22 @@ License-File: LICENSE.txt
21
21
  License-File: COPYING
22
22
  License-File: AUTHORS.md
23
23
  Requires-Dist: pint>=0.19
24
- Requires-Dist: numpy<2
25
- Requires-Dist: scipy
24
+ Requires-Dist: numpy<2,>1.26
25
+ Requires-Dist: scipy>=1.12
26
26
  Requires-Dist: pymatgen==2024.5.1
27
- Requires-Dist: iapws
27
+ Requires-Dist: iapws>=1.5.3
28
28
  Requires-Dist: monty>=2024.7.12
29
29
  Requires-Dist: maggma>=0.67.0
30
- Requires-Dist: phreeqpython
30
+ Requires-Dist: phreeqpython>=1.5.2
31
31
  Provides-Extra: testing
32
- Requires-Dist: setuptools; extra == "testing"
33
- Requires-Dist: pre-commit; extra == "testing"
34
- Requires-Dist: pytest; extra == "testing"
35
- Requires-Dist: pytest-cov; extra == "testing"
36
- Requires-Dist: pytest-xdist; extra == "testing"
32
+ Requires-Dist: setuptools>=68; extra == "testing"
33
+ Requires-Dist: pre-commit>=2; extra == "testing"
34
+ Requires-Dist: pytest>=7; extra == "testing"
35
+ Requires-Dist: pytest-cov>=2.11; extra == "testing"
36
+ Requires-Dist: pytest-xdist>2; extra == "testing"
37
37
  Requires-Dist: black; extra == "testing"
38
- Requires-Dist: mypy; extra == "testing"
39
- Requires-Dist: ruff; extra == "testing"
38
+ Requires-Dist: mypy>1; extra == "testing"
39
+ Requires-Dist: ruff>0.0.100; extra == "testing"
40
40
  Requires-Dist: tox<4; extra == "testing"
41
41
  Provides-Extra: docs
42
42
  Requires-Dist: sphinx>=3.2.1; extra == "docs"
@@ -5,9 +5,12 @@ developed and maintained by the Kingsbury Lab at Princeton University.
5
5
 
6
6
  Other contributors, listed alphabetically, are:
7
7
 
8
- * Kirill Pushkarev (@kirill-push)
9
- * Dhruv Duseja (@DhruvDuseja)
10
- * Andrew Rosen (@arosen93)
11
- * Hernan Grecco (@hgrecco)
8
+ - Arpit Bhardwaj (@abhardwaj73)
9
+ - Dhruv Duseja (@DhruvDuseja)
10
+ - Hernan Grecco (@hgrecco)
11
+ - Jaebeom Park (@Jaebeom-P)
12
+ - Kirill Pushkarev (@kirill-push)
13
+ - Andrew Rosen (@arosen93)
14
+ - Sui Xiong Tay (@SuixiongTay)
12
15
 
13
16
  (If you think that your name belongs here, please let the maintainer know)
@@ -5,6 +5,40 @@ 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
+ ## [1.1.6] - 2024-09-01
9
+
10
+ ### Fixed
11
+
12
+ - `Solution.get_total_amount`: Bugfix that caused an error when called on certain elements
13
+ without specifying an oxidation state. For example, `get_total_amount('N')` could raise
14
+ an exception in a solution containing `Na` (but no `N`) due to a flaw in a logical
15
+ test.
16
+ - `Solution._adjust_charge_balance`: Removed a misleading and redundant log message (#162, @SuixiongTay)
17
+
18
+ ### Added
19
+
20
+ - `gibbs_mix`: A new keyword argument `activity_correction` was added to `gibbs_mix`. It defaults
21
+ to `True` (no change from prior behavior), but can be set to `False` in order to calculate the
22
+ ideal mixing energy, which is equivalent to only considering entropic effects. (#178, @Jaebeom-P)
23
+ - `standardize_formula`: Improve formatting of ammonium sulfate salts. Aqueous ammonium sulfate previously
24
+ standardized to `H8S(NO2)2(aq)`, now it will display as `(NH4)2SO4(aq)`.
25
+
26
+ ### Changed
27
+
28
+ - **BREAKING** `entropy_mix` now returns the ideal mixing _entropy_ in units of J/K rather than the mixing
29
+ _energy_ in J. This was done to improve clarity with respect to the function name. An `activity_correction`
30
+ kwarg was added to `gibbs_mix` so that you can still calculate the ideal mixing energy by setting it to `False`.
31
+ (#178, @Jaebeom-P)
32
+ - Revise documentation of `gibbs_mix`, `entropy_mix`, and `donnan_eql`. (#178, @Jaebeom-P)
33
+ - CI: Improve comprehensiveness of CI dependency testing. (#163, #164, @abhardwaj73)
34
+
35
+ ## [1.1.5] - 2024-07-28
36
+
37
+ ### Fixed
38
+
39
+ - `Solution`: Hotfix to remove a stray `assert` statement in `_adjust_charge_balance`
40
+ that would sometimes cause errors in`pH` charge balancing.
41
+
8
42
  ## [1.1.4] - 2024-07-28
9
43
 
10
44
  ### Fixed
@@ -21,13 +21,13 @@ license = {file = "LICENSE"}
21
21
  requires-python = ">=3.9"
22
22
  dependencies = [
23
23
  "pint>=0.19",
24
- "numpy<2",
25
- "scipy",
24
+ "numpy>1.26,<2",
25
+ "scipy>=1.12",
26
26
  "pymatgen==2024.5.1",
27
- "iapws",
27
+ "iapws>=1.5.3",
28
28
  "monty>=2024.7.12",
29
29
  "maggma>=0.67.0",
30
- "phreeqpython",
30
+ "phreeqpython>=1.5.2",
31
31
  ]
32
32
 
33
33
  [project.urls]
@@ -38,14 +38,14 @@ Package = "https://pypi.org/project/pyEQL"
38
38
 
39
39
  [project.optional-dependencies]
40
40
  testing = [
41
- "setuptools",
42
- "pre-commit",
43
- "pytest",
44
- "pytest-cov",
45
- "pytest-xdist",
41
+ "setuptools>=68",
42
+ "pre-commit>=2",
43
+ "pytest>=7",
44
+ "pytest-cov>=2.11",
45
+ "pytest-xdist>2",
46
46
  "black",
47
- "mypy",
48
- "ruff",
47
+ "mypy>1",
48
+ "ruff>0.0.100",
49
49
  "tox<4",
50
50
  ]
51
51
  docs = [
@@ -10,22 +10,22 @@ annotated-types==0.7.0
10
10
  # via pydantic
11
11
  appdirs==1.4.4
12
12
  # via pint
13
- attrs==23.2.0
13
+ attrs==24.2.0
14
14
  # via
15
15
  # jsonlines
16
16
  # jsonschema
17
17
  # referencing
18
- bcrypt==4.1.3
18
+ bcrypt==4.2.0
19
19
  # via paramiko
20
- boto3==1.34.142
20
+ boto3==1.34.158
21
21
  # via maggma
22
- botocore==1.34.142
22
+ botocore==1.34.158
23
23
  # via
24
24
  # boto3
25
25
  # s3transfer
26
26
  certifi==2024.7.4
27
27
  # via requests
28
- cffi==1.16.0
28
+ cffi==1.17.0
29
29
  # via
30
30
  # cryptography
31
31
  # pynacl
@@ -33,7 +33,7 @@ charset-normalizer==3.3.2
33
33
  # via requests
34
34
  contourpy==1.2.1
35
35
  # via matplotlib
36
- cryptography==42.0.8
36
+ cryptography==43.0.0
37
37
  # via paramiko
38
38
  cycler==0.12.1
39
39
  # via matplotlib
@@ -67,13 +67,13 @@ kiwisolver==1.4.5
67
67
  # via matplotlib
68
68
  latexcodec==3.0.0
69
69
  # via pybtex
70
- maggma==0.69.0
70
+ maggma==0.69.1
71
71
  # via pyEQL (setup.py)
72
- matplotlib==3.9.1
72
+ matplotlib==3.9.1.post1
73
73
  # via pymatgen
74
74
  mongomock==4.1.2
75
75
  # via maggma
76
- monty==2024.5.24
76
+ monty==2024.7.30
77
77
  # via
78
78
  # maggma
79
79
  # pyEQL (setup.py)
@@ -95,7 +95,7 @@ numpy==1.26.4
95
95
  # pymatgen
96
96
  # scipy
97
97
  # spglib
98
- orjson==3.10.6
98
+ orjson==3.10.7
99
99
  # via maggma
100
100
  packaging==24.1
101
101
  # via
@@ -116,9 +116,9 @@ phreeqpython==1.5.2
116
116
  # via pyEQL (setup.py)
117
117
  pillow==10.4.0
118
118
  # via matplotlib
119
- pint==0.24.1
119
+ pint==0.24.3
120
120
  # via pyEQL (setup.py)
121
- plotly==5.22.0
121
+ plotly==5.23.0
122
122
  # via pymatgen
123
123
  pybtex==0.24.0
124
124
  # via pymatgen
@@ -130,9 +130,9 @@ pydantic==2.8.2
130
130
  # pydantic-settings
131
131
  pydantic-core==2.20.1
132
132
  # via pydantic
133
- pydantic-settings==2.3.4
133
+ pydantic-settings==2.4.0
134
134
  # via maggma
135
- pydash==8.0.1
135
+ pydash==8.0.3
136
136
  # via maggma
137
137
  pymatgen==2024.5.1
138
138
  # via pyEQL (setup.py)
@@ -154,9 +154,9 @@ python-dotenv==1.0.1
154
154
  # via pydantic-settings
155
155
  pytz==2024.1
156
156
  # via pandas
157
- pyyaml==6.0.1
157
+ pyyaml==6.0.2
158
158
  # via pybtex
159
- pyzmq==26.0.3
159
+ pyzmq==26.1.0
160
160
  # via maggma
161
161
  referencing==0.35.1
162
162
  # via
@@ -164,7 +164,7 @@ referencing==0.35.1
164
164
  # jsonschema-specifications
165
165
  requests==2.32.3
166
166
  # via pymatgen
167
- rpds-py==0.19.0
167
+ rpds-py==0.20.0
168
168
  # via
169
169
  # jsonschema
170
170
  # referencing
@@ -188,17 +188,17 @@ six==1.16.0
188
188
  # via
189
189
  # pybtex
190
190
  # python-dateutil
191
- spglib==2.4.0
191
+ spglib==2.5.0
192
192
  # via pymatgen
193
193
  sshtunnel==0.4.0
194
194
  # via maggma
195
- sympy==1.13.0
195
+ sympy==1.13.1
196
196
  # via pymatgen
197
197
  tabulate==0.9.0
198
198
  # via pymatgen
199
- tenacity==8.5.0
199
+ tenacity==9.0.0
200
200
  # via plotly
201
- tqdm==4.66.4
201
+ tqdm==4.66.5
202
202
  # via
203
203
  # maggma
204
204
  # pymatgen
@@ -12,26 +12,26 @@ annotated-types==0.7.0
12
12
  # via pydantic
13
13
  appdirs==1.4.4
14
14
  # via pint
15
- attrs==23.2.0
15
+ attrs==24.2.0
16
16
  # via
17
17
  # jsonlines
18
18
  # jsonschema
19
19
  # referencing
20
- babel==2.15.0
20
+ babel==2.16.0
21
21
  # via sphinx
22
- bcrypt==4.1.3
22
+ bcrypt==4.2.0
23
23
  # via paramiko
24
- black==24.4.2
24
+ black==24.8.0
25
25
  # via pyEQL (setup.py)
26
- boto3==1.34.142
26
+ boto3==1.34.158
27
27
  # via maggma
28
- botocore==1.34.142
28
+ botocore==1.34.158
29
29
  # via
30
30
  # boto3
31
31
  # s3transfer
32
32
  certifi==2024.7.4
33
33
  # via requests
34
- cffi==1.16.0
34
+ cffi==1.17.0
35
35
  # via
36
36
  # cryptography
37
37
  # pynacl
@@ -43,9 +43,9 @@ click==8.1.7
43
43
  # via black
44
44
  contourpy==1.2.1
45
45
  # via matplotlib
46
- coverage[toml]==7.5.4
46
+ coverage[toml]==7.6.1
47
47
  # via pytest-cov
48
- cryptography==42.0.8
48
+ cryptography==43.0.0
49
49
  # via paramiko
50
50
  cycler==0.12.1
51
51
  # via matplotlib
@@ -60,7 +60,7 @@ docutils==0.20.1
60
60
  # myst-parser
61
61
  # sphinx
62
62
  # sphinx-rtd-theme
63
- exceptiongroup==1.2.1
63
+ exceptiongroup==1.2.2
64
64
  # via pytest
65
65
  execnet==2.1.1
66
66
  # via pytest-xdist
@@ -106,7 +106,7 @@ latexcodec==3.0.0
106
106
  # via pybtex
107
107
  linkify-it-py==2.0.3
108
108
  # via myst-parser
109
- maggma==0.69.0
109
+ maggma==0.69.1
110
110
  # via pyEQL (setup.py)
111
111
  markdown-it-py==3.0.0
112
112
  # via
@@ -115,7 +115,7 @@ markdown-it-py==3.0.0
115
115
  # rich
116
116
  markupsafe==2.1.5
117
117
  # via jinja2
118
- matplotlib==3.9.1
118
+ matplotlib==3.9.1.post1
119
119
  # via pymatgen
120
120
  mdit-py-plugins==0.4.1
121
121
  # via myst-parser
@@ -123,7 +123,7 @@ mdurl==0.1.2
123
123
  # via markdown-it-py
124
124
  mongomock==4.1.2
125
125
  # via maggma
126
- monty==2024.5.24
126
+ monty==2024.7.30
127
127
  # via
128
128
  # maggma
129
129
  # pyEQL (setup.py)
@@ -132,13 +132,13 @@ mpmath==1.3.0
132
132
  # via sympy
133
133
  msgpack==1.0.8
134
134
  # via maggma
135
- mypy==1.10.1
135
+ mypy==1.11.1
136
136
  # via pyEQL (setup.py)
137
137
  mypy-extensions==1.0.0
138
138
  # via
139
139
  # black
140
140
  # mypy
141
- myst-parser[linkify]==3.0.1
141
+ myst-parser[linkify]==4.0.0
142
142
  # via pyEQL (setup.py)
143
143
  networkx==3.3
144
144
  # via pymatgen
@@ -155,7 +155,7 @@ numpy==1.26.4
155
155
  # pymatgen
156
156
  # scipy
157
157
  # spglib
158
- orjson==3.10.6
158
+ orjson==3.10.7
159
159
  # via maggma
160
160
  packaging==24.1
161
161
  # via
@@ -182,19 +182,19 @@ phreeqpython==1.5.2
182
182
  # via pyEQL (setup.py)
183
183
  pillow==10.4.0
184
184
  # via matplotlib
185
- pint==0.24.1
185
+ pint==0.24.3
186
186
  # via pyEQL (setup.py)
187
187
  platformdirs==4.2.2
188
188
  # via
189
189
  # black
190
190
  # virtualenv
191
- plotly==5.22.0
191
+ plotly==5.23.0
192
192
  # via pymatgen
193
193
  pluggy==1.5.0
194
194
  # via
195
195
  # pytest
196
196
  # tox
197
- pre-commit==3.7.1
197
+ pre-commit==3.8.0
198
198
  # via pyEQL (setup.py)
199
199
  py==1.11.0
200
200
  # via tox
@@ -208,9 +208,9 @@ pydantic==2.8.2
208
208
  # pydantic-settings
209
209
  pydantic-core==2.20.1
210
210
  # via pydantic
211
- pydantic-settings==2.3.4
211
+ pydantic-settings==2.4.0
212
212
  # via maggma
213
- pydash==8.0.1
213
+ pydash==8.0.3
214
214
  # via maggma
215
215
  pygments==2.18.0
216
216
  # via
@@ -226,7 +226,7 @@ pyparsing==3.1.2
226
226
  # via
227
227
  # matplotlib
228
228
  # periodictable
229
- pytest==8.2.2
229
+ pytest==8.3.2
230
230
  # via
231
231
  # pyEQL (setup.py)
232
232
  # pytest-cov
@@ -245,12 +245,12 @@ python-dotenv==1.0.1
245
245
  # via pydantic-settings
246
246
  pytz==2024.1
247
247
  # via pandas
248
- pyyaml==6.0.1
248
+ pyyaml==6.0.2
249
249
  # via
250
250
  # myst-parser
251
251
  # pre-commit
252
252
  # pybtex
253
- pyzmq==26.0.3
253
+ pyzmq==26.1.0
254
254
  # via maggma
255
255
  referencing==0.35.1
256
256
  # via
@@ -262,7 +262,7 @@ requests==2.32.3
262
262
  # sphinx
263
263
  rich==13.7.1
264
264
  # via pyEQL (setup.py)
265
- rpds-py==0.19.0
265
+ rpds-py==0.20.0
266
266
  # via
267
267
  # jsonschema
268
268
  # referencing
@@ -272,7 +272,7 @@ ruamel-yaml==0.18.6
272
272
  # pymatgen
273
273
  ruamel-yaml-clib==0.2.8
274
274
  # via ruamel-yaml
275
- ruff==0.5.1
275
+ ruff==0.5.7
276
276
  # via pyEQL (setup.py)
277
277
  s3transfer==0.10.2
278
278
  # via boto3
@@ -291,9 +291,9 @@ six==1.16.0
291
291
  # tox
292
292
  snowballstemmer==2.2.0
293
293
  # via sphinx
294
- spglib==2.4.0
294
+ spglib==2.5.0
295
295
  # via pymatgen
296
- sphinx==7.3.7
296
+ sphinx==7.4.7
297
297
  # via
298
298
  # myst-parser
299
299
  # pyEQL (setup.py)
@@ -301,27 +301,27 @@ sphinx==7.3.7
301
301
  # sphinxcontrib-jquery
302
302
  sphinx-rtd-theme==2.0.0
303
303
  # via pyEQL (setup.py)
304
- sphinxcontrib-applehelp==1.0.8
304
+ sphinxcontrib-applehelp==2.0.0
305
305
  # via sphinx
306
- sphinxcontrib-devhelp==1.0.6
306
+ sphinxcontrib-devhelp==2.0.0
307
307
  # via sphinx
308
- sphinxcontrib-htmlhelp==2.0.5
308
+ sphinxcontrib-htmlhelp==2.1.0
309
309
  # via sphinx
310
310
  sphinxcontrib-jquery==4.1
311
311
  # via sphinx-rtd-theme
312
312
  sphinxcontrib-jsmath==1.0.1
313
313
  # via sphinx
314
- sphinxcontrib-qthelp==1.0.7
314
+ sphinxcontrib-qthelp==2.0.0
315
315
  # via sphinx
316
- sphinxcontrib-serializinghtml==1.1.10
316
+ sphinxcontrib-serializinghtml==2.0.0
317
317
  # via sphinx
318
318
  sshtunnel==0.4.0
319
319
  # via maggma
320
- sympy==1.13.0
320
+ sympy==1.13.1
321
321
  # via pymatgen
322
322
  tabulate==0.9.0
323
323
  # via pymatgen
324
- tenacity==8.5.0
324
+ tenacity==9.0.0
325
325
  # via plotly
326
326
  tomli==2.0.1
327
327
  # via
@@ -333,7 +333,7 @@ tomli==2.0.1
333
333
  # tox
334
334
  tox==3.28.0
335
335
  # via pyEQL (setup.py)
336
- tqdm==4.66.4
336
+ tqdm==4.66.5
337
337
  # via
338
338
  # maggma
339
339
  # pymatgen