pyEQL 1.0.2__tar.gz → 1.0.3__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 (132) hide show
  1. {pyeql-1.0.2 → pyeql-1.0.3}/CHANGELOG.md +19 -0
  2. {pyeql-1.0.2/src/pyEQL.egg-info → pyeql-1.0.3}/PKG-INFO +13 -11
  3. {pyeql-1.0.2 → pyeql-1.0.3}/docs/changelog.md +19 -0
  4. {pyeql-1.0.2 → pyeql-1.0.3}/docs/chemistry.md +7 -1
  5. {pyeql-1.0.2 → pyeql-1.0.3}/pyproject.toml +68 -1
  6. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.10.txt +36 -133
  7. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.10_extras.txt +49 -128
  8. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.11.txt +36 -129
  9. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.11_extras.txt +48 -123
  10. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.12.txt +36 -129
  11. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.12_extras.txt +48 -123
  12. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.9.txt +44 -138
  13. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/macos-latest_py3.9_extras.txt +58 -132
  14. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.10.txt +36 -133
  15. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.10_extras.txt +49 -128
  16. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.11.txt +36 -129
  17. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.11_extras.txt +48 -123
  18. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.12.txt +36 -129
  19. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.12_extras.txt +48 -123
  20. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.9.txt +44 -138
  21. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/ubuntu-latest_py3.9_extras.txt +58 -132
  22. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/windows-latest_py3.10.txt +37 -135
  23. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/windows-latest_py3.10_extras.txt +49 -127
  24. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/windows-latest_py3.11.txt +37 -131
  25. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/windows-latest_py3.11_extras.txt +48 -122
  26. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/windows-latest_py3.12.txt +37 -131
  27. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/windows-latest_py3.12_extras.txt +48 -122
  28. pyeql-1.0.3/requirements/windows-latest_py3.9.txt +232 -0
  29. {pyeql-1.0.2 → pyeql-1.0.3}/requirements/windows-latest_py3.9_extras.txt +58 -131
  30. pyeql-1.0.3/setup.cfg +11 -0
  31. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/utils.py +47 -1
  32. {pyeql-1.0.2 → pyeql-1.0.3/src/pyEQL.egg-info}/PKG-INFO +13 -11
  33. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL.egg-info/SOURCES.txt +0 -1
  34. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_utils.py +20 -0
  35. pyeql-1.0.2/requirements/windows-latest_py3.9.txt +0 -327
  36. pyeql-1.0.2/setup.cfg +0 -103
  37. pyeql-1.0.2/src/pyEQL.egg-info/not-zip-safe +0 -1
  38. {pyeql-1.0.2 → pyeql-1.0.3}/.coveragerc +0 -0
  39. {pyeql-1.0.2 → pyeql-1.0.3}/.gitattributes +0 -0
  40. {pyeql-1.0.2 → pyeql-1.0.3}/.github/dependabot.yml +0 -0
  41. {pyeql-1.0.2 → pyeql-1.0.3}/.github/pull_request_template.md +0 -0
  42. {pyeql-1.0.2 → pyeql-1.0.3}/.github/release.yml +0 -0
  43. {pyeql-1.0.2 → pyeql-1.0.3}/.github/workflows/post-process.yml +0 -0
  44. {pyeql-1.0.2 → pyeql-1.0.3}/.github/workflows/release.yml +0 -0
  45. {pyeql-1.0.2 → pyeql-1.0.3}/.github/workflows/testing.yaml +0 -0
  46. {pyeql-1.0.2 → pyeql-1.0.3}/.github/workflows/upgrade_dependencies.yml +0 -0
  47. {pyeql-1.0.2 → pyeql-1.0.3}/.gitignore +0 -0
  48. {pyeql-1.0.2 → pyeql-1.0.3}/.pre-commit-config.yaml +0 -0
  49. {pyeql-1.0.2 → pyeql-1.0.3}/.readthedocs.yml +0 -0
  50. {pyeql-1.0.2 → pyeql-1.0.3}/.zenodo.json +0 -0
  51. {pyeql-1.0.2 → pyeql-1.0.3}/AUTHORS.md +0 -0
  52. {pyeql-1.0.2 → pyeql-1.0.3}/CITATION.cff +0 -0
  53. {pyeql-1.0.2 → pyeql-1.0.3}/COPYING +0 -0
  54. {pyeql-1.0.2 → pyeql-1.0.3}/LICENSE.txt +0 -0
  55. {pyeql-1.0.2 → pyeql-1.0.3}/MANIFEST.in +0 -0
  56. {pyeql-1.0.2 → pyeql-1.0.3}/README.md +0 -0
  57. {pyeql-1.0.2 → pyeql-1.0.3}/docs/Makefile +0 -0
  58. {pyeql-1.0.2 → pyeql-1.0.3}/docs/_static/.gitignore +0 -0
  59. {pyeql-1.0.2 → pyeql-1.0.3}/docs/amounts.md +0 -0
  60. {pyeql-1.0.2 → pyeql-1.0.3}/docs/arithmetic.md +0 -0
  61. {pyeql-1.0.2 → pyeql-1.0.3}/docs/authors.md +0 -0
  62. {pyeql-1.0.2 → pyeql-1.0.3}/docs/class_solution.md +0 -0
  63. {pyeql-1.0.2 → pyeql-1.0.3}/docs/conf.py +0 -0
  64. {pyeql-1.0.2 → pyeql-1.0.3}/docs/contributing.md +0 -0
  65. {pyeql-1.0.2 → pyeql-1.0.3}/docs/creating.md +0 -0
  66. {pyeql-1.0.2 → pyeql-1.0.3}/docs/database.md +0 -0
  67. {pyeql-1.0.2 → pyeql-1.0.3}/docs/engines.md +0 -0
  68. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/.ipynb_checkpoints/pyEQL_demo_1-checkpoint.ipynb +0 -0
  69. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/.ipynb_checkpoints/pyeql_demo-checkpoint.ipynb +0 -0
  70. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_database-checkpoint.ipynb +0 -0
  71. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/.ipynb_checkpoints/pyeql_tutorial_osmotic_pressure-checkpoint.ipynb +0 -0
  72. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/.ipynb_checkpoints/speedup-checkpoint.ipynb +0 -0
  73. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/pyEQL_demo_1.ipynb +0 -0
  74. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/pyeql_demo.ipynb +0 -0
  75. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/pyeql_tutorial_database.ipynb +0 -0
  76. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/pyeql_tutorial_osmotic_pressure.ipynb +0 -0
  77. {pyeql-1.0.2 → pyeql-1.0.3}/docs/examples/speedup.ipynb +0 -0
  78. {pyeql-1.0.2 → pyeql-1.0.3}/docs/index.md +0 -0
  79. {pyeql-1.0.2 → pyeql-1.0.3}/docs/installation.md +0 -0
  80. {pyeql-1.0.2 → pyeql-1.0.3}/docs/internal.md +0 -0
  81. {pyeql-1.0.2 → pyeql-1.0.3}/docs/license.md +0 -0
  82. {pyeql-1.0.2 → pyeql-1.0.3}/docs/mixing.md +0 -0
  83. {pyeql-1.0.2 → pyeql-1.0.3}/docs/quickstart.md +0 -0
  84. {pyeql-1.0.2 → pyeql-1.0.3}/docs/readme.md +0 -0
  85. {pyeql-1.0.2 → pyeql-1.0.3}/docs/requirements.txt +0 -0
  86. {pyeql-1.0.2 → pyeql-1.0.3}/docs/serialization.md +0 -0
  87. {pyeql-1.0.2 → pyeql-1.0.3}/docs/tutorials.md +0 -0
  88. {pyeql-1.0.2 → pyeql-1.0.3}/docs/units.md +0 -0
  89. {pyeql-1.0.2 → pyeql-1.0.3}/pyeql-logo.png +0 -0
  90. {pyeql-1.0.2 → pyeql-1.0.3}/pyeql-logo.svg +0 -0
  91. {pyeql-1.0.2 → pyeql-1.0.3}/setup.py +0 -0
  92. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/__init__.py +0 -0
  93. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/activity_correction.py +0 -0
  94. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/database/geothermal.dat +0 -0
  95. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/database/llnl.dat +0 -0
  96. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/database/phreeqc_license.txt +0 -0
  97. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/database/pyeql_db.json +0 -0
  98. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/engines.py +0 -0
  99. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/equilibrium.py +0 -0
  100. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/functions.py +0 -0
  101. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/pint_custom_units.txt +0 -0
  102. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/presets/Ringers lactate.yaml +0 -0
  103. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/presets/normal saline.yaml +0 -0
  104. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/presets/rainwater.yaml +0 -0
  105. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/presets/seawater.yaml +0 -0
  106. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/presets/urine.yaml +0 -0
  107. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/presets/wastewater.yaml +0 -0
  108. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/salt_ion_match.py +0 -0
  109. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/solute.py +0 -0
  110. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL/solution.py +0 -0
  111. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL.egg-info/dependency_links.txt +0 -0
  112. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL.egg-info/requires.txt +0 -0
  113. {pyeql-1.0.2 → pyeql-1.0.3}/src/pyEQL.egg-info/top_level.txt +0 -0
  114. {pyeql-1.0.2 → pyeql-1.0.3}/tests/conftest.py +0 -0
  115. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_activity.py +0 -0
  116. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_bulk_properties.py +0 -0
  117. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_debye_length.py +0 -0
  118. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_density.py +0 -0
  119. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_dielectric.py +0 -0
  120. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_effective_pitzer.py +0 -0
  121. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_equilibrium.py +0 -0
  122. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_functions.py +0 -0
  123. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_logging.py +0 -0
  124. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_mixed_electrolyte_activity.py +0 -0
  125. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_osmotic_coeff.py +0 -0
  126. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_phreeqc.py +0 -0
  127. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_salt_matching.py +0 -0
  128. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_solute.py +0 -0
  129. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_solute_properties.py +0 -0
  130. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_solution.py +0 -0
  131. {pyeql-1.0.2 → pyeql-1.0.3}/tests/test_volume_concentration.py +0 -0
  132. {pyeql-1.0.2 → pyeql-1.0.3}/tox.ini +0 -0
@@ -5,6 +5,25 @@ 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.0.3] - 2024-07-20
9
+
10
+ ### Fixed
11
+
12
+ - `standardize_formula`: Fix incorrect display of additional formulas, including methane which
13
+ was shown as "H4C(aq)", other tri-anions (N3-, P3-), and a variety of haloacetic acids. For
14
+ example, tricholoracetic acid was previously shown as `'C2Cl3O2[-1]'` but will now display
15
+ as `'CCl3COO[-1]'`.
16
+
17
+ ### Added
18
+
19
+ - `standardize_formula`: `pyEQL` can now parse ion formulas that contain unicode superscript
20
+ or subscript characters, which makes input even more flexible. For example, `"PO₄³⁻"` and `"Co²⁺"`
21
+ will now standardize correctly to `"PO4[-3]"` and `"Co[+2]"`, respectively.
22
+
23
+ ### Changed
24
+
25
+ - Housekeeping: move all project configuration to `pyproject.toml`
26
+
8
27
  ## [1.0.2] - 2024-07-09
9
28
 
10
29
  ### Fixed
@@ -1,20 +1,22 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyEQL
3
- Version: 1.0.2
4
- Summary: Python tools for solution chemistry
5
- Home-page: https://github.com/KingsburyLab/pyEQL
6
- Author: Ryan Kingsbury
7
- Author-email: kingsbury@princeton.edu
8
- License: LGPL3
9
- Project-URL: Documentation, https://pyeql.readthedocs.io/
10
- Platform: any
3
+ Version: 1.0.3
4
+ Summary: A python interace for solution chemistry
5
+ Author-email: Ryan Kingsbury <kingsbury@princeton.edu>
6
+ Project-URL: Docs, https://pyeql.readthedocs.io/
7
+ Project-URL: Repo, https://github.com/KingsburyLab/pyEQL
8
+ Project-URL: Package, https://pypi.org/project/pyEQL
9
+ Classifier: Programming Language :: Python :: 3
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: Programming Language :: Python :: 3.10
12
+ Classifier: Programming Language :: Python :: 3.11
13
+ Classifier: Programming Language :: Python :: 3.12
11
14
  Classifier: Development Status :: 4 - Beta
12
- Classifier: Programming Language :: Python
13
15
  Classifier: Intended Audience :: Science/Research
16
+ Classifier: Operating System :: OS Independent
14
17
  Classifier: Topic :: Scientific/Engineering
15
- Classifier: Topic :: Software Development :: Libraries
16
18
  Requires-Python: >=3.9
17
- Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
19
+ Description-Content-Type: text/markdown
18
20
  License-File: LICENSE.txt
19
21
  License-File: COPYING
20
22
  License-File: AUTHORS.md
@@ -5,6 +5,25 @@ 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.0.3] - 2024-07-20
9
+
10
+ ### Fixed
11
+
12
+ - `standardize_formula`: Fix incorrect display of additional formulas, including methane which
13
+ was shown as "H4C(aq)", other tri-anions (N3-, P3-), and a variety of haloacetic acids. For
14
+ example, tricholoracetic acid was previously shown as `'C2Cl3O2[-1]'` but will now display
15
+ as `'CCl3COO[-1]'`.
16
+
17
+ ### Added
18
+
19
+ - `standardize_formula`: `pyEQL` can now parse ion formulas that contain unicode superscript
20
+ or subscript characters, which makes input even more flexible. For example, `"PO₄³⁻"` and `"Co²⁺"`
21
+ will now standardize correctly to `"PO4[-3]"` and `"Co[+2]"`, respectively.
22
+
23
+ ### Changed
24
+
25
+ - Housekeeping: move all project configuration to `pyproject.toml`
26
+
8
27
  ## [1.0.2] - 2024-07-09
9
28
 
10
29
  ### Fixed
@@ -23,7 +23,8 @@ Here are some examples:
23
23
  | Sodium Sulfate | "Na2(SO4)" or "Na2SO4" | "Na(SO4)(aq)" |
24
24
  | Sodium Ion | "Na+", "Na+1", "Na1+", or "Na[+]" | "Na[+1]" |
25
25
  | Magnesium Ion | "Mg+2", "Mg++", or "Mg[++]" | "Mg[+2]" |
26
- | Methanol | "CH3OH", "CH4O" | "'CH3OH(aq)'" |
26
+ | Methanol | "CH3OH", "CH4O" | "CH3OH(aq)" |
27
+ | Phosphate Ion | "PO4-3", "PO₄³⁻" | "PO4[-3]" |
27
28
 
28
29
  Specifically, `standardize_formula` uses `Ion.from_formula(<formula>).reduced_formla` (shown in the right hand column
29
30
  of the table) to identify solutes. Notice that for charged species, the charges are always placed inside square brackets
@@ -33,6 +34,11 @@ by `(aq)` to disambiguate them from solids.
33
34
  ```{important}
34
35
  **When writing multivalent ion formulas, it is strongly recommended that you put the charge number AFTER the + or -
35
36
  sign** (e.g., type "Mg+2" NOT "Mg2+"). The latter formula is ambiguous - it could mean $Mg_2^+$ or $Mg^{+2}$ and it will be processed incorrectly into `Mg[+0.5]`
37
+
38
+ There is **one exception** to the rule above. If you really want to list the charge number
39
+ first , you can use unicode superscript characters (e.g., "Co²⁺"), and `pyEQL` will understand
40
+ these regardless of the order of the `+` and the `2`. So you can write "Co²⁺" and it will be
41
+ correctly standardized to `Co[+2]`
36
42
  ```
37
43
 
38
44
  (manual-testing)=
@@ -1,8 +1,69 @@
1
+ [project]
2
+ name = "pyEQL"
3
+ readme = "README.md"
4
+ dynamic = ["version"]
5
+ description="A python interace for solution chemistry"
6
+ authors =[
7
+ {name = "Ryan Kingsbury", email = "kingsbury@princeton.edu"}
8
+ ]
9
+ classifiers=[
10
+ "Programming Language :: Python :: 3",
11
+ "Programming Language :: Python :: 3.9",
12
+ "Programming Language :: Python :: 3.10",
13
+ "Programming Language :: Python :: 3.11",
14
+ "Programming Language :: Python :: 3.12",
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Science/Research",
17
+ "Operating System :: OS Independent",
18
+ "Topic :: Scientific/Engineering",
19
+ ]
20
+ license = {file = "LICENSE"}
21
+ requires-python = ">=3.9"
22
+ dependencies = [
23
+ "pint>=0.19",
24
+ "numpy<2",
25
+ "scipy",
26
+ "pymatgen==2024.5.1",
27
+ "iapws",
28
+ "monty",
29
+ "maggma>=0.67.0",
30
+ "phreeqpython",
31
+ ]
32
+
33
+ [project.urls]
34
+ Docs = "https://pyeql.readthedocs.io/"
35
+ Repo = "https://github.com/KingsburyLab/pyEQL"
36
+ Package = "https://pypi.org/project/pyEQL"
37
+
38
+
39
+ [project.optional-dependencies]
40
+ testing = [
41
+ "setuptools",
42
+ "pre-commit",
43
+ "pytest",
44
+ "pytest-cov",
45
+ "pytest-xdist",
46
+ "black",
47
+ "mypy",
48
+ "ruff",
49
+ "tox<4",
50
+ ]
51
+ docs = [
52
+ "sphinx>=3.2.1",
53
+ "sphinx-rtd-theme",
54
+ "myst-parser[linkify]",
55
+ ]
56
+ full = ["rich"]
57
+
1
58
  [build-system]
2
59
  # AVOID CHANGING REQUIRES: IT WILL BE UPDATED BY PYSCAFFOLD!
3
60
  requires = ["setuptools>=46.1.0", "setuptools_scm[toml]>=5"]
4
61
  build-backend = "setuptools.build_meta"
5
62
 
63
+ [tool.setuptools.packages.find]
64
+ where = ["src"]
65
+ exclude = ["tests"]
66
+
6
67
  [tool.setuptools_scm]
7
68
  # See configuration details in https://github.com/pypa/setuptools_scm
8
69
  version_scheme = "no-guess-dev"
@@ -84,7 +145,13 @@ addopts = [
84
145
  "--strict-config",
85
146
  "--color=yes",
86
147
  "--import-mode=importlib",
87
- "--durations=30"
148
+ "--durations=30",
149
+ "--verbose",
150
+ ]
151
+ norecursedirs = [
152
+ "dist",
153
+ "build",
154
+ ".tox",
88
155
  ]
89
156
  xfail_strict = true
90
157
  filterwarnings = ["error", "ignore::UserWarning", "ignore::DeprecationWarning"]
@@ -8,44 +8,29 @@ aioitertools==0.11.0
8
8
  # via maggma
9
9
  annotated-types==0.7.0
10
10
  # via pydantic
11
- anyio==4.4.0
12
- # via
13
- # httpx
14
- # starlette
15
- # watchfiles
16
11
  appdirs==1.4.4
17
12
  # via pint
18
13
  attrs==23.2.0
19
14
  # via
15
+ # jsonlines
20
16
  # jsonschema
21
17
  # referencing
22
18
  bcrypt==4.1.3
23
19
  # via paramiko
24
- blinker==1.8.2
25
- # via flask
26
- boto3==1.34.122
20
+ boto3==1.34.142
27
21
  # via maggma
28
- botocore==1.34.122
22
+ botocore==1.34.142
29
23
  # via
30
24
  # boto3
31
25
  # s3transfer
32
- certifi==2024.6.2
33
- # via
34
- # httpcore
35
- # httpx
36
- # requests
26
+ certifi==2024.7.4
27
+ # via requests
37
28
  cffi==1.16.0
38
29
  # via
39
30
  # cryptography
40
31
  # pynacl
41
32
  charset-normalizer==3.3.2
42
33
  # via requests
43
- click==8.1.7
44
- # via
45
- # flask
46
- # mongogrant
47
- # typer
48
- # uvicorn
49
34
  contourpy==1.2.1
50
35
  # via matplotlib
51
36
  cryptography==42.0.8
@@ -54,56 +39,27 @@ cycler==0.12.1
54
39
  # via matplotlib
55
40
  dnspython==2.6.1
56
41
  # via
57
- # email-validator
58
42
  # maggma
59
43
  # pymongo
60
- email-validator==2.1.1
61
- # via fastapi
62
- exceptiongroup==1.2.1
63
- # via anyio
64
- fastapi==0.111.0
65
- # via maggma
66
- fastapi-cli==0.0.4
67
- # via fastapi
68
- flask==3.0.3
69
- # via mongogrant
70
44
  flexcache==0.3
71
45
  # via pint
72
46
  flexparser==0.3.1
73
47
  # via pint
74
- fonttools==4.53.0
48
+ fonttools==4.53.1
75
49
  # via matplotlib
76
- h11==0.14.0
77
- # via
78
- # httpcore
79
- # uvicorn
80
- httpcore==1.0.5
81
- # via httpx
82
- httptools==0.6.1
83
- # via uvicorn
84
- httpx==0.27.0
85
- # via fastapi
86
50
  iapws==1.5.4
87
51
  # via pyEQL (setup.py)
88
52
  idna==3.7
89
- # via
90
- # anyio
91
- # email-validator
92
- # httpx
93
- # requests
94
- itsdangerous==2.2.0
95
- # via flask
96
- jinja2==3.1.4
97
- # via
98
- # fastapi
99
- # flask
53
+ # via requests
100
54
  jmespath==1.0.1
101
55
  # via
102
56
  # boto3
103
57
  # botocore
104
58
  joblib==1.4.2
105
59
  # via pymatgen
106
- jsonschema==4.22.0
60
+ jsonlines==4.0.0
61
+ # via maggma
62
+ jsonschema==4.23.0
107
63
  # via maggma
108
64
  jsonschema-specifications==2023.12.1
109
65
  # via jsonschema
@@ -111,20 +67,10 @@ kiwisolver==1.4.5
111
67
  # via matplotlib
112
68
  latexcodec==3.0.0
113
69
  # via pybtex
114
- maggma==0.67.0
70
+ maggma==0.69.0
115
71
  # via pyEQL (setup.py)
116
- markdown-it-py==3.0.0
117
- # via rich
118
- markupsafe==2.1.5
119
- # via
120
- # jinja2
121
- # werkzeug
122
- matplotlib==3.9.0
72
+ matplotlib==3.9.1
123
73
  # via pymatgen
124
- mdurl==0.1.2
125
- # via markdown-it-py
126
- mongogrant==0.3.3
127
- # via maggma
128
74
  mongomock==4.1.2
129
75
  # via maggma
130
76
  monty==2024.5.24
@@ -149,10 +95,8 @@ numpy==1.26.4
149
95
  # pymatgen
150
96
  # scipy
151
97
  # spglib
152
- orjson==3.10.3
153
- # via
154
- # fastapi
155
- # maggma
98
+ orjson==3.10.6
99
+ # via maggma
156
100
  packaging==24.1
157
101
  # via
158
102
  # matplotlib
@@ -161,16 +105,18 @@ packaging==24.1
161
105
  palettable==3.3.3
162
106
  # via pymatgen
163
107
  pandas==2.2.2
164
- # via pymatgen
108
+ # via
109
+ # maggma
110
+ # pymatgen
165
111
  paramiko==3.4.0
166
112
  # via sshtunnel
167
- periodictable==1.7.0
113
+ periodictable==1.7.1
168
114
  # via phreeqpython
169
115
  phreeqpython==1.5.2
170
116
  # via pyEQL (setup.py)
171
- pillow==10.3.0
117
+ pillow==10.4.0
172
118
  # via matplotlib
173
- pint==0.24
119
+ pint==0.24.1
174
120
  # via pyEQL (setup.py)
175
121
  plotly==5.22.0
176
122
  # via pymatgen
@@ -178,25 +124,20 @@ pybtex==0.24.0
178
124
  # via pymatgen
179
125
  pycparser==2.22
180
126
  # via cffi
181
- pydantic==2.7.3
127
+ pydantic==2.8.2
182
128
  # via
183
- # fastapi
184
129
  # maggma
185
130
  # pydantic-settings
186
- pydantic-core==2.18.4
131
+ pydantic-core==2.20.1
187
132
  # via pydantic
188
- pydantic-settings==2.3.1
133
+ pydantic-settings==2.3.4
189
134
  # via maggma
190
135
  pydash==8.0.1
191
136
  # via maggma
192
- pygments==2.18.0
193
- # via rich
194
- pymatgen==2024.6.4
137
+ pymatgen==2024.5.1
195
138
  # via pyEQL (setup.py)
196
- pymongo==4.7.3
197
- # via
198
- # maggma
199
- # mongogrant
139
+ pymongo==4.8.0
140
+ # via maggma
200
141
  pynacl==1.5.0
201
142
  # via paramiko
202
143
  pyparsing==3.1.2
@@ -210,17 +151,11 @@ python-dateutil==2.9.0.post0
210
151
  # matplotlib
211
152
  # pandas
212
153
  python-dotenv==1.0.1
213
- # via
214
- # pydantic-settings
215
- # uvicorn
216
- python-multipart==0.0.9
217
- # via fastapi
154
+ # via pydantic-settings
218
155
  pytz==2024.1
219
156
  # via pandas
220
157
  pyyaml==6.0.1
221
- # via
222
- # pybtex
223
- # uvicorn
158
+ # via pybtex
224
159
  pyzmq==26.0.3
225
160
  # via maggma
226
161
  referencing==0.35.1
@@ -228,12 +163,8 @@ referencing==0.35.1
228
163
  # jsonschema
229
164
  # jsonschema-specifications
230
165
  requests==2.32.3
231
- # via
232
- # mongogrant
233
- # pymatgen
234
- rich==13.7.1
235
- # via typer
236
- rpds-py==0.18.1
166
+ # via pymatgen
167
+ rpds-py==0.19.0
237
168
  # via
238
169
  # jsonschema
239
170
  # referencing
@@ -243,9 +174,9 @@ ruamel-yaml==0.18.6
243
174
  # pymatgen
244
175
  ruamel-yaml-clib==0.2.8
245
176
  # via ruamel-yaml
246
- s3transfer==0.10.1
177
+ s3transfer==0.10.2
247
178
  # via boto3
248
- scipy==1.13.1
179
+ scipy==1.14.0
249
180
  # via
250
181
  # iapws
251
182
  # phreeqpython
@@ -253,68 +184,40 @@ scipy==1.13.1
253
184
  # pymatgen
254
185
  sentinels==1.0.0
255
186
  # via mongomock
256
- shellingham==1.5.4
257
- # via typer
258
187
  six==1.16.0
259
188
  # via
260
189
  # pybtex
261
190
  # python-dateutil
262
- sniffio==1.3.1
263
- # via
264
- # anyio
265
- # httpx
266
191
  spglib==2.4.0
267
192
  # via pymatgen
268
193
  sshtunnel==0.4.0
269
194
  # via maggma
270
- starlette==0.37.2
271
- # via fastapi
272
- sympy==1.12.1
195
+ sympy==1.13.0
273
196
  # via pymatgen
274
197
  tabulate==0.9.0
275
198
  # via pymatgen
276
- tenacity==8.3.0
199
+ tenacity==8.5.0
277
200
  # via plotly
278
201
  tqdm==4.66.4
279
202
  # via
280
203
  # maggma
281
204
  # pymatgen
282
- typer==0.12.3
283
- # via fastapi-cli
284
205
  typing-extensions==4.12.2
285
206
  # via
286
- # anyio
287
- # fastapi
288
207
  # flexcache
289
208
  # flexparser
290
209
  # pint
291
210
  # pydantic
292
211
  # pydantic-core
293
212
  # pydash
294
- # typer
295
- # uvicorn
296
213
  tzdata==2024.1
297
214
  # via pandas
298
- ujson==5.10.0
299
- # via fastapi
300
- uncertainties==3.2.1
215
+ uncertainties==3.2.2
301
216
  # via pymatgen
302
- urllib3==2.2.1
217
+ urllib3==2.2.2
303
218
  # via
304
219
  # botocore
305
220
  # requests
306
- uvicorn[standard]==0.30.1
307
- # via
308
- # fastapi
309
- # maggma
310
- uvloop==0.19.0
311
- # via uvicorn
312
- watchfiles==0.22.0
313
- # via uvicorn
314
- websockets==12.0
315
- # via uvicorn
316
- werkzeug==3.0.3
317
- # via flask
318
221
 
319
222
  # The following packages are considered to be unsafe in a requirements file:
320
223
  # setuptools