- (**code-breaking**) Simplified `RasterizePipeline` and improve rasterization of temporal vectors.
- (**code-breaking**) Area managers no longer offer AOI modification in the `area` parameter. It has been replaced with a simpler `filename` field. We added a rerouting parser, so old configs should work for a while longer.
- (**code-breaking**) Separated machine learning requirements to `ML` extra that you can install via `pip install eogrow[ML]`. These packages are only necessary for sampling, training, and prediction pipelines.
- Added `VectorImportPipeline` for adding vector features to EOPatches.
- Improved `ExportMapsPipeline` when working with large amounts of files, contributed by aashishd.
- Config files are now uploaded to the cluster before being executed. This prevents issues with commands failing on very large configs.
- Added `restrict_types` validator that detects incompatible `FeatureType` inputs for fields of type `Feature`.
- Added `ensure_storage_key_presence` validator, which checks that the specified storage key is defined in the storage manager. Typos in storage keys will now be detected at validation.
- Storage managers now support a `filesystem_kwargs` parameter.
- Fixed bug where area managers would not filter the grid correctly if the grid was read from the cache.
- Logs to stdout are now colored and contain timestamps.
- Logging configs can now use `"..."` value to reference default packages for fields such as `pipeline_ignore_packages`.
- Pipelines can now be given custom names, which makes it easier to identify certain pipelines when searching for logs or when running them in config chains.
- Switched to a `pyproject.toml` based installation.
- Added new sections to documentation of the high level overview and a collection of commonly used patterns.
- Improved testing tools.
- Various minor improvements.