------------------
* Wheels for python 3.12 are now built during our github actions runs.
https://github.com/natcap/pygeoprocessing/issues/381
* ``get_gis_type`` can accept a path to a remote file, allowing the GDAL driver
to open it if the driver supports the protocol.
https://github.com/natcap/pygeoprocessing/issues/375
* If running on a SLURM system (identified by the presence of ``SLURM*``
environment variables), the GDAL cache max is checked against the amount of
memory available on the compute node. If GDAL may exceed the available slurm
memory, a warning is issued or logged.
https://github.com/natcap/pygeoprocessing/issues/361
* Fixed an issue in ``extract_strahler_streams_d8`` where a nodata pixel
could be mistakenly treated as a stream seed point, ultimately creating
a stream feature with no geometry.
https://github.com/natcap/pygeoprocessing/issues/361
* Improved ``align_and_resize_raster_stack`` so that rasterization of a vector
mask only happens once, regardless of the number of rasters in the stack.
In addition, the created mask raster's path may be defined by the caller so
that it persists across calls to ``align_and_resize_raster_stack``.
https://github.com/natcap/pygeoprocessing/issues/366
* Improved ``warp_raster`` to allow for a pre-defined mask raster to be
provided instead of a vector. If both are provided, the mask raster alone is
used. The new mask raster must have the same dimensions and geotransform as
the output warped raster. https://github.com/natcap/pygeoprocessing/issues/366
* Fixed a bug in ``zonal_statistics`` where the wrong number of disjoint
polygon sets were being reported in the logs.
https://github.com/natcap/pygeoprocessing/issues/368
* Pygeoprocessing is now tested against python 3.12.
https://github.com/natcap/pygeoprocessing/issues/355