Changelog¶
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.
[Unreleased]¶
Added¶
Changed¶
Before doing user-defined process (UDP) listing/creation: verify that back-end supports that (through openEO capabilities document) to improve error message.
Skip metadata-based normalization/validation and stop showing unhelpful warnings/errors like “No cube:dimensions metadata” or “Invalid dimension” when no metadata is available client-side anyway (e.g. when using
datacube_from_process
, parameterized cube building, …). (#442)
Removed¶
Bumped minimal supported Python version to 3.7 (#460)
Fixed¶
Support handling of “callback” parameters in
openeo.processes
callables (#470)
[0.22.0] - 2023-08-09¶
Added¶
Processes that take a CRS as argument now try harder to normalize your input to a CRS representation that aligns with the openEO API (using
pyproj
library when available) (#259)Initial
load_geojson
support withConnection.load_geojson()
(#424)Initial
load_url
(for vector cubes) support withConnection.load_url()
(#424)Add
VectorCube.apply_dimension()
(Open-EO/openeo-python-driver#197)Support lambda based property filtering in
Connection.load_stac()
(#425)VectorCube
: initial support forfilter_bands
,filter_bbox
,filter_labels
andfilter_vector
(#459)
Changed¶
Connection
based requests: always use finite timeouts by default (20 minutes in general, 30 minutes for synchronous execute requests) (#454)
Fixed¶
Fix: MultibackendJobManager should stop when finished, also when job finishes with error (#452)
[0.21.1] - 2023-07-19¶
Fixed¶
Fix
spatial_extent
/temporal_extent
handling in “localprocessing”load_stac
(#451)
[0.21.0] - 2023-07-19¶
Added¶
Add support in
VectoCube.download()
andVectorCube.execute_batch()
to guess output format from extension of a given filename (#401, #449)Added
load_stac
for Client Side Processing, based on the openeo-processes-dask implementation
Changed¶
Updated docs for Client Side Processing with
load_stac
examples, available at https://open-eo.github.io/openeo-python-client/cookbook/localprocessing.html
Fixed¶
[0.20.0] - 2023-06-30¶
Added¶
Added automatically renewal of access tokens with OIDC client credentials grant (
Connection.authenticate_oidc_client_credentials
) (#436)
Changed¶
Simplified
BatchJob
methodsstart()
,stop()
,describe()
, … Legacy aliasesstart_job()
,describe_job()
, … are still available and don’t trigger a deprecation warning for now. (#280)Update
openeo.extra.spectral_indices
to Awesome Spectral Indices v0.4.0
[0.19.0] - 2023-06-16¶
Added¶
Generalized support for setting (default) OIDC provider id through env var
OPENEO_AUTH_PROVIDER_ID
#419Added
OidcDeviceCodePollTimeout
: specific exception for OIDC device code flow poll timeoutsOn-demand preview: Added
DataCube.preview()
to generate a XYZ service with the process graph and display a map widget
Fixed¶
[0.18.0] - 2023-05-31¶
Added¶
Support OIDC client credentials grant from a generic
connection.authenticate_oidc()
call through environment variables #419
Fixed¶
Fixed UDP parameter conversion issue in
build_process_dict
when using parameter incontext
ofrun_udf
#431
[0.17.0] and [0.17.1] - 2023-05-16¶
Added¶
Connection.authenticate_oidc()
: add argumentmax_poll_time
to set maximum device code flow poll timeShow progress bar while waiting for OIDC authentication with device code flow, including special mode for in Jupyter notebooks. (#237)
Basic support for
load_stac
process withConnection.load_stac()
(#425)Add
DataCube.aggregate_spatial_window()
Fixed¶
Include “scope” parameter in OIDC token request with client credentials grant.
Support fractional seconds in
Rfc3339.parse_datetime
(#418)
[0.16.0] - 2023-04-17 - “SRR5” release¶
Added¶
Full support for user-uploaded files (
/files
endpoints) (#377)Initial, experimental “local processing” feature to use openEO Python Client Library functionality on local GeoTIFF/NetCDF files and also do the processing locally using the
openeo_processes_dask
package (#338)Add
BatchJob.get_results_metadata_url()
.
Changed¶
Connection.list_files()
returns a list ofUserFile
objects instead of a list of metadata dictionaries. UseUserFile.metadata
to get the original dictionary. (#377)DataCube.aggregate_spatial()
returns aVectorCube
now, instead of aDataCube
(#386). The (experimental)fit_class_random_forest()
andfit_regr_random_forest()
methods moved accordingly to theVectorCube
class.Improved documentation on
openeo.processes
andProcessBuilder
(#390).DataCube.create_job()
andConnection.create_job()
now require keyword arguments for all but the first argument for clarity. (#412).Pass minimum log level to backend when retrieving batch job and secondary service logs. (Open-EO/openeo-api#485, Open-EO/openeo-python-driver#170)
Removed¶
Dropped support for pre-1.0.0 versions of the openEO API (#134):
Remove
ImageCollectionClient
and related helpers (now unused leftovers from version 0.4.0 and earlier). (Also #100)Drop support for pre-1.0.0 job result metadata
Require at least version 1.0.0 of the openEO API for a back-end in
Connection
and all its methods.
Fixed¶
Reinstated old behavior of authentication related user files (e.g. refresh token store) on Windows: when
PrivateJsonFile
may be readable by others, just log a message instead of raisingPermissionError
(387)VectorCube.create_job()
andMlModel.create_job()
are properly aligned withDataCube.create_job()
regarding setting job title, description, etc. (#412).More robust handling of billing currency/plans in capabilities (#414)
Avoid blindly adding a
save_result
node fromDataCube.execute_batch()
when there is already one (#401)
[0.15.0] - 2023-03-03¶
Added¶
The openeo Python client library can now also be installed with conda (conda-forge channel) (#176)
Allow using a custom
requests.Session
inopeneo.rest.auth.oidc
logic
Changed¶
Less verbose log printing on failed batch job #332
Improve (UTC) timezone handling in
openeo.util.Rfc3339
and addrfc3339.today()
/rfc3339.utcnow()
.
[0.14.1] - 2023-02-06¶
Fixed¶
Fine-tuned
XarrayDataCube
tests for conda building and packaging (#176)
[0.14.0] - 2023-02-01¶
Added¶
Jupyter integration: show process graph visualization of
DataCube
objects instead of genericrepr
. (#336)Add
Connection.vectorcube_from_paths()
to load a vector cube from files (on back-end) or URLs withload_uploaded_files
process.Python 3.10 and 3.11 are now officially supported (test run now also for 3.10 and 3.11 in GitHub Actions, #346)
Support for simplified OIDC device code flow, (#335)
Added MultiBackendJobManager, based on implementation from openeo-classification project (#361)
Added resilience to MultiBackendJobManager for backend failures (#365)
Changed¶
execute_batch
also skips temporal502 Bad Gateway errors
. #352
Fixed¶
Fixed/improved math operator/process support for
DataCube
s in “apply” mode (non-“band math”), allowing expressions like10 * cube.log10()
and~(cube == 0)
(#123)Support
PrivateJsonFile
permissions properly on Windows, using oschmod library. (#198)Fixed some broken unit tests on Windows related to path (separator) handling. (#350)
[0.13.0] - 2022-10-10 - “UDF UX” release¶
Added¶
Add
max_cloud_cover
argument toload_collection()
to simplify setting maximum cloud cover (propertyeo:cloud_cover
) (#328)
Changed¶
Improve default dimension metadata of a datacube created with
openeo.rest.datacube.DataCube.load_disk_collection
DataCube.download()
: only automatically addsave_result
node when there is none yet.Deprecation warnings: make sure they are shown by default and can be hidden when necessary.
Rework and improve
openeo.UDF
helper class for UDF usage (#312).allow loading directly from local file or URL
autodetect
runtime
from file/URL suffix or source codehide implementation details around
data
argument (e.g.data={"from_parameter": "x"}
)old usage patterns of
openeo.UDF
andDataCube.apply_dimension()
still work but trigger deprecation warnings
Show warning when using
load_collection
property filters that are not defined in the collection metadata (summaries).
[0.12.1] - 2022-09-15¶
Changed¶
Eliminate dependency on
distutils.version.LooseVersion
which started to trigger deprecation warnings (#316).
Removed¶
Remove old
Connection.oidc_auth_user_id_token_as_bearer
workaround flag (#300)
Fixed¶
Fix refresh token handling in case of OIDC token request with refresh token grant (#326)
[0.12.0] - 2022-09-09¶
Added¶
Allow passing raw JSON string, JSON file path or URL to
Connection.download()
,Connection.execute()
andConnection.create_job()
Add support for reverse math operators on DataCube in
apply
mode (#323)Add
DataCube.print_json()
to simplify exporting process graphs in Jupyter or other interactive environments (#324)Raise
DimensionAlreadyExistsException
when trying toadd_dimension()
a dimension with existing name (Open-EO/openeo-geopyspark-driver#205)
Changed¶
DataCube.execute_batch()
now also guesses the output format from the filename, and allows usingformat
argument next to the currentout_format
to align with theDataCube.download()
method. (#240)Better client-side handling of merged band name metadata in
DataCube.merge_cubes()
Removed¶
[0.11.0] - 2022-07-02¶
Added¶
Add support for passing a PGNode/VectorCube as geometry to
aggregate_spatial
,mask_polygon
, …Add support for second order callbacks e.g.
is_valid
incount
inreduce_dimension
(#317)
Changed¶
Rename
RESTJob
class name to less cryptic and more user-friendlyBatchJob
. OriginalRESTJob
is still available as deprecated alias. (#280)Dropped default reducer (“max”) from
DataCube.reduce_temporal_simple()
Various documentation improvements:
Drop hardcoded
h5netcdf
engine fromXarrayIO.from_netcdf_file()
andXarrayIO.to_netcdf_file()
(#314)Changed argument name of
Connection.describe_collection()
fromname
tocollection_id
to be more in line with other methods/functions.
Fixed¶
Fix
context
/condition
confusion bug withcount
callback inDataCube.reduce_dimension()
(#317)
[0.10.1] - 2022-05-18 - “LPS22” release¶
Added¶
Add
context
parameter toDataCube.aggregate_spatial()
,DataCube.apply_dimension()
,DataCube.apply_neighborhood()
,DataCube.apply()
,DataCube.merge_cubes()
. (#291)Add
DataCube.fit_regr_random_forest()
(#293)Add
PGNode.update_arguments()
, which combined withDataCube.result_node()
allows to do advanced process graph argument tweaking/updating without using._pg
hacks.JobResults.download_files()
: also download (by default) the job result metadata as STAC JSON file (#184)OIDC handling in
Connection
: try to automatically refresh access token when expired (#298)Connection.create_job
raises exception if response does not contain a valid job_idAdd
openeo.udf.debug.inspect
for using the openEOinspect
process in a UDF (#302)Add
openeo.util.to_bbox_dict()
to simplify building a openEO style bbox dictionary, e.g. from a list or shapely geometry (#304)
Removed¶
Removed deprecated (and non-functional)
zonal_statistics
method from oldImageCollectionClient
API. (#144)
[0.10.0] - 2022-04-08 - “SRR3” release¶
Added¶
Add support for comparison operators (
<
,>
,<=
and>=
) in callback process buildingAdded
Connection.describe_process()
to retrieve and show a single processAdded
DataCube.flatten_dimensions()
andDataCube.unflatten_dimension
(Open-EO/openeo-processes#308, Open-EO/openeo-processes#316)Added
VectorCube.run_udf
(to avoid non-standardprocess_with_node(UDF(...))
usage)Added
DataCube.fit_class_random_forest()
andConnection.load_ml_model()
to train and load Machine Learning models (#279)Added
DataCube.predict_random_forest()
to easily usereduce_dimension
with apredict_random_forest
reducer using aMlModel
(trained withfit_class_random_forest
) (#279)Added
DataCube.resample_cube_temporal
(#284)Add
target_dimension
argument toDataCube.aggregate_spatial
(#288)Add basic configuration file system to define a default back-end URL and enable auto-authentication (#264, #187)
Add
context
argument toDataCube.chunk_polygon()
Add
Connection.version_info()
to list version information about the client, the API and the back-end
Changed¶
Include openEO API error id automatically in exception message to simplify user support and post-mortem analysis.
Use
Connection.default_timeout
(when set) also on version discovery requestDrop
ImageCollection
fromDataCube
’s class hierarchy. This practically removes very old (pre-0.4.0) methods likedate_range_filter
andbbox_filter
fromDataCube
. (#100, #278)Deprecate
DataCube.send_job
in favor ofDataCube.create_job
for better consistency (internally and with other libraries) (#276)Update (autogenerated)
openeo.processes
module to 1.2.0 release (2021-12-13) of openeo-processesUpdate (autogenerated)
openeo.processes
module to draft version of 2022-03-16 (e4df8648) of openeo-processesUpdate
openeo.extra.spectral_indices
to a post-0.0.6 version of Awesome Spectral Indices
Removed¶
Removed deprecated
zonal_statistics
method fromDataCube
. (#144)Deprecate old-style
DataCube.polygonal_mean_timeseries()
,DataCube.polygonal_histogram_timeseries()
,DataCube.polygonal_median_timeseries()
andDataCube.polygonal_standarddeviation_timeseries()
Fixed¶
[0.9.2] - 2022-01-14¶
Added¶
Add experimental support for
chunk_polygon
process (Open-EO/openeo-processes#287)Add support for
spatial_extent
,temporal_extent
andbands
toConnection.load_result()
Setting the environment variable
OPENEO_BASEMAP_URL
allows to set a new templated URL to a XYZ basemap for the Vue Components library,OPENEO_BASEMAP_ATTRIBUTION
allows 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
sum
orall
functions in callbacks (Forum #113)Automatically print batch job logs when job doesn’t finish successfully (using
execute_batch/run_synchronous/start_and_wait
).
[0.9.1] - 2021-11-16¶
Added¶
Add
options
argument toDataCube.atmospheric_correction
(Open-EO/openeo-python-driver#91)Add
atmospheric_correction_options
andcloud_detection_options
arguments 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
Changed¶
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)
Fixed¶
Fix
DataCube.ard_surface_reflectance()
to use processard_surface_reflectance
instead ofatmospheric_correction
[0.9.0] - 2021-10-11¶
Added¶
Add command line tool
openeo-auth token-clear
to remove OIDC refresh token cacheAdd 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_curve
andpredict_curve
(#229)ProcessBuilder
: Add support forarray_element(data, n)
throughdata[n]
syntax (#228)ProcessBuilder
: Add support foreq
andneq
through==
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 orDataCube
from the command lineAdd support in
DataCube.download()
to guess output format from extension of a given filename
Changed¶
Improve default handling of
crs
(andbase
/height
) infilter_bbox
: avoid explicitly sendingnull
unnecessarily (#233).Update documentation/examples/tests: EPSG CRS in
filter_bbox
should be integer code, not string (#233).Raise
ProcessGraphVisitException
fromProcessGraphVisitor.resolve_from_node()
(instead of genericValueError
)DataCube.linear_scale_range
is 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)
Removed¶
[0.8.2] - 2021-08-24¶
Minor release to address version packaging issue.
[0.8.1] - 2021-08-24¶
Added¶
Support nested callbacks inside array arguments, for instance in
array_modify
,array_create
Support
array_concat
add
ProcessGraphUnflattener
andPGNodeGraphUnflattener
to unflatten a flat dict representation of a process graph to aPGNode
graph (EP-3609)Add
Connection.datacube_from_flat_graph
andConnection.datacube_from_json
to construct aDataCube
from flat process graph representation (e.g. JSON file or JSON URL) (EP-3609)Add documentation about UDP unflattening and sharing (EP-3609)
Add
fit_curve
andpredict_curve
, two methods used in change detection
Changed¶
Update
processes.py
based on 1.1.0 release op openeo-processes projectprocesses.py
: include all processes from “proposals” folder of openeo-processes projectJupyter 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¶
Removed unit test runs for Python 3.5 (#210)
[0.8.0] - 2021-06-25¶
Added¶
Allow, but raise warning when specifying a CRS for the geometry passed to
aggregate_spatial
andmask_polygon
, which is non-standard/experimental feature, only supported by specific back-ends (#204)Add
optional
argument toParameter
and 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
Service
for secondary web-servicesAdded a method
service
toConnection
Add
Rfc3339.parse_date
andRfc3339.parse_date_or_datetime
Changed¶
Disallow redirects on POST/DELETE/… requests and require status code 200 on
POST /result
requests. This improves error information wherePOST /result
would involve a redirect. (EP-3889)Class
JobLogEntry
got replaced with a more complete and re-usableLogEntry
dictThe following methods return a
Service
class instead of a dict:tiled_viewing_service
inImageCollection
,ImageCollectionClient
andDataCube
,create_service
inConnection
Deprecated¶
The method
remove_service
inConnection
has been deprecated in favor ofdelete_service
in theService
class
[0.7.0] - 2021-04-21¶
Added¶
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)
Changed¶
Fixed¶
Connection
: don’t send default auth headers to non-backend domains (#201)
[0.6.1] - 2021-03-29¶
Changed¶
Improve OpenID Connect usability on Windows: don’t raise exception on file permissions that can not be changed (by
os.chmod
on Windows) (#198)
[0.6.0] - 2021-03-26¶
Added¶
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
: supportParameter
argument formask
Add initial/experimental support for default OIDC client (#192, Open-EO/openeo-api#366)
Add
Connection.authenticate_oidc
for user-friendlier OIDC authentication: first try refresh token and fall back on device code flowAdd experimental support for
array_modify
process (Open-EO/openeo-processes#202)
Removed¶
Remove old/deprecated
Connection.authenticate_OIDC()
[0.5.0] - 2021-03-17¶
Added¶
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_items
to request collection items through a STAC APIpaginate
as a basic method to support link-based paginationAdd namespace support to
Connection.datacube_from_process
Add basic support for band name aliases in
metadata.Band
for band index lookup (EP-3670)
Changed¶
OpenEoApiError
moved fromopeneo.rest.connection
toopeneo.rest
Added HTML representation for
list_jobs
,list_services
,list_files
and for job resultsImprove 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
Fixed¶
Updated Vue Components library (solves issue with loading from slower back-ends where no result was shown)
[0.4.10] - 2021-02-26¶
Added¶
Add “reflected” operator support to
ProcessBuilder
Add
RESTJob.get_results()
,JobResults
andResultAsset
for more fine-grained batch job result handling. (EP-3739)Add documentation on batch job result (asset) handling and downloading
Changed¶
Mark
Connection.imagecollection
more clearly as deprecated/legacy alias ofConnection.load_collection
Deprecated
job_results()
andjob_logs()
onConnection
object, it’s better to work throughRESTJob
object.Update
DataCube.sar_backscatter
to the latest process spec: addcoefficient
argument and removeorthorectify
,rtc
. (openeo-processes#210)
Removed¶
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)
[0.4.9] - 2021-01-29¶
Added¶
Make
DataCube.filter_bbox()
easier to use: allow passing a bbox tuple, list, dict or even shapely geometry directly as first positional argument or asbbox
keyword 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_merge
process (experimental) (EP-3687, openeo-processes#221)add
sar_backscatter
process (experimental) (EP-3612, openeo-processes#210)
Fixed¶
Fixed ‘Content-Encoding’ handling in
Connection.download
: client did not automatically decompress/result
responses when necessary (#175)
[0.4.8] - 2020-11-17¶
Added¶
Add
DataCube.aggregate_spatial()
Changed¶
Get/create default
RefreshTokenStore
lazily inConnection
Various documentation tweaks
[0.4.7] - 2020-10-22¶
Added¶
Changed¶
Removed¶
Remove duplicate and broken
Connection.list_processgraphs
Fixed¶
Various documentation fixes and tweaks
Avoid
merge_cubes
warning when using non-band-mathDataCube
operators
[0.4.6] - 2020-10-15¶
Added¶
Add
DataCube.aggregate_temporal
Add initial support to download profiling information
Changed¶
Deprecated legacy functions/methods are better documented as such and link to a recommended alternative (EP-3617).
Get/create default
AuthConfig
in Connection lazily (allows client to run in environments without existing (default) config folder)
Deprecated¶
Deprecate
zonal_statistics
in favor ofaggregate_spatial
Removed¶
Remove support for old, non-standard
stretch_colors
process (Uselinear_scale_range
instead).
[0.4.5] - 2020-10-01¶
Added¶
Also handle
dict
arguments 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_labels
support 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)
Fixed¶
Fix
kwargs
handling inTimingLogger
decorator
[0.4.4] - 2020-08-20¶
Added¶
Add
openeo-auth
command 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)
Fixed¶
Fix target_band handling in
DataCube.ndvi
(EP-3496)