Release Notes
Version 1.3.0 (not released yet)
-
Introduced the
pySWATPlus.Calibrationclass for parameter calibration using multi-objective optimization, evolutionary algorithms, and parallel computing. -
Added the
pySWATPlus.SensitivityAnalyzer.simulation_and_indicesmethod to compute sensitivity indices directly against observed data without saving detailed simulation results.
Version 1.2.0 (October 13, 2025)
-
All SWAT+ simulations with modified parameters are now configured through the
calibration.calfile, eliminating the need to read and modify individual input files. -
Introduced the
pySWATPlus.PerformanceMetricsclass to compute performance metrics between simulated and observed values using the following indicators:- Nash–Sutcliffe Efficiency
- Kling–Gupta Efficiency
- Mean Squared Error
- Root Mean Squared Error
- Percent Bias
- Mean Absolute Relative Error
-
Updated the
pySWATPlus.SensitivityAnalyzerclass:- Renamed the method
simulation_by_sobol_sampletosimulation_by_sample_parametersto standardize naming and allow different sampling techniques in the future. - Added
parameter_sensitivity_indicesfor computing sensitivity indices using the available indicators in thepySWATPlus.PerformanceMetricsclass.
- Renamed the method
-
Introduced the
pySWATPlus.DataManagerclass with methods to support data processing workflows:read_sensitive_dfs: Reads sensitivity simulation data generated by thesimulation_by_sobol_samplemethod in thepySWATPlus.SensitivityAnalyzerclass.simulated_timeseries_df: Moved from thepySWATPlus.SensitivityAnalyzerclass to improve modularity.
-
Updated the
pySWATPlus.TxtinoutReaderclass:- Added
set_simulation_timestepto modify the simulation timestep in thetime.simfile. - Added
set_print_intervalto modify the print interval in theprint.prtfile. - Added
set_print_periodto modify the print period in theprint.prtfile for recording simulated results. - Renamed
set_begin_and_end_datetoset_simulation_periodfor better consistency.
- Added
Version 1.1.0 (August 26, 2025)
-
Added a new class
pySWATPlus.SensitivityAnalyzerto support sensitivity simulations with two main methods:simulated_timeseries_df: Generates a time seriesDataFramedirectly from a simulation output file.simulation_by_sobol_sample: Provides a high-level interface for running sensitivity simulations with parallel computing and extracting results from multiple output files.
-
Changes in
pySWATPlus.TxtinoutReaderclass:copy_required_files: New method to copy required files into a separate directory before running simulations. This protects the mainTxtInOutfolder and enables safer, more controlled workflows.run_swat_in_other_dir: Enhanced with new optional parameters, allowing users to configure all necessary inputs in a single call for improved usability.
-
The
has_unitsinput parameter, which specifies whether the third line ofSWAT+input or output files contains column units, is now mandatory across thepySWATPluspackage (previously optional) to ensure consistent file handling. -
Added Contributing Guidelines with clear instructions for setting up the development environment, reporting issues, and submitting contributions.
-
Added Code of Conduct to define standards for a welcoming, respectful, and inclusive community.
Version 1.0.3 (July 30, 2025)
-
Configured GitHub Actions for automatic documentation builds.
-
Configured GitHub Actions for testing with
pytestand integrated Codecov to monitor and report test coverage. -
Switched testing environment from
UbuntutoWindowswithpytestto run the.exefile of the SWAT+ model.
Version 1.0.2 (July 25, 2025)
-
Updated sample data.
-
Added additional test functions.
-
Added several badges to the
READMEfor improved code visibility. -
Fixed code bugs and updated documentation.
-
Modified
pySWATPluscitation.
Version 1.0.1 (July 23, 2025)
-
Added sample data.
-
Added more test functions using the sample data.
-
Renamed some methods and variables for better consistency and clarity.
-
Fixed code bugs and updated documentation.
Version 1.0.0 (July 22, 2025)
-
Refactored
TxtinoutReaderandFileReaderfor improved consistency, clarity, and simplicity. -
Removed
SWATProblemandSWATProblemMultimodelclasses due to usability issues; a better user interface for SWAT+ parameter calibration will be developed in the future. -
Fixed bugs in reading TXT files.
-
Added GitHub Actions for static type checking with
mypyto verify annotations throughout the codebase. -
Updated documentation on sensitivity analysis and other code changes.
-
Removed
LICENSEPyPI classifier frompyproject.tomland updated configuration according to packaging guidelines. -
Added Development Status PyPI classifier
Betatopyproject.toml. -
Added new package dependency
typing-extensions.
Version 0.2.20 (July 19, 2025)
- Updated key parts of the documentation to reflect recent code changes.
Version 0.2.19 (July 19, 2025)
-
Updated minimum Python requirement from 3.6 to 3.10.
-
Added GitHub Actions for linting with
flake8to enforce PEP8 formatting. -
Added GitHub Actions for testing with
pytestto ensure code reliability. -
Fixed variable type annotations for static type checking.
-
Added classifiers and keywords to
pyproject.toml. -
Configured
pyproject.tomlto suppressDeprecationWarning. -
Removed
numpydependency as it is included with other required packages.
Version 0.2.18 (May 4, 2025)
- Migrated all configurations to
pyproject.tomlfor improved packaging.
Version 0.2.17 (May 4, 2025)
-
Renamed several variables to improve consistency across functions.
-
Modified input and output variable type annotations to align with advanced-style static type checking.
-
Fixed multiple code bugs.
-
Improved code documentation.
Version 0.2.16 (March 30, 2025)
- Updated
publish.ymldeploy-docs task to grantcontents: writepermission
Version 0.2.15 (March 30, 2025)
- Simplified workflow by creating GitHub releases via
ghCLI instead of thereleaseaction
Version 0.2.14 (March 30, 2025)
- Docs: Published project documentation to GitHub Pages.
Version 0.2.13 (March 23, 2025)
- Fixed bugs on
SWATProblemMultimodelmodule
Version 0.2.12 (March 15, 2025)
- Added new sections
README
Version 0.2.11 (March 10, 2025)
- Updated
publish.ymlworkflow to grantcontents: writepermission (enables pushing to the repository).
Version 0.2.9 (March 9, 2025)
- Updated MkDocs installation in workflow with additional plugins/extensions.
Version 0.2.8 (March 9, 2025)
- Updated workflow to install documentation dependencies (
mkdocstrings,mkdocs-jupyter).
Version 0.2.7 (March 9, 2025)
- Removed automatic GitHub Release creation from
publish.yml.
Version 0.2.6 (March 9, 2025)
- Enabled dynamic versioning in
pyproject.toml(dynamic = ["version"]).
Version 0.2.5 (March 9, 2025)
- Fixed bug in
setuptools_scmconfiguration
Version 0.2.4 (March 9, 2025)
-
Configured versioning with setuptools_scm (post-release, no local version).
-
Updated publish workflow to trigger only on version tags (v*).
Version 0.2.0 (March 9, 2025)
-
Added Zenodo badges to the
READMEfor improved code visibility. -
Completed migration from the TestPyPI repository to the main PyPI repository.
-
Implemented GitHub Actions workflow for automated releases to PyPI and GitHub repositories.
Version 0.1.36 (March 15, 2024)
-
Migrated project to this repository.
-
Initial release under the new repository structure.