All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add support for comparison operators (
<,>,<=and>=) in callback process building - Added
Connection.describe_process()to retrieve and show a single process
- Include openEO API error id automatically in exception message to simplify user support and post-mortem analysis.
- Removed deprecated 'zonal_statistics' method from the 1.x version of the API.
- Add experimental support for
chunk_polygonprocess (Open-EO/openeo-processes#287) - Add support for
spatial_extent,temporal_extentandbandstoConnection.load_result() - Setting the environment variable
OPENEO_BASEMAP_URLallows to set a new templated URL to a XYZ basemap for the Vue Components library,OPENEO_BASEMAP_ATTRIBUTIONallows to set the attribution for the basemap (#260) - Initial support for experimental "federation:missing" flag on partial openEO Platform user job listings (Open-EO/openeo-api#419)
- Best effort detection of mistakenly using Python builtin
sumorallfunctions in callbacks (Forum #113) - Automatically print batch job logs when job doesn't finish successfully (using
execute_batch/run_synchronous/start_and_wait).
- Add
optionsargument toDataCube.atmospheric_correction(Open-EO/openeo-python-driver#91) - Add
atmospheric_correction_optionsandcloud_detection_optionsarguments toDataCube.ard_surface_reflectance(Open-EO/openeo-python-driver#91) - UDP storing: add support for "returns", "categories", "examples" and "links" properties (#242)
- Add
openeo.extra.spectral_indices: experimental API to easily compute spectral indices (vegetation, water, urban, ...) on aDataCube, using the index definitions from Awesome Spectral Indices
- Batch job status poll loop: ignore (temporary) "service unavailable" errors (Open-EO/openeo-python-driver#96)
- Batch job status poll loop: fail when there are too many soft errors (temporary connection/availability issues)
- Fix
DataCube.ard_surface_reflectance()to use processard_surface_reflectanceinstead ofatmospheric_correction
- Add command line tool
openeo-auth token-clearto remove OIDC refresh token cache - Add support for OIDC device authorization grant without PKCE nor client secret, (#225, openeo-api#410)
- Add
DataCube.dimension_labels()(EP-4008) - Add
Connection.load_result()(EP-4008) - Add proper support for child callbacks in
fit_curveandpredict_curve(#229) ProcessBuilder: Add support forarray_element(data, n)throughdata[n]syntax (#228)ProcessBuilder: Add support foreqandneqthrough==and!=operators (EP-4011)- Add
DataCube.validate()for process graph validation (EP-4012 related) - Add
Connection.as_curl()for generating curl command to evaluate a process graph orDataCubefrom the command line - Add support in
DataCube.download()to guess output format from extension of a given filename
- Improve default handling of
crs(andbase/height) infilter_bbox: avoid explicitly sendingnullunnecessarily (#233). - Update documentation/examples/tests: EPSG CRS in
filter_bboxshould be integer code, not string (#233). - Raise
ProcessGraphVisitExceptionfromProcessGraphVisitor.resolve_from_node()(instead of genericValueError) DataCube.linear_scale_rangeis now a shortcut forDataCube.apply(lambda x:x.x.linear_scale_range( input_min, input_max, output_min, output_max)).
Instead of creating an invalid process graph that tries to invoke linear_scale_range on a datacube directly.- Nicer error message when back-end does not support basic auth (#247)
- Remove unused and outdated (0.4-style)
File/RESTFileclasses (#115) - Deprecate usage of
DataCube.graphproperty (#209)
Minor release to address version packaging issue.
- Support nested callbacks inside array arguments, for instance in
array_modify,array_create - Support
array_concat - add
ProcessGraphUnflattenerandPGNodeGraphUnflattenerto unflatten a flat dict representation of a process graph to aPGNodegraph (EP-3609) - Add
Connection.datacube_from_flat_graphandConnection.datacube_from_jsonto construct aDataCubefrom flat process graph representation (e.g. JSON file or JSON URL) (EP-3609) - Add documentation about UDP unflattening and sharing (EP-3609)
- Add
fit_curveandpredict_curve, two methods used in change detection
- Update
processes.pybased on 1.1.0 release op openeo-processes project processes.py: include all processes from "proposals" folder of openeo-processes project- Jupyter integration: Visual rendering for process graphs shown instead of a plain JSON representation.
- Migrate from Travis CI to GitHub Actions for documentation building and unit tests (#178, EP-3645)
- Removed unit test runs for Python 3.5 (#210)
- Allow, but raise warning when specifying a CRS for the geometry passed to
aggregate_spatialandmask_polygon, which is non-standard/experimental feature, only supported by specific back-ends (#204) - Add
optionalargument toParameterand fix re-encoding parameters with default value. (EP-3846) - Add support to test strict equality with
ComparableVersion - Jupyter integration: add rich HTML rendering for more backend metadata (Job, Job Estimate, Logs, Services, User-Defined Processes)
- Add support for filter_spatial
- Add support for aggregate_temporal_period
- Added class
Servicefor secondary web-services - Added a method
servicetoConnection - Add
Rfc3339.parse_dateandRfc3339.parse_date_or_datetime
- Disallow redirects on POST/DELETE/... requests and require status code 200 on
POST /resultrequests. This improves error information wherePOST /resultwould involve a redirect. (EP-3889) - Class
JobLogEntrygot replaced with a more complete and re-usableLogEntrydict - The following methods return a
Serviceclass instead of a dict:tiled_viewing_serviceinImageCollection,ImageCollectionClientandDataCube,create_serviceinConnection
- The method
remove_serviceinConnectionhas been deprecated in favor ofdelete_servicein theServiceclass
- Add dependency on
xarraypackage (#159, #190, EP-3578) - Add support for default OIDC clients advertised by backend (#192, Open-EO/openeo-api#366)
- Add support for default OIDC provider (based on provider order advertised by backend) (Open-EO/openeo-api#373)
- Eliminate development/optional dependency on
openeo_udfproject (#159, #190, EP-3578). Now the openEO client library itself contains the necessary classes and implementation to run UDF code locally.
Connection: don't send default auth headers to non-backend domains (#201)
- Improve OpenID Connect usability on Windows: don't raise exception on file permissions
that can not be changed (by
os.chmodon Windows) (#198)
- Add initial/experimental support for OIDC device code flow with PKCE (alternative for client secret) (#191 / EP-3700)
- When creating a connection: use "https://" by default when no protocol is specified
DataCube.mask_polygon: supportParameterargument formask- Add initial/experimental support for default OIDC client (#192, Open-EO/openeo-api#366)
- Add
Connection.authenticate_oidcfor user-friendlier OIDC authentication: first try refresh token and fall back on device code flow - Add experimental support for
array_modifyprocess (Open-EO/openeo-processes#202)
- Remove old/deprecated
Connection.authenticate_OIDC()
- Add namespace support to
DataCube.process,PGNode,ProcessGraphVisitor(minor API breaking change) and related. Allows building process graphs with processes from non-"backend" namespaces (#182) collection_itemsto request collection items through a STAC APIpaginateas a basic method to support link-based pagination- Add namespace support to
Connection.datacube_from_process - Add basic support for band name aliases in
metadata.Bandfor band index lookup (EP-3670)
OpenEoApiErrormoved fromopeneo.rest.connectiontoopeneo.rest- Added HTML representation for
list_jobs,list_services,list_filesand for job results - Improve refresh token handling in OIDC logic: avoid requesting refresh token (which can fail if OIDC client is not set up for that) when not necessary (EP-3700)
RESTJob.start_and_wait: add status line when sending "start" request, and drop microsecond resolution from status lines
- Updated Vue Components library (solves issue with loading from slower back-ends where no result was shown)
- Add "reflected" operator support to
ProcessBuilder - Add
RESTJob.get_results(),JobResultsandResultAssetfor more fine-grained batch job result handling. (EP-3739) - Add documentation on batch job result (asset) handling and downloading
- Mark
Connection.imagecollectionmore clearly as deprecated/legacy alias ofConnection.load_collection - Deprecated
job_results()andjob_logs()onConnectionobject, it's better to work throughRESTJobobject. - Update
DataCube.sar_backscatterto the latest process spec: addcoefficientargument and removeorthorectify,rtc. (openeo-processes#210)
- Remove outdated batch job result download logic left-overs
- Remove (outdated) abstract base class
openeo.job.Job: did not add value, only caused maintenance overhead. (#115)
- Make
DataCube.filter_bbox()easier to use: allow passing a bbox tuple, list, dict or even shapely geometry directly as first positional argument or asbboxkeyword argument. Handling of the legacy non-standard west-east-north-south positional argument order is preserved for now (#136) - Add "band math" methods
DataCube.ln(),DataCube.logarithm(base),DataCube.log10()andDataCube.log2() - Improved support for creating and handling parameters when defining user-defined processes (EP-3698)
- Initial Jupyter integration: add rich HTML rendering of backend metadata (collections, file formats, UDF runtimes, ...) (#170)
- add
resolution_mergeprocess (experimental) (EP-3687, openeo-processes#221) - add
sar_backscatterprocess (experimental) (EP-3612, openeo-processes#210)
- Fixed 'Content-Encoding' handling in
Connection.download: client did not automatically decompress/resultresponses when necessary (#175)
- Add
DataCube.aggregate_spatial()
- Get/create default
RefreshTokenStorelazily inConnection - Various documentation tweaks
- Add support for
title/description/plan/budgetinDataCube.send_job(#157 / #158) - Add
DataCube.to_json()to easily get JSON representation of a DataCube - Allow to subclass
CollectionMetadataand preserve original type when "cloning"
- Changed
execute_batchto support downloading multiple files (within EP-3359, support profiling) - Don't send None-valued
title/description/plan/budgetfields fromDataCube.send_job(#157 / #158)
- Remove duplicate and broken
Connection.list_processgraphs
- Various documentation fixes and tweaks
- Avoid
merge_cubeswarning when using non-band-mathDataCubeoperators
- Add
DataCube.aggregate_temporal - Add initial support to download profiling information
- Deprecated legacy functions/methods are better documented as such and link to a recommended alternative (EP-3617).
- Get/create default
AuthConfigin Connection lazily (allows client to run in environments without existing (default) config folder)
- Deprecate
zonal_statisticsin favor ofaggregate_spatial
- Remove support for old, non-standard
stretch_colorsprocess (Uselinear_scale_rangeinstead).
- Also handle
dictarguments indereference_from_node_arguments(EP-3509) - Add support for less/greater than and equal operators
- Raise warning when user defines a UDP with same id as a pre-defined one (EP-3544, #147)
- Add
rename_labelssupport in metadata (EP-3585) - Improve "callback" handling (sub-process graphs): add predefined callbacks for all official processes and functionality to assemble these (EP-3555, #153)
- Moved datacube write/save/plot utilities from udf to client (EP-3456)
- Add documentation on OpenID Connect authentication (EP-3485)
- Fix
kwargshandling inTimingLoggerdecorator
- Add
openeo-authcommand line tool to manage OpenID Connect (and basic auth) related configs (EP-3377/EP-3493) - Support for using config files for OpenID Connect and basic auth based authentication, instead of hardcoding credentials (EP-3377/EP-3493)
- Fix target_band handling in
DataCube.ndvi(EP-3496)