Changelog#

v0.4.0 (2026-05-14)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

New features#

  • SuitabilityCriteria now supports “inplace” computation, meaning that the suitability values are stored in the indicator attribute of the criteria (issue #118, PR #123).

  • LSAPy is now supports Python 3.14 (issue #127, PR #128).

Bug fixes#

  • Fix lsapy.core.formatting.sc_repr function to handle SuitabilityCriteria with non-empty xr.DataArray indicators and undefined func (issue #115, PR #116).

  • Fix lsapy.aggregate.aggregate function for mean and gmean aggregation when weights are provided (issue #121, PR #122).

  • Fix LandSuitabilityAnalysis.run to reassign attrs to each criteria in the return xr.Dataset (issue #119, PR #124).

  • Fix issue with open_data due to the release of the v2.0 of NZGLID (issue #145, PR #146).

  • Fix open_data list of supported variables printing and update docstring (issue #143, PR #144).

  • Update sample data hash in the registry file after NZGLID v2.0 modifications (PR #149).

Breaking changes#

  • The lsapy.functions module has been removed (PR #104).
    • The SuitabilityFunction class has been removed.

    • All the standardization functions contained in this module have been removed and are now only available in the lsapy.standardize module.

    • The fit_membership function has been removed and lsapy.standardize.fit should be used instead.

  • The example data provided for the land realm with the package has been updated reflecting the changes in the v2.0 of NZGLID dataset (issue #145, PR #146):
    • Minor changes in the data values have been introduced.

    • The variable rock has been renamed to rock_outcrops_surface_boulders.

    • The variable carbon_content has been removed.

Internal changes#

  • h5py has been added to the project dev dependencies (PR #112).

  • lsapy.aggregate._agg_weights has been modified to return a xr.DataArray where weights are distributed only along the variable dimension (issue #117, PR #122).

  • Dependabot has been configured to check version updates (issue #129, PR #130).

  • The registry file for example data has been updated and the DOIs have been set to the v2.0 of NZGLID (issue #145, PR #146).

  • _check_realm_vars test has been updated to unsure supported variables are correctly printed (issue #143, PR #144).

  • Update LSAPy description in the README file and documentation home page (PR #151).

  • The links to the development installation instructions have been added to the README and documentation (issue #142, PR #151).

  • Update the README file:
    • A new section Citation has been added with the citation information of LSAPy (issue #142, PR #151).

    • The Quick Start section has been split into two sections: Quick install and Land Suitability Analysis (LSA) (PR #151).

v0.3.1 (2025-11-14)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

Bug fixes#

  • The np.vectorize decorator has been removed of standardization functions to fix fitting functions issues (issue #101, PR #102).

v0.3.0 (2025-11-10)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

Announcements#

New features#

  • A new boolean suitability function has been added (issue #85, PR #86).

  • The name and indicator arguments of SuitabilityCriteria can now be optional (issue #84, PR #87).

  • A setter has been added to SuitabilityCriteria attributes (issue #84, PR #87).

  • The lsapy.standardize module has been added with categorical and membership standardization functions (issue #89, PR #91).

  • The SuitabilityFunction is not longer required to define the standardization function in SuitabilityCriteria (issue #89, PR #91).

  • SuitabilityCriteria.name is now a property of the class (PR #97).

  • The LandSuitabilityAnalysis properties have been properly defined (PR #98).

  • The API Reference documentation has been updated and improved (issue #96, PR #99).

Breaking changes#

  • The lsapy.statistics module has been renamed to lsapy.stats (PR #71).

  • The lsapy.core.aggregation has been moved and renamed to lsapy.aggregate (PR #71).

  • The statistical_summary function has been renamed to stats_summary (PR #82).

  • The spatial_statistical_summary function has been renamed to spatial_stats_summary (PR #82).

  • The lsapy.functions module as well as SuitabilityFunction have been marked as deprecated and will be removed in a future release (issue #89, PR #91).

Internal changes#

  • The name and year in the license file have been updated (PR #76).

  • The logo has been updated (PR #80).

  • Tests have been added for the lsapy.stats module functions (PR #82).

  • The README file has been updated integrating new standardization function workflow (issue #92, PR #93).

Bug fixes#

  • Fix small issue of SuitabilityCriteria string representation (PR #73).

v0.2.0 (2025-08-20)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

New features#

  • Functions’ alternative names can now be used in SuitabilityFunction (PR #43).

  • The documentation of membership functions has been improved (PR #43).

  • LSAPy officially supports Python>=3.10 and is OS independent (PR #46).

  • repr methods of SuitabilityFunction, SuitabilityCriteria and LandSuitabilityAnalysis have been modified to provide more user-friendly information (issue #55, PR #59).

  • A setter has been added to the attrs method of SuitabilityCriteria and LandSuitabilityAnalysis (issue #55, PR #59).

  • The open_data function has been added to the lsapy.utils module to load data from the LSAPy data repository (issue #60, PR #62).

  • A median aggregation method has been added (PR #63).

Breaking changes#

  • The deprecated SuitabilityFunction.map method has been removed (PR #44).

  • short_name, long_name, description and comment attributes of SuitabilityCriteria and LandSuitabilityAnalysis have been removed and are now stored in the attrs attribute (issue #55, PR #59).

  • load_climate_data and load_soil_data functions have been removed (issue #60, PR #62).

  • Some names of aggregation methods have been changed (PR #63):
    • weighted_mean is now wmean

    • geomean is now gmean

    • weighted_geomean is now wgmean

    • limiting_factor is now limfactor

  • The vars_weighted_mean, vars_mean, vars_geomean, vars_weighted_geomean and limiting_factor aggregation methods have been removed (PR #63).

Internal changes#

  • Tests have been added for currently implemented LSAPy functionalities (issue #7, PR #46).
    • pytest is used as the testing framework to run all unit tests, doctests and test notebooks.

    • nox has been set up and is used to run tests in CI workflows.

  • A CI GitHub Actions workflow has been added (issue #8, PR #46)
    • The CI runs tests on Python 3.10 to 3.13, on Ubuntu, macOS and Windows.

    • The coverage, doctests and notebook tests are run on Ubuntu under Python 3.12.

  • New pre-commit hooks have been added and the package pyproject has been updated (PR #58)
    • New hooks: yamllint, vulture, nbstripout, pygrep-hooks, mdformat, blackdoc, formatbibtex, gitleaks and meta.

    • Update dependencies: remove unused Shapely and add dependencies for new hooks.

    • Add deptry config to track dependencies.

    • Update package metadata: keywords, classifiers (python versions) and project URLs.

    • Update package sdist files.

  • The lsapy.core.formatting module has been added and contains repr formatting functions (issue #55, PR #59).

  • LSAPy sample data management has been improved (issue #60, PR #62):
    • LSAPy now uses pooch to fetch sample data.

    • Old data files have been removed from the data folder, and the new climate data file has been added.

    • A registry file has been added to store sample data file names, hashes and URLs.

  • Aggregation functions have been moved to the lsapy.core.aggregation module (PR #63).

  • A relaxed configuration of mypy has been added to the project (PR #66).

Bug fixes#

  • Fix issues with representations of SuitabilityFunction when no parameters are provided (issue #61, PR #65).

  • Add **kwargs to SuitabilityCriteria.compute and LandSuitabilityAnalysis.run to allow handling Dask arrays (issue #64, PR #65).

  • The codebase has been modified to improve typing and fix mypy errors (issue #35, PR #66).

v0.1.1 (2025-07-26)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

Internal changes#

  • The documentation has been updated to reflect the changes in LandSuitabilityAnalysis workflow (issue #41, PR #42).

v0.1.0 (2025-07-25)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

New features#

  • New function membership.fit_membership implemented as replacement of the deprecated MembershipSuitFunction.fit method (issue #29, PR #30).

Breaking changes#

  • MembershipSuitFunction and DiscreteSuitFunction have been removed (issue #29, PR #30).

  • Changes in SuitabilityFunction (issue #15, PR #23 & PR #30):
    • func_method and func_params have been renamed to name and params respectively.

    • map has been deprecated because of its redundancy with the __call__ method. Changes will be permanent in LSAPy v0.1.0. Call the function directly instead.

  • LandSuitability has been renamed to LandSuitabilityAnalysis. (issue #15, PR #26)
    • name has been renamed to land_use.

    • compute_criteria_suitability, compute_category_suitability, and compute_suitability methods have been removed and the method run has been implemented as replacement (issue #15, PR #38)

    • mask, statistics and spatial_statistics methods have been removed.

Internal changes#

  • Templates for requesting new features, asking question and submitting PR have been added (issue #11, PR #12).

  • The README has been updated to make links permanent and to add a docs badge (PR #13).

  • A configuration file for Zenodo integration has been added to the repository (PR #14).

  • Pre-commit has been setup and ruff, codespell and numpydoc hooks have been added (issue #8, PR #18/PR #19).

  • The autoupdate schedule of pre-commit has been set to weekly (PR #21)

  • The unused introduction.ipynb notebook has been removed (issue #15, PR #20).

  • The structure around SuitabilityFunction (PR #30):
    • The SuitabilityFunction has been moved to LSAPy function._suitability module.

    • The membership functions have been moved to the function.membership module.

    • The discrete function has been moved to the function._discrete module.

    • The equation decorator has been rename to declare_equation and moved to the core.function module.

    • The get_function_from_name function has been moved to the core.function module.

  • Changes on SuitabilityCriteria (issue #15, PR #31):
    • It now has a comment and is_computed attributes.

    • func parameter is now optional, useful when the criteria is already computed.

  • LSAPy logo has been added: README and documentation have been updated to use it (PR #27)

v0.1.0-dev2 (2025-05-25)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

Internal changes#

  • Major changes for documentation (issue #2, PR #9):
    • All public objects are now documented using the NumPy-style.

    • introduction.ipynb has been slip into three different ones: criteria.ipynb, function.ipynb, and lsa.ipynb.

    • The top-level documentation has been updated/created:
      • The format of README and CHANGELOG files is now reStructuredText (RST).

      • A proper README has been created.

      • A CODE_OF_CONDUCT file adopting the Contributor Covenant code of conduct has been added.

      • A CONTRIBUTING.md providing guidelines on how to contribute to the project has been added.

    • FT20250 and UC logos used in the documentation have been added to the repository.

    • The documentation building using Sphinx has been setup:
      • The documentation uses the PyData theme.

      • A User-facing documentation is now available and has been published on Read the Docs.

    • The project dependencies have been updated and made consistent across pyproject.toml and environments.yml files.

v0.1.0-dev1 (2025-05-16)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

New features#

  • Add ruff configuration to the project.

Bug fixes#

  • Fix the fit of MembershipSuitFunction returning the wrong best fit (issue #1, PR #5)

v0.1.0-dev0 (2025-03-12)#

Contributor to this version: Baptiste Hamon (@baptistehamon).

  • First release on PyPI.

New features#

  • SuitabilityFunction to define the function used for suitability computation.

  • SuitabilityCriteria to define criteria to consider in the LSA

  • LandSuitability to conduct LSA.