rasteret.cloud¶
Cloud provider configuration and URL signing.
cloud
¶
Classes¶
CloudConfig
dataclass
¶
CloudConfig(
provider: str,
requester_pays: bool = False,
region: str = "us-west-2",
url_patterns: dict[str, str] = dict(),
)
Storage configuration for a data source.
Built-in configs may be pre-registered for some well-known data sources that
need URL rewriting or requester-pays access.
Register your own via :meth:register::
CloudConfig.register("my-collection", CloudConfig(
provider="aws", requester_pays=True, region="eu-west-1",
))
Functions¶
register
classmethod
¶
register(collection_id: str, config: CloudConfig) -> None
get_config
classmethod
¶
get_config(data_source: str) -> CloudConfig | None
StorageBackend
¶
Bases: Protocol
Minimal protocol for range-based reads from cloud storage.
Implement this to plug in a custom I/O backend (e.g. obstore, fsspec, or a mocked reader for tests).
ObstoreBackend
¶
ObstoreBackend(
store: object,
url_prefix: str = "",
client_options: dict[str, object] | None = None,
)
StorageBackend backed by the obstore library.
Wraps obstore.get_range_async / obstore.get_ranges_async.
Pass any obstore.store.*Store instance.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
store
|
obstore Store
|
Any obstore store ( |
required |
url_prefix
|
str
|
URL prefix to strip before passing paths to obstore. obstore
expects paths relative to the store root, but rasteret works with
full URLs. For example, if COG URLs look like
|
''
|
client_options
|
dict
|
|
None
|
Source code in src/rasteret/cloud.py
Functions¶
rewrite_url
¶
rewrite_url(url: str, config: CloudConfig | None) -> str
Apply URL pattern rewrites without presigning.
Pure string transformation. Returns the original URL if no
patterns match or config is None.
Source code in src/rasteret/cloud.py
s3_overrides_from_config
¶
s3_overrides_from_config(
config: CloudConfig | None,
) -> dict[str, dict[str, str]]
Derive per-bucket S3Store config from a :class:CloudConfig.
Returns a mapping of {bucket: {config_key: value}} suitable for
passing to :class:~rasteret.fetch.cog._AutoObstoreBackend.
Example: CloudConfig(requester_pays=True, url_patterns={...})
yields {"usgs-landsat": {"request_payer": "true", "region": "us-west-2"}}.
Source code in src/rasteret/cloud.py
backend_config_from_cloud_config
¶
backend_config_from_cloud_config(
config: CloudConfig | None,
) -> dict
Extract :func:~rasteret.fetch.cog._create_obstore_backend kwargs from a CloudConfig.