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