PyGeoFetch 1.0.8__tar.gz → 1.1.0__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.
Files changed (84) hide show
  1. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/CHANGELOG.md +2 -2
  2. {pygeofetch-1.0.8/pygeofetch.egg-info → pygeofetch-1.1.0}/PKG-INFO +90 -90
  3. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/README.md +89 -89
  4. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/__init__.py +2 -2
  5. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/main.py +2 -2
  6. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/meta.yaml +1 -1
  7. {pygeofetch-1.0.8 → pygeofetch-1.1.0/pygeofetch.egg-info}/PKG-INFO +90 -90
  8. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pyproject.toml +1 -1
  9. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/LICENSE +0 -0
  10. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/MANIFEST.in +0 -0
  11. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/__init__.py +0 -0
  12. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/auth_commands.py +0 -0
  13. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/config_commands.py +0 -0
  14. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/download_commands.py +0 -0
  15. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/index_commands.py +0 -0
  16. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/pipeline_process_commands.py +0 -0
  17. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/postprocess_commands.py +0 -0
  18. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/preprocess_commands.py +0 -0
  19. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/sar_commands.py +0 -0
  20. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/cli/search_commands.py +0 -0
  21. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/config/__init__.py +0 -0
  22. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/config/defaults.yaml +0 -0
  23. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/config/settings.py +0 -0
  24. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/__init__.py +0 -0
  25. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/authenticator.py +0 -0
  26. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/cache_manager.py +0 -0
  27. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/downloader.py +0 -0
  28. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/engine.py +0 -0
  29. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/logging.py +0 -0
  30. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/orbits.py +0 -0
  31. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/scheduler.py +0 -0
  32. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/core/searcher.py +0 -0
  33. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/models/__init__.py +0 -0
  34. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/models/download_task.py +0 -0
  35. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/models/satellite_data.py +0 -0
  36. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/models/search_query.py +0 -0
  37. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/models/user_auth.py +0 -0
  38. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/__init__.py +0 -0
  39. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/base.py +0 -0
  40. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/batch.py +0 -0
  41. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/indices.py +0 -0
  42. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/pipeline.py +0 -0
  43. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/postprocessor.py +0 -0
  44. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/preprocessor.py +0 -0
  45. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/processing/sar.py +0 -0
  46. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/__init__.py +0 -0
  47. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/airbus_oneatlas.py +0 -0
  48. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/alaska_satellite_facility.py +0 -0
  49. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/aws_earth.py +0 -0
  50. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/base.py +0 -0
  51. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/copernicus.py +0 -0
  52. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/digitalglobe.py +0 -0
  53. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/earth_explorer_additional.py +0 -0
  54. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/element84.py +0 -0
  55. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/esa_scihub.py +0 -0
  56. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/geoserver_generic.py +0 -0
  57. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/google_earth_engine.py +0 -0
  58. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/inpe_cbers.py +0 -0
  59. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/isro_bhuvan.py +0 -0
  60. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/jaxa_earth.py +0 -0
  61. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/maxar_gbdx.py +0 -0
  62. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/nasa_earthdata.py +0 -0
  63. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/nasa_earthdata_cloud.py +0 -0
  64. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/noaa_big_data.py +0 -0
  65. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/opentopography.py +0 -0
  66. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/planet.py +0 -0
  67. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/planetary_computer.py +0 -0
  68. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/sentinel_hub.py +0 -0
  69. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/terrabotics.py +0 -0
  70. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/providers/usgs.py +0 -0
  71. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/utils/__init__.py +0 -0
  72. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/utils/file_utils.py +0 -0
  73. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/utils/geo_utils.py +0 -0
  74. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/utils/logging_setup.py +0 -0
  75. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/utils/retry_handler.py +0 -0
  76. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch/utils/validators.py +0 -0
  77. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch.egg-info/SOURCES.txt +0 -0
  78. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch.egg-info/dependency_links.txt +0 -0
  79. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch.egg-info/entry_points.txt +0 -0
  80. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch.egg-info/not-zip-safe +0 -0
  81. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch.egg-info/requires.txt +0 -0
  82. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/pygeofetch.egg-info/top_level.txt +0 -0
  83. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/setup.cfg +0 -0
  84. {pygeofetch-1.0.8 → pygeofetch-1.1.0}/tests/test_pgv_integration_contract.py +0 -0
@@ -1,9 +1,9 @@
1
1
  # Changelog
2
2
 
3
3
  All notable changes to PyGeoFetch are documented here.
4
- Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.8/).
4
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
5
 
6
- ## [1.0.8] — 2026-07-12
6
+ ## [1.1.0] — 2026-07-12
7
7
 
8
8
  ### Added
9
9
  - Federated search across 22+ satellite data providers
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pygeofetch
3
- Version: 1.0.8
3
+ Version: 1.1.0
4
4
  Summary: Universal satellite data pipeline — unified access to 22+ providers
5
5
  Author: PyGeoFetch Contributors
6
6
  License: MIT License
@@ -85,9 +85,9 @@ Dynamic: license-file
85
85
 
86
86
  <div align="center">
87
87
 
88
- <!-- <img src="https://appiahkubis14.github.io/portfolio/logo/samuel_logo_dark.svg" alt="PyGeoFetch Logo" width="200"/> -->
88
+ <!-- <img src="https://appiahkubis14.github.io/portfolio/logo/samuel_logo_dark.svg" alt="pygeofetch Logo" width="200"/> -->
89
89
 
90
- # PyGeoFetch 🛰️
90
+ # pygeofetch 🛰️
91
91
 
92
92
  [![PyPI version](https://badge.fury.io/py/pygeofetch.svg)](https://pypi.org/project/pygeofetch/)
93
93
  [![Python Versions](https://img.shields.io/pypi/pyversions/pygeofetch.svg)](https://pypi.org/project/pygeofetch/)
@@ -103,9 +103,9 @@ Dynamic: license-file
103
103
 
104
104
  ## 📖 Introduction
105
105
 
106
- PyGeoFetch is a **production-ready satellite data acquisition and processing framework** that provides unified, authenticated access to 22+ Earth observation repositories — including Sentinel, Landsat, Planet, Maxar, Airbus, Copernicus, USGS, NASA, JAXA, and more — through a single consistent CLI and Python API.
106
+ pygeofetch is a **production-ready satellite data acquisition and processing framework** that provides unified, authenticated access to 22+ Earth observation repositories — including Sentinel, Landsat, Planet, Maxar, Airbus, Copernicus, USGS, NASA, JAXA, and more — through a single consistent CLI and Python API.
107
107
 
108
- The package abstracts away the authentication complexity, API fragmentation, and format inconsistencies of individual satellite providers, and adds a complete geospatial processing engine on top. PyGeoFetch provides six core capabilities:
108
+ The package abstracts away the authentication complexity, API fragmentation, and format inconsistencies of individual satellite providers, and adds a complete geospatial processing engine on top. pygeofetch provides six core capabilities:
109
109
 
110
110
  1. **Authenticated access** to 22+ providers, with secure credential storage via system keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service).
111
111
  2. **Unified federated search** across all providers, returning standardized STAC 1.0 GeoJSON, GeoParquet, or CSV results sortable by cloud cover, date, or relevance score.
@@ -122,7 +122,7 @@ Accessing satellite data at scale is surprisingly fragmented. Each provider —
122
122
 
123
123
  Existing tools address parts of this problem: EODAG supports several providers but lacks pipeline orchestration and commercial coverage; `pystac-client` handles STAC-compliant endpoints only; `sentinelsat` is Sentinel-specific. No single tool covers the full breadth of providers, processing, and automation needed for operational geospatial workflows.
124
124
 
125
- | Feature | PyGeoFetch | EODAG | pystac-client | satpy | sentinelsat |
125
+ | Feature | pygeofetch | EODAG | pystac-client | satpy | sentinelsat |
126
126
  |---|---|---|---|---|---|
127
127
  | **Providers** | **22+** | 10+ | STAC only | Limited | Sentinel only |
128
128
  | **Processing Engine** | ✅ Full | ❌ | ❌ | Partial | ❌ |
@@ -233,26 +233,26 @@ Existing tools address parts of this problem: EODAG supports several providers b
233
233
 
234
234
  ```bash
235
235
  # Core — free providers work immediately, no extras needed
236
- pip install PyGeoFetch
236
+ pip install pygeofetch
237
237
 
238
238
  # + Raster/vector processing (rasterio, geopandas, shapely)
239
- pip install "PyGeoFetch[geo]"
239
+ pip install "pygeofetch[geo]"
240
240
 
241
241
  # + Cloud provider S3 access
242
- pip install "PyGeoFetch[cloud]"
242
+ pip install "pygeofetch[cloud]"
243
243
 
244
244
  # + Cron scheduling
245
- pip install "PyGeoFetch[schedule]"
245
+ pip install "pygeofetch[schedule]"
246
246
 
247
247
  # Everything
248
- pip install "PyGeoFetch[all]"
248
+ pip install "pygeofetch[all]"
249
249
  ```
250
250
 
251
251
  **Requirements:** Python 3.9+
252
252
 
253
253
  Verify your installation:
254
254
  ```bash
255
- PyGeoFetch doctor
255
+ pygeofetch doctor
256
256
  # ✓ Python 3.11 ✓ httpx ✓ pydantic ✓ rich
257
257
  # ✓ AWS Earth Search: HTTP 200
258
258
  # ✓ Planetary Computer: HTTP 200
@@ -267,12 +267,12 @@ PyGeoFetch doctor
267
267
 
268
268
  ```bash
269
269
  # Add credentials (free providers need no credentials at all)
270
- PyGeoFetch auth add usgs --username USER --password PASS
271
- PyGeoFetch auth add copernicus --username email@example.com --password PASS
272
- PyGeoFetch auth add planet --api-key YOUR_KEY
270
+ pygeofetch auth add usgs --username USER --password PASS
271
+ pygeofetch auth add copernicus --username email@example.com --password PASS
272
+ pygeofetch auth add planet --api-key YOUR_KEY
273
273
 
274
274
  # Search (free — no login)
275
- PyGeoFetch search run \
275
+ pygeofetch search run \
276
276
  --bbox "-74.1,40.6,-73.7,40.9" \
277
277
  --start-date 2024-01-01 \
278
278
  --cloud-cover 0-15 \
@@ -281,7 +281,7 @@ PyGeoFetch search run \
281
281
  --output results.geojson
282
282
 
283
283
  # Download with band selection
284
- PyGeoFetch download run \
284
+ pygeofetch download run \
285
285
  --from-search results.geojson \
286
286
  --output ./data/ \
287
287
  --parallel 4 \
@@ -289,7 +289,7 @@ PyGeoFetch download run \
289
289
  --max-items 3
290
290
 
291
291
  # Download with full post-processing chain
292
- PyGeoFetch download run \
292
+ pygeofetch download run \
293
293
  --from-search results.geojson \
294
294
  --output ./data/ \
295
295
  --parallel 4 \
@@ -400,18 +400,18 @@ steps:
400
400
 
401
401
  ```bash
402
402
  # Validate without running
403
- PyGeoFetch proc-pipeline validate weekly-sentinel2.yaml
403
+ pygeofetch proc-pipeline validate weekly-sentinel2.yaml
404
404
 
405
405
  # Run once
406
- PyGeoFetch proc-pipeline run weekly-sentinel2.yaml --input scene.tif
406
+ pygeofetch proc-pipeline run weekly-sentinel2.yaml --input scene.tif
407
407
 
408
408
  # Schedule (recurring)
409
- PyGeoFetch pipeline schedule weekly-sentinel2.yaml --name "ndvi-weekly"
409
+ pygeofetch pipeline schedule weekly-sentinel2.yaml --name "ndvi-weekly"
410
410
 
411
411
  # Generate a starter template
412
- PyGeoFetch proc-pipeline template ndvi
413
- PyGeoFetch proc-pipeline template flood_map
414
- PyGeoFetch proc-pipeline template change_detection
412
+ pygeofetch proc-pipeline template ndvi
413
+ pygeofetch proc-pipeline template flood_map
414
+ pygeofetch proc-pipeline template change_detection
415
415
  ```
416
416
 
417
417
  ---
@@ -420,25 +420,25 @@ PyGeoFetch proc-pipeline template change_detection
420
420
 
421
421
  ```
422
422
  SYSTEM
423
- PyGeoFetch doctor diagnose installation + connectivity
424
- PyGeoFetch status [--json] provider and cache overview
425
- PyGeoFetch version
423
+ pygeofetch doctor diagnose installation + connectivity
424
+ pygeofetch status [--json] provider and cache overview
425
+ pygeofetch version
426
426
 
427
427
  AUTH
428
- PyGeoFetch auth add PROVIDER [--username U] [--password P] [--api-key K]
429
- PyGeoFetch auth login PROVIDER interactive prompt
430
- PyGeoFetch auth list [--json]
431
- PyGeoFetch auth test PROVIDER
432
- PyGeoFetch auth remove PROVIDER [--yes]
433
- PyGeoFetch auth export [--output FILE]
428
+ pygeofetch auth add PROVIDER [--username U] [--password P] [--api-key K]
429
+ pygeofetch auth login PROVIDER interactive prompt
430
+ pygeofetch auth list [--json]
431
+ pygeofetch auth test PROVIDER
432
+ pygeofetch auth remove PROVIDER [--yes]
433
+ pygeofetch auth export [--output FILE]
434
434
 
435
435
  PROVIDERS
436
- PyGeoFetch providers list [--auth|--no-auth] [--capabilities sar] [--json]
437
- PyGeoFetch providers info PROVIDER
438
- PyGeoFetch providers search "TERM"
436
+ pygeofetch providers list [--auth|--no-auth] [--capabilities sar] [--json]
437
+ pygeofetch providers info PROVIDER
438
+ pygeofetch providers search "TERM"
439
439
 
440
440
  SEARCH
441
- PyGeoFetch search run \
441
+ pygeofetch search run \
442
442
  --bbox "minlon,minlat,maxlon,maxlat" or --geometry-file area.geojson
443
443
  --start-date YYYY-MM-DD --end-date YYYY-MM-DD
444
444
  --cloud-cover 0-20
@@ -452,7 +452,7 @@ SEARCH
452
452
  --no-cache --timeout 60
453
453
 
454
454
  DOWNLOAD
455
- PyGeoFetch download run \
455
+ pygeofetch download run \
456
456
  --from-search results.geojson
457
457
  --output ./data/
458
458
  --parallel 4 --retry 5
@@ -466,72 +466,72 @@ DOWNLOAD
466
466
  --json
467
467
 
468
468
  PREPROCESSING
469
- PyGeoFetch preprocess atmos scene.tif --method dos1|sen2cor|flaash|6s
470
- PyGeoFetch preprocess cloud-mask scene.tif --method scl|fmask|threshold
471
- PyGeoFetch preprocess cloud-fill cloudy.tif t1.tif t2.tif
472
- PyGeoFetch preprocess topo-correct scene.tif dem.tif --method cosine
473
- PyGeoFetch preprocess clip scene.tif --bbox "..." | --geometry file.geojson
474
- PyGeoFetch preprocess reproject scene.tif --crs EPSG:4326
475
- PyGeoFetch preprocess resample scene.tif --resolution 30
476
- PyGeoFetch preprocess pansharpen pan.tif ms.tif --method brovey
477
- PyGeoFetch preprocess mosaic s1.tif s2.tif --method first|last|min|max
478
- PyGeoFetch preprocess composite *.tif --method median|mean|max|best_pixel
479
- PyGeoFetch preprocess tile scene.tif --tile-size 512 --overlap 64
469
+ pygeofetch preprocess atmos scene.tif --method dos1|sen2cor|flaash|6s
470
+ pygeofetch preprocess cloud-mask scene.tif --method scl|fmask|threshold
471
+ pygeofetch preprocess cloud-fill cloudy.tif t1.tif t2.tif
472
+ pygeofetch preprocess topo-correct scene.tif dem.tif --method cosine
473
+ pygeofetch preprocess clip scene.tif --bbox "..." | --geometry file.geojson
474
+ pygeofetch preprocess reproject scene.tif --crs EPSG:4326
475
+ pygeofetch preprocess resample scene.tif --resolution 30
476
+ pygeofetch preprocess pansharpen pan.tif ms.tif --method brovey
477
+ pygeofetch preprocess mosaic s1.tif s2.tif --method first|last|min|max
478
+ pygeofetch preprocess composite *.tif --method median|mean|max|best_pixel
479
+ pygeofetch preprocess tile scene.tif --tile-size 512 --overlap 64
480
480
 
481
481
  SPECTRAL INDICES
482
- PyGeoFetch index ndvi --red B04.tif --nir B08.tif
483
- PyGeoFetch index evi --blue B02.tif --red B04.tif --nir B08.tif
484
- PyGeoFetch index savi --red B04.tif --nir B08.tif --soil-l 0.5
485
- PyGeoFetch index ndwi --green B03.tif --nir B08.tif
486
- PyGeoFetch index mndwi --green B03.tif --swir1 B11.tif
487
- PyGeoFetch index ndbi --nir B08.tif --swir1 B11.tif
488
- PyGeoFetch index ndsi --green B03.tif --swir1 B11.tif
489
- PyGeoFetch index ndmi --nir B08.tif --swir1 B11.tif
490
- PyGeoFetch index nbr --nir B08.tif --swir2 B12.tif
491
- PyGeoFetch index dnbr --pre-nir B08.tif --pre-swir2 B12.tif \
482
+ pygeofetch index ndvi --red B04.tif --nir B08.tif
483
+ pygeofetch index evi --blue B02.tif --red B04.tif --nir B08.tif
484
+ pygeofetch index savi --red B04.tif --nir B08.tif --soil-l 0.5
485
+ pygeofetch index ndwi --green B03.tif --nir B08.tif
486
+ pygeofetch index mndwi --green B03.tif --swir1 B11.tif
487
+ pygeofetch index ndbi --nir B08.tif --swir1 B11.tif
488
+ pygeofetch index ndsi --green B03.tif --swir1 B11.tif
489
+ pygeofetch index ndmi --nir B08.tif --swir1 B11.tif
490
+ pygeofetch index nbr --nir B08.tif --swir2 B12.tif
491
+ pygeofetch index dnbr --pre-nir B08.tif --pre-swir2 B12.tif \
492
492
  --post-nir B08_post.tif --post-swir2 B12_post.tif
493
- PyGeoFetch index tct --blue B02.tif --green B03.tif --red B04.tif \
493
+ pygeofetch index tct --blue B02.tif --green B03.tif --red B04.tif \
494
494
  --nir B08.tif --swir1 B11.tif --swir2 B12.tif
495
- PyGeoFetch index pca B02.tif B03.tif B04.tif B08.tif --components 3
496
- PyGeoFetch index texture B08.tif --window 7 --features contrast,homogeneity
497
- PyGeoFetch index lst B10.tif --emissivity 0.97 --sensor landsat8
498
- PyGeoFetch index albedo B02.tif B03.tif B04.tif B08.tif B11.tif B12.tif
499
- PyGeoFetch index band-math B04.tif B08.tif --expr "(B[1]-B[0])/(B[1]+B[0]+1e-6)"
500
- PyGeoFetch index stack B02.tif B03.tif B04.tif
495
+ pygeofetch index pca B02.tif B03.tif B04.tif B08.tif --components 3
496
+ pygeofetch index texture B08.tif --window 7 --features contrast,homogeneity
497
+ pygeofetch index lst B10.tif --emissivity 0.97 --sensor landsat8
498
+ pygeofetch index albedo B02.tif B03.tif B04.tif B08.tif B11.tif B12.tif
499
+ pygeofetch index band-math B04.tif B08.tif --expr "(B[1]-B[0])/(B[1]+B[0]+1e-6)"
500
+ pygeofetch index stack B02.tif B03.tif B04.tif
501
501
 
502
502
  POST-PROCESSING
503
- PyGeoFetch post vectorize ndvi.tif --threshold 0.3 --format geojson
504
- PyGeoFetch post smooth polygons.geojson --tolerance 0.5
505
- PyGeoFetch post regularize buildings.geojson
506
- PyGeoFetch post zonal-stats ndvi.tif parcels.geojson --output stats.csv
507
- PyGeoFetch post buffer roads.geojson --distance 15
508
- PyGeoFetch post centroids polygons.geojson
509
- PyGeoFetch post geometry-metrics polygons.geojson
510
- PyGeoFetch post compress scene.tif --method lzw|deflate|zstd
511
- PyGeoFetch post cog scene.tif --compress deflate --blocksize 512
503
+ pygeofetch post vectorize ndvi.tif --threshold 0.3 --format geojson
504
+ pygeofetch post smooth polygons.geojson --tolerance 0.5
505
+ pygeofetch post regularize buildings.geojson
506
+ pygeofetch post zonal-stats ndvi.tif parcels.geojson --output stats.csv
507
+ pygeofetch post buffer roads.geojson --distance 15
508
+ pygeofetch post centroids polygons.geojson
509
+ pygeofetch post geometry-metrics polygons.geojson
510
+ pygeofetch post compress scene.tif --method lzw|deflate|zstd
511
+ pygeofetch post cog scene.tif --compress deflate --blocksize 512
512
512
 
513
513
  SAR PROCESSING
514
- PyGeoFetch sar despeckle sar.tif --filter lee|enhanced_lee|frost|gamma --window 7
515
- PyGeoFetch sar calibrate sar.tif --output-type sigma0|gamma0|beta0 --db
516
- PyGeoFetch sar flood-map post.tif --threshold -15 [--reference pre.tif]
517
- PyGeoFetch sar coherence slc1.tif slc2.tif --window 7
514
+ pygeofetch sar despeckle sar.tif --filter lee|enhanced_lee|frost|gamma --window 7
515
+ pygeofetch sar calibrate sar.tif --output-type sigma0|gamma0|beta0 --db
516
+ pygeofetch sar flood-map post.tif --threshold -15 [--reference pre.tif]
517
+ pygeofetch sar coherence slc1.tif slc2.tif --window 7
518
518
 
519
519
  PROCESSING PIPELINES
520
- PyGeoFetch proc-pipeline template ndvi|change_detection|flood_map|urban_mapping|...
521
- PyGeoFetch proc-pipeline validate FILE
522
- PyGeoFetch proc-pipeline run FILE [--input scene.tif] [--output-dir ./out/]
520
+ pygeofetch proc-pipeline template ndvi|change_detection|flood_map|urban_mapping|...
521
+ pygeofetch proc-pipeline validate FILE
522
+ pygeofetch proc-pipeline run FILE [--input scene.tif] [--output-dir ./out/]
523
523
 
524
524
  DATA PIPELINES (search + download)
525
- PyGeoFetch pipeline run|validate|schedule|list-scheduled|unschedule|history
525
+ pygeofetch pipeline run|validate|schedule|list-scheduled|unschedule|history
526
526
 
527
527
  CACHE
528
- PyGeoFetch cache stats|clear|ttl [show|set N]|location|prune --max-size 1GB
528
+ pygeofetch cache stats|clear|ttl [show|set N]|location|prune --max-size 1GB
529
529
 
530
530
  CONFIG
531
- PyGeoFetch config show|get KEY|set KEY VALUE|path|reset
531
+ pygeofetch config show|get KEY|set KEY VALUE|path|reset
532
532
 
533
533
  COMPLETION
534
- PyGeoFetch --install-completion bash|zsh|fish
534
+ pygeofetch --install-completion bash|zsh|fish
535
535
  ```
536
536
 
537
537
  ---
@@ -600,8 +600,8 @@ Contributions of all kinds are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) f
600
600
  Good first issues include implementing stub providers to full API integrations, improving test coverage, and adding new post-processing actions.
601
601
 
602
602
  ```bash
603
- git clone https://github.com/appiahkubis14/PyGeoFetch
604
- cd PyGeoFetch
603
+ git clone https://github.com/appiahkubis14/pygeofetch
604
+ cd pygeofetch
605
605
  pip install -e ".[dev,all]"
606
606
  pytest tests/unit/ -v
607
607
  ```
@@ -610,6 +610,6 @@ pytest tests/unit/ -v
610
610
 
611
611
  ## 📄 License
612
612
 
613
- PyGeoFetch is free and open source software, licensed under the [MIT License](LICENSE).
613
+ pygeofetch is free and open source software, licensed under the [MIT License](LICENSE).
614
614
 
615
- © 2025 PyGeoFetch Contributors. Part of the **PyGeoVision** platform — [PyGeoFetch](https://github.com/appiahkubis14/PyGeoFetch) (data + processing) + [GeoAI](https://opengeoai.org) (AI) = complete Earth observation pipeline.
615
+ © 2025 pygeofetch Contributors. Part of the **PyGeoVision** platform — [pygeofetch](https://github.com/appiahkubis14/pygeofetch) (data + processing) + [GeoAI](https://opengeoai.org) (AI) = complete Earth observation pipeline.
@@ -1,8 +1,8 @@
1
1
  <div align="center">
2
2
 
3
- <!-- <img src="https://appiahkubis14.github.io/portfolio/logo/samuel_logo_dark.svg" alt="PyGeoFetch Logo" width="200"/> -->
3
+ <!-- <img src="https://appiahkubis14.github.io/portfolio/logo/samuel_logo_dark.svg" alt="pygeofetch Logo" width="200"/> -->
4
4
 
5
- # PyGeoFetch 🛰️
5
+ # pygeofetch 🛰️
6
6
 
7
7
  [![PyPI version](https://badge.fury.io/py/pygeofetch.svg)](https://pypi.org/project/pygeofetch/)
8
8
  [![Python Versions](https://img.shields.io/pypi/pyversions/pygeofetch.svg)](https://pypi.org/project/pygeofetch/)
@@ -18,9 +18,9 @@
18
18
 
19
19
  ## 📖 Introduction
20
20
 
21
- PyGeoFetch is a **production-ready satellite data acquisition and processing framework** that provides unified, authenticated access to 22+ Earth observation repositories — including Sentinel, Landsat, Planet, Maxar, Airbus, Copernicus, USGS, NASA, JAXA, and more — through a single consistent CLI and Python API.
21
+ pygeofetch is a **production-ready satellite data acquisition and processing framework** that provides unified, authenticated access to 22+ Earth observation repositories — including Sentinel, Landsat, Planet, Maxar, Airbus, Copernicus, USGS, NASA, JAXA, and more — through a single consistent CLI and Python API.
22
22
 
23
- The package abstracts away the authentication complexity, API fragmentation, and format inconsistencies of individual satellite providers, and adds a complete geospatial processing engine on top. PyGeoFetch provides six core capabilities:
23
+ The package abstracts away the authentication complexity, API fragmentation, and format inconsistencies of individual satellite providers, and adds a complete geospatial processing engine on top. pygeofetch provides six core capabilities:
24
24
 
25
25
  1. **Authenticated access** to 22+ providers, with secure credential storage via system keyring (macOS Keychain, Windows Credential Manager, Linux Secret Service).
26
26
  2. **Unified federated search** across all providers, returning standardized STAC 1.0 GeoJSON, GeoParquet, or CSV results sortable by cloud cover, date, or relevance score.
@@ -37,7 +37,7 @@ Accessing satellite data at scale is surprisingly fragmented. Each provider —
37
37
 
38
38
  Existing tools address parts of this problem: EODAG supports several providers but lacks pipeline orchestration and commercial coverage; `pystac-client` handles STAC-compliant endpoints only; `sentinelsat` is Sentinel-specific. No single tool covers the full breadth of providers, processing, and automation needed for operational geospatial workflows.
39
39
 
40
- | Feature | PyGeoFetch | EODAG | pystac-client | satpy | sentinelsat |
40
+ | Feature | pygeofetch | EODAG | pystac-client | satpy | sentinelsat |
41
41
  |---|---|---|---|---|---|
42
42
  | **Providers** | **22+** | 10+ | STAC only | Limited | Sentinel only |
43
43
  | **Processing Engine** | ✅ Full | ❌ | ❌ | Partial | ❌ |
@@ -148,26 +148,26 @@ Existing tools address parts of this problem: EODAG supports several providers b
148
148
 
149
149
  ```bash
150
150
  # Core — free providers work immediately, no extras needed
151
- pip install PyGeoFetch
151
+ pip install pygeofetch
152
152
 
153
153
  # + Raster/vector processing (rasterio, geopandas, shapely)
154
- pip install "PyGeoFetch[geo]"
154
+ pip install "pygeofetch[geo]"
155
155
 
156
156
  # + Cloud provider S3 access
157
- pip install "PyGeoFetch[cloud]"
157
+ pip install "pygeofetch[cloud]"
158
158
 
159
159
  # + Cron scheduling
160
- pip install "PyGeoFetch[schedule]"
160
+ pip install "pygeofetch[schedule]"
161
161
 
162
162
  # Everything
163
- pip install "PyGeoFetch[all]"
163
+ pip install "pygeofetch[all]"
164
164
  ```
165
165
 
166
166
  **Requirements:** Python 3.9+
167
167
 
168
168
  Verify your installation:
169
169
  ```bash
170
- PyGeoFetch doctor
170
+ pygeofetch doctor
171
171
  # ✓ Python 3.11 ✓ httpx ✓ pydantic ✓ rich
172
172
  # ✓ AWS Earth Search: HTTP 200
173
173
  # ✓ Planetary Computer: HTTP 200
@@ -182,12 +182,12 @@ PyGeoFetch doctor
182
182
 
183
183
  ```bash
184
184
  # Add credentials (free providers need no credentials at all)
185
- PyGeoFetch auth add usgs --username USER --password PASS
186
- PyGeoFetch auth add copernicus --username email@example.com --password PASS
187
- PyGeoFetch auth add planet --api-key YOUR_KEY
185
+ pygeofetch auth add usgs --username USER --password PASS
186
+ pygeofetch auth add copernicus --username email@example.com --password PASS
187
+ pygeofetch auth add planet --api-key YOUR_KEY
188
188
 
189
189
  # Search (free — no login)
190
- PyGeoFetch search run \
190
+ pygeofetch search run \
191
191
  --bbox "-74.1,40.6,-73.7,40.9" \
192
192
  --start-date 2024-01-01 \
193
193
  --cloud-cover 0-15 \
@@ -196,7 +196,7 @@ PyGeoFetch search run \
196
196
  --output results.geojson
197
197
 
198
198
  # Download with band selection
199
- PyGeoFetch download run \
199
+ pygeofetch download run \
200
200
  --from-search results.geojson \
201
201
  --output ./data/ \
202
202
  --parallel 4 \
@@ -204,7 +204,7 @@ PyGeoFetch download run \
204
204
  --max-items 3
205
205
 
206
206
  # Download with full post-processing chain
207
- PyGeoFetch download run \
207
+ pygeofetch download run \
208
208
  --from-search results.geojson \
209
209
  --output ./data/ \
210
210
  --parallel 4 \
@@ -315,18 +315,18 @@ steps:
315
315
 
316
316
  ```bash
317
317
  # Validate without running
318
- PyGeoFetch proc-pipeline validate weekly-sentinel2.yaml
318
+ pygeofetch proc-pipeline validate weekly-sentinel2.yaml
319
319
 
320
320
  # Run once
321
- PyGeoFetch proc-pipeline run weekly-sentinel2.yaml --input scene.tif
321
+ pygeofetch proc-pipeline run weekly-sentinel2.yaml --input scene.tif
322
322
 
323
323
  # Schedule (recurring)
324
- PyGeoFetch pipeline schedule weekly-sentinel2.yaml --name "ndvi-weekly"
324
+ pygeofetch pipeline schedule weekly-sentinel2.yaml --name "ndvi-weekly"
325
325
 
326
326
  # Generate a starter template
327
- PyGeoFetch proc-pipeline template ndvi
328
- PyGeoFetch proc-pipeline template flood_map
329
- PyGeoFetch proc-pipeline template change_detection
327
+ pygeofetch proc-pipeline template ndvi
328
+ pygeofetch proc-pipeline template flood_map
329
+ pygeofetch proc-pipeline template change_detection
330
330
  ```
331
331
 
332
332
  ---
@@ -335,25 +335,25 @@ PyGeoFetch proc-pipeline template change_detection
335
335
 
336
336
  ```
337
337
  SYSTEM
338
- PyGeoFetch doctor diagnose installation + connectivity
339
- PyGeoFetch status [--json] provider and cache overview
340
- PyGeoFetch version
338
+ pygeofetch doctor diagnose installation + connectivity
339
+ pygeofetch status [--json] provider and cache overview
340
+ pygeofetch version
341
341
 
342
342
  AUTH
343
- PyGeoFetch auth add PROVIDER [--username U] [--password P] [--api-key K]
344
- PyGeoFetch auth login PROVIDER interactive prompt
345
- PyGeoFetch auth list [--json]
346
- PyGeoFetch auth test PROVIDER
347
- PyGeoFetch auth remove PROVIDER [--yes]
348
- PyGeoFetch auth export [--output FILE]
343
+ pygeofetch auth add PROVIDER [--username U] [--password P] [--api-key K]
344
+ pygeofetch auth login PROVIDER interactive prompt
345
+ pygeofetch auth list [--json]
346
+ pygeofetch auth test PROVIDER
347
+ pygeofetch auth remove PROVIDER [--yes]
348
+ pygeofetch auth export [--output FILE]
349
349
 
350
350
  PROVIDERS
351
- PyGeoFetch providers list [--auth|--no-auth] [--capabilities sar] [--json]
352
- PyGeoFetch providers info PROVIDER
353
- PyGeoFetch providers search "TERM"
351
+ pygeofetch providers list [--auth|--no-auth] [--capabilities sar] [--json]
352
+ pygeofetch providers info PROVIDER
353
+ pygeofetch providers search "TERM"
354
354
 
355
355
  SEARCH
356
- PyGeoFetch search run \
356
+ pygeofetch search run \
357
357
  --bbox "minlon,minlat,maxlon,maxlat" or --geometry-file area.geojson
358
358
  --start-date YYYY-MM-DD --end-date YYYY-MM-DD
359
359
  --cloud-cover 0-20
@@ -367,7 +367,7 @@ SEARCH
367
367
  --no-cache --timeout 60
368
368
 
369
369
  DOWNLOAD
370
- PyGeoFetch download run \
370
+ pygeofetch download run \
371
371
  --from-search results.geojson
372
372
  --output ./data/
373
373
  --parallel 4 --retry 5
@@ -381,72 +381,72 @@ DOWNLOAD
381
381
  --json
382
382
 
383
383
  PREPROCESSING
384
- PyGeoFetch preprocess atmos scene.tif --method dos1|sen2cor|flaash|6s
385
- PyGeoFetch preprocess cloud-mask scene.tif --method scl|fmask|threshold
386
- PyGeoFetch preprocess cloud-fill cloudy.tif t1.tif t2.tif
387
- PyGeoFetch preprocess topo-correct scene.tif dem.tif --method cosine
388
- PyGeoFetch preprocess clip scene.tif --bbox "..." | --geometry file.geojson
389
- PyGeoFetch preprocess reproject scene.tif --crs EPSG:4326
390
- PyGeoFetch preprocess resample scene.tif --resolution 30
391
- PyGeoFetch preprocess pansharpen pan.tif ms.tif --method brovey
392
- PyGeoFetch preprocess mosaic s1.tif s2.tif --method first|last|min|max
393
- PyGeoFetch preprocess composite *.tif --method median|mean|max|best_pixel
394
- PyGeoFetch preprocess tile scene.tif --tile-size 512 --overlap 64
384
+ pygeofetch preprocess atmos scene.tif --method dos1|sen2cor|flaash|6s
385
+ pygeofetch preprocess cloud-mask scene.tif --method scl|fmask|threshold
386
+ pygeofetch preprocess cloud-fill cloudy.tif t1.tif t2.tif
387
+ pygeofetch preprocess topo-correct scene.tif dem.tif --method cosine
388
+ pygeofetch preprocess clip scene.tif --bbox "..." | --geometry file.geojson
389
+ pygeofetch preprocess reproject scene.tif --crs EPSG:4326
390
+ pygeofetch preprocess resample scene.tif --resolution 30
391
+ pygeofetch preprocess pansharpen pan.tif ms.tif --method brovey
392
+ pygeofetch preprocess mosaic s1.tif s2.tif --method first|last|min|max
393
+ pygeofetch preprocess composite *.tif --method median|mean|max|best_pixel
394
+ pygeofetch preprocess tile scene.tif --tile-size 512 --overlap 64
395
395
 
396
396
  SPECTRAL INDICES
397
- PyGeoFetch index ndvi --red B04.tif --nir B08.tif
398
- PyGeoFetch index evi --blue B02.tif --red B04.tif --nir B08.tif
399
- PyGeoFetch index savi --red B04.tif --nir B08.tif --soil-l 0.5
400
- PyGeoFetch index ndwi --green B03.tif --nir B08.tif
401
- PyGeoFetch index mndwi --green B03.tif --swir1 B11.tif
402
- PyGeoFetch index ndbi --nir B08.tif --swir1 B11.tif
403
- PyGeoFetch index ndsi --green B03.tif --swir1 B11.tif
404
- PyGeoFetch index ndmi --nir B08.tif --swir1 B11.tif
405
- PyGeoFetch index nbr --nir B08.tif --swir2 B12.tif
406
- PyGeoFetch index dnbr --pre-nir B08.tif --pre-swir2 B12.tif \
397
+ pygeofetch index ndvi --red B04.tif --nir B08.tif
398
+ pygeofetch index evi --blue B02.tif --red B04.tif --nir B08.tif
399
+ pygeofetch index savi --red B04.tif --nir B08.tif --soil-l 0.5
400
+ pygeofetch index ndwi --green B03.tif --nir B08.tif
401
+ pygeofetch index mndwi --green B03.tif --swir1 B11.tif
402
+ pygeofetch index ndbi --nir B08.tif --swir1 B11.tif
403
+ pygeofetch index ndsi --green B03.tif --swir1 B11.tif
404
+ pygeofetch index ndmi --nir B08.tif --swir1 B11.tif
405
+ pygeofetch index nbr --nir B08.tif --swir2 B12.tif
406
+ pygeofetch index dnbr --pre-nir B08.tif --pre-swir2 B12.tif \
407
407
  --post-nir B08_post.tif --post-swir2 B12_post.tif
408
- PyGeoFetch index tct --blue B02.tif --green B03.tif --red B04.tif \
408
+ pygeofetch index tct --blue B02.tif --green B03.tif --red B04.tif \
409
409
  --nir B08.tif --swir1 B11.tif --swir2 B12.tif
410
- PyGeoFetch index pca B02.tif B03.tif B04.tif B08.tif --components 3
411
- PyGeoFetch index texture B08.tif --window 7 --features contrast,homogeneity
412
- PyGeoFetch index lst B10.tif --emissivity 0.97 --sensor landsat8
413
- PyGeoFetch index albedo B02.tif B03.tif B04.tif B08.tif B11.tif B12.tif
414
- PyGeoFetch index band-math B04.tif B08.tif --expr "(B[1]-B[0])/(B[1]+B[0]+1e-6)"
415
- PyGeoFetch index stack B02.tif B03.tif B04.tif
410
+ pygeofetch index pca B02.tif B03.tif B04.tif B08.tif --components 3
411
+ pygeofetch index texture B08.tif --window 7 --features contrast,homogeneity
412
+ pygeofetch index lst B10.tif --emissivity 0.97 --sensor landsat8
413
+ pygeofetch index albedo B02.tif B03.tif B04.tif B08.tif B11.tif B12.tif
414
+ pygeofetch index band-math B04.tif B08.tif --expr "(B[1]-B[0])/(B[1]+B[0]+1e-6)"
415
+ pygeofetch index stack B02.tif B03.tif B04.tif
416
416
 
417
417
  POST-PROCESSING
418
- PyGeoFetch post vectorize ndvi.tif --threshold 0.3 --format geojson
419
- PyGeoFetch post smooth polygons.geojson --tolerance 0.5
420
- PyGeoFetch post regularize buildings.geojson
421
- PyGeoFetch post zonal-stats ndvi.tif parcels.geojson --output stats.csv
422
- PyGeoFetch post buffer roads.geojson --distance 15
423
- PyGeoFetch post centroids polygons.geojson
424
- PyGeoFetch post geometry-metrics polygons.geojson
425
- PyGeoFetch post compress scene.tif --method lzw|deflate|zstd
426
- PyGeoFetch post cog scene.tif --compress deflate --blocksize 512
418
+ pygeofetch post vectorize ndvi.tif --threshold 0.3 --format geojson
419
+ pygeofetch post smooth polygons.geojson --tolerance 0.5
420
+ pygeofetch post regularize buildings.geojson
421
+ pygeofetch post zonal-stats ndvi.tif parcels.geojson --output stats.csv
422
+ pygeofetch post buffer roads.geojson --distance 15
423
+ pygeofetch post centroids polygons.geojson
424
+ pygeofetch post geometry-metrics polygons.geojson
425
+ pygeofetch post compress scene.tif --method lzw|deflate|zstd
426
+ pygeofetch post cog scene.tif --compress deflate --blocksize 512
427
427
 
428
428
  SAR PROCESSING
429
- PyGeoFetch sar despeckle sar.tif --filter lee|enhanced_lee|frost|gamma --window 7
430
- PyGeoFetch sar calibrate sar.tif --output-type sigma0|gamma0|beta0 --db
431
- PyGeoFetch sar flood-map post.tif --threshold -15 [--reference pre.tif]
432
- PyGeoFetch sar coherence slc1.tif slc2.tif --window 7
429
+ pygeofetch sar despeckle sar.tif --filter lee|enhanced_lee|frost|gamma --window 7
430
+ pygeofetch sar calibrate sar.tif --output-type sigma0|gamma0|beta0 --db
431
+ pygeofetch sar flood-map post.tif --threshold -15 [--reference pre.tif]
432
+ pygeofetch sar coherence slc1.tif slc2.tif --window 7
433
433
 
434
434
  PROCESSING PIPELINES
435
- PyGeoFetch proc-pipeline template ndvi|change_detection|flood_map|urban_mapping|...
436
- PyGeoFetch proc-pipeline validate FILE
437
- PyGeoFetch proc-pipeline run FILE [--input scene.tif] [--output-dir ./out/]
435
+ pygeofetch proc-pipeline template ndvi|change_detection|flood_map|urban_mapping|...
436
+ pygeofetch proc-pipeline validate FILE
437
+ pygeofetch proc-pipeline run FILE [--input scene.tif] [--output-dir ./out/]
438
438
 
439
439
  DATA PIPELINES (search + download)
440
- PyGeoFetch pipeline run|validate|schedule|list-scheduled|unschedule|history
440
+ pygeofetch pipeline run|validate|schedule|list-scheduled|unschedule|history
441
441
 
442
442
  CACHE
443
- PyGeoFetch cache stats|clear|ttl [show|set N]|location|prune --max-size 1GB
443
+ pygeofetch cache stats|clear|ttl [show|set N]|location|prune --max-size 1GB
444
444
 
445
445
  CONFIG
446
- PyGeoFetch config show|get KEY|set KEY VALUE|path|reset
446
+ pygeofetch config show|get KEY|set KEY VALUE|path|reset
447
447
 
448
448
  COMPLETION
449
- PyGeoFetch --install-completion bash|zsh|fish
449
+ pygeofetch --install-completion bash|zsh|fish
450
450
  ```
451
451
 
452
452
  ---
@@ -515,8 +515,8 @@ Contributions of all kinds are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) f
515
515
  Good first issues include implementing stub providers to full API integrations, improving test coverage, and adding new post-processing actions.
516
516
 
517
517
  ```bash
518
- git clone https://github.com/appiahkubis14/PyGeoFetch
519
- cd PyGeoFetch
518
+ git clone https://github.com/appiahkubis14/pygeofetch
519
+ cd pygeofetch
520
520
  pip install -e ".[dev,all]"
521
521
  pytest tests/unit/ -v
522
522
  ```
@@ -525,6 +525,6 @@ pytest tests/unit/ -v
525
525
 
526
526
  ## 📄 License
527
527
 
528
- PyGeoFetch is free and open source software, licensed under the [MIT License](LICENSE).
528
+ pygeofetch is free and open source software, licensed under the [MIT License](LICENSE).
529
529
 
530
- © 2025 PyGeoFetch Contributors. Part of the **PyGeoVision** platform — [PyGeoFetch](https://github.com/appiahkubis14/PyGeoFetch) (data + processing) + [GeoAI](https://opengeoai.org) (AI) = complete Earth observation pipeline.
530
+ © 2025 pygeofetch Contributors. Part of the **PyGeoVision** platform — [pygeofetch](https://github.com/appiahkubis14/pygeofetch) (data + processing) + [GeoAI](https://opengeoai.org) (AI) = complete Earth observation pipeline.