This is an automated email from the ASF dual-hosted git repository.

jiayu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sedona.git


The following commit(s) were added to refs/heads/master by this push:
     new 59b0355923 [GH-2314] Remove unexpected mandatory Python dependencies 
(#2320)
59b0355923 is described below

commit 59b03559233a142503b52dbb9ba4ff03a19b3afd
Author: Jia Yu <[email protected]>
AuthorDate: Fri Aug 29 00:25:18 2025 -0700

    [GH-2314] Remove unexpected mandatory Python dependencies (#2320)
    
    * Remove mandatory PyStac dependency
    
    * Remove the unexpected Raster imports
    
    * Fix failed tests
---
 python/sedona/spark/__init__.py               |  3 ---
 python/sedona/spark/stac/client.py            |  3 +--
 python/sedona/spark/stac/collection_client.py | 11 +++++++++--
 python/tests/test_path_compatibility.py       |  9 ---------
 python/tests/test_path_compatibility_all.py   |  5 -----
 5 files changed, 10 insertions(+), 21 deletions(-)

diff --git a/python/sedona/spark/__init__.py b/python/sedona/spark/__init__.py
index 9f7651107f..707aa24c95 100644
--- a/python/sedona/spark/__init__.py
+++ b/python/sedona/spark/__init__.py
@@ -67,9 +67,6 @@ from sedona.spark.stats.hotspot_detection.getis_ord import 
g_local
 from sedona.spark.stats.weighting import add_distance_band_column
 from sedona.spark.stats.weighting import add_binary_distance_band_column
 from sedona.spark.stats.weighting import add_weighted_distance_band_column
-from sedona.spark.raster.awt_raster import AWTRaster
-from sedona.spark.raster.data_buffer import DataBuffer
-from sedona.spark.raster.meta import SampleDimension
 from sedona.spark.utils import KryoSerializer, SedonaKryoRegistrator
 from sedona.spark.utils.adapter import Adapter
 from sedona.spark.utils.spatial_rdd_parser import GeoData
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():
diff --git a/python/tests/test_path_compatibility.py 
b/python/tests/test_path_compatibility.py
index 1217b78130..56acfb11f4 100644
--- a/python/tests/test_path_compatibility.py
+++ b/python/tests/test_path_compatibility.py
@@ -62,10 +62,6 @@ from sedona.geoarrow import create_spatial_dataframe, 
dataframe_to_arrow
 from sedona.utils import KryoSerializer, SedonaKryoRegistrator
 from sedona.maps import SedonaKepler, SedonaPyDeck
 
-from sedona.raster.awt_raster import AWTRaster
-from sedona.raster.data_buffer import DataBuffer
-from sedona.raster.meta import SampleDimension
-
 
 class TestPathCompatibility(TestBase):
 
@@ -164,8 +160,3 @@ class TestPathCompatibility(TestBase):
         # Test Map imports
         assert SedonaKepler is not None
         assert SedonaPyDeck is not None
-
-    def test_raster_imports(self):
-        assert AWTRaster is not None
-        assert DataBuffer is not None
-        assert SampleDimension is not None
diff --git a/python/tests/test_path_compatibility_all.py 
b/python/tests/test_path_compatibility_all.py
index a4eff96a23..35a756c4b8 100644
--- a/python/tests/test_path_compatibility_all.py
+++ b/python/tests/test_path_compatibility_all.py
@@ -115,8 +115,3 @@ class TestPathCompatibilityAll(TestBase):
         # Test Map imports
         assert SedonaKepler is not None
         assert SedonaPyDeck is not None
-
-    def test_raster_imports(self):
-        assert AWTRaster is not None
-        assert DataBuffer is not None
-        assert SampleDimension is not None

Reply via email to