Releases: roocs/clisops
Releases · roocs/clisops
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
Release v0.12.0
New Features
clisops.ops.regrid
,clisops.core.regrid
,clisops.core.Weights
andclisops.core.Grid
added (#243). Allowing the remapping of geospatial data on various grids by applying thexESMF <https://pangeo-xesmf.readthedocs.io/en/latest/>
_ regridder.
Bug Fixes
- Calling
subset_shape()
with alocstream case
(#288) returned all coordinates insideinner_mask
which is equivalent to the bounding box of the polygon, not the area inside the polygon. Fixed by defining theinner_mask
insubset_shape()
for the locstream case. (#292).
Other Changes
- Extending the removal of redundant _FillValue attributes to all data variables and coordinates (#243).
- Extending the removal of redundant coordinates in the coordinates variable attribute from bounds to all data variables (#243).
- GitHub Workflows for upstream dependencies are now examined a schedule or via
workflow_dispatch
(#243). black
steps are now calledlint
for clarity/inclusiveness of other linting hooks. (#243).- pre-commit hooks now include checks for TOML files, and for ReadTheDocs and GitHub Actions configuration files. (#243).
- pre-commit hooks now include sorting of TOML file sections and running
black
on docstring Python examples. (#306). clisops
now uses GitHub Actions with environments for handling deployment via Trusted Publishing. (#306).- Documentation has been updated to reflect the new GitHub Actions CI/CD workflow. (#306).
bump2version
has been replaced withbump-my-version
for handling versioning. (#306).
v0.11.0
New Features
clisops
has adoptedPEP 517 <https://peps.python.org/pep-0517/>
_ andPEP 621 <https://peps.python.org/pep-0621/>
_ and now usespyproject.toml
files (using theflit
backend) for package configuration. (#296).- Metadata has been modified to reflect current development status and scope of CLISOPS. (#296).
- New file (
requirements_upstream.txt
) and Makefile recipe ("$ make upstream"
) for tracking and easily installing upstream dependencies. (#296).
Bug Fixes
- The
tests
folder has been flattened and namespace files haves been removed in order to preventpip
from recognizing the folder as its own package. (#296). - The contribution guidelines were duplicated in two locations and contained conflicting information. The guidelines have now been consolidated into a single location and updated to reflect package changes. (#296).
Other Changes
v0.10.1
v0.10.0
New Features
- Added support for Python 3.11 (#287).
Bug Fixes
- Fixed bug in
core.subset.shape_bbox_indexer
with the union of invalid geometries. Added regression test. (#280) - Added support in
core.subset.shape_bbox_indexer
for Point and MultiPoint geometries. (#283) - Fixed
core.subset.subset_bbox
andcore.subset.subset_shape
for datasets with 1D longitude and latitude (ex: Station data). (#288)
Other Changes
- Shapely 2.0 is now faster than pygeos for
create_mask
. Removed pygeos from extra dependencies and pinned shapely above 2.0. (#289)