This is an automated email from the ASF dual-hosted git repository. jiayu pushed a commit to branch stac-dependency in repository https://gitbox.apache.org/repos/asf/sedona.git
commit e0bdcd994f402923cf6765ce00d693c816c19989 Author: Jia Yu <[email protected]> AuthorDate: Thu Aug 28 23:03:13 2025 -0700 Remove mandatory PyStac dependency --- python/sedona/spark/stac/client.py | 3 +-- python/sedona/spark/stac/collection_client.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/python/sedona/spark/stac/client.py b/python/sedona/spark/stac/client.py index e7a9405a01..303994bfa4 100644 --- a/python/sedona/spark/stac/client.py +++ b/python/sedona/spark/stac/client.py @@ -19,7 +19,6 @@ from typing import Union, Optional, Iterator, List from sedona.spark.stac.collection_client import CollectionClient import datetime as python_datetime -from pystac import Item as PyStacItem from shapely.geometry.base import BaseGeometry from pyspark.sql import DataFrame @@ -76,7 +75,7 @@ class Client: datetime: Optional[Union[str, python_datetime.datetime, list]] = None, max_items: Optional[int] = None, return_dataframe: bool = True, - ) -> Union[Iterator[PyStacItem], DataFrame]: + ) -> Union[Iterator, DataFrame]: """ Searches for items in the specified collection with optional filters. diff --git a/python/sedona/spark/stac/collection_client.py b/python/sedona/spark/stac/collection_client.py index 5efd6f93de..15eabe7929 100644 --- a/python/sedona/spark/stac/collection_client.py +++ b/python/sedona/spark/stac/collection_client.py @@ -22,7 +22,6 @@ from typing import Optional import datetime as python_datetime from pyspark.sql import DataFrame, SparkSession from pyspark.sql.types import dt -from pystac import Item as PyStacItem from shapely.geometry.base import BaseGeometry @@ -320,7 +319,7 @@ class CollectionClient: ] = None, datetime: Optional[Union[str, python_datetime.datetime, list]] = None, max_items: Optional[int] = None, - ) -> Iterator[PyStacItem]: + ) -> Iterator: """ Returns an iterator of items. Each item has the supplied item ID and/or optional spatial and temporal extents. @@ -343,6 +342,14 @@ class CollectionClient: try: df = self.load_items_df(bbox, geometry, datetime, ids, max_items) + # Import pystac only when needed + try: + from pystac import Item as PyStacItem + except ImportError as e: + raise ImportError( + "STAC functionality requires pystac. Please install pystac: pip install pystac" + ) from e + # Collect the filtered rows and convert them to PyStacItem objects items = [] for row in df.collect():
