Skip to main content

Read, download, and write STAC assets across platforms and providers

Project description

stac-asset

GitHub Workflow Status Read the Docs PyPI

Download STAC Assets using a variety of authentication schemes.

Installation

pip install stac-asset

Usage

Here's how to download a STAC Item and all of its assets to a local directory using the top-level function. The correct client will be guessed from the assets' href. Each asset's href will be updated to point to the local file.

import stac_asset

href = "https://raw.githubusercontent.com/radiantearth/stac-spec/master/examples/simple-item.json"
await stac_asset.download_item_from_href(href, ".")

To download an item using the command line:

python -m stac_asset https://raw.githubusercontent.com/radiantearth/stac-spec/master/examples/simple-item.json .

See the documentation for more examples and complete API documentation.

Clients

This library comes with several clients, each tailored for a specific data provider model and authentication scheme. Some clients require some setup before use; they are called out in this table, and the details are provided below.

Name Description Notes
HttpClient Simple HTTP client without any authentication
S3Client Simple S3 client Use requester_pays=True in the client initializer to enable access to requester pays buckets, e.g. USGS landsat's public AWS archive
FilesystemClient Moves files from place to place on a local filesystem Mostly used for testing
PlanetaryComputerClient Signs urls with the Planetary Computer Authentication API No additional setup required, works out of the box
UsgsErosClient Uses a token-based authentication workflow to download data, e.g. landsat, from USGS EROS Requires creation of a personal access token, see section below
EarthdataClient Uses a token-based authentication to download data, from some Earthdata providers, e.g. DAACs Requires creation of a personal access token, see section below

S3Client

To use the requester_pays option, you need to configure your AWS credentials. See the AWS documentation for instructions.

USGS EROS

The USGS EROS system, which hosts landsat data, requires a personal access token to download assets. Here's how to create and use your personal access token with stac-asset:

  1. Create a new personal access token
  2. Set two environment variables:
    • USGS_EROS_USERNAME to your username (found in the top right of the web UI)
    • USGS_EROS_PAT to your personal access token
  3. Use UsgsErosClient.default() to create a new client.

You can also provide your username and password to the UsgsErosClient.login method.

Earthdata

You'll need a personal access token.

  1. Create a new personal access token by going to https://urs.earthdata.nasa.gov/profile and then clicking "Generate Token" (you'll need to log in).
  2. Set an enviornment variable named EARTHDATA_PAT to your token.
  3. Use EarthdataClient.default() to create a new client.

You can also provide your token directly to EarthdataClient.login().

Design goals

As determined during a meeting at the Element 84 offices (formerly Azavea offices) on 2023-05-24.

  • async-first
  • Allow range requests
  • Download functionality
  • Update STAC items to point to new hrefs on download
  • Allow byte-stream access
  • Protocols:
    • http
    • s3
      • requestor pays
      • custom endpoint
    • custom authentication
      • Planetary Computer
      • USGS EROS
      • NASA
  • Copy directly from source to destination ("skip local")
  • Add new assets to an item
  • Update an existing asset
  • Delete assets
  • Templated paths on download
  • (possible) Support the file extension's local path
  • Checksum validation and creation
  • CLI

Contributing

Use Github issues to report bugs and request new features. Use Github pull requests to fix bugs and propose new features.

Developing

Clone, install with the dev dependencies, and install pre-commit:

git clone git@github.com:gadomski/stac-asset.git
cd stac-asset
pip install '.[dev]'
pre-commit install

Testing

All network-touching tests are disabled by default, because we can't use pytest-vcr (https://github.com/kevin1024/vcrpy/issues/597), and repeatedly hitting the network during testing and CI is bad behavior. To enable network-touching tests:

pytest --network-access

Some tests are client-specific and need your environment to be configured correctly. See each client's documentation for instructions on setting up your environment for each client. If your environment is not configured for a certain client, that client's tests are skipped.

Docs

Install the documentation dependencies:

pip install -e '.[docs]'

Then, build the docs:

make -C docs html && open docs/_build/html/index.html

It can be handy to use sphinx-autobuild if you're doing a lot of doc work:

pip install sphinx-autobuild
sphinx-autobuild docs docs/_build/html

License

Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stac-asset-0.0.3.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

stac_asset-0.0.3-py3-none-any.whl (19.8 kB view details)

Uploaded Python 3

File details

Details for the file stac-asset-0.0.3.tar.gz.

File metadata

  • Download URL: stac-asset-0.0.3.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for stac-asset-0.0.3.tar.gz
Algorithm Hash digest
SHA256 f10b44d88363914f507ec527f74cbcc87f64a292e631d9a2a1dc0709fdb10e46
MD5 b514611b6767abe6c0a64490dc92d107
BLAKE2b-256 858e1939796c48a73a3db3e05db382353e85a0482b03b24f81a21986cc8dfcc5

See more details on using hashes here.

File details

Details for the file stac_asset-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: stac_asset-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 19.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for stac_asset-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c9b0c97b6ac0d42f7f2a8a81f5ecdbb2469cb2006116840d6c997e76bd7489ab
MD5 a8e5707373f655559d0a0f2c984a5044
BLAKE2b-256 27a514ac78e7b9e79d29619a7d616291237b478457f1f0131625a12329cc2031

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page