v1.5.0: assess a site from an installed package¶
Released on 23 October 2026 as
v1.5.0,
at commit edc27007759de575baa7b3c6f4969139cea8d616.
New site workflow¶
An installed package can create, check and evaluate a TOML site file:
python -m pip install borethm==1.5.0
borethm-new-site mysite.toml
# edit mysite.toml
borethm-evaluate --site-file mysite.toml --check
borethm-evaluate --site-file mysite.toml --json mysite.json
Version 1.5.0 is available from PyPI. The
new-site guide explains the inputs and sources.
--from KEY starts from any built-in site. The public Python interface adds
load_site and layered_geotherm; the two export functions accept an optional
keyword-only site_file argument for the input path and checksum.
The opening result reading explains numerical validity, target scenarios,
whole-programme constraints and equipment checks. It is also exported as
reading in JSON. The output guide
explains the status precedence and conditions.
The documentation website is built from the maintained Markdown pages. Source and evidence links use the release tag. Study reproduction commands write to a separate output folder.
Changes to existing behaviour¶
Required site selection¶
borethm-evaluate needs either --site or --site-file; its former Soultz
default is removed.
TOML site template¶
borethm-new-site writes the packaged TOML template. The former
examples/site_template.py is removed. Python callers can still construct
a SiteProfile directly.
Explicit coupling override¶
evaluate(..., coupled=False) switches coupling off even if the site's flag
is set. The default selection by calculation mode is unchanged. The
API reference describes the affected couplings.
Verification¶
The baseline is v1.4.3 at
06d7344bb54db230cea19b4721fc171241a644e5.
| Check | Result |
|---|---|
| Local fast suite | 586 passed in 33.56 seconds; 104 slow tests excluded |
| Public interface | Two added names; the two export functions gain the optional site_file keyword; all other existing signatures and defaults unchanged |
| Built-in site inputs | Every field unchanged; both geotherms compared exactly at 2,001 depths per site |
| Reference exports | Every existing field unchanged on identical retained inputs; reading is the only added key |
| Saved evidence | All 387 data, result, benchmark and golden files unchanged |
| Distributions | Wheel and source distribution built; both passed twine check |
| Fresh wheel installation | API, packaged site files, commands, study imports and provenance passed outside the checkout, without Matplotlib |
| Dependency consistency | pip check passed |
| Documentation | Link checker passed across 49 Markdown files; strict website build passed |
| Fast compatibility matrix | 586 passed in each of 12 combinations: Python 3.11 to 3.14 on Linux, Windows and macOS |
| Cross-platform wheel installation | Passed on Linux, Windows and macOS |
| Full physical suite | 690 passed, including 104 slow tests, in 5,986.93 seconds (1 hour 39 minutes 47 seconds); no failures or skips |
Two existing file-only tests moved from the slow suite; the remaining
increase from the baseline's 404 fast tests consists of 180 added tests.
The complete CI run
passed at candidate 9db807bc08522c439045fca1d595addc710f4e18 on
23 October 2026. The slow job took 1 hour 42 minutes 2 seconds including
installation and water-property table generation. Its pytest run emitted
14 runtime warnings from the boundary-value solver and heat-transfer
correlation during the output and golden comparisons; every test passed.
The downloaded JUnit report and job log are retained with the release review.
The export comparison passes identical adapted retained results to both exporters and fixes runtime provenance equally. The release's actual version, commit and source fingerprint identify the new code. This checks the export format; fresh physical reproduction is checked by the CI suite.
Local fast tests used Python 3.14.4, NumPy 2.5.3, SciPy 1.18.1, IAPWS 1.5.5, Matplotlib 3.11.2 and pytest 9.1.1 from the lock file. The independent wheel installation resolved NumPy 2.5.4, SciPy 1.18.1 and IAPWS 1.5.5 against the package's dependency requirements.
Cross-platform input checks¶
Site files preserve their supplied values exactly. Tests compare loaded files with their stored records, and compare freshly generated files with the Python definitions in the same environment. Formatting a fixed record reproduces the committed UTF-8 bytes with LF line endings.
Comparisons between stored snapshots and independently recomputed inputs
use a shared relative round-off bound of 1e-12 for finite floating-point
values. This applies equally to every site and input unit, with no absolute
floor: a zero must remain zero. Structure, labels, booleans and integers
remain exact. These checks concern input snapshots; existing physical
regression tolerances are unchanged.
The published benchmark dataset is packaged from its fixed snapshot after verifying the published manifest checksum and every file. Packaging repeats no numerical fits. Separate tests compare current inputs and geotherms with that snapshot under the same numerical-input policy. Dataset 1.0's files and citation remain unchanged.
The fast compatibility matrix covers Python 3.11 to 3.14 on Linux, Windows and macOS. Isolated wheel installations are checked on all three operating systems. The full physical suite uses the locked Linux environment after the compatibility, installation and documentation jobs pass.
Publication and citation¶
The release checklist records the publication checks. The software's all-versions DOI and the author's ORCID iD are preserved. Benchmark dataset 1.0 keeps its separate citation.
The PyPI publishing workflow
passed. A fresh environment outside the checkout installed borethm==1.5.0
from PyPI without Matplotlib and passed pip check and the installed-package
checks. The create, edit, check and evaluate workflow completed and exported
JSON with the correct package version and input-file checksum. The test
edited the starter's name and retained its numerical Soultz inputs.
The documentation deployment
passed after the v1.5.0 tag was allowed in the github-pages environment.
The overview and new-site guide returned HTTP 200 with the expected content
and source links to the release tag. Future release tags need permission
in that environment before publication.
Zenodo archived this release as 10.5281/zenodo.23602484. The downloaded archive matched Zenodo's checksum. All 63 packaged files matched the approved checkout in the published wheel, source distribution and Zenodo archive; distribution hashes matched the PyPI records.