Releases: roocs/clisops
Releases · roocs/clisops
v0.16.2
v0.16.1
This is a patch fix release to explicitly drop Python 3.9 support in the metadata due to incompatibility with xarray
. For release notes on this minor version, see https://github.com/roocs/clisops/releases/tag/v0.16.0.
Bug Fixes
- Dropped Python3.9 support in metadata due to incompatibility with
xarray
(#408).
Internal Changes
- Fixed an issue with the
tox
configuration that was causing thepy3.10
environment to use the wrong Python version (#408).
v0.16.0
New Features
clisops
now officially supports Python 3.13 (#398).- Version limitations have been lifted on
xarray
andnumpy
to support newer versions (#398).- Mark regrid tests as
xfail
which do not pass due to latest xarray version (#397).
- Mark regrid tests as
Bug Fixes
clisops.utils.dataset_utils
- Fixed
is_time
to avoid memory overload (#397).
- Fixed
Internal Changes
- Pinned a few docs-related dependencies to compatible versions. Added
sphinx-autodoc-typehints
,sphinx-codeautolink
, andsphinx-copybutton
to the docs dependencies (#396). - The
LICENSE
file has been adjusted to ensure it is more machine-parsable (#398). - Licensing information has been added to the top-level
__init__.py
file of the package (#398). - The
README.rst
file has been updated to include a table of relevant badges (#398). - All calls using
use_cftime=True
have been updated todecode_times=xr.coders.CFDatetimeCoder(use_cftime=True)
as suggested byxarray
(#398).
CI Changes
- Added a workflow for uploading preview releases to TestPyPI (#374).
- GitHub Workflows now make more use of
step-security/harden-runner
Action for security hardening (#398). - Python libraries used for CI are now listed in
CI/requirements_ci.in
and pinned by their hashes inCI/requirements_ci.txt
(#398). - Coverage reporting now uses the
coverallsapp/github-action
Action. Conda builds now also report coverage to Coveralls (#398).
v0.15.0
New Features
- The functionality of the
roocs-utils
library has been folded intoclisops
.roocs-utils
is no longer a dependency ofclisops
(#368, #370). - The
CONFIG
settings have been updated to reflect the changes inroocs-utils
and those required inclisops
(#370). - Several development tooling libraries have been updated to their latest versions (#368).
Other Changes
- The
pytest
testing suite has been updated to reflect the changes in theroocs-utils
library and the newclisops
configuration settings (#368, #370):- Tests previously found in
roocs-utils
have migrated toclisops
. xclim.testing.utils.open_dataset()
has been deprecated in favour ofxclim.testing.utils.nimbus().fetch()
.
- Tests previously found in
v0.14.1
New Features
- Added new methods to
clisops.core.regrid.Grid
- Added possibility to apply land or ocean mask if present in the file
- Adapted method from
ESMF
to detect smashed cells - Masking degenerate (i.e. collapsed and smashed) cells
- Dropping lat/lon bounds if an integrity check fails
- Added a few attributes to the
Grid
object
clisops.ops.regrid
: added option to request a land/sea mask for the output gridclisops.utils.dataset_utils
- Added function
determine_lon_lat_range
to determine the min. and max. lat and lon values - Added function
fix_unmasked_missing_values_lon_lat
to identify and mask yet unmasked missing values in lat and lon arrays - Added
force
parameter tocf_convert_between_lon_frames
- Added function
Bug Fixes
clisops.utils.dataset_utils
- Fixed issue in
cf_convert_between_lon_frames
causing the longitude frame to not be adjusted in case of NaNs in the longitude array - Addressed issues in
generate_bounds_curvilinear
- latitudes are now clipped above 90 or below -90 degrees north
- longitudes are converted to longitude frame -180, 180
- longitude bounds are adjusted at the Greenwich meridian or anti meridian to avoid grid cells wrapping once or more times around the globe
- Bounds are generated significantly faster due to making use of index slicing and
numpy.vectorize
- Fixed issue in
Breaking Changes
- Adapted functions from
roocs_utils.xarray_utils.xarray_utils
intoclisops.utils.dataset_utils
get_coord_by_type
now returns the name of the coordinate variable and not the coordinate variableget_coord_by_type
optionally returns a list with further matches for the coordinate variableget_coord_by_type
does no longer raise an exception when more than one coordinate variable matches the requested typeget_coord_by_type
raisesValueError
instead ofException
when the coordinate type is unknowndetect_coordinate
raisesKeyError
instead ofAttributeError
if no coordinate could be detecteddetect_gridtype
raisesValueError
for unsupported grid types rather thanInvalidParameterValue
andException
clisops.core.regrid
Grid.detect_coordinate
: raisesKeyError
instead ofAttributeError
if no coordinate could be detected
clisops.ops.regrid
Regrid._calculate
: issuesUserWarning
instead of lettingclisops.core.Weights.__init__
raise anException
when input and output grid are alike
Other Changes
- The testing suite has been refactored to make better use of context handlers when opening files with
xarray
, preventing synonymous read errors and improving the overall performance of the tests. - Several tests that were failing due to significantly long runtimes have been marked as
slow
and are now skipped by default. - GitHub Workflows now use a timeout of 20 minutes for the build suite to prevent hanging builds.
v0.14.0
New Features
clisops
now makes use ofpytest-xdist
for parallel testing. This can be enabled using--numprocesses={int}
. See thepytest-xdist documentation <https://pytest-xdist.readthedocs.io/en/latest/>
_ for more information (#345).- Testing data caching is now handled by
pooch
and testing data registries ('stratus' forroocs/mini-esgf-data
and 'nimbus' forOuranosinc/xclim-testdata
) (#345). clisops
coding conventions now use Python 3.9+ conventions (#345).
Breaking Changes
clisops
has dropped support for Python 3.8 (#345).- Several dependencies have been updated to include lower bounds for clearer compatibility and easier maintenance (#345, #XYZ).
- The affected core dependencies are:
dask >=2023.6.0
,filelock >=3.15.4
,geopandas >=0.14.0
,jinja2 >=2.11
,numpy >=1.23.0
,packaging >=23.2
,pandas >=1.5.0
,pooch >=1.8.0
,scipy >=1.9.0
, andxarray >=2022.6.0
. - Extra dependencies are
ipython >=8.5.0
,matplotlib >=3.6.0
,nbconvert >=7.14.0
,nbsphinx >=0.9.5
,pre-commit >=3.5.0
, andsphinx >=7.0.0
.
- The affected core dependencies are:
clisops
no longer requiresgitpython >=3.1.30
andrequests >=2.0
(#345).- The development dependencies have been updated to include
deptry >=0.20.0
andpytest-xdist[psutil] >=3.2
(#345). netCDF4
has been moved from core dependency to development dependency (#345).
Other Changes
clisops.utils.testing
has replacedclisops.utils.tutorial
. This submodule contains several functions and variables for allowing user control over testing data fetching (#345).- The
_common
testing tools have been migrated toclisops.utils.testing
or rewritten aspytest
fixtures (#345). - Testing data fetching now uses worker threads to copy cached data to threadsafe data caches that are separated by worker (#345).
v0.13.1
Bug Fixes
- Changed the order of operations in
clisops.core.subset.subset_shape
to ensure that the CRS of the shapefile is compatible with the dataset CRS before attempting to subset (#340).
Breaking Changes
- Anaconda builds now require
cartopy >=0.23
and only support Python 3.9 and above (#340). - Many dependency version pins now include lower bounds for clearer compatibility and easier maintenance (#343).
Other Changes
v0.13.0
New Features
clisops
now officially supports Python 3.12 (#330).
Bug Fixes
- Fixed standard file-namer fallback method (#318).
- Fixed
KeyError
for temporal subsetting by components if not all components can be found in the dataset (#316). - Raising
KeyError
for temporal subsetting by components when no time steps match the selection criteria (#316). - Coordinate detection for remapping operator via standard_name if detection via
cf-xarray
fails / is ambiguous (#316). - Remove encoding settings with regards to compression for string variables to avoid netCDF write errors with newer
netcdf-c
library versions (>4.9.0) (#319). - Fixed a few docstrings, specifies some class methods as static methods (#321).
- Renamed a few internal variables for clarity, rephrased a few sentences for grammar/spelling (#321).
- Fixed a bug related to the creation of the
weights_dir
for regridding that was causing issues for Windows platforms (#313).
Other Changes
- The compression level is capped at 1 to reduce write times (#319).
- Updated
pre-commit
hooks, pinned linting tools to their pre-commit equivalents (#321). - Added a pre-commit hook as well as a configuration for
codespell
(#321). - Added
dependabot
to maintain package and GitHub Action versions (#322). - The
require_module
decorator can now accept supported version information (#321). - Testing data caching now uses platformdirs to determine the OS-appropriate caching location (#321).
- Updated
black
in linting tools to v24.2.0 (#330). - Changes some print calls into logging calls in the tests (#330).
- A warning is now emitted on
clisops
import if the installedxesmf
is too old (#330). - Replaced
styfle/cancel-workflow-action
with GitHub Workflow concurrency settings (#330).
v0.12.2
What's Changed
- Regridding: handling of zonal mean datasets and datasets with shifted longitude frame by @sol1105 in #313
- Add core/average.py/average_shape to ops/average.py by @charlesgauthier-udm in #312
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #315
- Prepare v0.12.2 by @Zeitsperre in #314
New Contributors
- @charlesgauthier-udm made their first contribution in #312
Full Changelog: v0.12.1...v0.12.2
v0.12.1
What's Changed
- Pin xarray for xesmf-based regridding by @Zeitsperre in #310
- Fix issue 308 fillvalue by @cehbrecht in #309
- prepare patch release 0.12.1 by @cehbrecht in #311
Full Changelog: v0.12.0...v0.12.1