v2.0.0 (2026-06-01)¶
First release under the NLR fork (NatLabRockies/pyvisco).
Added¶
pyproject.toml(PEP 621) replacessetup.py/setup.cfg/versioneer.py. Version is derived from Git tags viasetuptools-scm(fallback1.0.5).tests/test suite with 8 pytest cases coveringload,shift, andpronymodules.GitHub Actions workflows:
ci.yml— pytest matrix (Python 3.11 / 3.12 / 3.13 × Ubuntu / Windows) plus aruff check+ruff format --checklint job.notebooks.yml—nbval-laxexecution check on the threeverification/verify_*.ipynbnotebooks, onLinViscoFit.ipynb(voila GUI) and ontutorials/tutorial.ipynb, plus a smoke-test step that runs the threetutorials/*.pyexample scripts.binder.yml— weekly + on-push rebuild of the Binder image viajupyterhub/repo2docker-action.release-assets.yml— buildspyvisco-examples.zipfrom the contents ofsample_data/and uploads it to every published GitHub release.
tutorials/folder with a non-interactive walkthrough notebook (tutorial.ipynb, theipywidgets-free counterpart ofLinViscoFit.ipynb) and three standalone scripts —freq_master.py,freq_raw.py,time_master.py— mirroring the three verification scenarios for headless / scripted use.verification/README.mdandtutorials/README.mddescribing the contents and CI of each folder.This changelog.
Changed¶
Breaking: minimum Python is now 3.11 (was 3.7).
Breaking:
pandas >= 2.1is required; internaldf.loc[i]['col'] = xpatterns rewritten todf.loc[i, 'col'] = xto satisfy the pandas 3.xChainedAssignmentError.Breaking:
ipywidgets >= 8.1is required. TheFileUploadwidget handling was rewritten for the new tuple-of-dictsvalueAPI (the_countertrait was removed upstream). A new_file_upload_byteshelper transparently supports both the v8 and v7 payload formats.Dependency floors raised across the stack:
numpy >= 1.26,scipy >= 1.11,matplotlib >= 3.8,voila >= 0.5,jupyterlab >= 4.1,notebook >= 7.1,openpyxl >= 3.1,xlrd >= 2.0.Optional
[interactive],[app], and[excel]extras have been folded into the default install —pip install pyvisconow provides everything needed to run the dashboard.Binder environment moved to Python 3.13. The legacy top-level
Dockerfile,environment.yml, andrequirements.txtwere removed; Binder config now lives entirely underbinder/.ReadtheDocs build switched from the unmaintained
m2r2tomyst-parser.Documentation, package metadata, license, and Zenodo records updated to reflect the move from NREL to NLR (Natural Laboratory of the Rockies).
Maintainer contact:
martin.springer@nlr.gov.Repository-wide
ruff check+ruff formatpass (line length 100, targetpy311).
Fixed¶
Legacy
.xlsuploads no longer fail silently.xlrdis now a hard dependency and the@exceptionsdecorator on the upload observers has a catch-all branch that writes the traceback to both the output widget andsys.stderr(so the failure is visible in the Voila server log).verify.load_prony_ANSYSnow captures the declaredntermsfrom theTB,PRONY,...record and raises a descriptiveValueErrorif the parsedalpha_i/tau_icounts disagree with each other or with the declared count (replaces a silently-discardedint()call that could crash on unrelatedTBrecords).out.to_csvdocstring corrected: returns a CSVstrwhenfilepathisNone, otherwise writes to disk and returnsNone(previously documented aspandas.DataFrame/bytes).
Removed¶
setup.py,setup.cfg,versioneer.py,MANIFEST.in,Procfile,runtime.txt, and the stale top-levelbuild/tree.LinViscoFit-test.ipynbdevelopment sandbox.examples/examples.zipis no longer committed to the repository; it is now produced fromsample_data/(renamed fromexamples/) at release time and attached to the GitHub release aspyvisco-examples.zip. The voila app’s download link points athttps://github.com/NatLabRockies/pyvisco/releases/latest/download/pyvisco-examples.zip.Auto-generated
docs/_autosummary/*.rststubs are no longer tracked (they are regenerated by Sphinx on every build).