gliquid 0.3.1__tar.gz → 0.3.2__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.
- {gliquid-0.3.1 → gliquid-0.3.2}/.githooks/pre-commit +4 -10
- {gliquid-0.3.1 → gliquid-0.3.2}/.github/workflows/release.yml +4 -19
- {gliquid-0.3.1 → gliquid-0.3.2}/.github/workflows/tests.yml +9 -15
- gliquid-0.3.2/.gitignore +42 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/CHANGELOG.md +149 -1
- {gliquid-0.3.1 → gliquid-0.3.2}/CITATION.cff +3 -5
- {gliquid-0.3.1 → gliquid-0.3.2}/CONTRIBUTING.md +11 -20
- {gliquid-0.3.1 → gliquid-0.3.2}/PKG-INFO +1 -1
- {gliquid-0.3.1 → gliquid-0.3.2}/conftest.py +3 -3
- gliquid-0.3.2/notebooks/GaRu_adjustment.ipynb +377 -0
- gliquid-0.3.2/notebooks/PbTb_adjustment.ipynb +320 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/notebooks/colab_demo.ipynb +1 -1
- gliquid-0.3.2/notebooks/fitting_demo.ipynb +335 -0
- gliquid-0.3.2/notebooks/interpolation_demo.ipynb +137 -0
- gliquid-0.3.2/pyproject.toml +141 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/scripts/run_notebooks.py +2 -4
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/_version.py +2 -2
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/api.py +4 -5
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/binary.py +293 -41
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/cache.py +3 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/imputation/lifecycle.py +1 -1
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/imputation/ternary_imputation.py +18 -1
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/liquidus_sheets.py +70 -21
- gliquid-0.3.2/src/gliquid/models/20261028_105725/features_antisymmetric.json +1 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/features_symmetric.json +1 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/manifest.json +447 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_0/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_0/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_0/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_0/best_params.json +26 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/seed_0/metadata.json +1 -1
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_0/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_0/preprocess.json +317 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_10/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_10/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_10/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_10/best_params.json +26 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/seed_10/metadata.json +1 -1
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_10/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_10/preprocess.json +317 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_20/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_20/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_20/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_20/best_params.json +26 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/seed_20/metadata.json +1 -1
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_20/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_20/preprocess.json +317 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_30/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_30/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_30/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_30/best_params.json +26 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/seed_30/metadata.json +1 -1
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_30/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_30/preprocess.json +317 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_42/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_42/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_42/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_42/best_params.json +26 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_42/metadata.json +37 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_42/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_42/preprocess.json +317 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_50/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_50/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_50/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_50/best_params.json +26 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/seed_50/metadata.json +1 -1
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_50/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_50/preprocess.json +317 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_60/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_60/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_60/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_60/best_params.json +26 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/seed_60/metadata.json +1 -1
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_60/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_60/preprocess.json +317 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_70/L0_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_70/L0_b.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_70/L1_a.ubj +0 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_70/best_params.json +26 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/seed_70/metadata.json +1 -1
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_70/model_summary.txt +53 -0
- gliquid-0.3.2/src/gliquid/models/20261028_105725/seed_70/preprocess.json +317 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/phase.py +35 -4
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/ternary_surface.py +12 -6
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/production_model_runner.py +1 -1
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/reference/phase_transitions.json +2045 -1523
- gliquid-0.3.2/src/gliquid/reference/spurious_structures.json +1037 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/solution.py +125 -17
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/ternary.py +116 -30
- gliquid-0.3.2/tox.ini +89 -0
- gliquid-0.3.1/.gitignore +0 -55
- gliquid-0.3.1/notebooks/GaRu_adjustment.ipynb +0 -7863
- gliquid-0.3.1/notebooks/PbTb_adjustment.ipynb +0 -7688
- gliquid-0.3.1/notebooks/fitting_demo.ipynb +0 -18605
- gliquid-0.3.1/notebooks/interpolation_demo.ipynb +0 -326
- gliquid-0.3.1/pyproject.toml +0 -237
- gliquid-0.3.1/src/gliquid/models/20261017_003407/features_antisymmetric.json +0 -1
- gliquid-0.3.1/src/gliquid/models/20261017_003407/features_symmetric.json +0 -1
- gliquid-0.3.1/src/gliquid/models/20261017_003407/manifest.json +0 -447
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_0/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_0/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_0/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_0/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_0/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_0/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_10/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_10/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_10/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_10/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_10/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_10/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_20/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_20/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_20/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_20/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_20/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_20/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_30/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_30/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_30/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_30/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_30/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_30/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_40/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_40/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_40/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_40/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_40/metadata.json +0 -37
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_40/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_40/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_50/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_50/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_50/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_50/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_50/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_50/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_60/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_60/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_60/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_60/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_60/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_60/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_70/L0_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_70/L0_b.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_70/L1_a.ubj +0 -0
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_70/best_params.json +0 -26
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_70/model_summary.txt +0 -53
- gliquid-0.3.1/src/gliquid/models/20261017_003407/seed_70/preprocess.json +0 -317
- gliquid-0.3.1/src/gliquid/reference/spurious_structures.json +0 -356
- gliquid-0.3.1/tox.ini +0 -137
- {gliquid-0.3.1 → gliquid-0.3.2}/.gitattributes +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/.github/CODEOWNERS +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/.github/dependabot.yml +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/LICENSE +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/README.md +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/assets/digitized_pd_anatomy.png +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/assets/gliq_logo_tall.png +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/assets/invariant_points_and_reactions.png +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/assets/ru_si_assessed_pd.png +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/requirements/min-constraints.txt +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/scripts/run_colab_notebook.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/__init__.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/config.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/hsx.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/hull_editor.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/imputation/__init__.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/imputation/ablation.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/imputation/binary_imputation.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/imputation/core.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/models/.gitkeep +0 -0
- {gliquid-0.3.1/src/gliquid/models/20261017_003407 → gliquid-0.3.2/src/gliquid/models/20261028_105725}/feature_names.json +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/mpds.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/__init__.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/binary_figs.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/binary_tx.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/export.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/liquidus_fields.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/phase_highlight.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/style.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/ternary_labels.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/plotting/ternary_projection.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/reference/omegas_hcp.json +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/shap_compat.py +0 -0
- {gliquid-0.3.1 → gliquid-0.3.2}/src/gliquid/solid_coverage.py +0 -0
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
#!/bin/sh
|
|
2
|
-
# ruff format
|
|
3
|
-
#
|
|
4
|
-
#
|
|
5
|
-
# with unstaged changes alongside its staged ones is left alone and the commit aborts: `git add`
|
|
6
|
-
# on a partially staged file would sweep the unstaged hunks into the commit too.
|
|
7
|
-
#
|
|
8
|
-
# Activate: git config core.hooksPath .githooks
|
|
9
|
-
# Skip once: git commit --no-verify
|
|
10
|
-
# `ruff check` is not run here; the CI lint job runs it and fails on any finding.
|
|
2
|
+
# ruff format for staged Python under src/gliquid and tests/, re-staged after formatting.
|
|
3
|
+
# A file that also has unstaged changes aborts the commit instead of being re-staged.
|
|
4
|
+
# Activate: git config core.hooksPath .githooks. `ruff check` runs in CI, not here.
|
|
11
5
|
|
|
12
6
|
ruff_bin=""
|
|
13
7
|
if [ -n "$GLIQUID_RUFF" ] && [ -x "$GLIQUID_RUFF" ]; then
|
|
@@ -31,7 +25,7 @@ run_ruff() {
|
|
|
31
25
|
}
|
|
32
26
|
|
|
33
27
|
staged=$(git diff --cached --name-only --diff-filter=ACM \
|
|
34
|
-
| grep -E '^(src/gliquid|tests
|
|
28
|
+
| grep -E '^(src/gliquid|tests)/.*\.py$')
|
|
35
29
|
[ -n "$staged" ] || exit 0
|
|
36
30
|
|
|
37
31
|
unstaged=$(git diff --name-only)
|
|
@@ -6,11 +6,7 @@ on:
|
|
|
6
6
|
push:
|
|
7
7
|
tags: ['v*']
|
|
8
8
|
|
|
9
|
-
# No API token
|
|
10
|
-
# Publishing (OIDC): GitHub mints a short-lived identity token at job runtime from
|
|
11
|
-
# `permissions: id-token: write`, and the index trusts this repository + workflow + GitHub
|
|
12
|
-
# environment. The token-based alternative (a stored __token__ password) is deliberately not
|
|
13
|
-
# used -- a leaked long-lived token is exactly what Trusted Publishing removes.
|
|
9
|
+
# No API token: both publish jobs use PyPI Trusted Publishing (OIDC via id-token: write).
|
|
14
10
|
permissions:
|
|
15
11
|
contents: read
|
|
16
12
|
|
|
@@ -22,11 +18,7 @@ jobs:
|
|
|
22
18
|
steps:
|
|
23
19
|
- uses: actions/checkout@v4
|
|
24
20
|
with:
|
|
25
|
-
#
|
|
26
|
-
# hatch-vcs reads the version from git tags; the default shallow clone has none.
|
|
27
|
-
# The build would NOT fail -- it would silently emit the pyproject
|
|
28
|
-
# fallback-version (0.0.0) and publish it. That fallback is 0.0.0 rather than the
|
|
29
|
-
# release version precisely so this failure is visible in the artifact name.
|
|
21
|
+
# Required: without tags hatch-vcs silently builds and publishes version 0.0.0.
|
|
30
22
|
fetch-depth: 0
|
|
31
23
|
|
|
32
24
|
- name: Set up Python
|
|
@@ -46,8 +38,7 @@ jobs:
|
|
|
46
38
|
run: twine check dist/*
|
|
47
39
|
|
|
48
40
|
- name: Show built version
|
|
49
|
-
#
|
|
50
|
-
# tag was not visible to hatch-vcs, and nothing downstream should be released.
|
|
41
|
+
# A 0.0.0 filename means the build missed the tag: release nothing.
|
|
51
42
|
run: ls -l dist/
|
|
52
43
|
|
|
53
44
|
- name: Upload distributions
|
|
@@ -83,13 +74,7 @@ jobs:
|
|
|
83
74
|
needs: [testpypi]
|
|
84
75
|
runs-on: ubuntu-latest
|
|
85
76
|
|
|
86
|
-
#
|
|
87
|
-
# required-reviewer protection rule, configured in the repository settings UI and not
|
|
88
|
-
# expressible in this file. That rule is the entire reason "TestPyPI first, then PyPI"
|
|
89
|
-
# is real rather than aspirational: the run pauses here until a maintainer has looked at
|
|
90
|
-
# what TestPyPI accepted and approves the deployment. Removing this line -- or deleting
|
|
91
|
-
# the environment because it "looks empty" -- turns an irreversible publish into an
|
|
92
|
-
# unattended one. PyPI cannot un-publish a version.
|
|
77
|
+
# Required: the `pypi` environment's reviewer rule pauses the run before PyPI. Do not remove.
|
|
93
78
|
environment: pypi
|
|
94
79
|
permissions:
|
|
95
80
|
id-token: write # OIDC identity for Trusted Publishing; see the note at the top
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
name: Run Tests
|
|
2
2
|
|
|
3
|
-
# Every branch,
|
|
4
|
-
# code being released lived ~90 commits ahead of it -- so it had never actually run against
|
|
5
|
-
# the package it guards.
|
|
3
|
+
# Every branch, and pull requests into main.
|
|
6
4
|
on:
|
|
7
5
|
push:
|
|
8
6
|
branches: ['**']
|
|
@@ -28,10 +26,7 @@ jobs:
|
|
|
28
26
|
steps:
|
|
29
27
|
- uses: actions/checkout@v4
|
|
30
28
|
with:
|
|
31
|
-
#
|
|
32
|
-
# shallow clone fetches none. Getting this wrong does not fail the checkout -- it
|
|
33
|
-
# silently produces the pyproject fallback-version (0.0.0), which is why that
|
|
34
|
-
# fallback is deliberately not the release version.
|
|
29
|
+
# Required: without tags hatch-vcs silently builds version 0.0.0.
|
|
35
30
|
fetch-depth: 0
|
|
36
31
|
|
|
37
32
|
- name: Set up Python
|
|
@@ -49,16 +44,15 @@ jobs:
|
|
|
49
44
|
${{ runner.os }}-pip-
|
|
50
45
|
|
|
51
46
|
- name: Install package and test extra
|
|
52
|
-
#
|
|
53
|
-
# exercises the same dependency set a contributor gets from CONTRIBUTING.md.
|
|
47
|
+
# The test extra, as CONTRIBUTING.md installs it.
|
|
54
48
|
run: |
|
|
55
49
|
python -m pip install --upgrade pip
|
|
56
50
|
pip install -e '.[test]'
|
|
57
51
|
|
|
58
52
|
- name: Run cached tests
|
|
59
|
-
#
|
|
60
|
-
#
|
|
61
|
-
run: pytest tests
|
|
53
|
+
# In parallel. The live Materials Project fetches are deselected by marker; the API
|
|
54
|
+
# job below runs them.
|
|
55
|
+
run: pytest tests -n auto --dist worksteal -m "not needs_network" --tb=short --durations=25
|
|
62
56
|
|
|
63
57
|
test-api:
|
|
64
58
|
name: API Tests
|
|
@@ -95,7 +89,7 @@ jobs:
|
|
|
95
89
|
- name: Run API tests
|
|
96
90
|
env:
|
|
97
91
|
NEW_MP_API_KEY: ${{ secrets.NEW_MP_API_KEY }}
|
|
98
|
-
run: pytest
|
|
92
|
+
run: pytest tests/test_dft_data_loading.py -v --tb=short
|
|
99
93
|
|
|
100
94
|
lint:
|
|
101
95
|
name: Lint and Format
|
|
@@ -117,7 +111,7 @@ jobs:
|
|
|
117
111
|
pip install -e '.[test]'
|
|
118
112
|
|
|
119
113
|
- name: Ruff lint
|
|
120
|
-
run: ruff check src/gliquid tests
|
|
114
|
+
run: ruff check src/gliquid tests
|
|
121
115
|
|
|
122
116
|
- name: Ruff format check
|
|
123
|
-
run: ruff format --check src/gliquid tests
|
|
117
|
+
run: ruff format --check src/gliquid tests
|
gliquid-0.3.2/.gitignore
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
notebooks/constraint_comparison.ipynb
|
|
2
|
+
notebooks/_executed/
|
|
3
|
+
|
|
4
|
+
# tox / compat testing
|
|
5
|
+
.tox/
|
|
6
|
+
compat-test-phase1.log
|
|
7
|
+
|
|
8
|
+
# pytest-testmon's record
|
|
9
|
+
.testmondata*
|
|
10
|
+
|
|
11
|
+
# Python build / cache / packaging artifacts
|
|
12
|
+
__pycache__/
|
|
13
|
+
*.py[cod]
|
|
14
|
+
build/
|
|
15
|
+
*.egg-info/
|
|
16
|
+
# Written by the hatch-vcs build hook.
|
|
17
|
+
src/gliquid/_version.py
|
|
18
|
+
|
|
19
|
+
# Logs
|
|
20
|
+
*.log
|
|
21
|
+
|
|
22
|
+
# Reagent knowledge-graph database (local only)
|
|
23
|
+
.reagent/
|
|
24
|
+
|
|
25
|
+
# Editor/IDE local config
|
|
26
|
+
.vscode/
|
|
27
|
+
|
|
28
|
+
# Local config. Keep tox.ini and requirements/ tracked: the compat matrix needs them.
|
|
29
|
+
.claude/
|
|
30
|
+
CONTEXT.md
|
|
31
|
+
# Path-anchored: rename these with the cache directory, or fetched files start being tracked.
|
|
32
|
+
cache/fit_results_cache_*
|
|
33
|
+
figures/benchmark_*/
|
|
34
|
+
# Newly fetched DFT caches; the tracked fixture set is unaffected.
|
|
35
|
+
cache/*_ENTRIES_MP_GGA.json
|
|
36
|
+
|
|
37
|
+
# Local secrets (API keys) - never commit
|
|
38
|
+
.env
|
|
39
|
+
.env.*
|
|
40
|
+
|
|
41
|
+
scripts/build_branch_feature_cache.py
|
|
42
|
+
tests/_figures/
|
|
@@ -9,6 +9,153 @@ source tree carries a version literal that could disagree with this file.
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.3.2] - 2026-10-29
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **The liquid is linearized at its own liquidus, in binaries and ternaries alike.** A liquid whose
|
|
17
|
+
excess terms depend on T ('combined', 'comb-exp') takes its H and S at a composition-dependent
|
|
18
|
+
temperature T*(x), not at the mean component melting point. The first hull takes the
|
|
19
|
+
x-weighted melting point. Each further hull re-evaluates every row at the previous hull's
|
|
20
|
+
liquidus, the step halved where it grew, until no row's |G_lin(T_liq; T*) - G(T_liq)| exceeds
|
|
21
|
+
`DEFAULT_TSTAR_TOL` (0.2143 J/mol, about 2 K of liquidus) or `DEFAULT_TSTAR_MAX_HULLS` (60)
|
|
22
|
+
hulls are built. A binary also needs every row's estimated liquidus shift, that difference
|
|
23
|
+
over the entropy step across its liquidus, at most `DEFAULT_TSTAR_LIQ_TOL` (1 K): near the
|
|
24
|
+
top of a liquid miscibility gap the entropy step vanishes, and a row that meets the energy
|
|
25
|
+
tolerance can still sit tens of K off its converged liquidus as a one-row spike
|
|
26
|
+
(`BinaryLiquid.liquidus_shift_estimate`). A binary checks the rows inside its digitized liquidus; a ternary checks
|
|
27
|
+
every liquid node and stops after `DEFAULT_TERNARY_TSTAR_MAX_HULLS` (3) hulls, the B pass and
|
|
28
|
+
two D passes. On the 96 ternaries of the melting-point benchmark that cap leaves every node's
|
|
29
|
+
liquidus within 3.7 K of the converged one and no melting point or eutectic moved, while
|
|
30
|
+
holding the slowest systems to about 1.7 s per interpolation instead of 2.9 s.
|
|
31
|
+
- The first pass restricts exactly to each binary on a ternary edge, so a ternary edge no longer
|
|
32
|
+
depends on the third element.
|
|
33
|
+
- `liquid_tstar` (on `BinaryLiquid` and `TernaryLiquidInterpolation`) holds the last
|
|
34
|
+
evaluation's T*.
|
|
35
|
+
- Parameters fitted before this change, and the v29.05 model's predictions, render
|
|
36
|
+
differently and should be refit and retrained: the notebook systems' liquidus moves by up to
|
|
37
|
+
10.5 K (Pb-Tb).
|
|
38
|
+
- Refit over the 853 SOLIDCOV_Q binaries, the fits' exact comb-exp liquidus matches MPDS with a
|
|
39
|
+
mean absolute error of 77.4 K, against 79.9 K for fits under the mean melting point, and
|
|
40
|
+
fitting takes about twice as long.
|
|
41
|
+
- **The unexpected-gap penalty counts only real gaps.** A two-liquid tie of the fitted hull
|
|
42
|
+
counts only where the liquid's exact Gibbs energy, with the solids, also ties two liquids at
|
|
43
|
+
that temperature.
|
|
44
|
+
- **Nelder-Mead returns its best vertex at `max_iter`** instead of raising.
|
|
45
|
+
- **Every initial simplex spans at least `DEFAULT_B_SPREAD_MIN` in L*_b.** A small L*_b vertex
|
|
46
|
+
is moved by the spread rather than scaled by 0.8.
|
|
47
|
+
- **`liquidus_is_continuous` allows one missing grid row**, as its tolerance intends, despite
|
|
48
|
+
floating-point error in the grid spacing.
|
|
49
|
+
- **Ternary imputation reads the liquid's Gibbs energy at the target temperature.**
|
|
50
|
+
`TernaryLiquidInterpolation.liquid_gibbs` takes H and S at the temperature asked for, as the
|
|
51
|
+
binary imputation does. A ternary imputed entry with a T-dependent edge recorded before this
|
|
52
|
+
change reports itself stale (`liquid_gibbs` provenance).
|
|
53
|
+
- **`LiquidusSheets` and `Binodal` take a `TstarField`** (the liquid's T*(x)) in place of one
|
|
54
|
+
temperature. `TernaryLiquidInterpolation.liquid_tstar_field()` builds it.
|
|
55
|
+
- **One test suite.** `tests_internal/` is merged into `tests/`, so a bare `pytest` also runs the
|
|
56
|
+
value pins, figure goldens and cache/network-gated families. Deselect them by marker
|
|
57
|
+
(`-m "not pins"`, `-m "not needs_cache"`).
|
|
58
|
+
- **The unary reference data are anchored on Materials Project GGA/GGA+U energies.**
|
|
59
|
+
`phase_transitions.json` was built from MP's mixed GGA/GGA+U/r2SCAN energies while every
|
|
60
|
+
convex hull uses GGA entries; every DFT energy in it is now the GGA/GGA+U thermo energy. Sources
|
|
61
|
+
are used in a fixed order: MP-GGA for the ground state and every phase it has, the omegas GGA
|
|
62
|
+
lattice stabilities (Chen et al., Nat. Commun. 14, 2856 (2023)) for BCC/FCC/HCP references MP
|
|
63
|
+
lacks or places below the ground state, and SGTE or an assessed literature value only where the
|
|
64
|
+
observed 1 atm phase order needs it or no DFT BCC/FCC/HCP value lands above the ground state.
|
|
65
|
+
- Ten ground states move to the stable 1 atm structure: K and Cs to bcc, Kr and Xe to fcc,
|
|
66
|
+
As to rhombohedral, Se to trigonal, Pu to alpha-Pu (monoclinic), N to alpha-N2 (Pa-3), H to
|
|
67
|
+
solid para-H2 (hcp, mp-24504), and Na to its 9R martensite (R-3m), with bcc from 36 K.
|
|
68
|
+
`expected_gs_spacegroup` in `spurious_structures.json` now covers 85 elements (62 observed
|
|
69
|
+
ground states, the rest from SGTE's stable element reference or the existing anchor), so the
|
|
70
|
+
hull anchor guard covers them too.
|
|
71
|
+
- Every real phase whose ladder enthalpy is SGTE or assessed (28 MP entries, such as gamma-Fe,
|
|
72
|
+
fcc-Co, beta-Zr and the Pu allotropes) is in `spurious_structures.json` with
|
|
73
|
+
`category: "sgte_corrected"`, so no corrected DFT entry reaches a hull; the ladder phase keeps
|
|
74
|
+
the structure and its id becomes `sgte-<El>-<spacegroup>`. 26 further entries with no 1 atm
|
|
75
|
+
stability field are blacklisted as `spurious`, each with a literature source, among them the
|
|
76
|
+
former H anchor (mp-730101, the H sublattice of ammonium dideuterium phosphate); only fibrous
|
|
77
|
+
red P (mp-1198724) is still marked `status: "derived; literature review pending"`. The 7
|
|
78
|
+
computational BCC/FCC/HCP prototypes among them carry `ss_structure`.
|
|
79
|
+
- Liquid references move for fifteen elements: Pu by -47568 J/mol (every Pu step is now SGTE),
|
|
80
|
+
Ti by -2765 J/mol (beta-Ti from 13146.9 to 10381.94 J/mol), Li by -436 J/mol and
|
|
81
|
+
-4.955 J/mol/K (the 9R -> bcc step at 74 K instead of 80 K; Maier et al., Phys. Rev. B 55,
|
|
82
|
+
113 (1997)), Na by +429 J/mol and +11.93 J/mol/K (the 9R -> bcc step at 36 K), Sr by
|
|
83
|
+
+576 J/mol and +0.628 J/mol/K, Ba by +730 J/mol and +0.73 J/mol/K, and Ca by -31 J/mol and
|
|
84
|
+
-0.043 J/mol/K. Ca, Sr and Ba take the assessment of Alcock, Chase & Itkin (J. Phys. Chem.
|
|
85
|
+
Ref. Data 22, 1 (1993)). Ca: fcc -> bcc at 716 K with 930 J/mol instead of an unverified
|
|
86
|
+
961 J/mol. Sr: fcc -> bcc at 820 K with 850 J/mol, and fusion at 1041 K with 8000 J/mol,
|
|
87
|
+
instead of SGTE's 844 J/mol at 830 K and CRC's 7430 J/mol at 1050 K. Ba: fusion with
|
|
88
|
+
7850 J/mol instead of CRC's 7120 J/mol, at the same 1000 K. La, Ce, Sm and Gd take Konings &
|
|
89
|
+
Beneš (J. Phys. Chem. Ref. Data 39, 043102 (2010)), Mn, Fe and the Be transition take
|
|
90
|
+
NIST-JANAF (Chase 1998), and Be's fusion takes Alcock et al.: Sm by +1063 J/mol and
|
|
91
|
+
+1.135 J/mol/K (alpha -> beta at 970 K and beta -> gamma at 1185 K instead of 1190 K and
|
|
92
|
+
1345 K, with 100, 3170 and 9100 J/mol steps), Be by +1028 J/mol and +0.659 J/mol/K (fusion
|
|
93
|
+
8000 J/mol instead of 6972 J/mol), Ce by -620 J/mol and -0.579 J/mol/K (fusion 5580 J/mol
|
|
94
|
+
instead of 6200 J/mol), Gd by +183 J/mol and +0.064 J/mol/K (alpha -> beta at 1534 K with
|
|
95
|
+
3940 J/mol, fusion at 1591 K with 9800 J/mol), Tl by +171 J/mol and +0.289 J/mol/K (fusion
|
|
96
|
+
4150 J/mol and SGTE's 360 J/mol beta step), Sn by -124 J/mol and -0.433 J/mol/K (SGTE's
|
|
97
|
+
1966 J/mol beta step instead of 2090 J/mol), Mn by -81 J/mol and +0.034 J/mol/K (2226, 2122
|
|
98
|
+
and 1879 J/mol steps at 980, 1361 and 1412 K) and La by -36 J/mol (beta at 566 K, gamma at
|
|
99
|
+
1140 K, fusion 6140 J/mol at 1192 K).
|
|
100
|
+
- Solid-solution references (`lattice_stabilities`): 95 change by more than 0.5 J/mol, 21 are
|
|
101
|
+
new and 7 are dropped. Omegas values are measured from the element's MP-GGA ground-state
|
|
102
|
+
energy instead of a shared structure, so FCC-Ga becomes +1923 J/mol instead of 0. Mg and Cd
|
|
103
|
+
FCC come from
|
|
104
|
+
omegas, and In FCC and Hg FCC/HCP from SGTE, because the DFT values before them land below
|
|
105
|
+
the ground state. Hg BCC, which no DFT or SGTE source places above the ground state, takes
|
|
106
|
+
the enthalpy of the fitted end member of the Hg-Tl assessment (Gierlotka, Sopousek &
|
|
107
|
+
Fitzner, Calphad 30, 425 (2006)): +5540 J/mol, id `assessed-Hg-229`, instead of +336 J/mol.
|
|
108
|
+
A structure with no source above the ground state is not emitted and is listed under the
|
|
109
|
+
element's new `excluded_lattice_stabilities` (Eu FCC, Xe BCC).
|
|
110
|
+
Fitted parameters made before this change do not carry over and must be refit.
|
|
111
|
+
|
|
112
|
+
- **A ladder phase is a solid solution's end member only if it has that structure's
|
|
113
|
+
prototype.** Spacegroup 194 holds hcp (hP2), dhcp and graphite (hP4); `Phase` now carries
|
|
114
|
+
`pearson_symbol`, and `ComponentRef.ss_polymorphs` picks the end member by spacegroup and
|
|
115
|
+
prototype. A dhcp or graphite ground state stands in for HCP only when no hP2 lattice stability
|
|
116
|
+
exists, and gliquid logs a warning when it does. Pr's HCP solid solution now uses the hP2
|
|
117
|
+
lattice stability (+2792.66 J/mol) and alpha-Pr (dhcp) stays a line compound beside it; C, La,
|
|
118
|
+
Nd and Sm keep their SG 194 phase as a stand-in.
|
|
119
|
+
|
|
120
|
+
- **`ref_mode="from_dft_entries"` takes the ladder step for a real phase with no DFT entry.** A
|
|
121
|
+
BCC, FCC or HCP phase on the element's ladder that the DFT entries lack, such as one the
|
|
122
|
+
blacklist keeps off hulls, takes its ladder enthalpy above the DFT ground state when that
|
|
123
|
+
ground state has the ladder ground state's spacegroup. Otherwise it is left to the omegas
|
|
124
|
+
fallback and gliquid logs a warning.
|
|
125
|
+
|
|
126
|
+
- **Candidate Nelder-Mead fits converge on one scale and start Lupis-Elliott-consistent.** The
|
|
127
|
+
convergence test weighs an `L*_b` coordinate by the mean liquidus temperature, so `L*_a` and
|
|
128
|
+
`L*_b` are measured by their contribution to `L_k` (J/mol); the tolerance is
|
|
129
|
+
`CANDIDATE_TOL_J_MOL` (100 J/mol). `BinaryLiquid.nelder_mead` takes the per-coordinate `scale`.
|
|
130
|
+
The offset vertex of a candidate's initial simplex moves `L*_b` toward excess entropy of the
|
|
131
|
+
sign of `L*_a` at 0 K, in the linear and `exp(-T/tau)` forms alike.
|
|
132
|
+
|
|
133
|
+
- **The packaged model is v29.07** (bundle `20261028_105725`, replacing `20261017_003407`).
|
|
134
|
+
It is the mean of eight XGBoost models trained at different seeds, on the 854 binaries refit
|
|
135
|
+
with the liquid linearized at its own liquidus, the GGA-anchored unary references and the
|
|
136
|
+
Nelder-Mead changes above, with 49 symmetric and 30 antisymmetric features. On its 100 held-out
|
|
137
|
+
test systems it predicts the liquidus with a mean absolute percentage error of 10.98 % (median
|
|
138
|
+
8.91 %) and a mean absolute error of 169.6 K. Every predicted parameter changes from 0.3.1.
|
|
139
|
+
|
|
140
|
+
### Fixed
|
|
141
|
+
|
|
142
|
+
- **The H-S partition seed fit honours a pinned `L*_b`.** In `'comb-exp'` it fitted `L1`
|
|
143
|
+
with `L1_b = L1_a / tau` (zero excess entropy at 0 K) and then handed `L1_a` to candidates that
|
|
144
|
+
hold `L1_b = 0`; it now fits the pinned model throughout.
|
|
145
|
+
|
|
146
|
+
- **The Bi-Sr hull follows the assessed diagram's compounds.** The Materials Project hull has
|
|
147
|
+
vertices at Sr2Bi3 (mp-31150, x_Sr = 0.400) and Sr4Bi3 (mp-30893, x_Sr = 0.571), which the
|
|
148
|
+
assessed Bi-Sr diagram does not draw, and takes the P6_3/mcm polymorph of Sr5Bi3 (mp-29620).
|
|
149
|
+
All three are now in `spurious_structures.json`; the hull becomes SrBi3, Sr11Bi10 and the
|
|
150
|
+
Pnma Sr5Bi3 (mp-1197242).
|
|
151
|
+
|
|
152
|
+
- **The ternary T-x figure draws each solid phase as one vertical segment per composition.**
|
|
153
|
+
`render_tx_surface` joined every point of a phase into one line, which zig-zagged between
|
|
154
|
+
compositions; the segments are now separate.
|
|
155
|
+
|
|
156
|
+
- **`copy.deepcopy` of a `SqliteBackend` returns the same backend** instead of copying the open
|
|
157
|
+
store.
|
|
158
|
+
|
|
12
159
|
## [0.3.1] - 2026-10-17
|
|
13
160
|
|
|
14
161
|
### Added
|
|
@@ -683,7 +830,8 @@ earlier published versions to diff against; this entry describes what the packag
|
|
|
683
830
|
- **An empty Materials Project fetch now raises rather than being cached.** A zero-entry result
|
|
684
831
|
used to be written out as a 2-byte `[]`, which every later read then accepted as a warm cache.
|
|
685
832
|
|
|
686
|
-
[Unreleased]: https://github.com/willwerj/gliquid_python/compare/v0.3.
|
|
833
|
+
[Unreleased]: https://github.com/willwerj/gliquid_python/compare/v0.3.2...HEAD
|
|
834
|
+
[0.3.2]: https://github.com/willwerj/gliquid_python/compare/v0.3.1...v0.3.2
|
|
687
835
|
[0.3.1]: https://github.com/willwerj/gliquid_python/compare/v0.3.0...v0.3.1
|
|
688
836
|
[0.3.0]: https://github.com/willwerj/gliquid_python/compare/v0.2.0...v0.3.0
|
|
689
837
|
[0.2.0]: https://github.com/willwerj/gliquid_python/compare/v0.1.0...v0.2.0
|
|
@@ -6,11 +6,9 @@ abstract: >-
|
|
|
6
6
|
phase boundaries, and for interpolating multicomponent phase diagrams from the fitted binary
|
|
7
7
|
liquid descriptions.
|
|
8
8
|
type: software
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
version: "0.3.1"
|
|
13
|
-
date-released: "2026-10-17"
|
|
9
|
+
# A literal: bump `version` and `date-released` by hand at each release (CONTRIBUTING.md).
|
|
10
|
+
version: "0.3.2"
|
|
11
|
+
date-released: "2026-10-29"
|
|
14
12
|
license: MIT
|
|
15
13
|
repository-code: "https://github.com/willwerj/gliquid_python"
|
|
16
14
|
url: "https://viz.whsunresearch.group/gliquid/interactive-matrix.html"
|
|
@@ -26,24 +26,15 @@ directory is named `gliquid_python`. The store is the first of: `set_cache_dir()
|
|
|
26
26
|
|
|
27
27
|
## Running the tests
|
|
28
28
|
|
|
29
|
-
Run `pytest` from the repository root.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
pytest # the public tests/ suite -- the default, and what a contributor runs
|
|
34
|
-
pytest tests_internal # the maintainer tier: value pins, figure goldens, gated families
|
|
35
|
-
pytest tests tests_internal # everything
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
A bare `pytest` collects only `tests/` because `testpaths = ["tests"]` says so in
|
|
39
|
-
`pyproject.toml`; `tests_internal/` is tracked in git but never collected implicitly, and it is
|
|
40
|
-
excluded from the sdist.
|
|
29
|
+
Run `pytest` from the repository root. It collects `tests/`, which is excluded from the sdist.
|
|
30
|
+
The value pins, figure goldens and gated families carry markers (below), so `-m "not pins"`
|
|
31
|
+
or `-m "not needs_cache"` deselects them.
|
|
41
32
|
|
|
42
33
|
The gate is the whole suite in parallel under pytest-xdist. Run it before you push; CI runs the
|
|
43
34
|
same command with `-m "not needs_network"`:
|
|
44
35
|
|
|
45
36
|
```bash
|
|
46
|
-
pytest
|
|
37
|
+
pytest -n auto --dist worksteal
|
|
47
38
|
```
|
|
48
39
|
|
|
49
40
|
- Use `-n 8` instead of `-n auto` while a fit campaign or another heavy job runs: each worker
|
|
@@ -56,8 +47,8 @@ optional and not part of `.[test]`:
|
|
|
56
47
|
|
|
57
48
|
```bash
|
|
58
49
|
pip install pytest-testmon
|
|
59
|
-
pytest
|
|
60
|
-
pytest
|
|
50
|
+
pytest --testmon # first run: the whole suite, recording what each test executes
|
|
51
|
+
pytest --testmon # later runs: only the tests your edits affect
|
|
61
52
|
```
|
|
62
53
|
|
|
63
54
|
It keeps its record in `.testmondata` at the repository root (git-ignored), needs the cache
|
|
@@ -68,7 +59,7 @@ source as text, are not selected by a change under `src/`, so run the gate befor
|
|
|
68
59
|
Without testmon, run one module (`pytest tests/test_phase.py`), or rerun the last failures with
|
|
69
60
|
`--lf` (it also needs the cache provider).
|
|
70
61
|
|
|
71
|
-
Only git-tracked test files are collected from `tests
|
|
62
|
+
Only git-tracked test files are collected from `tests/`. An untracked or
|
|
72
63
|
ignored `test_*.py` is skipped and listed in the terminal summary; `git add` it, or name it on
|
|
73
64
|
the command line, to run it.
|
|
74
65
|
|
|
@@ -127,12 +118,12 @@ default, because this codebase already writes to roughly 95–100 characters and
|
|
|
127
118
|
calls that read fine today.
|
|
128
119
|
|
|
129
120
|
```bash
|
|
130
|
-
ruff format src/gliquid tests
|
|
131
|
-
ruff format --check src/gliquid tests
|
|
132
|
-
ruff check src/gliquid tests
|
|
121
|
+
ruff format src/gliquid tests # before you push
|
|
122
|
+
ruff format --check src/gliquid tests
|
|
123
|
+
ruff check src/gliquid tests # CI fails on any finding, as on unformatted code
|
|
133
124
|
```
|
|
134
125
|
|
|
135
|
-
A pre-commit hook in `.githooks/` runs `ruff format` over the staged files in those same
|
|
126
|
+
A pre-commit hook in `.githooks/` runs `ruff format` over the staged files in those same two
|
|
136
127
|
paths and re-stages them, so a commit records formatted code. It is **not active until you
|
|
137
128
|
switch git's hook path to it** — that setting lives in `.git/config` and is not carried by a
|
|
138
129
|
clone:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: gliquid
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.2
|
|
4
4
|
Summary: A package for fitting DFT-referenced liquid free energies from digitized equilibrium phase boundaries
|
|
5
5
|
Project-URL: Homepage, https://viz.whsunresearch.group/gliquid/interactive-matrix.html
|
|
6
6
|
Project-URL: TernaryInterpolation, https://viz.whsunresearch.group/gliquid/ternary-interpolation/
|
|
@@ -5,7 +5,7 @@ One OpenMP thread. ``OMP_NUM_THREADS`` is set to 1 for the session (XGBoost and
|
|
|
5
5
|
every xdist worker and every fresh interpreter a test starts), before anything imports numpy
|
|
6
6
|
or xgboost. A value already in the environment is kept.
|
|
7
7
|
|
|
8
|
-
Tracked-only collection. Under ``tests/``
|
|
8
|
+
Tracked-only collection. Under ``tests/`` only the ``test_*.py`` files
|
|
9
9
|
that git tracks are collected; an untracked or git-ignored one is skipped and listed in the
|
|
10
10
|
terminal summary. A file named on the command line is always collected. Outside a git work
|
|
11
11
|
tree, or without ``git`` on PATH, every file is collected.
|
|
@@ -25,7 +25,7 @@ Single-file store. Set ``GLIQUID_TEST_SQLITE_STORE=<path>.sqlite`` and the whole
|
|
|
25
25
|
against a SQLite cache store instead of the ``cache/`` directory tree::
|
|
26
26
|
|
|
27
27
|
python -m gliquid.cache migrate --from cache --to <path>.sqlite
|
|
28
|
-
GLIQUID_TEST_SQLITE_STORE=<path>.sqlite python -m pytest tests
|
|
28
|
+
GLIQUID_TEST_SQLITE_STORE=<path>.sqlite python -m pytest tests
|
|
29
29
|
|
|
30
30
|
Unset, the suite runs against the directory store.
|
|
31
31
|
|
|
@@ -52,7 +52,7 @@ os.environ.setdefault("OMP_NUM_THREADS", "1")
|
|
|
52
52
|
_SQLITE_STORE_ENV = "GLIQUID_TEST_SQLITE_STORE"
|
|
53
53
|
_NO_HULL_MEMO_ENV = "GLIQUID_TEST_NO_HULL_MEMO"
|
|
54
54
|
_HULL_MEMO_ENTRIES = 4000 # entries held across all memoised hulls; least recently used go first
|
|
55
|
-
_GATED_DIRS = ("tests",
|
|
55
|
+
_GATED_DIRS = ("tests",)
|
|
56
56
|
_UNTRACKED_KEY = "gliquid_untracked_test_files"
|
|
57
57
|
_HULL_MEMO_KEY = "gliquid_hull_memo_stats"
|
|
58
58
|
_tracked_key = pytest.StashKey[frozenset | None]()
|