v2.1.1 (2026-06-04)¶
Documentation, packaging, and test-suite release adding the JOSS submission materials, contributor guidelines, and an expanded unit-test suite. Includes three bug fixes surfaced by the expanded test coverage; no other library or API changes.
Added¶
paper/paper.mdandpaper/paper.bib: JOSS submission manuscript and bibliography. The paper covers the Summary, Statement of need, State of the field, Software design, Research impact statement, AI usage disclosure, Acknowledgements, and References sections required by JOSS, and includes a DOE / DuraMAT 2 funding acknowledgement..github/workflows/draft-pdf.yml: builds a PDF preview of the JOSS paper on every push and pull request that touchespaper/**, using the Open Journalsinaracontainer.CONTRIBUTING.md: contributor guidelines covering issue reporting, support channel, development install (pip install -e ".[dev]"), running the test suite and notebook smoke tests, changelog updates, and the ANSYS APDL verification expectations when touching the fitting routines. Linked from the README.CODE_OF_CONDUCT.md: Contributor Covenant 3.0 with the project maintainer (martin.springer@nlr.gov) as the reporting contact. Referenced fromCONTRIBUTING.md.docs/theory.rst: new “Theory” page in the documentation that includes the roottheory.md(linear viscoelasticity background, Prony series, time-temperature superposition). Enabled thedollarmathMyST extension indocs/conf.pyso the$...$and$$...$$equations render via MathJax.Expanded the pytest suite from 8 to 85 tests, covering the public
load,master,shift,prony,opt,out, andverifymodules and their plot helpers across both time and frequency domains. Added two ANSYS APDL.MPLmaterial cards (WLF and user polynomial shift functions) undertests/data/.
Changed¶
README.md: corrected the License section from “CLA 1.0” to “BSD 3-Clause” to matchLICENSEandpyproject.toml.README.md: added a Contributing section linking toCONTRIBUTING.md.README.md: noted that the Voila app can also be run locally withvoila LinViscoFit.ipynbafterpip install pyvisco.docs/api.rst: removedinterfrom the API autosummary. The module is the Voila/ipywidgets GUI orchestration layer and is treated as internal; it remains importable asfrom pyvisco import interfor theLinViscoFit.ipynbnotebook.README.md: rewrote the relative repo links (sample_data/,tutorials/,verification/,CONTRIBUTING.md,LICENSE) as absolute GitHub URLs so they resolve both on GitHub and from the Sphinx-rendered README on Read the Docs. The docs now build cleanly with-W.Switched the Sphinx HTML theme from
alabasterto Furo for a modern look with a light / dark toggle and a wider sidebar. Thesphinx-rtd-themedocs extra inpyproject.tomlwas replaced withfuro; the custom_templates/layout.html(used only to inject the function/method CSS under Alabaster) was removed in favour ofhtml_css_filesindocs/conf.py.Docstring polish across
pyvisco/load.py,master.py,prony.py,opt.py,shift.pyandverify.py: converted quoted identifier references in prose ('E','G','E_relax','G_relax','freq','time','Set','log_aT','T','tau_i','alpha_i','exact','round','min','x','prony') to reST double-backtick inline code so they render in monospace in the API documentation. The numpydoc{'E', 'G'}literal-choice annotations were left unchanged.
Fixed¶
master.plot_shift_update: hard-coded the frequency-domain storage modulus column, raisingKeyErroron time-domain master curves. Now selects(t, M_relax)or(f, M_stor)/(f, M_loss)based on the master-curve domain.prony.GMaxw_temp: theD4/D3/D2/D1polynomial-shift branches used stale column labels and raisedKeyError. Now indexesdf_coeffwith the'D4'/'D3'/'D2'/'D1'row labels produced byshift.fit_poly.verify.load_prony_ANSYS: theTBDATAparser also consumed records from a trailingTB,SHIFT,…block, leaking shift coefficients into the Prony arrays and raisingValueErroron tokens such as273-5. Now scoped to the activeTB,PRONYblock.
Removed¶
cla-1.0.md: legacy Contributor License Agreement removed to avoid ambiguity with the newCONTRIBUTING.mdworkflow.