Skip to content

Changelog

v1.9.3 (10/10/2025)

Changed

  • Unit tests now covered by mypy checks
  • Exposed operator functions on top level, so you can do yg.where rather than yg.operators.where, ready for 2.0.

Fixed

  • Calling show with too little data gave a downsample skip of zero. Now don't downsample if data is too few.

v1.9.2 (9/10/2025)

Added

  • Added a show method to layers/expressions to render them using matplotlib.

v1.9.1 (1/10/2025)

Changed

  • Moved latlng_for_pixel and pixel_for_latlng to LayerMathMixin so they can be called on expressions as well as concrete layers.

v1.9.0 (26/9/2025)

Added

  • Added code of conduct to project.
  • Added the ability to call read_array on expressions (before you could only call it on layers).

Changed

  • The first argument of MapProjection, the string defining the projection used is now validated with the pyproj library, and can be in any from the pyproj from_string takes: Well Known Text (WKT) or "epsg:4326" or "esri:54009" etc. The name function still returns the WKT representation for backwards compatibility.
  • The functions pixel_from_latlng and latlng_from_pixel will work regardless of the underlying map projection.

v1.8.1 (25/9/2025)

Fixed

  • Fixed issue whereby calling set_window_for_intersection would fail if the pixel alignment on a vector layer was rounded unfortunately.

Changed

  • More documentation updates.

v1.8.0 (24/9/2025)

Added

  • Mkdocs based documentation.

Changed

  • Modernised type hints to use latest Python standards.

v1.7.9 (23/9/2025)

Fixed

  • Fix type inference for expressions so that to_geotiff selects correct GeoTIFF file type to store results as.

Changed

  • Improved typing of methods that take a filename to use both Path and str.

v1.7.8 (17/9/2025)

Added

  • Added marker for mypy that Yirgacheffe has type annotations

v1.7.7 (8/9/2025)

Added

  • Automatically set rlimit for NOFILES so that parallel operations of machines with many cores don't run out of file descriptors.

Removed

  • Removed internal classes LayerOperation, LayerMathMixin, and LayerConstant from public interface.

v1.7.6 (20/8/2025)

Fixed

  • Fixed issue whereby vector layers without explicit projection would use the abstract rather than concrete area value when generating a target raster.

Added

  • Added a core wrapper constant to save people using ConstantLayer explicitly
  • Added a core wrapper read_narrow_raster to save people using UniformAreaLayer explicitly

v1.7.5 (19/8/2025)

Changed

  • Minor improvements to GitHub Actions workflows

v1.7.4 (19/8/2025)

Fixed

  • Fixed bug whereby reads from within a single tile that has nodata values in a group layer used the wrong numpy call to check for nan.

Added

  • Added isnan operator.

v1.7.3 (18/8/2025)

Fixed

  • Fixed an issue introduced in 1.7.0 where find_intersection and find_union used the raw, non-pixel aligned area envelope.

v1.7.2 (14/8/2025)

Changed

  • Added the option to set parallelism=True rather than just a number when calling to_geotiff, allowing Yirgacheffe to select the number of CPU cores to use for parallel operations.

v1.7.1 (14/8/2025)

Fixed

  • Fixed an issue whereby if you used the MLX backend and called read_array the return value was sometimes an mlx array rather than a numpy array.

v1.7 (14/8/2025)

Added

  • Support the ability to create VectorLayers that don't have a pixel scale or projection added. These layers will have the correct pixel scale and projection calculated when calculations on layers are saved or aggregated based on the other raster layers used in the calculation.
  • Added MapProjection object to replace PixelScale objects and projection strings being separate parameters.