PyGeoFetch 1.0.5__tar.gz → 1.0.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/PKG-INFO +1 -1
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/__init__.py +2 -2
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/main.py +2 -2
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/models/satellite_data.py +1 -1
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/copernicus.py +14 -2
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/sentinel_hub.py +1 -1
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch.egg-info/PKG-INFO +1 -1
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pyproject.toml +1 -1
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/LICENSE +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/README.md +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/__init__.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/auth_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/config_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/download_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/index_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/pipeline_process_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/postprocess_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/preprocess_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/sar_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/cli/search_commands.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/config/__init__.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/config/defaults.yaml +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/config/settings.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/__init__.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/authenticator.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/cache_manager.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/downloader.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/engine.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/logging.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/orbits.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/scheduler.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/core/searcher.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/models/__init__.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/models/download_task.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/models/search_query.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/models/user_auth.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/__init__.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/base.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/batch.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/indices.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/pipeline.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/postprocessor.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/preprocessor.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/processing/sar.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/__init__.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/airbus_oneatlas.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/alaska_satellite_facility.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/aws_earth.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/base.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/digitalglobe.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/earth_explorer_additional.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/element84.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/esa_scihub.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/geoserver_generic.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/google_earth_engine.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/inpe_cbers.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/isro_bhuvan.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/jaxa_earth.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/maxar_gbdx.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/nasa_earthdata.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/nasa_earthdata_cloud.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/noaa_big_data.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/opentopography.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/planet.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/planetary_computer.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/terrabotics.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/providers/usgs.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/utils/__init__.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/utils/file_utils.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/utils/geo_utils.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/utils/logging_setup.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/utils/retry_handler.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch/utils/validators.py +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch.egg-info/SOURCES.txt +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch.egg-info/dependency_links.txt +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch.egg-info/entry_points.txt +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch.egg-info/not-zip-safe +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch.egg-info/requires.txt +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/pygeofetch.egg-info/top_level.txt +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/setup.cfg +0 -0
- {pygeofetch-1.0.5 → pygeofetch-1.0.6}/tests/test_pgv_integration_contract.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
PyGeoFetch v1.0.
|
|
2
|
+
PyGeoFetch v1.0.6 — Universal Satellite Data Pipeline.
|
|
3
3
|
|
|
4
4
|
Unified access to 22+ satellite data providers with a consistent
|
|
5
5
|
Python API and CLI. Supports authentication management, federated search,
|
|
@@ -30,7 +30,7 @@ CLI::
|
|
|
30
30
|
pygeofetch doctor
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
|
-
__version__ = "1.0.
|
|
33
|
+
__version__ = "1.0.6"
|
|
34
34
|
__author__ = "PyGeoFetch Contributors"
|
|
35
35
|
__license__ = "MIT"
|
|
36
36
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"""
|
|
2
|
-
PyGeoFetch CLI v1.0.
|
|
2
|
+
PyGeoFetch CLI v1.0.6 main entry point.
|
|
3
3
|
|
|
4
4
|
Full command reference:
|
|
5
5
|
pygeofetch auth — credential management
|
|
@@ -59,7 +59,7 @@ def cli(ctx: click.Context, log_level: str, log_file: str, log_format: str,
|
|
|
59
59
|
config_file: str) -> None:
|
|
60
60
|
"""
|
|
61
61
|
\b
|
|
62
|
-
PyGeoFetch v1.0.
|
|
62
|
+
PyGeoFetch v1.0.6 — Universal Satellite Data Pipeline
|
|
63
63
|
===========================================================
|
|
64
64
|
Unified access to 22+ satellite data providers.
|
|
65
65
|
|
|
@@ -290,7 +290,7 @@ class SatelliteData(BaseModel):
|
|
|
290
290
|
"""
|
|
291
291
|
item: Dict[str, Any] = {
|
|
292
292
|
"type": "Feature",
|
|
293
|
-
"stac_version": "1.0.
|
|
293
|
+
"stac_version": "1.0.6",
|
|
294
294
|
"stac_extensions": self.stac_extensions,
|
|
295
295
|
"id": self.id,
|
|
296
296
|
"geometry": self.geometry or self._bbox_to_geometry(),
|
|
@@ -433,8 +433,6 @@ class CopernicusProvider(AbstractBaseProvider):
|
|
|
433
433
|
filters.append(f"({level_filter})")
|
|
434
434
|
|
|
435
435
|
# Product type filter — GRD, SLC, GRD-COG, OCN (Sentinel-1)
|
|
436
|
-
# product_type comes from either the query directly or was inferred
|
|
437
|
-
# from the STAC collection ID (e.g. "sentinel-1-grd" → "GRD")
|
|
438
436
|
effective_pt = product_type or getattr(query, "product_type", None)
|
|
439
437
|
if effective_pt:
|
|
440
438
|
filters.append(
|
|
@@ -443,6 +441,20 @@ class CopernicusProvider(AbstractBaseProvider):
|
|
|
443
441
|
f"att/OData.CSC.StringAttribute/Value eq '{effective_pt.upper()}')"
|
|
444
442
|
)
|
|
445
443
|
|
|
444
|
+
# ── Exclude COG (Cloud Optimized GeoTIFF) products ───────────────────
|
|
445
|
+
# Copernicus stores two variants of Sentinel-1 GRD:
|
|
446
|
+
# - Standard SAFE packages (S1A_IW_GRDH_..._SAFE)
|
|
447
|
+
# → downloadable via OData Products/$value with Bearer token
|
|
448
|
+
# - COG reformats (S1A_IW_GRDH_..._COG.SAFE)
|
|
449
|
+
# → stored on S3, NOT downloadable via OData → returns HTTP 422
|
|
450
|
+
#
|
|
451
|
+
# The STAC sentinel-1-grd collection includes BOTH. We must exclude
|
|
452
|
+
# COG products when we need direct OData download (GRD and SLC use cases).
|
|
453
|
+
# If the caller explicitly requested COG (product_type='GRD-COG'), skip.
|
|
454
|
+
if is_sar and (effective_pt or "").upper() not in ("GRD-COG", "OCN"):
|
|
455
|
+
filters.append("not endswith(Name, '_COG.SAFE')")
|
|
456
|
+
# ─────────────────────────────────────────────────────────────────────
|
|
457
|
+
|
|
446
458
|
# Polarisation filter (VV+VH, HH, etc.)
|
|
447
459
|
pol = getattr(query, "polarisation", None)
|
|
448
460
|
if pol:
|
|
@@ -107,7 +107,7 @@ class SentinelHubProvider(AbstractBaseProvider):
|
|
|
107
107
|
payload["filter"] = {"maxCloudCoverage": query.cloud_cover_max}
|
|
108
108
|
try:
|
|
109
109
|
resp = httpx.post(
|
|
110
|
-
f"{self.BASE_URL}/api/v1/catalog/1.0.
|
|
110
|
+
f"{self.BASE_URL}/api/v1/catalog/1.0.6/search",
|
|
111
111
|
json=payload, headers={"Authorization": f"Bearer {self._session.access_token}"},
|
|
112
112
|
timeout=self.config.get("timeout", 60),
|
|
113
113
|
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|