Page Summary
-
This page lists updates to the Earth Engine Python client library, including new features, bug fixes, and performance improvements.
-
Recent updates include authentication mode enhancements, new CLI commands, support for later Python versions, and the introduction of features like
ImageCollection.count()andee.data.createFolder(). -
Significant changes in 2023 involved updates to authentication methods, the introduction of
Export.classifier.toAssetandee.Classifier.load, removal of theopt_keyword for parameters, and migration to pyproject.toml. -
Older updates detail the migration to the v1 Earth Engine API, the addition of new data methods like
ee.data.getPixels(), improvements to error handling and authentication, and the introduction of workload tags and FeatureView assets.
Subscribe
to these release notes.
October 13, 2025
ee.Authenticate() will now raise an error when called with auth_mode=colab and unsupported scopes.
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
Added ImageCollection.count(), a static method that returns the number of
images in the collection.
Dropped support for Python 3.8 now that it is end-of-life.
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
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.
Added
ee.data.createFolder
to the Python client to match the JavaScript client. Note that the force
and callback parameters are not supported.
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
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().
Added __init__() for docstrings and argument type annotations to
PixelType.
December 08, 2023
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_propertywas converted topropee.Image.expression():opt_mapwas converted tomap_ee.Filter():opt_filterwhich was converted tofilter_
Switched from setup.py to pyproject.toml for building and installation.
- Drops support for installing with
distutils.
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.
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.
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.
November 15, 2023
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.
Added
workload tag
support to ee.data.getPixels().
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, thetitleanddescriptionfields 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
Updated the HTTP client library in the Python client from httplib2 to
requests, which re-adds support for multi-threading following the
httplib2shim removal.
Improved Python ee.Authenticate() error messages to give more guidance,
and fixed bugs.
September 28, 2022
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.
Refactored ee.data.getList() and ee.data.listImages() to call through to
ee.data.listAssets() exclusively.
July 13, 2022
Added support for Python 3.10 by removing the dependency on httplib2shim.
Added a localhost auth mode and introduced a ee.oauth.Flow class for
smoother integration with other client libraries.
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_apiparameter fromee.Initializeanddata.initializeon the Python client library. - Removed the deprecated
data.startProcessingmethod on the Python client library. UseexportImage,exportTableetc. instead. - Removed the
use_cloud_apiflag 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.
imageparameter may not be serialized, use anee.Imagedirectly.- Limits on total image size.
ee.data.getTileUrlsupports theurlFormatparameter 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
Updated authentication to work with oauth2client v2+ and a JSON-formatted credentials file.
Added a skipEmptyTiles option to Export.image.toDrive() and Export.image.toCloudStorage() to skip generating empty (i.e. fully-masked) image tiles.
February 03, 2017
Updated OAuth scope to FULL_CONTROL for Cloud Storage, to enable actions that require OWNER permissions.
October 27, 2016
- Added optional
shardSizeandfileDimensionsarguments 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
skipEmptyTilesargument 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.Rectanglewhen given a custom projection or geodesic state.
June 04, 2015
- Allowed
ee.MapLayerOverlaysto be named. - Added an
opt_dropNullsargument 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
Image.parseExpression()is no longer available for general use.Image.expression 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.
- 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.
December 04, 2014
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.
Added the ee.batch module to support batch task management and image and table export.
September 24, 2014
Added support for Python API authentication using a Google account.
July 18, 2014
Added a __version__ property to the ee package.
Fixed casting of numbers when calling the ee.String constructor.
June 20, 2014
Gave all API objects __eq__() and __hash__()
Allowed empty args list for Image.select().
April 24, 2014
- Fixed
Elementvariable promotion.- Improved consistency in type casting of different classes. - Fixed
Elementvariable promotion.
March 28, 2014
Improved automatic type casting logic and error messages.
February 18, 2014
- Changed the missing end bound in the
DateRangeconstructor to mean start bound + 1ms, not infinity. - Started to consistently interpret
DateRangeupper 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.Algorithmsentries 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.datamethods, 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
Stringclass to represent computations that return string values. - Fixed
Geometrymethods 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
Removed ImageCollection.mosaic_(), an internal method used to implement ImageCollection.mosaic().
Fixed ImageCollection.reduce() so it can be called as an instance method.
Fixed listing of static methods in the playground docs.
Added support for calling static API methods using the ClassName.methodName() syntax.
Fixed serialization of Collections with multiple filters.
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().
January 24, 2013
Fixed a bug that caused failing queries to raise NameError rather than EEException.