setiastrosuitepro 1.8.1.post2__py3-none-any.whl → 1.8.2__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.

Potentially problematic release.


This version of setiastrosuitepro might be problematic. Click here for more details.

Files changed (33) hide show
  1. setiastro/images/finderchart.png +0 -0
  2. setiastro/saspro/__main__.py +29 -38
  3. setiastro/saspro/_generated/build_info.py +2 -2
  4. setiastro/saspro/abe.py +1 -1
  5. setiastro/saspro/blink_comparator_pro.py +3 -1
  6. setiastro/saspro/bright_stars.py +305 -0
  7. setiastro/saspro/continuum_subtract.py +2 -1
  8. setiastro/saspro/cosmicclarity_preset.py +2 -1
  9. setiastro/saspro/doc_manager.py +8 -0
  10. setiastro/saspro/exoplanet_detector.py +22 -17
  11. setiastro/saspro/finder_chart.py +1639 -0
  12. setiastro/saspro/gui/main_window.py +36 -14
  13. setiastro/saspro/gui/mixins/menu_mixin.py +2 -0
  14. setiastro/saspro/gui/mixins/toolbar_mixin.py +9 -1
  15. setiastro/saspro/legacy/image_manager.py +18 -4
  16. setiastro/saspro/legacy/xisf.py +3 -3
  17. setiastro/saspro/main_helpers.py +18 -0
  18. setiastro/saspro/memory_utils.py +18 -14
  19. setiastro/saspro/resources.py +175 -161
  20. setiastro/saspro/runtime_torch.py +51 -10
  21. setiastro/saspro/sfcc.py +5 -3
  22. setiastro/saspro/stacking_suite.py +4 -3
  23. setiastro/saspro/star_alignment.py +4 -2
  24. setiastro/saspro/texture_clarity.py +1 -1
  25. setiastro/saspro/widgets/image_utils.py +12 -4
  26. setiastro/saspro/wimi.py +2 -1
  27. setiastro/saspro/xisf.py +3 -3
  28. {setiastrosuitepro-1.8.1.post2.dist-info → setiastrosuitepro-1.8.2.dist-info}/METADATA +4 -4
  29. {setiastrosuitepro-1.8.1.post2.dist-info → setiastrosuitepro-1.8.2.dist-info}/RECORD +33 -30
  30. {setiastrosuitepro-1.8.1.post2.dist-info → setiastrosuitepro-1.8.2.dist-info}/WHEEL +0 -0
  31. {setiastrosuitepro-1.8.1.post2.dist-info → setiastrosuitepro-1.8.2.dist-info}/entry_points.txt +0 -0
  32. {setiastrosuitepro-1.8.1.post2.dist-info → setiastrosuitepro-1.8.2.dist-info}/licenses/LICENSE +0 -0
  33. {setiastrosuitepro-1.8.1.post2.dist-info → setiastrosuitepro-1.8.2.dist-info}/licenses/license.txt +0 -0
@@ -228,31 +228,71 @@ def _pip_ok(venv_python: Path, args: list[str], status_cb=print) -> bool:
228
228
 
229
229
  def _ensure_numpy(venv_python: Path, status_cb=print) -> None:
230
230
  """
231
- Torch wheels may not pull NumPy; ensure NumPy is present in the SAME venv.
231
+ Ensure NumPy exists in the runtime venv AND is ABI-compatible with common
232
+ torch/vision/audio wheels. In practice: enforce numpy<2.
233
+
232
234
  Safe to call repeatedly.
233
235
  """
234
236
  def _numpy_present() -> bool:
235
237
  code = "import importlib.util; print('OK' if importlib.util.find_spec('numpy') else 'MISS')"
236
238
  try:
237
239
  out = subprocess.check_output([str(venv_python), "-c", code], text=True).strip()
238
- return (out == "OK")
240
+ return out == "OK"
239
241
  except Exception:
240
242
  return False
241
243
 
242
- if _numpy_present():
243
- return
244
+ def _numpy_major() -> int | None:
245
+ code = (
246
+ "import numpy as np\n"
247
+ "v = np.__version__.split('+',1)[0]\n"
248
+ "print(int(v.split('.',1)[0]))\n"
249
+ )
250
+ try:
251
+ out = subprocess.check_output([str(venv_python), "-c", code], text=True).strip()
252
+ return int(out)
253
+ except Exception:
254
+ return None
244
255
 
245
- # Keep tools fresh, then install a compatible NumPy (Torch 2.x is fine with NumPy 1.26–2.x)
256
+ # Keep tools fresh
246
257
  _pip_ok(venv_python, ["install", "--upgrade", "pip", "setuptools", "wheel"], status_cb=status_cb)
247
258
 
248
- # Prefer latest available in [1.26, 3.0)
249
- if not _pip_ok(venv_python, ["install", "--prefer-binary", "--no-cache-dir", "numpy>=1.26,<3"], status_cb=status_cb):
250
- # Final fallback to a broadly available pin
251
- _pip_ok(venv_python, ["install", "--prefer-binary", "--no-cache-dir", "numpy==1.26.*"], status_cb=status_cb)
259
+ # 1) If NumPy missing install safe pin
260
+ if not _numpy_present():
261
+ status_cb("[RT] Installing NumPy (pinning to numpy<2 for torch wheel compatibility)…")
262
+ if not _pip_ok(
263
+ venv_python,
264
+ ["install", "--prefer-binary", "--no-cache-dir", "numpy<2"],
265
+ status_cb=status_cb,
266
+ ):
267
+ # last-ditch fallback (very widely available)
268
+ _pip_ok(
269
+ venv_python,
270
+ ["install", "--prefer-binary", "--no-cache-dir", "numpy==1.26.*"],
271
+ status_cb=status_cb,
272
+ )
273
+
274
+ # 2) If NumPy present but major>=2 → downgrade to numpy<2
275
+ maj = _numpy_major()
276
+ if maj is not None and maj >= 2:
277
+ status_cb("[RT] NumPy 2.x detected in runtime venv; downgrading to numpy<2…")
278
+ if not _pip_ok(
279
+ venv_python,
280
+ ["install", "--prefer-binary", "--no-cache-dir", "--force-reinstall", "numpy<2"],
281
+ status_cb=status_cb,
282
+ ):
283
+ _pip_ok(
284
+ venv_python,
285
+ ["install", "--prefer-binary", "--no-cache-dir", "--force-reinstall", "numpy==1.26.*"],
286
+ status_cb=status_cb,
287
+ )
252
288
 
253
- # Post-install verification
289
+ # Post verification
254
290
  if not _numpy_present():
255
291
  raise RuntimeError("Failed to install NumPy into the SASpro runtime venv.")
292
+ maj2 = _numpy_major()
293
+ if maj2 is not None and maj2 >= 2:
294
+ raise RuntimeError("NumPy is still 2.x in the SASpro runtime venv after pinning; torch stack may not import.")
295
+
256
296
 
257
297
 
258
298
  def _is_access_denied(exc: BaseException) -> bool:
@@ -1076,6 +1116,7 @@ def import_torch(
1076
1116
  prefer_dml=prefer_dml,
1077
1117
  status_cb=status_cb,
1078
1118
  )
1119
+ _ensure_numpy(vp, status_cb=status_cb)
1079
1120
  except Exception as e:
1080
1121
  if _is_access_denied(e):
1081
1122
  raise OSError(_access_denied_msg(rt)) from e
setiastro/saspro/sfcc.py CHANGED
@@ -11,6 +11,8 @@
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
+ from setiastro.saspro.main_helpers import non_blocking_sleep
15
+
14
16
  import os
15
17
  import re
16
18
  import cv2
@@ -1149,7 +1151,7 @@ class SFCCDialog(QDialog):
1149
1151
  break
1150
1152
  except Exception:
1151
1153
  QApplication.processEvents()
1152
- time.sleep(0.8)
1154
+ non_blocking_sleep(0.8)
1153
1155
 
1154
1156
  if not ok:
1155
1157
  for _ in range(5):
@@ -1159,7 +1161,7 @@ class SFCCDialog(QDialog):
1159
1161
  break
1160
1162
  except Exception:
1161
1163
  QApplication.processEvents()
1162
- time.sleep(0.8)
1164
+ non_blocking_sleep(0.8)
1163
1165
 
1164
1166
  if not ok:
1165
1167
  QMessageBox.critical(self, "SIMBAD Error", "Could not configure SIMBAD votable fields.")
@@ -1178,7 +1180,7 @@ class SFCCDialog(QDialog):
1178
1180
  break
1179
1181
  except Exception:
1180
1182
  QApplication.processEvents()
1181
- time.sleep(1.2)
1183
+ non_blocking_sleep(1.2)
1182
1184
  result = None
1183
1185
 
1184
1186
  if result is None or len(result) == 0:
@@ -6728,7 +6728,7 @@ class StackingSuiteDialog(QDialog):
6728
6728
  s = s[:-1]
6729
6729
  try:
6730
6730
  return float(s)
6731
- except Exception:
6731
+ except (ValueError, TypeError):
6732
6732
  return 2.0
6733
6733
  return 2.0
6734
6734
 
@@ -6737,7 +6737,7 @@ class StackingSuiteDialog(QDialog):
6737
6737
  def _set_drizzle_scale(self, r: float | str) -> None:
6738
6738
  if isinstance(r, str):
6739
6739
  try: r = float(r.rstrip("xX"))
6740
- except: r = 2.0
6740
+ except ValueError: r = 2.0
6741
6741
  r = float(max(1.0, min(3.0, r)))
6742
6742
  # store as “Nx” so the combo’s string stays in sync
6743
6743
  self.settings.setValue("stacking/drizzle_scale", f"{int(r)}x")
@@ -6754,7 +6754,8 @@ class StackingSuiteDialog(QDialog):
6754
6754
  if cb is not None:
6755
6755
  try:
6756
6756
  return bool(cb.isChecked())
6757
- except Exception:
6757
+ except (RuntimeError, AttributeError):
6758
+ # Wrapped object might be deleted or invalid
6758
6759
  pass
6759
6760
  # fallback to settings (headless / older flows)
6760
6761
  return bool(self.settings.value("stacking/drizzle_enabled", False, type=bool))
@@ -7172,6 +7172,7 @@ class MosaicMasterDialog(QDialog):
7172
7172
  return None
7173
7173
 
7174
7174
  def poll_submission_status(self, subid):
7175
+ from setiastro.saspro.main_helpers import non_blocking_sleep
7175
7176
  url = ASTROMETRY_API_URL + f"submissions/{subid}"
7176
7177
  for attempt in range(90): # up to ~15 minutes
7177
7178
  response = robust_api_request("GET", url)
@@ -7180,11 +7181,12 @@ class MosaicMasterDialog(QDialog):
7180
7181
  if jobs and jobs[0] is not None:
7181
7182
  return jobs[0]
7182
7183
  print(f"Polling attempt {attempt+1}: Job ID not ready yet.")
7183
- time.sleep(10)
7184
+ non_blocking_sleep(10)
7184
7185
  QMessageBox.critical(self, "Blind Solve Failed", "Failed to retrieve job ID from Astrometry.net after multiple attempts.")
7185
7186
  return None
7186
7187
 
7187
7188
  def poll_calibration_data(self, job_id):
7189
+ from setiastro.saspro.main_helpers import non_blocking_sleep
7188
7190
  url = ASTROMETRY_API_URL + f"jobs/{job_id}/calibration/"
7189
7191
  for attempt in range(90):
7190
7192
  response = robust_api_request("GET", url)
@@ -7192,7 +7194,7 @@ class MosaicMasterDialog(QDialog):
7192
7194
  print("Calibration data retrieved:", response)
7193
7195
  return response
7194
7196
  print(f"Calibration data not available yet (attempt {attempt+1})")
7195
- time.sleep(10)
7197
+ non_blocking_sleep(10)
7196
7198
  QMessageBox.critical(self, "Blind Solve Failed", "Calibration data did not complete in the expected timeframe.")
7197
7199
  return None
7198
7200
 
@@ -154,7 +154,7 @@ def _apply_clarity(image: np.ndarray, amount: float, radius: float) -> np.ndarra
154
154
  print(f"Bilateral Filter failed: {e}")
155
155
  try:
156
156
  base = cv2.GaussianBlur(img_f32, (0, 0), sigma_space_target)
157
- except:
157
+ except Exception:
158
158
  return image
159
159
  else:
160
160
  return image
@@ -66,7 +66,9 @@ def numpy_to_qimage(arr: np.ndarray, normalize: bool = True) -> QImage:
66
66
  if arr.ndim == 2:
67
67
  # Grayscale
68
68
  h, w = arr.shape
69
- return QImage(arr.data, w, h, w, QImage.Format.Format_Grayscale8).copy()
69
+ img = QImage(arr.data, w, h, w, QImage.Format.Format_Grayscale8)
70
+ img._buf = arr # Keep alive
71
+ return img
70
72
 
71
73
  elif arr.ndim == 3:
72
74
  h, w, c = arr.shape
@@ -74,17 +76,23 @@ def numpy_to_qimage(arr: np.ndarray, normalize: bool = True) -> QImage:
74
76
  if c == 1:
75
77
  # Grayscale with channel dim
76
78
  arr = arr.squeeze()
77
- return QImage(arr.data, w, h, w, QImage.Format.Format_Grayscale8).copy()
79
+ img = QImage(arr.data, w, h, w, QImage.Format.Format_Grayscale8)
80
+ img._buf = arr
81
+ return img
78
82
 
79
83
  elif c == 3:
80
84
  # RGB
81
85
  bytes_per_line = 3 * w
82
- return QImage(arr.data, w, h, bytes_per_line, QImage.Format.Format_RGB888).copy()
86
+ img = QImage(arr.data, w, h, bytes_per_line, QImage.Format.Format_RGB888)
87
+ img._buf = arr
88
+ return img
83
89
 
84
90
  elif c == 4:
85
91
  # RGBA
86
92
  bytes_per_line = 4 * w
87
- return QImage(arr.data, w, h, bytes_per_line, QImage.Format.Format_RGBA8888).copy()
93
+ img = QImage(arr.data, w, h, bytes_per_line, QImage.Format.Format_RGBA8888)
94
+ img._buf = arr
95
+ return img
88
96
 
89
97
  else:
90
98
  raise ValueError(f"Unsupported number of channels: {c}")
setiastro/saspro/wimi.py CHANGED
@@ -28,6 +28,7 @@ import lz4.block
28
28
  import zstandard
29
29
  import base64
30
30
  import ast
31
+ from setiastro.saspro.main_helpers import non_blocking_sleep
31
32
  import platform
32
33
  from pathlib import Path
33
34
  import glob
@@ -6789,7 +6790,7 @@ class WIMIDialog(QDialog):
6789
6790
  except Exception as e:
6790
6791
  last_err = e
6791
6792
  if attempt < 4:
6792
- time.sleep(1) # or QThread.msleep(1000) if you want less UI freeze
6793
+ non_blocking_sleep(1)
6793
6794
  else:
6794
6795
  # After 5 attempts total, stop with a helpful message
6795
6796
  err_txt = str(last_err) if last_err is not None else "Unknown error"
setiastro/saspro/xisf.py CHANGED
@@ -1072,7 +1072,7 @@ class XISF:
1072
1072
  }
1073
1073
  try:
1074
1074
  return _dtypes[s]
1075
- except:
1075
+ except KeyError:
1076
1076
  raise NotImplementedError(f"sampleFormat {s} not implemented")
1077
1077
 
1078
1078
  # Return XISF data type from numpy dtype
@@ -1087,7 +1087,7 @@ class XISF:
1087
1087
  }
1088
1088
  try:
1089
1089
  return _sampleFormats[str(dtype)]
1090
- except:
1090
+ except KeyError:
1091
1091
  raise NotImplementedError(f"sampleFormat for {dtype} not implemented")
1092
1092
 
1093
1093
  @staticmethod
@@ -1121,7 +1121,7 @@ class XISF:
1121
1121
  }
1122
1122
  try:
1123
1123
  return _dtypes[type_prefix]
1124
- except:
1124
+ except KeyError:
1125
1125
  raise NotImplementedError(f"data type {type_name} not implemented")
1126
1126
 
1127
1127
  # __/ Auxiliary functions for compression/shuffling \________
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: setiastrosuitepro
3
- Version: 1.8.1.post2
3
+ Version: 1.8.2
4
4
  Summary: Seti Astro Suite Pro - Advanced astrophotography toolkit for image calibration, stacking, registration, photometry, and visualization
5
5
  License: GPL-3.0
6
6
  License-File: LICENSE
@@ -68,9 +68,9 @@ Description-Content-Type: text/markdown
68
68
 
69
69
  ### Other contributors:
70
70
  - [Fabio Tempera](https://github.com/Ft2801) 🥇
71
- - Complete code refactoring of `setiastrosuitepro.py` (20,000+ lines), and duplicated code removal across the project
72
- - Addition of AstroSpikes tool, secret minigame, system resources monitor, app statistics, and 10+ language translations
73
- - Implementation of UI elements, startup window, caching methods, lazy imports, utils functions, better memory management, and other important code optimizations across the entire project
71
+ - Complete code refactoring of `setiastrosuitepro.py` (20,000+ lines), and duplicated code removal across the entire project
72
+ - Addition of AstroSpikes tool, Texture and Clarity, secret minigame, system resources monitor, app statistics, and 10+ language translations
73
+ - Implementation of UI elements, startup optimizations, startup window, caching methods, lazy imports, utils functions, better memory management, and other important code optimizations across the entire project
74
74
  - [Joaquin Rodriguez](https://github.com/jrhuerta)
75
75
  - Project migration to Poetry
76
76
  - [Tim Dicke](https://github.com/dickett)
@@ -57,6 +57,7 @@ setiastro/images/disk.png,sha256=PfdYS_zOnTxej1MfjRZo2Ddtvvbsg6nTSPGIrp2qc5Q,496
57
57
  setiastro/images/dse.png,sha256=S0T53A-Ur0SbfwK2TY2g2dulemzhBO4zm6FQIbQEXkg,116728
58
58
  setiastro/images/exoicon.png,sha256=7scp5dluUGMT_lyO5-vnLnBKjmS4EDc1QaN6KQANJTc,96928
59
59
  setiastro/images/eye.png,sha256=P3HtUKUtM1jTuyq7tQDljdqrntbi4gzdlB_x3K5ScMk,32761
60
+ setiastro/images/finderchart.png,sha256=d6ANzYZP2wJMgw0YNocg-QF78SniQSbke2Shs6cFhOI,86888
60
61
  setiastro/images/first_quarter.png,sha256=c4hol23log8lCcf3G92KTOF9pUVfNZo6wPXqo4M2HZI,47888
61
62
  setiastro/images/fliphorizontal.png,sha256=RbR0rjodNWnu6p06u3STaRnv253HknM3aW_VLvjSXLs,2937
62
63
  setiastro/images/flipvertical.png,sha256=vMFAnumypAwQmnaVKjqFlzgLWaaMaGfA66K0BFOcSq8,2855
@@ -181,10 +182,10 @@ setiastro/images/wrench_icon.png,sha256=4-DFNkXZUBkfK4WCFLdcr1-b3MsrYcE3DGrp4tL6
181
182
  setiastro/images/xisfliberator.png,sha256=sPC7mPHX_ToyBh9nSLn9B5fVRaM89QvqzW30ohbW8VE,1551111
182
183
  setiastro/qml/ResourceMonitor.qml,sha256=k9_qXKAZLi8vj-5BffJTJu_UkRnxunZKn53HthdySKE,3948
183
184
  setiastro/saspro/__init__.py,sha256=6o8orhytzBWyJWBdG37xPcT6IVPZOG8d22FBVzn0Kac,902
184
- setiastro/saspro/__main__.py,sha256=Vr3_sGL5nCpl--s1omXdDwLsRXMMVEqLHEXrrPqcQ7g,41255
185
+ setiastro/saspro/__main__.py,sha256=eF2aX3QNxdniVgj1CYt5VPowRx0E-5mPn5yGRFgYIBs,40815
185
186
  setiastro/saspro/_generated/__init__.py,sha256=HbruQfKNbbVL4kh_t4oVG3UeUieaW8MUaqIcDCmnTvA,197
186
- setiastro/saspro/_generated/build_info.py,sha256=4wVEfZLlf5_zwW25aPITLY5uY-9FV9d8AveG9LRtoPY,117
187
- setiastro/saspro/abe.py,sha256=l6o0klT-TqJppzEjCBb9isyIvtuf_UsuMZV8JvqbgPI,59779
187
+ setiastro/saspro/_generated/build_info.py,sha256=BIM9yWgNJRpUTopkx2W0P8gCEaFSdinSdmWInMEV3Z4,111
188
+ setiastro/saspro/abe.py,sha256=Yj3cmwRZoX0XyiyFWuiARZuF-O9lWnOpplWQhykz0Ms,59777
188
189
  setiastro/saspro/abe_preset.py,sha256=u9t16yTb9v98tLjhvh496Fsp3Z-dNiBSs5itnAaJwh8,7750
189
190
  setiastro/saspro/aberration_ai.py,sha256=8LtDu_KuqvL-W0MTUIJq9KguMjJPiUEQjMUibY16H-4,41673
190
191
  setiastro/saspro/aberration_ai_preset.py,sha256=nxtjo0qQYEML_8AzemMXtLNSdWf2FhMzPO9xELjlZ0U,9747
@@ -200,7 +201,8 @@ setiastro/saspro/backgroundneutral.py,sha256=MFlBEwR65ASNXIY0S-0ZUaS89FCmNV_qafP
200
201
  setiastro/saspro/batch_convert.py,sha256=O46KyB-DBZiTHokaWt_op1GDRr3juSaDSeFzP3pv1Zs,12377
201
202
  setiastro/saspro/batch_renamer.py,sha256=PZe2MEwjg0n055UETIbwnwdfAux4heTVx5gr3qnNW5g,21900
202
203
  setiastro/saspro/blemish_blaster.py,sha256=aiIpr-qpDmfaLZErUGUtwQgSTnaBHz3l14JvDWRfL3w,22983
203
- setiastro/saspro/blink_comparator_pro.py,sha256=n4-OQWZ42yT1JfsbUXzUwFopA4-CTlp5kicrVvlJiW4,138274
204
+ setiastro/saspro/blink_comparator_pro.py,sha256=b-tfWTQwHt5P3OqC-BTYaW5-vSE_mzMdMI88g6nIxRQ,138346
205
+ setiastro/saspro/bright_stars.py,sha256=blfJVsRc_rfkzuhFx3BMQCVL1szslrZU340-SqrXP1g,16044
204
206
  setiastro/saspro/bundles.py,sha256=jWMYpalOcaMQ1QgikseOOmF7bBzDz9aykhRddaTsReQ,1892
205
207
  setiastro/saspro/bundles_dock.py,sha256=IEAJEOEEe7V4NvsmClMygTf55LXN3SkV4e23K1erzkc,4441
206
208
  setiastro/saspro/cheat_sheet.py,sha256=0bLmwY3GBWGcb4M7BBYzzrB_03XfqvZWAhQ2cBPavQ8,7852
@@ -211,7 +213,7 @@ setiastro/saspro/common_tr.py,sha256=cYFLFP2d8cwXk_phdYbAdVovEOK-7niBCdrUrXCKn-Q
211
213
  setiastro/saspro/config.py,sha256=FhvWG-efVdzuEPef-eOezem-YaFgnGNCl86XmkruGYE,1319
212
214
  setiastro/saspro/config_bootstrap.py,sha256=5em6r29-PA0nnX7M20NGAteQZ_8ecilGsbPRYF_4yIo,1236
213
215
  setiastro/saspro/config_manager.py,sha256=lDHmEDfnj40CGPcD-U4ybpZiR6uJVimcDCQXtQ38PEA,10758
214
- setiastro/saspro/continuum_subtract.py,sha256=o4pptQdRra4oMlSaEmY_qlFdJmtCyzcW2pbJ9HSxZYA,66261
216
+ setiastro/saspro/continuum_subtract.py,sha256=HwNEtfufnvkaqflsBa0FFrCtVEq5t4vUAo-d_ou4juE,66331
215
217
  setiastro/saspro/convo.py,sha256=pAczsoS7g596mk1eI4XmVvd1EAoTZVdj12qRzFIISjg,67708
216
218
  setiastro/saspro/convo_preset.py,sha256=31Fzk6ssA3lHuM5vehYOpFNVdIyRNNpL78Ts69ivWKk,20013
217
219
  setiastro/saspro/copyastro.py,sha256=ImDMrus4_LqdEXozMQMiM6SjpF0Yd3D-TzMJ2ggFrNc,7322
@@ -222,7 +224,7 @@ setiastro/saspro/cosmicclarity_engines/denoise_engine.py,sha256=MXi3z04XfCOQhZwy
222
224
  setiastro/saspro/cosmicclarity_engines/satellite_engine.py,sha256=kZ1DyomDIY7wYjvrMYnGEjdtyz8k2CAR13lKNTQAWt4,22947
223
225
  setiastro/saspro/cosmicclarity_engines/sharpen_engine.py,sha256=PNHzQvmN1wczOXIpbL8Ac5pyXQQkI0DEKpCyHXqbGgI,32533
224
226
  setiastro/saspro/cosmicclarity_engines/superres_engine.py,sha256=RezBePfcu7S_N51C595NFpBKwxI8eF_MRG5-5b-AT7Y,16595
225
- setiastro/saspro/cosmicclarity_preset.py,sha256=1nUTzC3nFe79pyWTBvNyvUL-MfTWC4SbOUvgJHA80v8,17853
227
+ setiastro/saspro/cosmicclarity_preset.py,sha256=slCnp-VNLgzjnEe7kXJcQa_L6iPXTYkl0TrpjnCHGko,17923
226
228
  setiastro/saspro/crop_dialog_pro.py,sha256=Cv0A_XGIZPYdZknygL9_JcY0thEYklQVPMMxcHLavtA,45645
227
229
  setiastro/saspro/crop_preset.py,sha256=ubN3BZUt5okwe4qOYScJCQv0YV8PewVciCLUDo4pGOk,7033
228
230
  setiastro/saspro/curve_editor_pro.py,sha256=yfPudAPqQHevgtv-xnlL4oNB75nLk68WTsJG2pAW-k8,108609
@@ -230,9 +232,10 @@ setiastro/saspro/curves_preset.py,sha256=Cmz34JZWWrPIbudpPk1WvDk5NFjGIP-Vui3h_mx
230
232
  setiastro/saspro/debayer.py,sha256=emuQdb41xHwGVvnBU-SF1H_Zdz271RFTz0lm09xl184,25314
231
233
  setiastro/saspro/debug_utils.py,sha256=uYQne3MHxg_R7y17NqKFj1_befrmjzOI3_jD4JKovnA,1085
232
234
  setiastro/saspro/dnd_mime.py,sha256=QNG97JQJc3xNQ5cPD4zwbC7OZTf9BzqjXE2SvZV9H5Q,1143
233
- setiastro/saspro/doc_manager.py,sha256=ujII9hpYAgOagMxtUeeIwVEmQjzRot2kqj4-mF1ULGg,113035
234
- setiastro/saspro/exoplanet_detector.py,sha256=_zhasWOf63BCZJuFy1vRC5PMGcc4Rf6DmkbveUuzDdY,96858
235
+ setiastro/saspro/doc_manager.py,sha256=mNY6hTcQuGbHvuusRxJ_GJe3VhLrp053WZbfuNNUx28,113407
236
+ setiastro/saspro/exoplanet_detector.py,sha256=2o5SV8VB3BDZudUTKg62u5OHk2L6Ohk2Hekci_JESR0,97222
235
237
  setiastro/saspro/file_utils.py,sha256=zB2BqVnDVLbg_5eO3PIFgYu_Ulm5M3MXQUuzNdvO6Q4,7569
238
+ setiastro/saspro/finder_chart.py,sha256=TNSzbBn4TfSQLb3t13ircWlLJVmM9x2EmW6avNGieYA,57781
236
239
  setiastro/saspro/fitsmodifier.py,sha256=jYrSUwMacohP8ErFdJy0sr8Ld4YrTUgDdwaDr-_pRWg,30362
237
240
  setiastro/saspro/fix_bom.py,sha256=87NLdfL-eHLctZ8Yz6sTtchwXiX4GPJ133OQrNzhLSU,1121
238
241
  setiastro/saspro/free_torch_memory.py,sha256=mbyB16clbPm71wCdhtJ6PjOkGuQ_c0GS6OopYdPhlLc,1461
@@ -244,16 +247,16 @@ setiastro/saspro/ghs_preset.py,sha256=Zw3MJH5rEz7nqLdlmRBm3vYXgyopoupyDGAhM-PRXq
244
247
  setiastro/saspro/graxpert.py,sha256=XSLeBhlAY2DkYUw93j2OEOuPLOPfzWYcT5Dz3JhhpW8,22579
245
248
  setiastro/saspro/graxpert_preset.py,sha256=ESds2NPMPfsBHWNBfyYZ1rFpQxZ9gPOtxwz8enHfFfc,10719
246
249
  setiastro/saspro/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
247
- setiastro/saspro/gui/main_window.py,sha256=cZ7CI8wpZ2KnSF5YTM3IW6IcY-y2b8e7DXirRzl65Tc,376128
250
+ setiastro/saspro/gui/main_window.py,sha256=KHabN-GKjbApDQqMzm3j9i256DfagOJvaWYea2uJ4mQ,377079
248
251
  setiastro/saspro/gui/mixins/__init__.py,sha256=ubdTIri0xoRs6MwDnEaVsAHbMxuPqz0CZcYcue3Mkcc,836
249
252
  setiastro/saspro/gui/mixins/dock_mixin.py,sha256=C6IWKM-uP2ekqO7ozVQQcTnEgAkUL_OaRZbncIdrh8g,23893
250
253
  setiastro/saspro/gui/mixins/file_mixin.py,sha256=p6gKJrDTKovK4YzowDQy1Z5nNsspQe7B9ICRXvCUvxc,17893
251
254
  setiastro/saspro/gui/mixins/geometry_mixin.py,sha256=x-HyLXGFhEs8SJuXT8EF6tS3XJaH8IhAP-ZFJ2BS2Lw,19038
252
255
  setiastro/saspro/gui/mixins/header_mixin.py,sha256=kfZUJviB61c8NBXFB3MVBEcRPX_36ZV8tUZNJkDmMJ0,17253
253
256
  setiastro/saspro/gui/mixins/mask_mixin.py,sha256=hrC5jLWxUZgQiYUXp7nvECo2uiarK7_HKgawG4HGB9w,15711
254
- setiastro/saspro/gui/mixins/menu_mixin.py,sha256=bIEhPiplLdEH9N5U1vqDbAvcikr302uhiFuDbLKCWzA,16909
257
+ setiastro/saspro/gui/mixins/menu_mixin.py,sha256=9zcTSDFVWXJdsrVfNAcz6GvPJCRuKkuToJixkYb1GJo,16960
255
258
  setiastro/saspro/gui/mixins/theme_mixin.py,sha256=td6hYnZn17lXlFxQOXgK7-qfKo6CIJACF8_zrULlEkc,20740
256
- setiastro/saspro/gui/mixins/toolbar_mixin.py,sha256=LF-obbMkRtz69_NmBsyDPvcOBZlLKN94O15Kw1I0V80,92814
259
+ setiastro/saspro/gui/mixins/toolbar_mixin.py,sha256=V34uxLucNEm3SDbLndRNlNDPMBWGYm_OAL6GwlX7ZkU,93287
257
260
  setiastro/saspro/gui/mixins/update_mixin.py,sha256=rq7J0Pcn_gO8UehCGVtcSvf-MDbmeGf796h0JBGr0sM,16545
258
261
  setiastro/saspro/gui/mixins/view_mixin.py,sha256=EacXxtoAvkectGgLiahf3rHv2AaqKDQUteocVV_P834,17850
259
262
  setiastro/saspro/gui/statistics_dialog.py,sha256=celhcsHcp3lNpox_X0ByAiYE80qFaF-dYyP8StzgrcU,1955
@@ -277,19 +280,19 @@ setiastro/saspro/layers.py,sha256=X83XlwJhH0zjjC6b3CGeQg4dBp4w9zxBGfZVwtY1h3Q,12
277
280
  setiastro/saspro/layers_dock.py,sha256=1vdxAPmdQ1_8ZqA4IySspqvcydB_alSj3AARoWbb29Y,42735
278
281
  setiastro/saspro/lazy_imports.py,sha256=0M-4zklRGlqt5tvV6XZEFm958cRrOkxrjvSp_Ib1_zA,6564
279
282
  setiastro/saspro/legacy/__init__.py,sha256=NjuxU-id3METsQ6tNd53YVqDTZK6mEz7uYjLzguCdNQ,121
280
- setiastro/saspro/legacy/image_manager.py,sha256=qH0NHRjJu6vDWTEYivTNifH9ytVRN1f5XMhm7pBCDVE,101597
283
+ setiastro/saspro/legacy/image_manager.py,sha256=KORfOWp6QwMP5tQRrKfhT5SjSEtERSNzuQTIsYs6FQA,102339
281
284
  setiastro/saspro/legacy/numba_utils.py,sha256=i6s7gNHRWXYlXYSsHZuKJeYRfmyGUHrtxBggO0Drego,141689
282
- setiastro/saspro/legacy/xisf.py,sha256=Ah1CXDAohN__ej1Lq7LPU8vGLnDz8fluLQTGE71aUoc,52669
285
+ setiastro/saspro/legacy/xisf.py,sha256=n7qUjs2zOBqUtdc8AcCm-alLlz2LsZ5SIAQbvOkD_6o,52696
283
286
  setiastro/saspro/linear_fit.py,sha256=s17ZExDxToqBuqv14-o6OFQpXYTyW2TUj_EunohxvAk,20918
284
287
  setiastro/saspro/live_stacking.py,sha256=txqnqzPCJa4Ub-XQmfHRy8xuqY-5L129ryuY2LhA_e0,81253
285
288
  setiastro/saspro/log_bus.py,sha256=1H6cTrv138I89BU5K7rhA-QRXPxY0_2C5eegS38Mc-o,178
286
289
  setiastro/saspro/logging_config.py,sha256=vRETX9Nw4bYaBDZAbglo1m7V-2rh85QGE8eRS-yoOcA,14868
287
290
  setiastro/saspro/luminancerecombine.py,sha256=Y2l96xHPLj1K7W7TptvYZ8d4WagsqQ3uM40jokeHVkI,19264
288
- setiastro/saspro/main_helpers.py,sha256=sehI2K7P33ijCutfrL1fe7gyWV3VfQ8Jvim1WmeViKs,6426
291
+ setiastro/saspro/main_helpers.py,sha256=PD8pvO3-pgeWWtyRcTUVdrzp2h-Hui-iKrYJ7Z0Y3_Q,7003
289
292
  setiastro/saspro/mask_creation.py,sha256=aVa3Ie58dqsN945pZOQcyBYxuKj_03Fs9oF8ilWdYAk,44651
290
293
  setiastro/saspro/masks_core.py,sha256=2JcQeOFWzCnVxqNYBp4sHeRLn_b5LCpbZaAy6eNH1I8,1852
291
294
  setiastro/saspro/mdi_widgets.py,sha256=TkuYOn3xOWfg4yYAhJd4whGELXiiSyOjocnuHRyTN8Y,12238
292
- setiastro/saspro/memory_utils.py,sha256=uWSI8fa-HUjlvSRnu_zqhL_xBLQuZvj4NfbMrm475sQ,21147
295
+ setiastro/saspro/memory_utils.py,sha256=E1qKj_dYFRytoJLZpn05WK-9fpu16GoVOJiKk13LDEs,21325
293
296
  setiastro/saspro/metadata_patcher.py,sha256=EaDnIvhYmr27ouP92NvDgWz6I1x4iGjCfseq99V7nJA,2285
294
297
  setiastro/saspro/mfdeconv.py,sha256=802xtqfM7ZxV1-DBnkHEOXs_a-_KTbgTdZ307BiH6YY,155415
295
298
  setiastro/saspro/mfdeconv_earlystop.py,sha256=JCY9RV6jMtwcOxUnb9HzJHem5ygYXXiRr2N6VhWNWoQ,2787
@@ -326,12 +329,12 @@ setiastro/saspro/pyi_rthook_astroquery.py,sha256=Omt8U0gMI3efw3y-GUUJtBYUylwT1OM
326
329
  setiastro/saspro/remove_green.py,sha256=bd_4xLe-tEYPncOSVUHh-fVIrPWG6K0ESKgAygrwj_M,12082
327
330
  setiastro/saspro/remove_stars.py,sha256=PxOBJLsztODBRjbqM1HqQzIT9z7YovsEOfIo8netboU,58424
328
331
  setiastro/saspro/remove_stars_preset.py,sha256=HcR50bRXqiJSx4jMyle389g8b6SIulXHxgSysk07vdk,19195
329
- setiastro/saspro/resources.py,sha256=nms5etsGiP6QIZhP4LMNh5qxVlEkkJk-2oKKgLGvOFs,31485
332
+ setiastro/saspro/resources.py,sha256=Xe6PDEuO12THx0sMPD1Mi4pFiAmaVlYtCQRJpStykxA,29533
330
333
  setiastro/saspro/rgb_combination.py,sha256=8MKlxsbn5Pmiq3Vh28fMVYgYG4EIsvOYrwSJisJGyds,8765
331
334
  setiastro/saspro/rgb_extract.py,sha256=FZRA2qac8LR2u-jNcQP-1xFeiOYVBo06-Q3Xl0KAlZM,624
332
335
  setiastro/saspro/rgbalign.py,sha256=XwBDj5t_zj9Uh-PaX1SNlzix9PftnQBIoTMtRPvYK80,46528
333
336
  setiastro/saspro/runtime_imports.py,sha256=tgIHH10cdAEbCTOmcs7retQhAww2dEc_3mKrv_m8W9s,206
334
- setiastro/saspro/runtime_torch.py,sha256=1aTbMnFPn-yuTL-J2bgOynqRjkcabkA9ndxfHQ4BcwI,51748
337
+ setiastro/saspro/runtime_torch.py,sha256=VUPvyYxYfZpkgSaDtd_6PjQZ6FT0aiPB-I40-A5G3qc,53198
335
338
  setiastro/saspro/save_options.py,sha256=wUvuZBCDcQFDXF846njBd_4xoSRa2Ih1-I8Hf5ZTLbk,3648
336
339
  setiastro/saspro/selective_color.py,sha256=hx-9X4jeso797ifoBmwp9hNagPW4cvNPs9-T0JLHce0,64804
337
340
  setiastro/saspro/ser_stack_config.py,sha256=OMQHnRysXMW2l05PGLlwu1JxEBAcdUpBOEnFvn9jXP0,4921
@@ -339,11 +342,11 @@ setiastro/saspro/ser_stacker.py,sha256=HLJgX-Dc8hIajNupoK6U-APbr1vsHOycerL5KeYDI
339
342
  setiastro/saspro/ser_stacker_dialog.py,sha256=TfQBwbEF7722jJAb4nML-eQPe247usbeaby98sz_Hho,69471
340
343
  setiastro/saspro/ser_tracking.py,sha256=HU5F2ZAekjBsKu-nYQVqbx3FukUqGYTkTK6J9n0tUgg,8077
341
344
  setiastro/saspro/serviewer.py,sha256=QvPtJky2IzrywXaOYjeSZSNY0I64TSrzfgH7vRgGk7M,68763
342
- setiastro/saspro/sfcc.py,sha256=4wgXqH-E0OoSl_Ox4tMoExUHSnjosx2EnjjKeOXyZgo,89133
345
+ setiastro/saspro/sfcc.py,sha256=7fffs8x8d5hXK7MPaqtaWNrujk2lB3WVvQSKXh_zaY0,89221
343
346
  setiastro/saspro/shortcuts.py,sha256=QvFBXN_S8jqEwaP9m4pJMLVqzBmxo5HrjWhVCV9etQg,138256
344
347
  setiastro/saspro/signature_insert.py,sha256=2bIAayZfprVtutq4iQDf6xhPSpW52lJTRP5IEHrHZY0,70851
345
- setiastro/saspro/stacking_suite.py,sha256=z3aTP10RfXjxilbzLAFBtJ37aPL3ZAKDOrxdVIASmdk,895924
346
- setiastro/saspro/star_alignment.py,sha256=76rOtMHo0JEsStwCNJYWUQz3stK-M5bPojai1dwNfss,326486
348
+ setiastro/saspro/stacking_suite.py,sha256=ZALG0IMIfNkHnX5GMgtjQh00CYAecNTmWMOeDTcQZLc,896032
349
+ setiastro/saspro/star_alignment.py,sha256=EFcY3XJBdpToK6PeibA11XTaVehetbW3wPc5NnfGhDE,326642
347
350
  setiastro/saspro/star_alignment_preset.py,sha256=1QLRRUsVGr3-iX4kKvV9s-NuDRJVnRQat8qdTIs1nao,13164
348
351
  setiastro/saspro/star_metrics.py,sha256=LRfBdqjwJJ9iz_paY-CkhPIqt2MxoXARLUy73ZKTA_0,1503
349
352
  setiastro/saspro/star_spikes.py,sha256=PKI9C8SYmyi9St-IMtyJn75858kfi0NIJ26uDEjlSV0,33021
@@ -353,7 +356,7 @@ setiastro/saspro/status_log_dock.py,sha256=SEZiijVLmtWbGxxjvf3XWUuMUhoVw50nwVfj7
353
356
  setiastro/saspro/subwindow.py,sha256=5Df5-jFAHwDmEEL5_IswFQxmL7fZx0C5v1ya0b8etPk,143457
354
357
  setiastro/saspro/supernovaasteroidhunter.py,sha256=PgCq3IR2pzsNBx6IxdhqfZlKPMZFhWI6cMJi600He78,66781
355
358
  setiastro/saspro/swap_manager.py,sha256=7hJvQsnm1LSqLmXrj5uQkTSqNJq1SvrtrkCQPJdNego,4643
356
- setiastro/saspro/texture_clarity.py,sha256=1snw-j91j5C--qi27VtQfZ_pIcRDLNH0K63tkFGvqe4,22918
359
+ setiastro/saspro/texture_clarity.py,sha256=WduV8AyZPFBSdV2rfBJAICpfHu2o_ZCDtI8p2CcfNOs,22928
357
360
  setiastro/saspro/torch_backend.py,sha256=e8ZNIeSP33NjNRH4yNhrhZRo5k7tNEpJ6FNlOQ-kp8I,2473
358
361
  setiastro/saspro/torch_rejection.py,sha256=p5xpslY4iBvqGZdlq-QObOssVx3maAG4CQHQxXETq64,19426
359
362
  setiastro/saspro/translations/all_source_strings.json,sha256=bIcZr4TnYpPi4wJGG0eU0VLCMBiS4ZRzTIHLOULqtRY,136852
@@ -405,7 +408,7 @@ setiastro/saspro/whitebalance.py,sha256=pQ1m3nI8RIrFqb3gOpxrDBXc_xKPI7wUIvUEX5rH
405
408
  setiastro/saspro/widgets/__init__.py,sha256=InMH1TPPzj1kHeHv7gQRwQcUlHvohcUYcfFti15hO1A,1287
406
409
  setiastro/saspro/widgets/common_utilities.py,sha256=3jg_bOYgnwSjD85Vu_kB-9m04pMZ_MJmLEywjqmk_B0,10702
407
410
  setiastro/saspro/widgets/graphics_views.py,sha256=VfYokl0TYP-dLnwdcsmy61X5ETlNH1DWlGTMm2GlI7Q,4208
408
- setiastro/saspro/widgets/image_utils.py,sha256=3cUy4qwV0C86EzOaUAJvLemh7dkgiuP6Nbjn68hYbPc,15457
411
+ setiastro/saspro/widgets/image_utils.py,sha256=fGHp1dNp066OP2APAMvytahNO-hTmw-F4QUIGznh8bc,15638
409
412
  setiastro/saspro/widgets/minigame/game.js,sha256=M8A8NL1RKc9kLtGvkL4Zd2_AE_Zjc-PDxdGicWukyYs,32392
410
413
  setiastro/saspro/widgets/minigame/index.html,sha256=BD39tHEdpSIo1sdQpHuG3OaE9Hwe5Y0imI8a7T10uck,2290
411
414
  setiastro/saspro/widgets/minigame/style.css,sha256=RNj9XrKnn_r9ow3JnQmRwSpyJlBOwx_Rs5rWDEjRTC0,4540
@@ -414,13 +417,13 @@ setiastro/saspro/widgets/resource_monitor.py,sha256=2mSZXiqpcKp2xxqDMZRAh4GTF5cU
414
417
  setiastro/saspro/widgets/spinboxes.py,sha256=F2tSn1IYzk7G5IzmFZQOjCuTfSi-gp_n524r6YBTtHM,10359
415
418
  setiastro/saspro/widgets/themed_buttons.py,sha256=m6f_AYCx-tUmKf3U1CBuBbUsXOLW3cS3_oZUd4plVuU,445
416
419
  setiastro/saspro/widgets/wavelet_utils.py,sha256=RNat7N2mtkK74jAIwmdcxYghrdCe39DjFZ-iCvC5cuQ,11985
417
- setiastro/saspro/wimi.py,sha256=CNo833Pur9P-A1DUSntlAaQWekf6gzWIvetOMvLDrOw,314678
420
+ setiastro/saspro/wimi.py,sha256=UARHSG6vCEqdNMxDX545Bdg12D_KzBI-2Abd9mz92-I,314694
418
421
  setiastro/saspro/wims.py,sha256=HDfVI3Ckf5OJEJLH8NI36pFc2USZnETpb4UDIvweNX4,27450
419
422
  setiastro/saspro/window_shelf.py,sha256=hpId8uRPq7-UZ3dWW5YzH_v4TchQokGFoPGM8dyaIZA,9448
420
- setiastro/saspro/xisf.py,sha256=Ah1CXDAohN__ej1Lq7LPU8vGLnDz8fluLQTGE71aUoc,52669
421
- setiastrosuitepro-1.8.1.post2.dist-info/entry_points.txt,sha256=g7cHWhUSiIP7mkyByG9JXGWWlHKeVC2vL7zvB9U-vEU,236
422
- setiastrosuitepro-1.8.1.post2.dist-info/licenses/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
423
- setiastrosuitepro-1.8.1.post2.dist-info/licenses/license.txt,sha256=KCwYZ9VpVwmzjelDq1BzzWqpBvt9nbbapa-woz47hfQ,123930
424
- setiastrosuitepro-1.8.1.post2.dist-info/METADATA,sha256=3phJaxk34FSgmi-YRbk8JdiZpe8pJu-83kOZc4cZ00E,9951
425
- setiastrosuitepro-1.8.1.post2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
426
- setiastrosuitepro-1.8.1.post2.dist-info/RECORD,,
423
+ setiastro/saspro/xisf.py,sha256=n7qUjs2zOBqUtdc8AcCm-alLlz2LsZ5SIAQbvOkD_6o,52696
424
+ setiastrosuitepro-1.8.2.dist-info/entry_points.txt,sha256=g7cHWhUSiIP7mkyByG9JXGWWlHKeVC2vL7zvB9U-vEU,236
425
+ setiastrosuitepro-1.8.2.dist-info/licenses/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
426
+ setiastrosuitepro-1.8.2.dist-info/licenses/license.txt,sha256=KCwYZ9VpVwmzjelDq1BzzWqpBvt9nbbapa-woz47hfQ,123930
427
+ setiastrosuitepro-1.8.2.dist-info/METADATA,sha256=D4v4qc2jXq8mAFQgjShl7gZHy0YXyi7oXo7-m3JR08Q,9996
428
+ setiastrosuitepro-1.8.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
429
+ setiastrosuitepro-1.8.2.dist-info/RECORD,,