|
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