All notable changes to this project will be documented in this file.
This project does not have a real release cycle (yet).
Upstream projects usually depend on development snapshots of this project.
Still, to have some kind of indicator of small versus big change,
we try to bump the version number (in openeo_driver/_version.py)
roughly according to Semantic Versioning.
When adding a feature/bugfix without bumping the version number:
just describe it under the "In progress" section.
When bumping the version number in openeo_driver/_version.py
(possibly accompanying a feature/bugfix):
"close" the "In Progress" section by changing its title to the new version number
(and describe accompanying changes, if any, under it too)
and start a new "In Progress" section above it.
- Introduce experimental "post_dry_run" hook (related to #406, Open-EO/openeo-geopyspark-driver#1299)
BoundingBoxutility: added union/intersection/reprojection functionality and other CRS handling related improvements (related to #406, Open-EO/openeo-geopyspark-driver#1299))- Drop (long) deprecated and unused custom
load_disk_dataprocess and replace with more standardload_uploaded_fileswhere applicable (Open-EO/openeo-geopyspark-driver#1457) - Support experimental
corsa_compressandcorsa_decompressprocesses (Open-EO/openeo-geotrellis-extensions#563, Open-EO/openeo-geotrellis-extensions#577) - Relax hard pin on
pystac~=1.8.0topystac>=1.8.0to unlock more modern PySTAC on Python 3.11 environments (#396, Open-EO/openeo-geopyspark-driver#1449) - Add
bandsproperty to assets if and only if STAC 1.1 metadata is requested (#451) StacApiWorkspace: support omitting "export-workspace-enable-merge" flag (Open-EO/openeo-geopyspark-driver#1030)
- Add
ephemeral_flask_servertesting utility (openeo_driver.testing) for request mocking based on a Flask app. Allows to do request/response mocking independently from actual request library (requests,urllib,urllib3, etc.) through a well-documented API (Flask). - Support exposing auxiliary (non-asset) files as links (Open-EO/openeo-geopyspark-driver#1278)
- More user-friendly type descriptions in
ProcessParameterInvaliderrors (#346) collection_exclusion_listconfig: more flexible and exclude collection ids starting with underscore by defaultload_url: specific types of invalid geometries will be automatically fixed rather than raising an error. (#433)
- Start supporting custom
UdfRuntimesimplementation inOpenEoBackendImplementation(#415) - Process graph parsing (dry-run) for very large graphs got faster. (#426)
get_result_metadatacan return items (Open-EO/openeo-geopyspark-driver#1111)
- Have
integrations.s3for interaction with Object Storage that follows the S3 API. ElasticJobRegistry: add support for pre-serialization of process graph (Open-EO/openeo-geopyspark-driver#1232)DiskWorkspace: support unified asset keys (Open-EO/openeo-geopyspark-driver#1111)- Support persisting results metadata URI in job registry (Open-EO/openeo-geopyspark-driver#1255)
- More fine-grained
convert_nodecache control (Open-EO/openeo-geopyspark-driver#1331/#422) DriverVectorCube.write_assets: improve compatibility with recent versions of geopandas (#424)
- Introduce
asset_urloption to allow backend implementations to have custom code for retrieving assets. Default behavior remains unchanged. - Improve data cube dimension detection in
load_stacdry-run (#394) - Download asset: return
NoSuchKeyerror as 404 Not Found response Open-EO/openeo-geopyspark-driver#1149 - Preserve original non-spatial dimensions in
resample_cube_spatialdry run (#397) - Fix compatibility with Shapely2 (#158)
- Allow
overlapinapply_neighborhoodto be not specified (#401) - Start including STAC-1.1.0-style "bands" metadata in assets in batch job results (#298)
- Start including STAC-1.1.0-style "bands" summaries in collection metadata (#298)
- Harden "bands" metadata handling in batch job results listings (Open-EO/openeo-aggregator#183)
- Add
namespaceoption tonon_standard_process - Improve API alignment between
JobRegistryInterface/ElasticJobRegistryandDoubleJobRegistry(Open-EO/openeo-geopyspark-driver#863, Open-EO/openeo-geopyspark-driver#1123) export_workspace: merge"derived_from"links of STAC Collections (Open-EO/openeo-geopyspark-driver#1050)- Eliminate usage of deprecated
datetime.utcnow()(#389) - Add
Content-Rangeheader when streaming job result content from S3 buckets to support byte range downloads
EvalEnv: addopeneo_api_versionfield to replace vagueversion(#382)
custom_process_from_process_graph: add option to hide process from public process listing
ProcessRegistry: addallow_override mode(related to #376)
- Allow customization of
GET /process_graphsresponse. AddedUserDefinedProcesses.list_for_user()to replace now deprecatedUserDefinedProcesses.get_for_user()(for Open-EO/openeo-aggregator#125) - Allow customization of
GET /collectionsresponse. AddedAbstractCollectionCatalog.get_collections_listing()to eventually replaceAbstractCollectionCatalog.get_all_metadata()(for Open-EO/openeo-aggregator#122) - Allow customization of
GET /processesresponse (for Open-EO/openeo-aggregator#123)
- array_apply: sub-process should now work on all supported processes (Open-EO/openeo-geopyspark-driver#1064)
- Prevent access to non-public UDPs through URL guessing.
load_collection/load_stac:spatial_extentrequires (Multi)Polygon geometries (Open-EO/openeo-geopyspark-driver#996)
- Add
simple_job_progress_estimationconfig for simple job progress estimation (Open-EO/openeo-geopyspark-driver#772) OpenEoBackendConfig: be more forgiving about unknown config keys to better support use cases that involve backward/forward incompatible configurations (#322)
- Add STAC collections conformance class (#195)
- update openeo_driver/specs/openeo-api/1.x submodule to tag
1.2.0(#195) - Extract job option defaults from UDPs and remote process descriptions (#366, Process Parameter Extension)
- Add log level to batch job logs response (#195)
- Better argument validation in
resample_spatial/resample_cube_spatial(related to Open-EO/openeo-python-client#690) - Improve
resample_spatial/resample_cube_spatialmetadata tracking in dry-run (#348) load_collection/load_stac: support parameters inproperties(#327)
- Add time resolution to date prefix of
generate_unique_id() - Add target version of openEO processes to
GET /processes(#352, Open-EO/openeo-api#549)
load_collection: more consistent cube extent handling when a buffer is applied. (#334)load_collection: collapse multipleload_collectioncalls into a single one in cases with buffers. (#336)export_workspace: fixKeyError: 'alternate'upon merging into existing STAC collection (Open-EO/openeo-geopyspark-driver#677)- Support custom default in
FlaskRequestCorrelationIdLogging.get_request_id()
export_workspace: experimental support for merging STAC Collections (Open-EO/openeo-geopyspark-driver#677)
- mask: also apply at load time when resample_spatial is used
- NDVI process: correctly handle band dimension as part of dry run
- Introduce support for user job pagination (#332)
load_stac: allow omittingdatetimeparameter from STAC API item search request if notemporal_extentspecified (Open-EO/openeo-geopyspark-driver#950)
- Add
openeo_driver.config.load.exec_py_file(related to Open-EO/openeo-geopyspark-driver#936))
- Propagate alternate
hrefs of job result assets (Open-EO/openeo-geopyspark-driver#883) - Ensure that a top level UDF can return a DriverVectorCube. Previously it only returned a JSONResult (#323)
- Support pointing
hrefof job result asset to workspace URI (Open-EO/openeo-geopyspark-driver#883) - Fix saving DriverVectorCube to GeoParquet (#300)
- Support removing original assets exported to workspace: (Open-EO/openeo-geopyspark-driver#883)
- Add
max_updated_agotoJobRegistryInterface.list_active_jobsAPI (Open-EO/openeo-geopyspark-driver#902)
- Support exporting objects to object storage workspace (eu-cdse/openeo-cdse-infra#278)
- Move ObjectStorageWorkspace implementation to openeo-geopyspark-driver (eu-cdse/openeo-cdse-infra#278)
- Remove
JobRegistryInterface.list_trackable_jobsAPI (Open-EO/openeo-geopyspark-driver#902)
- Add
has_application_idargument toJobRegistryInterface.list_active_jobsin preparation to eliminatelist_trackable_jobs(Open-EO/openeo-geopyspark-driver#902)
- Add
max_agesupport toElasticJobRegistry.list_trackable_jobs(Open-EO/openeo-geopyspark-driver#902)
- Support multiple
export_workspaceprocesses (eu-cdse/openeo-cdse-infra#264) - Fix
export_workspaceprocess not executed in process graph with multiplesave_resultprocesses (eu-cdse/openeo-cdse-infra#264) - Restore deterministic evaluation of process graph with multiple end nodes
- Added support for
apply_vectorcubeUDF signature inrun_udf_code([Open-EO/openeo-geopyspark-driver#881]Open-EO/openeo-geopyspark-driver#881)
- add
check_config_definitionhelper to check definition ofOpenEoBackendConfigbased configs
- return STAC Items with valid date/time for time series job results (Open-EO/openeo-geopyspark-driver#852)
- support passing the output of
raster_to_vectortoaggregate_spatialduring dry run (EU-GRASSLAND-WATCH/EUGW#7) - support
vector_to_rasterof geometries not in EPSG:4326 (EU-GRASSLAND-WATCH/EUGW#7)
- Return compliant GeoJSON from
DriverVectorCube#get_bounding_box_geojson(Open-EO/openeo-geopyspark-driver#854)
- Don't require a
final_resultentry in theEvalEnvinconvert_node(openeo-aggregator#151)
- Support
save_resultprocesses in arbitrary subtrees in the process graph i.e. those not necessarily contributing to the final result (Open-EO/openeo-geopyspark-driver#424)
- Fix default level of
inspectprocess (defaults toinfo) (Open-EO/openeo-geopyspark-driver#424) apply_polygon: add support forgeometriesargument (in addition to legacy, but still supportedpolygons) (Open-EO/openeo-processes#511)
- Update to "remote-process-definition" extension (originally called "remote-udp") (#297, Open-EO/openeo-api#540)
evaluate_process_from_url: drop support for URL guessing from folder-like URL (#297))evaluate_process_from_url: align with new (and experimental) "remote-udp" extension (#297))
- Add API to define conformance classes to
OpenEoBackendImplementation
- Require at least
werkzeug>=3.0.3(#281)
- Expose CSV/GeoParquet output assets as STAC items (Open-EO/openeo-geopyspark-driver#787)
- Start warning about deprecated
evaluate_process_from_urlusage (eu-cdse/openeo-cdse-infra#167)
- Add helper for finding changelog path
- Support
DriverVectorCubeinapply_polygon(#287)
- Emit "in" operator (Open-EO/openeo-opensearch-client#32, Open-EO/openeo-geopyspark-driver/#776)
- Add simple enum
AUTHENTICATION_METHODforUser.internal_auth_data.get("authentication_method")values
- Rename
BatchJobLoggingFilterto more general applicableGlobalExtraLoggingFilter
- Support
job_optionsin synchronous processing (experimental) (related to Open-EO/openeo-geopyspark-driver#531, eu-cdse/openeo-cdse-infra#114)
- Add
job_optionsargument toOpenEoBackendImplementation.request_costs()API. It's optional and unused for now, but allows openeo-geopyspark-driver to adapt already. (related to Open-EO/openeo-geopyspark-driver#531, eu-cdse/openeo-cdse-infra#114)
- Remove deprecated and now unused
user_idargument fromOpenEoBackendImplementation.request_costs()(cleanup related to Open-EO/openeo-geopyspark-driver#531)
- Decreased default ttl in
ClientCredentialsAccessTokenHelperto 5 minutes
- Fix delete in EJR CLI app
- Add rudimentary multi-project changelog support
- Automatically add job_id and user_id to all logs during job start handling (#214, eu-cdse/openeo-cdse-infra#56)
- Enable
ExtraLoggingFilterby default fromget_logging_config(#214)
- Fix dry run flow for aggregate_spatial, run_udf, and vector_to_raster (#276).
- Improve resilience by retrying EJR search requests (Open-EO/openeo-geopyspark-driver#720).
- For client credentials: use OIDC "sub" identifier as user_id instead of config based mapping to be compatible with ETL API reporting requirements (Open-EO/openeo-geopyspark-driver#708)
- Reinstate the
werkzeug<3constraint. Apparently too many deployments are stuck with a very low Flask version, which is not compatible with Werkzeug 3 (#243). Pinning this down in openeo-python-driver is unfortunately the most feasible solution for now.
- Support
export_workspaceprocess andDiskWorkspaceimplementation (Open-EO/openeo-geopyspark-driver#676)
- Fix picking up
flask_settingsfrom OpenEoBackendConfig. This introduces/enables a default maximum request size (MAX_CONTENT_LENGTH) of 2MB (#254)
- Drop werkzeug<3 constraint (#243)
- Bump Werkzeug dependency to at least 2.3.8 (but below 3.0.0) for security issue (#243)
- job metadata: remove un-official "file:nodata" field (Open-EO/openeo-geopyspark-driver#588)
- Eliminate need to subclass
ConfigGetter
- Expose mapping of job status to partial job status (Open-EO/openeo-geopyspark-driver#644)
- Support GeoParquet output format for
aggregate_spatial(Open-EO/openeo-geopyspark-driver#623)
- Add
Processing.verify_for_synchronous_processingAPI (#248)
- Support EJR replacing ZkJobRegistry
Block sync request with too large extent. Use batch-job instead for those. (Open-EO/openeo-geopyspark-driver#616)
- Add
Userargument toGpsBatchJobs.create_job()
- Disable basic auth support by default (#90)
OpenEoBackendConfig: make showing stack trace on_loadconfigurable
- Flag
/openeo/1.2API version as production ready (#195)
- fixup "polygons" argument of "apply_polygon" (#229)
- Attempt to workaround issue with in-place process graph modification and process registry process spec JSON (re)encoding (Open-EO/openeo-geopyspark-driver#567)
- Add
OpenEoBackendConfig.deploy_env
- Move
enable_basic_auth/enable_oidc_authtoOpenEoBackendConfig
- add
ClientCredentials.from_credentials_string()
- Improve request id logging when log collection failed (Open-EO/openeo-geopyspark-driver#546)
- use
yymmddprefix in job/req ids for now
- Add access_token introspection result (when enabled) to
User.internal_auth_data
- Start returning "OpenEO-Costs-experimental" header on synchronous processing responses
- Extract client credentials access token fetch logic from ElasticJobRegistry
into
ClientCredentialsAccessTokenHelperto make it reusable (e.g. for ETL API as well) (Open-EO/openeo-geopyspark-driver#531)
OpenEoBackendImplementation.request_costs(): add support for passing User object (related to Open-EO/openeo-geopyspark-driver#531)
- Initial support for openeo-processes v2.0, when requesting version 1.2 of the openEO API (#195)
- Drop support for 0.4 version of openeo-processes (#47)
- Add backoff to ensure EJR deletion (#163)
- Support job deletion in EJR (#163)