|
1 | 1 | """The power of Rust for the Python STAC ecosystem."""
|
2 | 2 |
|
| 3 | +from collections.abc import AsyncIterator |
3 | 4 | from pathlib import Path
|
4 |
| -from typing import Any, AsyncIterator, Literal, Optional, Tuple |
| 5 | +from typing import Any, Literal |
5 | 6 |
|
6 | 7 | import arro3.core
|
7 | 8 |
|
@@ -45,18 +46,18 @@ class DuckdbClient:
|
45 | 46 | self,
|
46 | 47 | href: str,
|
47 | 48 | *,
|
48 |
| - ids: Optional[str | list[str]] = None, |
49 |
| - collections: Optional[str | list[str]] = None, |
50 |
| - intersects: Optional[str | dict[str, Any]] = None, |
51 |
| - limit: Optional[int] = None, |
52 |
| - offset: Optional[int] = None, |
53 |
| - bbox: Optional[list[float]] = None, |
54 |
| - datetime: Optional[str] = None, |
55 |
| - include: Optional[str | list[str]] = None, |
56 |
| - exclude: Optional[str | list[str]] = None, |
57 |
| - sortby: Optional[str | list[str | dict[str, str]]] = None, |
58 |
| - filter: Optional[str | dict[str, Any]] = None, |
59 |
| - query: Optional[dict[str, Any]] = None, |
| 49 | + ids: str | list[str] | None = None, |
| 50 | + collections: str | list[str] | None = None, |
| 51 | + intersects: str | dict[str, Any] | None = None, |
| 52 | + limit: int | None = None, |
| 53 | + offset: int | None = None, |
| 54 | + bbox: list[float] | None = None, |
| 55 | + datetime: str | None = None, |
| 56 | + include: str | list[str] | None = None, |
| 57 | + exclude: str | list[str] | None = None, |
| 58 | + sortby: str | list[str | dict[str, str]] | None = None, |
| 59 | + filter: str | dict[str, Any] | None = None, |
| 60 | + query: dict[str, Any] | None = None, |
60 | 61 | **kwargs: str,
|
61 | 62 | ) -> list[dict[str, Any]]:
|
62 | 63 | """Search a stac-geoparquet file with duckdb, returning a list of items.
|
@@ -94,18 +95,18 @@ class DuckdbClient:
|
94 | 95 | self,
|
95 | 96 | href: str,
|
96 | 97 | *,
|
97 |
| - ids: Optional[str | list[str]] = None, |
98 |
| - collections: Optional[str | list[str]] = None, |
99 |
| - intersects: Optional[str | dict[str, Any]] = None, |
100 |
| - limit: Optional[int] = None, |
101 |
| - offset: Optional[int] = None, |
102 |
| - bbox: Optional[list[float]] = None, |
103 |
| - datetime: Optional[str] = None, |
104 |
| - include: Optional[str | list[str]] = None, |
105 |
| - exclude: Optional[str | list[str]] = None, |
106 |
| - sortby: Optional[str | list[str | dict[str, str]]] = None, |
107 |
| - filter: Optional[str | dict[str, Any]] = None, |
108 |
| - query: Optional[dict[str, Any]] = None, |
| 98 | + ids: str | list[str] | None = None, |
| 99 | + collections: str | list[str] | None = None, |
| 100 | + intersects: str | dict[str, Any] | None = None, |
| 101 | + limit: int | None = None, |
| 102 | + offset: int | None = None, |
| 103 | + bbox: list[float] | None = None, |
| 104 | + datetime: str | None = None, |
| 105 | + include: str | list[str] | None = None, |
| 106 | + exclude: str | list[str] | None = None, |
| 107 | + sortby: str | list[str | dict[str, str]] | None = None, |
| 108 | + filter: str | dict[str, Any] | None = None, |
| 109 | + query: dict[str, Any] | None = None, |
109 | 110 | **kwargs: str,
|
110 | 111 | ) -> arro3.core.Table | None:
|
111 | 112 | """Search a stac-geoparquet file with duckdb, returning an arrow table
|
@@ -179,7 +180,7 @@ def collection_from_id_and_items(id: str, items: list[Item]) -> Collection:
|
179 | 180 | A STAC collection
|
180 | 181 | """
|
181 | 182 |
|
182 |
| -def migrate(value: dict[str, Any], version: Optional[str] = None) -> dict[str, Any]: |
| 183 | +def migrate(value: dict[str, Any], version: str | None = None) -> dict[str, Any]: |
183 | 184 | """
|
184 | 185 | Migrates a STAC dictionary to another version.
|
185 | 186 |
|
@@ -264,19 +265,19 @@ def to_arrow(
|
264 | 265 | async def search(
|
265 | 266 | href: str,
|
266 | 267 | *,
|
267 |
| - intersects: Optional[str | dict[str, Any]] = None, |
268 |
| - ids: Optional[str | list[str]] = None, |
269 |
| - collections: Optional[str | list[str]] = None, |
270 |
| - max_items: Optional[int] = None, |
271 |
| - limit: Optional[int] = None, |
272 |
| - bbox: Optional[list[float]] = None, |
273 |
| - datetime: Optional[str] = None, |
274 |
| - include: Optional[str | list[str]] = None, |
275 |
| - exclude: Optional[str | list[str]] = None, |
276 |
| - sortby: Optional[str | list[str | dict[str, str]]] = None, |
277 |
| - filter: Optional[str | dict[str, Any]] = None, |
278 |
| - query: Optional[dict[str, Any]] = None, |
279 |
| - use_duckdb: Optional[bool] = None, |
| 268 | + intersects: str | dict[str, Any] | None = None, |
| 269 | + ids: str | list[str] | None = None, |
| 270 | + collections: str | list[str] | None = None, |
| 271 | + max_items: int | None = None, |
| 272 | + limit: int | None = None, |
| 273 | + bbox: list[float] | None = None, |
| 274 | + datetime: str | None = None, |
| 275 | + include: str | list[str] | None = None, |
| 276 | + exclude: str | list[str] | None = None, |
| 277 | + sortby: str | list[str | dict[str, str]] | None = None, |
| 278 | + filter: str | dict[str, Any] | None = None, |
| 279 | + query: dict[str, Any] | None = None, |
| 280 | + use_duckdb: bool | None = None, |
280 | 281 | **kwargs: str,
|
281 | 282 | ) -> list[dict[str, Any]]:
|
282 | 283 | """
|
@@ -333,21 +334,21 @@ async def search_to(
|
333 | 334 | outfile: str,
|
334 | 335 | href: str,
|
335 | 336 | *,
|
336 |
| - intersects: Optional[str | dict[str, Any]] = None, |
337 |
| - ids: Optional[str | list[str]] = None, |
338 |
| - collections: Optional[str | list[str]] = None, |
339 |
| - max_items: Optional[int] = None, |
340 |
| - limit: Optional[int] = None, |
341 |
| - bbox: Optional[list[float]] = None, |
342 |
| - datetime: Optional[str] = None, |
343 |
| - include: Optional[str | list[str]] = None, |
344 |
| - exclude: Optional[str | list[str]] = None, |
345 |
| - sortby: Optional[str | list[str | dict[str, str]]] = None, |
346 |
| - filter: Optional[str | dict[str, Any]] = None, |
347 |
| - query: Optional[dict[str, Any]] = None, |
348 |
| - format: Optional[str] = None, |
349 |
| - options: Optional[list[Tuple[str, str]]] = None, |
350 |
| - use_duckdb: Optional[bool] = None, |
| 337 | + intersects: str | dict[str, Any] | None = None, |
| 338 | + ids: str | list[str] | None = None, |
| 339 | + collections: str | list[str] | None = None, |
| 340 | + max_items: int | None = None, |
| 341 | + limit: int | None = None, |
| 342 | + bbox: list[float] | None = None, |
| 343 | + datetime: str | None = None, |
| 344 | + include: str | list[str] | None = None, |
| 345 | + exclude: str | list[str] | None = None, |
| 346 | + sortby: str | list[str | dict[str, str]] | None = None, |
| 347 | + filter: str | dict[str, Any] | None = None, |
| 348 | + query: dict[str, Any] | None = None, |
| 349 | + format: str | None = None, |
| 350 | + store: ObjectStore | None = None, |
| 351 | + use_duckdb: bool | None = None, |
351 | 352 | ) -> int:
|
352 | 353 | """
|
353 | 354 | Searches a STAC API server and saves the result to an output file.
|
@@ -385,7 +386,7 @@ async def search_to(
|
385 | 386 | It is recommended to use filter instead, if possible.
|
386 | 387 | format: The output format. If none, will be inferred from
|
387 | 388 | the outfile extension, and if that fails will fall back to compact JSON.
|
388 |
| - options: Configuration values to pass to the object store backend. |
| 389 | + store: An optional [ObjectStore][] |
389 | 390 | use_duckdb: Query with DuckDB. If None and the href has a
|
390 | 391 | 'parquet' or 'geoparquet' extension, will be set to True. Defaults
|
391 | 392 | to None.
|
|
0 commit comments