Skip to content

v0.8.0

Compare
Choose a tag to compare
@github-actions github-actions released this 16 Jan 19:12
· 867 commits to main since this release
2e4752f

Changelog

v0.8.0 (2024-01-16)

Contributors to this version: Gabriel Rondeau-Genesse (@RondeauG), Pascal Bourgault (@aulemahal), Juliette Lavoie (@juliettelavoie), Sarah-Claude Bourdeau-Goulet (@sarahclaude), Trevor James Smith (@Zeitsperre), Marco Braun (@vindelico).

Announcements

  • xscen now adheres to PEPs 517/518/621 using the setuptools and setuptools-scm backend for building and packaging. (PR/292).

New features and enhancements

  • New function xscen.indicators.select_inds_for_avail_vars to filter the indicators that can be calculated with the variables available in a xarray.Dataset. (PR/291).
  • Replaced aggregation function climatological_mean() with climatological_op() offering more types of operations to aggregate over climatological periods. (PR/290)
  • Added the ability to search for simulations that reach a given warming level. (PR/251).
  • xs.spatial_mean now accepts the region="global" keyword to perform a global average (GH/94, PR/260).
  • xs.spatial_mean with method='xESMF' will also automatically segmentize polygons (down to a 1° resolution) to ensure a correct average (PR/260).
  • Added documentation for require_all_on in search_data_catalogs. (PR/263).
  • xs.save_to_table and xs.io.to_table to transform datasets and arrays to DataFrames, but with support for multi-columns, multi-sheets and localized table of content generation.
  • Better xs.extract.resample : support for weighted resampling operations when starting with frequencies coarser than daily and missing timesteps/values handling. (GH/80, GH/93, PR/265).
  • New argument attribute_weights to generate_weights to allow for custom weights. (PR/252).
  • xs.io.round_bits to round floating point variable up to a number of bits, allowing for a better compression. This can be combined with the saving step through argument "bitround" of save_to_netcdf and save_to_zarr. (PR/266).
  • Added annual global tas timeseries for CMIP6's models CMCC-ESM2 (ssp245, ssp370, ssp585), EC-Earth3-CC (ssp245, ssp585), KACE-1-0-G (ssp245, ssp370, ssp585) and TaiESM1 (ssp245, ssp370). Moved global tas database to a netCDF file. (GH/268, PR/270).
  • Implemented support for multiple levels and models in xs.subset_warming_level. Better support for DataArray and DataFrame in xs.get_warming_level. (PR/270).
  • Added the ability to directly provide an ensemble dataset to xs.ensemble_stats. (PR/299).
  • Added support in xs.ensemble_stats for the new robustness-related functions available in xclim. (PR/299).
  • New function xs.ensembles.get_partition_input (PR/289).

Breaking changes

  • climatological_mean() has been replaced with climatological_op() and will be abandoned in a future version. (PR/290)
  • experiment_weights argument in generate_weights was renamed to balance_experiments. (PR/252).
  • New argument attribute_weights to generate_weights to allow for custom weights. (PR/252).
  • For a sequence of models, the output of xs.get_warming_level is now a list. Revert to a dictionary with output='selected' (PR/270).
  • The global average temperature database is now a netCDF, custom databases must follow the same format (PR/270).

Bug fixes

  • Fixed a bug in xs.search_data_catalogs when searching for fixed fields and specific experiments/members. (PR/251).
  • Fixed a bug in the documentation build configuration that prevented stable/latest and tagged documentation builds from resolving on ReadTheDocs. (PR/256).
  • Fixed get_warming_level to avoid incomplete matches. (PR/269).
  • search_data_catalogs now eliminates anything that matches any entry in exclusions. (GH/275, PR/280).
  • Fixed a bug in xs.scripting.save_and_update where build_path_kwargs was ignored when trying to guess the file format. (PR/282).
  • Add a warning to xs.extract._dispatch_historical_to_future. (GH/286, PR/287).
  • Modify use_cftime for the calendar conversion in to_dataset. (GH/303, PR/289).

Internal changes

  • Continued work on adding tests. (PR/251).
  • Fixed pre-commit's pretty-format-json hook so that it ignores notebooks. (PR/254).
  • Fixed the labeler so docs/CI isn't automatically added for contributions by new collaborators. (PR/254).
  • Made it so that tests are no longer treated as an installable package. (PR/248).
  • Renamed the pytest marker from requires_docs to requires_netcdf. (PR/248).
  • Included the documentation in the source distribution, while excluding the NetCDF files. (PR/248).
  • Reduced the size of the files in /docs/notebooks/samples and changed the notebooks and tests accordingly. (GH/247, PR/248).
  • Added a new xscen.testing module with the datablock_3d function previously located in /tests/conftest.py. (PR/248).
  • New function xscen.testing.fake_data to generate fake data for testing. (PR/248).
  • xESMF 0.8 Regridder and SpatialAverager argument out_chunks is now accepted by xs.regrid_dataset and xs.spatial_mean. (PR/260).
  • Testing, Packaging, and CI adjustments. (PR/274):
    • xscen builds now install in a tox environment with conda-provided ESMF in GitHub Workflows.
    • tox now offers a method for installing esmpy from a tag/branch (via ESMF_VERSION environment variable).
    • $ make translate is now called on ReadTheDocs and within tox.
    • Linters are now called by order of most common failures first, to speed up the CI.
    • Manifest.in is much more specific about what is installed.
    • Re-adds a dev recipe to the setup.py.
  • Multiple improvements to the docstrings and type annotations. (PR/282).
  • pip check in conda builds in GitHub workflows have been temporarily set to always pass. (PR/288).
  • The cookiecutter template has been updated to the latest commit via cruft. (PR/292):
    • setup.py has been mostly hollowed-out, save for the babel-related translation function.
    • pyproject.toml has been added, with most package configurations migrated into it.
    • HISTORY.rst has been renamed to CHANGES.rst.
    • actions-version-updater.yml has been added to automate the versioning of the package.
    • pre-commit hooks have been updated to the latest versions; check-toml and toml-sort have been added to cleanup the pyproject.toml file, and check-json-schema has been added to ensure GitHub and ReadTheDocs workflow files are valid.
    • ruff has been added to the linting tools to replace most flake8 and pydocstyle verifications.
    • tox builds are more pure Python environment/PyPI-friendly.
    • xscen now uses Trusted Publishing for TestPyPI and PyPI uploads.
  • Linting checks now examine the testing folder, function complexity, and alphabetical order of __all__ lists. (PR/292).
  • publish_release_notes now uses better logic for finding and reformatting the CHANGES.rst file. (PR/292).
  • bump2version version-bumping utility was replaced by bump-my-version. (PR/292).
  • Documentation build checks no longer fail due to broken external links; Notebooks are now nested and numbered. (PR/304).