PyGeoFetch 2.0.4__py3-none-any.whl → 2.0.6__py3-none-any.whl

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/__init__.py CHANGED
@@ -1,5 +1,5 @@
1
1
  """
2
- PyGeoFetch v2.0.4 — Universal Satellite Data Pipeline.
2
+ PyGeoFetch v2.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__ = "2.0.4"
33
+ __version__ = "2.0.6"
34
34
  __author__ = "PyGeoFetch Contributors"
35
35
  __license__ = "MIT"
36
36
 
pygeofetch/cli/main.py CHANGED
@@ -1,5 +1,5 @@
1
1
  """
2
- PyGeoFetch CLI v2.0.4 main entry point.
2
+ PyGeoFetch CLI v2.0.6 main entry point.
3
3
 
4
4
  Full command reference:
5
5
  pygeofetch auth — credential management
@@ -71,7 +71,7 @@ def cli(
71
71
  ) -> None:
72
72
  """
73
73
  \b
74
- PyGeoFetch v2.0.4 — Universal Satellite Data Pipeline
74
+ PyGeoFetch v2.0.6 — Universal Satellite Data Pipeline
75
75
  ===========================================================
76
76
  Unified access to 22+ satellite data providers.
77
77
 
@@ -1003,9 +1003,20 @@ class InterferogramGenerator:
1003
1003
  )
1004
1004
 
1005
1005
  sec_deburst_row_offset = int(round(ref_row_off + representative_row_offset))
1006
+ # sec_debursted, _ = deburst_array(
1007
+ # sec_complex, sec_burst_info, azimuth_time_interval_s,
1008
+ # row_offset=sec_deburst_row_offset,
1009
+ # )
1010
+
1011
+ # FIX: Use ref_burst_info for the secondary as well.
1012
+ # Because sec_complex has already been resampled onto the reference's
1013
+ # grid by the swath-level coregistration, its burst boundaries in
1014
+ # pixel coordinates now perfectly match the reference's. Using
1015
+ # sec_burst_info applies the secondary's original, un-warped timing,
1016
+ # which cuts out the wrong rows and destroys coherence at burst edges.
1006
1017
  sec_debursted, _ = deburst_array(
1007
- sec_complex, sec_burst_info, azimuth_time_interval_s,
1008
- row_offset=sec_deburst_row_offset,
1018
+ sec_complex, ref_burst_info, azimuth_time_interval_s,
1019
+ row_offset=int(ref_row_off),
1009
1020
  )
1010
1021
 
1011
1022
  # Real correctness fix, not optional: deburst can remove
@@ -214,7 +214,10 @@ def _ensure_snaphu_cli() -> str:
214
214
  # 3. Download if on Windows
215
215
  if platform.system() == "Windows":
216
216
  logger.info("SNAPHU executable not found. Downloading pre-compiled binary for Windows...")
217
- api_url = "https://api.github.com/repos/isce-framework/snaphu-py/releases/latest"
217
+
218
+ # The official isce-framework/snaphu-py does not provide Windows wheels/binaries.
219
+ # We use marsfan/SNAPHU-win which reliably hosts pre-compiled Windows binaries.
220
+ api_url = "https://api.github.com/repos/marsfan/SNAPHU-win/releases/latest"
218
221
  asset_url = None
219
222
 
220
223
  try:
@@ -224,29 +227,15 @@ def _ensure_snaphu_cli() -> str:
224
227
 
225
228
  for asset in data.get("assets", []):
226
229
  name = asset["name"].lower()
227
- if "win" in name and name.endswith(".zip"):
230
+ if name.endswith(".zip") and "snaphu" in name:
228
231
  asset_url = asset["browser_download_url"]
229
232
  break
230
-
231
- if not asset_url:
232
- # Fallback to scottstanie's repo which often hosts the windows binaries
233
- api_url2 = "https://api.github.com/repos/scottstanie/snaphu-py/releases/latest"
234
- req2 = urllib.request.Request(api_url2, headers={'User-Agent': 'PyGeoFetch'})
235
- with urllib.request.urlopen(req2, timeout=15) as response2:
236
- data2 = json.loads(response2.read().decode())
237
- for asset in data2.get("assets", []):
238
- if "win" in asset["name"].lower() and asset["name"].endswith(".zip"):
239
- asset_url = asset["browser_download_url"]
240
- break
241
233
  except Exception as e:
242
234
  logger.warning(f"Could not query GitHub API for SNAPHU binary: {e}")
243
235
 
244
236
  if not asset_url:
245
- raise RuntimeError(
246
- "Could not find a pre-compiled SNAPHU executable for Windows.\n"
247
- "Please install it manually and add it to your PATH, or install via pip:\n"
248
- " pip install snaphu"
249
- )
237
+ # Hardcoded fallback to the known working 2.0.7 release
238
+ asset_url = "https://github.com/marsfan/SNAPHU-win/releases/download/2.0.7/snaphu-v2.0.7.zip"
250
239
 
251
240
  logger.info(f"Downloading SNAPHU from {asset_url}...")
252
241
  try:
@@ -255,7 +244,10 @@ def _ensure_snaphu_cli() -> str:
255
244
  urllib.request.urlretrieve(asset_url, str(zip_path))
256
245
 
257
246
  with zipfile.ZipFile(zip_path, 'r') as zf:
258
- exe_files = [f for f in zf.namelist() if f.lower().endswith(".exe")]
247
+ # Look for snaphu.exe inside the zip (might be in a subfolder)
248
+ exe_files = [f for f in zf.namelist() if f.lower().endswith(".exe") and "snaphu" in f.lower()]
249
+ if not exe_files:
250
+ exe_files = [f for f in zf.namelist() if f.lower().endswith(".exe")]
259
251
  if not exe_files:
260
252
  raise RuntimeError("Downloaded zip did not contain an .exe file.")
261
253
 
@@ -276,7 +268,6 @@ def _ensure_snaphu_cli() -> str:
276
268
  "Or install the Python bindings: pip install snaphu"
277
269
  )
278
270
 
279
-
280
271
  def goldstein_filter(
281
272
  interferogram,
282
273
  alpha: float = 0.5,
pygeofetch/meta.yaml CHANGED
@@ -1,4 +1,4 @@
1
- {% set version = "2.0.4" %}
1
+ {% set version = "2.0.6" %}
2
2
 
3
3
  package:
4
4
  name: pygeofetch
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pygeofetch
3
- Version: 2.0.4
3
+ Version: 2.0.6
4
4
  Summary: Universal satellite data pipeline + geospatial processing platform
5
5
  Author-email: Samuel Appiah Kubi <appiahkubis14@gmail.com>
6
6
  License: MIT License
@@ -1,11 +1,11 @@
1
- pygeofetch/__init__.py,sha256=BKesKaBedlzLMOOF5DKJ5qFl2_HT0ND_1DzMXYQuSLc,1990
2
- pygeofetch/meta.yaml,sha256=jLWw6eKXkoNNHhqAMfC8viFsNaPLFS6cVVXBnzFq5u0,1280
1
+ pygeofetch/__init__.py,sha256=3yLt-AAmxfVvNxheH_dkgFpAvvR5gGty792nzcEDrLY,1990
2
+ pygeofetch/meta.yaml,sha256=J6CAyHoKfSfopdAL2fti7SG8bmr8R2JEeaiozvB79Uk,1280
3
3
  pygeofetch/cli/__init__.py,sha256=QZMIIHEgmjGFieucqq9fZ5uephxP9-jdu1s8Q4qqw8o,30
4
4
  pygeofetch/cli/auth_commands.py,sha256=YqbrN_BYcAYCaUIYLpSJ_VIw35tKFUiD9Kc55SWbDWg,7742
5
5
  pygeofetch/cli/config_commands.py,sha256=1Pps0HLCLPODMlM6SFV8ru3IKCDpexSTz8uKIXvIIF8,3918
6
6
  pygeofetch/cli/download_commands.py,sha256=reQ9vmA50mj1zqechjLHAOe_cjBfa1miqfWa8UiIlxU,11741
7
7
  pygeofetch/cli/index_commands.py,sha256=IoLGrsSU-lTcBitFFsg8EtucqSKZtNL-0ODj_I8Twew,10020
8
- pygeofetch/cli/main.py,sha256=wJG74Rbfsolf4xgUTq4S8UTZ0aVrX1IxyRSJzUA1ncA,30335
8
+ pygeofetch/cli/main.py,sha256=Qg2L7eJQSJsz671XKEVuSkNPEHnvbBQ1jvWxeqCONo4,30335
9
9
  pygeofetch/cli/pipeline_process_commands.py,sha256=OvuouT35zZlrC-7hWAJRfaY_aUNk4ScK0Fia9WVB_Gw,6904
10
10
  pygeofetch/cli/postprocess_commands.py,sha256=kof_f-kjjvYl5eqPqrcNHSOUM_qVkGdSh6-N4vcx2y4,5825
11
11
  pygeofetch/cli/preprocess_commands.py,sha256=cFp1VR03Q1pmCwiBWYmS5lXF3NOnzVAq3XgrZh3rBdU,8696
@@ -33,13 +33,13 @@ pygeofetch/insar/extraction.py,sha256=4d7c_vSUpyzEiCP2qk41S9tX1UAN78BOhyIc4RCm74
33
33
  pygeofetch/insar/flatearth.py,sha256=N2S-ZI7yi-BiC3d6jv1w8lLHd47lAYDt-aTdLng5E-c,13141
34
34
  pygeofetch/insar/geolocation.py,sha256=-vwTYFhvutKjI4c_f-3BGkfV3XnnDUh5r7KwQbLlErU,27465
35
35
  pygeofetch/insar/gpu.py,sha256=E4Dx9-78s2GyKl2_dJrc6lXIHiy67tlqHlpkYue_418,3933
36
- pygeofetch/insar/interferogram.py,sha256=tdX4lYilv-tAY5anr1aAeVO_7Zc-BEOCgGmOydtcRng,94264
36
+ pygeofetch/insar/interferogram.py,sha256=iQj0tV4FzkDpMwFhOmHc85s_Q0G1HL2tXeV9bzMoxkk,94914
37
37
  pygeofetch/insar/ionosphere.py,sha256=vG60pyUtxyoJqLCMb_KjFEJvkDE1Bl8fqTzTTbrTIX8,30101
38
38
  pygeofetch/insar/splitspectrum_diagnostic.py,sha256=_IlfBs__BW7Yz2RwdmWxfrOspe67jHMgJPyNyzK_rYE,7705
39
39
  pygeofetch/insar/stack_selection.py,sha256=ebFwO063cCT9kn3zLPlkYu6fpnfx-SRC90Ch18E7qJk,13157
40
40
  pygeofetch/insar/synthetic.py,sha256=FazdaG_u3GR1qk8022T92W2uxDJPg7OJaUSGY0wR0pw,16248
41
41
  pygeofetch/insar/timeseries.py,sha256=EtLJiPySMaUWwyNxI2GyfBdkqB4W-uvL-_E_T_POHz4,32063
42
- pygeofetch/insar/unwrap.py,sha256=3cAEI80KkY98lZ8rHNWlqzr-TXt_6RVWT3auslTi4FA,28218
42
+ pygeofetch/insar/unwrap.py,sha256=V2dsGULL8SaHwOu5uUNw8nX51v2mxrYQTjHM9O3WFmQ,27846
43
43
  pygeofetch/insar/validate.py,sha256=BZaVvaPNllfDzoPwat0vDA4do6H5xh5Ju_g4r5YNogE,10110
44
44
  pygeofetch/insar/visualize.py,sha256=D_KlWkpuOvfjke6ThHcMBkZTRwWn1KdBFNL1TBcy6kI,7543
45
45
  pygeofetch/insar/workflow.py,sha256=8IxGgabdz9fDLoGAVrJRCdw16GP3sSDSoFPXyv1RXcg,11713
@@ -104,9 +104,9 @@ pygeofetch/utils/validators.py,sha256=f-k3mGFP4byjimyDymhPEdsz5I16jZacx1HSnwrARj
104
104
  pygeofetch/viz/__init__.py,sha256=xf2C9IL4n3bv3oxk8RYkogq7nkuNyt18V-urAoXWRQY,449
105
105
  pygeofetch/viz/map.py,sha256=vYO99NvTumCAVXVtXcEzMx_cpmH-FvSVNWl8X0PNSgE,15494
106
106
  pygeofetch/viz/plot.py,sha256=I16rdOWb80gcjYDsDvTMzuyek7QHgUNOQxY2RejBAPs,53675
107
- pygeofetch-2.0.4.dist-info/licenses/LICENSE,sha256=zavMyhODD6NvZTmmKFEtATrngwY4CU_NEtY7lhjxGnI,1075
108
- pygeofetch-2.0.4.dist-info/METADATA,sha256=RtGCL4jStxgOt8TpMJb0WHGaCPdQPpoByRXVqGpKeAo,43254
109
- pygeofetch-2.0.4.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
110
- pygeofetch-2.0.4.dist-info/entry_points.txt,sha256=dHiUXLF5xNJ8vgtXZoUQNleEMQUeDPZiKQOE1tW8SDY,55
111
- pygeofetch-2.0.4.dist-info/top_level.txt,sha256=rOmnZargIfNk99fwVOqt6OJyJvpSTBBAYO5HU37yhHk,11
112
- pygeofetch-2.0.4.dist-info/RECORD,,
107
+ pygeofetch-2.0.6.dist-info/licenses/LICENSE,sha256=zavMyhODD6NvZTmmKFEtATrngwY4CU_NEtY7lhjxGnI,1075
108
+ pygeofetch-2.0.6.dist-info/METADATA,sha256=iC8gufbHrAU2vQvJhceZOlXy7UK3XnpNDTdTnZeMqKI,43254
109
+ pygeofetch-2.0.6.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
110
+ pygeofetch-2.0.6.dist-info/entry_points.txt,sha256=dHiUXLF5xNJ8vgtXZoUQNleEMQUeDPZiKQOE1tW8SDY,55
111
+ pygeofetch-2.0.6.dist-info/top_level.txt,sha256=rOmnZargIfNk99fwVOqt6OJyJvpSTBBAYO5HU37yhHk,11
112
+ pygeofetch-2.0.6.dist-info/RECORD,,