Subscribe
to these release notes.
April 22, 2025
Added the Google Drive main OAuth scope, https://www.googleapis.com/auth/drive
, to the default list of scopes to use for authorization. The Google Drive scope is currently not required, but in the future it will have to be requested explicitly for Earth Engine requests that interact with Google Drive.
March 17, 2025
Added --version
to the Earth Engine CLI to return the client version.
January 28, 2025
The Earth Engine Python client library now requires a Cloud project when initializing with localhost or gcloud-legacy authentication modes.
January 22, 2025
Fixed the processing of keyword arguments (kwargs) in the ee.Geometry
constructors. Keyword arguments were passed to the ee.Geometry
algorithm
as though they were positional arguments. Check your use of ee.Geometry
if
you specified evenOdd
, geodesic
, or proj
as keyword arguments.
November 18, 2024
Released the alpha upload external_image
CLI command to Preview. For more
details, see the
CLI reference for external_image.
October 28, 2024
Dropped support for Python 3.8 now that it is end-of-life.
Added ImageCollection.count()
, a static method that returns the number of
images in the collection.
September 03, 2024
Fixed a bug where the quota project wasn't being set when authenticating
using the notebook auth mode. After this change, users must have the Service
Usage Consumer role (roles/serviceusage.serviceUsageConsumer
) on the
authentication project in order to use the notebook authentication mode. See
the Earth Engine
Authentication and Initialization
guide for more details.
April 03, 2024
Added
ee.data.createFolder
to the Python client to match the JavaScript client. Note that the force
and callback
parameters are not supported.
Updated the error handling logic for HTTP requests to convert
requests.exceptions.ConnectionError
and
requests.exceptions.ChunkedEncodingError
to httplib2-like errors. In some
cases, these errors were not being treated as retryable; now, the retry
logic should behave properly for these errors.
January 31, 2024
Added __init__()
for docstrings and argument type annotations to Array
,
ConfusionMatrix
, DateRange
, Model
, Projection
, and Reducer
.
January 18, 2024
Added __init__()
for docstrings and argument type annotations to
ErrorMargin
and Join
.
January 10, 2024
Added __init__()
for docstrings and argument type annotations to
PixelType
.
Fixed authentication issues for the gcloud auth application-default
calls
to login
and set-quota-project
. Added the cloud-platform
scope to the
default scopes used by ee.Authenticate()
.
December 08, 2023
Added Export.classifier.toAsset
and ee.Classifier.load
for exporting and
loading saved ee.Classifier.smileCart
and
ee.Classifier.smileRandomForest
classifiers. The exported classifiers will
be visible and managed just like existing Earth Engine assets. More details
are available at our
supervised classification
and our
export reference page.
Added ee.Blob(url)
to allow type checking of the url
argument and catch strings that don't start with gs://
when possible on
the client side.
Updated ee.Authenticate()
and ee.Initialize()
to support colab
mode,
added new gcloud
mode for remote machines (which makes the --quiet
flag
no longer necessary), and introduced localhost
mode. ee.Initialize()
now
uses ambient google.auth.default()
credentials if present.
ee.Authenticate(force=True)
forces a refresh, but by default will now
reuse existing credentials. See the
auth page for the
revised documentation.
Removed opt_
keyword for parameters, with backwards
compatibility with existing scripts that use opt_
arguments. Note that
some parameters needed to be renamed after removing opt_
since they
conflict with Python keywords:
ee.Collection.limit()
:opt_property
was converted toprop
ee.Image.expression()
:opt_map
was converted tomap_
ee.Filter()
:opt_filter
which was converted tofilter_
Switched from setup.py to pyproject.toml for building and installation.
- Drops support for installing with
distutils
.
November 15, 2023
Added
workload tag
support to ee.data.getPixels()
.
Disallowed complex, rational, and integral numbers in ee.Number()
.
Added a long-lived requests.Session
object so that calls to
Earth Engine can share a connection pool. This should increase performance
and stability.
November 01, 2023
This version of the client libraries introduced a Python type annotation incompatible with Python 3.7.
September 14, 2023
Migrated Python client library from deprecated
https://accounts.google.com/o/oauth2/token
to
https://oauth2.googleapis.com/token
for OAuth 2.0 authentication.
August 24, 2023
Fixed construction of an ee.Date
object from a
tzinfo
-aware datetime
object. Naive datetime
objects are still treated
as UTC.
July 27, 2023
Upgraded the client libraries to use the v1
Earth Engine API. No changes required except for the following case:
- In the Python client, for the
ee.data.getAsset()
method, thetitle
anddescription
fields are only accessible from the asset properties in the v1 API. Modify your code to referencemy_asset['properties']['title']
andmy_asset['properties']['description']
.
July 19, 2023
Added a Python version requirement (3.7.0) to the client libs.
May 03, 2023
Added support for the no_data
field for GeoTIFF exports in both the Python
and JavaScript client libraries.
April 14, 2023
Removed support for dots (.) in workload tags, which will now throw an error.
February 15, 2023
Added ee.data.getPixels()
, ee.data.computePixels()
,
ee.data.listFeatures()
, and ee.data.computeFeatures()
to the Python
client. The new methods will help with getting pixels from assets or
ee.Image
objects, and listing features from assets or
ee.FeatureCollection
objects.
November 02, 2022
Improved Python ee.Authenticate()
error messages to give more guidance,
and fixed bugs.
Updated the HTTP client library in the Python client from httplib2
to
requests
, which re-adds support for multi-threading following the
httplib2shim
removal.
September 28, 2022
Refactored ee.data.getList()
and ee.data.listImages()
to call through to
ee.data.listAssets()
exclusively.
Upgraded the client libraries to use the Earth Engine v1
API parameters
instead of v1alpha
only parameters, in preparation for a future migration
to the v1
API.
July 13, 2022
Added a localhost
auth mode and introduced a ee.oauth.Flow
class for
smoother integration with other client libraries.
Added support for Python 3.10 by removing the dependency on httplib2shim
.
June 22, 2022
Added the workload tag API (ee.data.getWorkloadTag()
and
ee.data.setWorkloadTag()
) to label computation and exports with a workload
tag, which is viewable from the Google Cloud Console.
May 27, 2022
Added
EECU stats
on exports in the CLI (via earthengine task list -l
).
May 09, 2022
Launched FeatureView
assets and API. For an overview, see
https://developers.google.com/earth-engine/guides/featureview_overview.
April 13, 2022
Security upgrades to authentication in Python notebooks and command line. This only applies if you use the Python libraries or the command line tool; there are no changes to the Code Editor. For more details, visit the developer announcement.
August 12, 2021
Improved error reporting for the case where the arguments of a function passed to map() or iterate() are used in client-side operations that don't contribute to the function return value. Since the function is executed server-side, it may not have client-side effects. See the debugging guide for more details.
July 15, 2021
Added ee.Filter.bounds()
alias for ee.Filter.geometry()
.
April 29, 2021
Added support for maxVertices
parameter for table exports.
November 12, 2020
Removed functionality from the Python client library which is no longer needed after the legacy API turndown.
- Removed
use_cloud_api
parameter fromee.Initialize
anddata.initialize
on the Python client library. - Removed the deprecated
data.startProcessing
method on the Python client library. UseexportImage
,exportTable
etc. instead. - Removed the
use_cloud_api
flag on the CLI tool.
October 29, 2020
Adds the task ID to the string representation of the task, compatible
with the repr()
function.
September 25, 2020
Added an ee.data.TaskStatus
field for the number of times a task was
attempted. This matches the value now shown in the Code Editor.
August 21, 2020
Added a --long_format
option (and -l
shortcut) to the earthengine task
list
CLI command, to show additional information about tasks. This change
enables callers to see start/end times for individual tasks.
Changed the object serialization format, so that x.serialize()
returns an
updated format (which is already used in server requests). ee.Deserializer
supports both the new format and the old format. These changes apply to all
JavaScript and Python APIs. If you have code which serializes and
deserializes objects, we recommend that you either upgrade all parts of your
system at once, or proceed in stages by updating the deserialization code
first.
March 12, 2020
Fixed bug with getVideoThumbURL() and getFilmstripThumbURL().
March 06, 2020
- ee.Image.getDownloadURL is fully supported in Cloud API mode.
- Band-level parameters take precedence over top-level parameters when specified.
- Band parameters are ignored for multiband GeoTIFFs.
image
parameter may not be serialized, use anee.Image
directly.- Limits on total image size.
ee.data.getTileUrl
supports theurlFormat
parameter supplied in the map ID.
Added PKCE support to earthengine authenticate
.
January 30, 2020
Updated the HTTP transport layer for the Earth Engine Python client library
from httplib2 to urllib3, which will make it more flexible (e.g., it's now
possible to make multiple simultaneous requests) and improve performance.
This improvement might not be realized if the earthengine-api
package is
installed via the
conda-forge
channel.
November 12, 2019
Added new export parameters tileSize
and maxWorkerCount
in
_prepare_image_export_config()
in ee/batch.py.
October 23, 2019
Supported a list of rectangle coordinates for the region
parameter in
getThumbURL()
.
August 30, 2019
Added ee.Authenticate()
to authorize access to Earth Engine via OAuth2.
November 09, 2018
Ensure JS client library can resolve export regions.
September 28, 2018
Added and updated several UI API examples.
October 19, 2017
Fixed the Python API's image.rename()
method to properly handle a single string.
June 12, 2017
Added support for uploading shapefiles.
March 02, 2017
Added a skipEmptyTiles
option to Export.image.toDrive()
and Export.image.toCloudStorage()
to skip generating empty (i.e. fully-masked) image tiles.
Updated authentication to work with oauth2client v2+ and a JSON-formatted credentials file.
February 03, 2017
Updated OAuth scope to FULL_CONTROL for Cloud Storage, to enable actions that require OWNER permissions.
October 27, 2016
- Added optional
shardSize
andfileDimensions
arguments toExport.image.toDrive()
andExport.image.toCloudStorage()
, to specify the computation shard size and the output file dimensions for multi-file image exports. - Added an optional
skipEmptyTiles
argument toExport.map.toCloudStorage()
to skip writing empty (fully-transparent) tiles.
July 28, 2016
Fixed an issue which caused the minified version Earth Engine JavaScript API to be excluded from the open-source release.
June 02, 2016
Added computedObject.evaluate()
.
May 18, 2016
Expanded Export
functionality to support maps as an export type and Google Cloud Storage as a destination.
January 21, 2016
Disable exporting to GME.
August 07, 2015
Switched to new read & write scope ('https://www.googleapis.com/auth/earthengine' instead of 'https://www.googleapis.com/auth/earthengine.readonly')
June 26, 2015
- Fixed error that occurred when auth token refresh is attempted while the browser is offline.
- Added demos directory and move AppEngine demos to it.
- Added "Powered by Earth Engine" images.
June 19, 2015
- Added
ee.data.setAuthToken()
andee.data.getAuthToken()
- Fixed the default API URL in
ee.data
- Fixed
ee.reset()
so it no longer clears auth info. - Added tile event callback registration methods to
ee.MapLayerOverlay
. - Added
ee.Image.rename()
to make it easy to rename bands. - Updated App Engine app examples.
- Fixed
ee.Geometry.Rectangle
when given a custom projection or geodesic state.
June 04, 2015
- Allowed
ee.MapLayerOverlays
to be named. - Added an
opt_dropNulls
argument toCollection.map()
.
May 30, 2015
Undeprecated ee.data.getInfo()
.
May 15, 2015
Renamed getThumbURL()
's 'size' param to 'dimensions'.
May 08, 2015
ee.ImageCollection()
now accepts ee.List
arguments.
April 30, 2015
Added support for exporting videos.
April 10, 2015
Fixed ee.Geometry.Multi*()
constructors to accept empty lists.
April 03, 2015
Added error handling improvements.
March 26, 2015
Corrected the documentation for the ee.Date
constructor.
March 06, 2015
- Fixed bug with region parameter in
getThumbURL()
. - Added a callback option to
getThumbURL()
.
February 10, 2015
Added FeatureCollection.select()
.
January 15, 2015
- Added
ee.batch.Task.active()
for checking whether the task is active. - Made deprecated methods emit warnings. It is highly recommended to enable this by running the Python interpreter with the -W default flag or calling "import warnings; warnings.simplefilter('default')" before interacting with the EE library.
Image.parseExpression()
is no longer available for general use.Image.expressio
n should be used instead, and the documentation for accessing bands in expressions has been moved there.- Added support for computed geometries to
Geometry.type()
, but now returns a computed string rather than a concrete one. - Fixed the incorrect winding order of polygons generated by
Image.reduceToVectors()
. - Grouped Terrain algorithms into
ee.Terrain
.
December 04, 2014
Added the ee.batch
module to support batch task management and image and table export.
Image.expression()
allows expressions that do not refer to all the supplied input images.Image.parseExpression()
allows you to explicitly specify the expected input image names.
September 24, 2014
Added support for Python API authentication using a Google account.
July 18, 2014
Fixed casting of numbers when calling the ee.String
constructor.
Added a __version__
property to the ee package
.
June 20, 2014
Allowed empty args list for Image.select()
.
Gave all API objects __eq__()
and __hash__()
April 24, 2014
- Fixed
Element
variable promotion.- Improved consistency in type casting of different classes. - Fixed
Element
variable promotion.
March 28, 2014
Improved automatic type casting logic and error messages.
February 18, 2014
- Changed the missing end bound in the
DateRange
constructor to mean start bound + 1ms, not infinity. - Started to consistently interpret
DateRange
upper bounds as exclusive.
February 13, 2014
Added an ee.Projection
class to represent map projections.
February 06, 2014
Fixed inconsistent promotion logic for ee.Date
parameters.
December 20, 2013
Added ee.Element
, a base class for ee.Image
and ee.Feature
.
December 04, 2013
Improved the documentation for the AppEngine "Hello World" example.
October 14, 2013
- Added
ee.Geometry.type()
. - Added
ee.ImageCollection.select()
, equivalent to mappingImage.select()
over a collection. - Removed
ee.Collection.map_*()
functions. Useee.Collection.map(somePythonFunction)
. - Fixed
ee.Algorithms
entries referring to incorrect algorithms. - Fixed
ee.Image.set()
andee.Feature.set()
to stop requiring {'properties': ...} wrapping.
September 30, 2013
- Added support for automatically casting numbers to dates (interpreted as Unix timestamps).
- Added
ee.Deserializer
, which can decode the output ofee.Serializer
. - Fixed handling of GeoJSON CRS specification in
ee.Geometry
. - Fixed accidental aggregation cache breaking in
Collection.map()
.
September 13, 2013
- Added type declarations for
ee.data
methods, so it can be used in Closure-compiled code. - Changed the interface of
ee.CustomFunction()
to require a function signature. - Fixed a regression introduced in the previous update that could cause incorrect serialization.
September 06, 2013
Optimized the performance of queries that involve repeated sub-queries.
August 30, 2013
- Restored compatibility with Python 2.6.
- Added a
String
class to represent computations that return string values. - Fixed
Geometry
methods not being present on computed geometries.
August 15, 2013
Fixed handling of ascending=False in Collection.sort()
.
July 24, 2013
- Added support for calling unbound algorithms using
ee.Algorithms.algorithmName(...)
. - Added support for passing key data in addition to key filenames to
ee.ServiceAccountCredentials()
.
July 03, 2013
Added support for the geodesic field in GeoJSON to differentiate geodesic and projected lines.
June 05, 2013
Added an ee.Kernel
class.
Fixed reading of binary auth keys on Windows.
May 15, 2013
- EE objects can no longer be initialized by providing JSON blocks (except GeoJSON). All of these can be converted to the new format using
ee.call()
andee.apply()
. Collection.aggregate_*()
functions no longer perform automatic server fetches. Users will need to callgetInfo()
on the result manually.- The string representation of EE objects can no longer be passed to
eval()
to recreate the object. - Added a new class,
ee.Geometry
, that represents GeoJSON geometries. - Added
ee.Image.getThumbUrl()
. - Added
ee.Filter.inList()
, a convenience foree.Filter.listContains()
. - Changed
ee.Geometry.Point()
to accept (x, y) tuples/lists. - Changed the ee.Image constructor to allow calling with no arguments, returning the equivalent of
ee.Image(0).mask(0)
. - Changed API version to 0.1.1.
- Moved Filter functions onto ee.Filter as static methods.
- Switched to a new, better optimized wire encoding of queries.
- Deprecated
ee.Collection.map_*()
functions. Useee.Collection.map(somePythonFunction)
.
March 14, 2013
Deprecated specifying API objects using custom JSON (e.g. specifying error margins using {type: 'ErrorMargin', value: 5}
). Support will be removed in the next library update.
February 13, 2013
Fixed the Feature
constructor to accept null geometries.
February 06, 2013
Removed ImageCollection.combine_()
, an internal method used to implement ImageCollection.mosaic()
.
January 31, 2013
Added support for fetching algorithm results using getInfo()
for algorithms that return numbers, tables, and other non-geo objects. This may break scripts that relied on manually editing JSON produced by these algorithms and submitting it to ee.data.getValue()
.
Added support for calling static API methods using the ClassName.methodName()
syntax.
Removed ImageCollection.mosaic_()
, an internal method used to implement ImageCollection.mosaic()
.
Fixed ImageCollection.reduce()
so it can be called as an instance method.
Fixed serialization of Collections with multiple filters.
Fixed listing of static methods in the playground docs.
January 24, 2013
Fixed a bug that caused failing queries to raise NameError
rather than EEException
.