Skip to content

Releases: descarteslabs/descarteslabs-python

v0.18.0: Client release 0.18.0 (#4264)

18 Apr 19:18
Compare
Choose a tag to compare

Changed

  • Many old and obsolete examples were removed from the package.
  • Scene.ndarray, SceneCollection.stack, and SceneCollection.mosaic now will automatically mask alpha if the alpha band is available in the relevant scene(s), and will set mask_alpha to False if the alpha band does not exist.
  • FeatureCollection.add, FeatureCollection.upload, Vector.create_feature, Vector.create_features, and Vector.upload_features all accept a fix_geometry string argument that determines how to handle certain problem geometries including those which do not follow counter-clockwise winding order (which is required by the GeoJSON spec but not many popular tools). Allowed values are reject (reject invalid geometries with an error), fix (correct invalid geometries if possible and use this corrected value when creating the feature), and accept (the default) which will correct the geometry for internal use but retain the original geometry in the results.
    Vector.get_upload_results and Vector.get_upload_result now accept a pending parameter to include pending uploads in the results. Such pending results will have status: PENDING and, in lieu of a task id, the id attribute will contain the upload id as returned by Vector.upload_features
  • UploadTask.status no longer blocks until the upload task is completed, but rather returns the current status of the upload job, which may be PENDING, RUNNING, SUCCESS, or FAILURE.
  • The FutureTask.ready and UploadTask.ready property has been added to test whether the task has completed. A return value of True means that if get_result(wait=True) were to be called, it would return without blocking.
  • You can now export features to a storage data blob. To export from the vector client, use Vector.export_product_from_query() with a storage key and an optional query. This returns the task id of the export task. You can ask for status using Vector.get_export_results() for all export tasks or Vector.get_export_result() for a specific task by task id.
  • FeatureCollection has been extended with this functionality with a FeatureCollection.export() method that takes a storage key. This operates on the filter chain that FeatureCollection represents, or the full product if there is no filter chain. It returns an ExportTask which behaves similar to the FutureTask.
  • Catalog.upload_image() and Catalog.upload_ndarray() now will return an upload_id that can be used to query the status of that upload using Catalog.upload_result(). Note that the upload id is the image id and if you use identical image ids Catalog.upload_result() will only show the result of the most recent upload.

v0.17.3

07 Mar 16:59
Compare
Choose a tag to compare

Changed

  • Fixed issues with Catalog.upload_ndarray() under Windows
  • Added header to client requests to better debug retries

Minor changes

26 Feb 15:42
Compare
Choose a tag to compare

Changed

  • Tasks methods create_function, create_or_get_function, and new_group now have image as a required parameter
  • The name parameter is renamed to product_id in Vector.create_product, and FeatureCollection.create and FeatureCollection.copy. The 'name' parameter is renamed to new_product_id in Vector.create_product_from_query. Using name will continue to work, but will be removed completely in future versions.
  • The name parameter is no longer required, and is ignored for Vector.replace_product, Vector.update_product, FeatureCollection.update and FeatureCollection.replace. This parameter will be removed completely in future versions.

Added

  • Metadata.paged_search has been added and essentially supports the original behavior of Metadata.search prior to release 0.16.0.
    This method should generally be avoided in favor of Metadata.features (or Metadata.search).

Minor bugfixes

11 Feb 17:34
Compare
Choose a tag to compare

Changed

  • Fixed typo in UploadTask.status which caused exception when handling certain failure conditions
  • FeatureCollection.upload parameter max_errors was not being passed to Vector client.
  • Ensure cloudpickle==0.4.0 is version used when creating Tasks.
  • Eliminate redundant queries from FeatureCollection.list.

Vector and Storage enhancements

07 Feb 20:09
Compare
Choose a tag to compare

Added

  • FeatureCollection.upload and Vector.upload_features now accept an optional max_errors parameter to control how many errors are acceptable before declaring an upload a failure.
  • UploadTask (as returned by FeatureCollection.upload and Vector.list_uploads) now has added attributes to better identify what was processed and what errors occurred.
  • Storage now has added methods set_file and get_file to allow for better uploading and downloading, respectively, of large files.
  • Storage class now has an exists() method that checks whether an object exists in storage at the location of a given key and returns a boolean.
  • Scenes.search allows limit=None
  • FeatureCollection.delete_features added to support deleting Features that match a filter
  • FeatureCollection.delete_features and FeatureCollection.wait_for_copy now use AsyncJob to poll for asynchronous job completion.
  • Vector.delete_features_from_query and Vector.get_delete_features_status added to support new FeatureCollection and AsyncJob methods.

Changed

  • Fixed tasks bugs when including modules with relative paths in sys.path

Tasks enhancements

28 Jan 17:04
Compare
Choose a tag to compare

Added

  • Tasks now support passing modules, data and requirements along with the function code, allowing for a more complex and customized execution environment.
  • Vector search query results now report their total number of results by means of the standard len() function.

Changed

  • Metadata.search no longer has a 10,000-item limit, and the number of items returned will be closer to limit.

Vector enhancements

10 Jan 00:01
Compare
Choose a tag to compare

Added

  • Raster client can now handle arbitrarily large numbers of tiles generated from a shape using the new iter_dltiles_from_shape() method which allows you to iterate over large numbers of tiles in a time- and memory-efficient manner. Similarly the existing dltiles_from_shape() method can now handle arbitrarily large numbers of tiles although it can be very slow.
  • Vector client upload_features() can now upload contents of a stream (e.g. io.IOBase derivative such as io.StringIO) as well as the contents of a named file.
  • Vector FeatureCollection add() method can now handle an arbitrary number of Features. Use of the upload_features() method is still encouraged for large collections.
  • Vector client now supports creating a new product from the results of a query against an existing product with the create_product_from_query() method. This support is also accessible via the new FeatureCollection.copy() method.
  • XYZTile GeoContext class, helpful for rendering to web maps that use XYZ-style tiles in a spherical Mercator CRS.

Changed

  • Tasks client FutureTask now instantiates a client if none provided (the default).
  • Catalog client methods now properly handle add_namespace parameter.
  • Vector Feature now includes valid geojson type 'Feature'.
  • Tasks client now raises new GroupTerminalException if a task group stops accepting tasks.
  • General documentation fixes.

Raster processing level

26 Nov 21:58
Compare
Choose a tag to compare

Added

  • Scenes and raster clients have a processing_level parameter that can be used to turn on surface reflectance processing for products that support it

Scenes Bounds Updates

08 Nov 00:05
Compare
Choose a tag to compare

Changed

  • scenes.GeoContext: better defaults and bounds_crs parameter
    • bounds are no longer limited to WGS84, but can be expressed in any bounds_crs
    • New Scene.default_ctx uses a Scene's geotrans to more accurately determine a GeoContext that will result in no warping of the original data, better handling sinusoidal and other non-rectilinear coordinate reference systems.
    • Important: the default GeoContexts will now return differently-sized rasters than before!
      They will now be more accurate to the original, unwarped data, but if you were relying on the old defaults, you should now explicitly set the bounds to geometry.bounds,
      bounds_crs to "EPSG:4326", and align_pixels to True.
  • Scene.coverage and SceneCollection.filter_coverage accept any geometry-like object, not just a GeoContext.

GPU Tasks and Vectors Bulk Upload Objects

06 Nov 19:39
Compare
Choose a tag to compare

Changed

  • FutureTask inheritance changed from dict to object.

Added

  • Can now specify a GPU parameter for tasks.
  • Vectors.upload allows you to upload a JSON newline delimited file.
  • Vectors.list_uploads allows you to list all uploads for a vector product.
  • UploadTask contains the information about an upload and is returned by both methods.