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():

Reply via email to