setiastrosuitepro 1.6.10__py3-none-any.whl → 1.7.0__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.
Files changed (51) hide show
  1. setiastro/images/colorwheel.svg +97 -0
  2. setiastro/images/narrowbandnormalization.png +0 -0
  3. setiastro/images/planetarystacker.png +0 -0
  4. setiastro/saspro/__main__.py +1 -1
  5. setiastro/saspro/_generated/build_info.py +2 -2
  6. setiastro/saspro/aberration_ai.py +49 -11
  7. setiastro/saspro/aberration_ai_preset.py +29 -3
  8. setiastro/saspro/backgroundneutral.py +73 -33
  9. setiastro/saspro/blink_comparator_pro.py +116 -71
  10. setiastro/saspro/convo.py +9 -6
  11. setiastro/saspro/curve_editor_pro.py +72 -22
  12. setiastro/saspro/curves_preset.py +249 -47
  13. setiastro/saspro/doc_manager.py +178 -11
  14. setiastro/saspro/gui/main_window.py +218 -66
  15. setiastro/saspro/gui/mixins/dock_mixin.py +245 -24
  16. setiastro/saspro/gui/mixins/file_mixin.py +35 -16
  17. setiastro/saspro/gui/mixins/menu_mixin.py +31 -1
  18. setiastro/saspro/gui/mixins/toolbar_mixin.py +132 -10
  19. setiastro/saspro/histogram.py +179 -7
  20. setiastro/saspro/imageops/narrowband_normalization.py +816 -0
  21. setiastro/saspro/imageops/serloader.py +769 -0
  22. setiastro/saspro/imageops/starbasedwhitebalance.py +23 -52
  23. setiastro/saspro/imageops/stretch.py +66 -15
  24. setiastro/saspro/legacy/numba_utils.py +25 -48
  25. setiastro/saspro/live_stacking.py +24 -4
  26. setiastro/saspro/multiscale_decomp.py +30 -17
  27. setiastro/saspro/narrowband_normalization.py +1618 -0
  28. setiastro/saspro/numba_utils.py +0 -55
  29. setiastro/saspro/ops/script_editor.py +5 -0
  30. setiastro/saspro/ops/scripts.py +119 -0
  31. setiastro/saspro/remove_green.py +1 -1
  32. setiastro/saspro/resources.py +4 -0
  33. setiastro/saspro/ser_stack_config.py +68 -0
  34. setiastro/saspro/ser_stacker.py +2245 -0
  35. setiastro/saspro/ser_stacker_dialog.py +1481 -0
  36. setiastro/saspro/ser_tracking.py +206 -0
  37. setiastro/saspro/serviewer.py +1242 -0
  38. setiastro/saspro/sfcc.py +602 -214
  39. setiastro/saspro/shortcuts.py +35 -16
  40. setiastro/saspro/stacking_suite.py +332 -87
  41. setiastro/saspro/star_alignment.py +243 -122
  42. setiastro/saspro/stat_stretch.py +220 -31
  43. setiastro/saspro/subwindow.py +2 -4
  44. setiastro/saspro/whitebalance.py +24 -0
  45. setiastro/saspro/widgets/resource_monitor.py +122 -74
  46. {setiastrosuitepro-1.6.10.dist-info → setiastrosuitepro-1.7.0.dist-info}/METADATA +2 -2
  47. {setiastrosuitepro-1.6.10.dist-info → setiastrosuitepro-1.7.0.dist-info}/RECORD +51 -40
  48. {setiastrosuitepro-1.6.10.dist-info → setiastrosuitepro-1.7.0.dist-info}/WHEEL +0 -0
  49. {setiastrosuitepro-1.6.10.dist-info → setiastrosuitepro-1.7.0.dist-info}/entry_points.txt +0 -0
  50. {setiastrosuitepro-1.6.10.dist-info → setiastrosuitepro-1.7.0.dist-info}/licenses/LICENSE +0 -0
  51. {setiastrosuitepro-1.6.10.dist-info → setiastrosuitepro-1.7.0.dist-info}/licenses/license.txt +0 -0
@@ -1,12 +1,16 @@
1
1
  # src/setiastro/saspro/widgets/resource_monitor.py
2
2
  from __future__ import annotations
3
+
3
4
  import os
5
+ import time
6
+ import subprocess
7
+ import numpy as np
8
+
4
9
  import psutil
10
+
5
11
  from PyQt6.QtCore import Qt, QUrl, QTimer, QObject, pyqtProperty, pyqtSignal, QThread
6
- from PyQt6.QtWidgets import QWidget, QVBoxLayout, QFrame
7
12
  from PyQt6.QtQuickWidgets import QQuickWidget
8
- import time
9
- import subprocess
13
+
10
14
  from setiastro.saspro.memory_utils import get_memory_usage_mb
11
15
  from setiastro.saspro.resources import _get_base_path
12
16
 
@@ -46,7 +50,6 @@ class GPUWorker(QThread):
46
50
  self._last_win_poll = now
47
51
 
48
52
  try:
49
- # Use explicit powershell.exe and make it non-interactive + hidden
50
53
  cmd = [
51
54
  "powershell.exe",
52
55
  "-NoProfile",
@@ -66,8 +69,8 @@ class GPUWorker(QThread):
66
69
  out = subprocess.check_output(
67
70
  cmd,
68
71
  startupinfo=self._startupinfo_hidden(),
69
- timeout=2.0, # IMPORTANT: don’t allow 5s hangs
70
- stderr=subprocess.DEVNULL, # keep it quiet
72
+ timeout=2.0,
73
+ stderr=subprocess.DEVNULL,
71
74
  )
72
75
  val_str = out.decode("utf-8", errors="ignore").strip()
73
76
 
@@ -82,7 +85,7 @@ class GPUWorker(QThread):
82
85
  nv_val = 0.0
83
86
  win_val = 0.0
84
87
 
85
- # NVIDIA (fast, keep it)
88
+ # NVIDIA (fast)
86
89
  if self._has_nvidia:
87
90
  try:
88
91
  out = subprocess.check_output(
@@ -107,7 +110,7 @@ class GPUWorker(QThread):
107
110
  try:
108
111
  val = self._get_gpu_load()
109
112
 
110
- # Optional: emit only if value changed a bit, or once per 250ms max
113
+ # emit only if changed enough OR periodically
111
114
  now = time.monotonic()
112
115
  if (
113
116
  self._last_emitted_val is None
@@ -122,9 +125,10 @@ class GPUWorker(QThread):
122
125
  except Exception:
123
126
  self.msleep(1000)
124
127
 
128
+
125
129
  class ResourceBackend(QObject):
126
- """Backend logic for the QML Resource Monitor."""
127
-
130
+ """Backend logic for the QML Resource Monitor (SYSTEM usage, not app usage)."""
131
+
128
132
  cpuChanged = pyqtSignal()
129
133
  ramChanged = pyqtSignal()
130
134
  gpuChanged = pyqtSignal()
@@ -132,12 +136,25 @@ class ResourceBackend(QObject):
132
136
 
133
137
  def __init__(self, parent=None):
134
138
  super().__init__(parent)
135
- self._cpu = 0.0
136
- self._ram = 0.0
137
- self._gpu = 0.0
139
+
140
+ self._cpu = 0.0 # system CPU %
141
+ self._ram = 0.0 # system RAM %
142
+ self._gpu = 0.0 # GPU %
138
143
  self._app_ram_val = 0.0
139
144
  self._app_ram_str = "0 MB"
140
-
145
+
146
+ # ---- Prime psutil CPU baselines (IMPORTANT on Windows) ----
147
+ # First call returns a meaningless 0.0 (or weird) because it establishes the baseline.
148
+ try:
149
+ psutil.cpu_percent(interval=None)
150
+ psutil.cpu_percent(percpu=True, interval=None)
151
+ except Exception:
152
+ pass
153
+
154
+ # Optional smoothing so gauge feels like Task Manager
155
+ self._cpu_ema = None # exponential moving average
156
+ self._last_cpu_times = None
157
+ self._last_cpu_sample_t = 0.0
141
158
  # Check if nvidia-smi is reachable once
142
159
  has_nvidia = False
143
160
  try:
@@ -152,49 +169,101 @@ class ResourceBackend(QObject):
152
169
  self._gpu_worker.resultReady.connect(self._on_gpu_measured)
153
170
  self._gpu_worker.start()
154
171
 
155
- # Timer for CPU/RAM updates (250ms as requested)
172
+ # Timer for CPU/RAM updates (250ms)
156
173
  self._timer = QTimer(self)
157
- self._timer.setInterval(250)
174
+ self._timer.setInterval(250)
158
175
  self._timer.timeout.connect(self._update_stats)
159
176
  self._timer.start()
160
177
 
161
178
  def _on_gpu_measured(self, val: float):
162
- self._gpu = val
179
+ self._gpu = float(val)
163
180
  self.gpuChanged.emit()
164
181
 
165
182
  @pyqtProperty(float, notify=cpuChanged)
166
- def cpuUsage(self):
167
- return self._cpu
183
+ def cpuUsage(self) -> float:
184
+ return float(self._cpu)
168
185
 
169
186
  @pyqtProperty(float, notify=ramChanged)
170
- def ramUsage(self):
171
- return self._ram
187
+ def ramUsage(self) -> float:
188
+ return float(self._ram)
172
189
 
173
190
  @pyqtProperty(float, notify=gpuChanged)
174
- def gpuUsage(self):
175
- return self._gpu
191
+ def gpuUsage(self) -> float:
192
+ return float(self._gpu)
176
193
 
177
194
  @pyqtProperty(str, notify=appRamChanged)
178
- def appRamString(self):
195
+ def appRamString(self) -> str:
179
196
  return self._app_ram_str
180
197
 
181
- def _update_stats(self):
182
- # 1. CPU
198
+ def _read_system_cpu_percent(self) -> float:
199
+ """
200
+ Return SYSTEM-wide CPU utilization as 0..100 using cpu_times() deltas.
201
+ This is robust even if other code calls psutil.cpu_percent().
202
+ """
183
203
  try:
184
- self._cpu = psutil.cpu_percent(interval=None)
204
+ now = time.monotonic()
205
+ cur = psutil.cpu_times(percpu=True)
206
+
207
+ if not cur:
208
+ return 0.0
209
+
210
+ # first sample: store and return 0 (or keep last)
211
+ if self._last_cpu_times is None:
212
+ self._last_cpu_times = cur
213
+ self._last_cpu_sample_t = now
214
+ return float(self._cpu) # keep whatever we had
215
+
216
+ prev = self._last_cpu_times
217
+ self._last_cpu_times = cur
218
+ self._last_cpu_sample_t = now
219
+
220
+ # usage per logical CPU
221
+ usages = []
222
+ for t0, t1 in zip(prev, cur):
223
+ # sum all fields to get total time
224
+ total0 = float(sum(t0))
225
+ total1 = float(sum(t1))
226
+ dt_total = total1 - total0
227
+ if dt_total <= 1e-9:
228
+ continue
229
+
230
+ idle0 = float(getattr(t0, "idle", 0.0) + getattr(t0, "iowait", 0.0))
231
+ idle1 = float(getattr(t1, "idle", 0.0) + getattr(t1, "iowait", 0.0))
232
+ dt_idle = idle1 - idle0
233
+
234
+ busy = 1.0 - (dt_idle / dt_total)
235
+ usages.append(busy)
236
+
237
+ if not usages:
238
+ return float(self._cpu)
239
+
240
+ return float(np.clip((sum(usages) / len(usages)) * 100.0, 0.0, 100.0))
185
241
  except Exception:
186
- self._cpu = 0.0
187
-
188
- # 2. System RAM
242
+ return float(self._cpu)
243
+
244
+
245
+ def _update_stats(self):
246
+ # 1) SYSTEM CPU
247
+ cpu = self._read_system_cpu_percent()
248
+
249
+ # light smoothing (keeps spikes but reduces jitter)
250
+ if self._cpu_ema is None:
251
+ self._cpu_ema = cpu
252
+ else:
253
+ a = 0.25 # smoothing factor (0.0=no update, 1.0=no smoothing)
254
+ self._cpu_ema = (1.0 - a) * self._cpu_ema + a * cpu
255
+ self._cpu = float(self._cpu_ema)
256
+
257
+ # 2) SYSTEM RAM
189
258
  try:
190
259
  vm = psutil.virtual_memory()
191
- self._ram = vm.percent
260
+ self._ram = float(vm.percent)
192
261
  except Exception:
193
262
  self._ram = 0.0
194
263
 
195
- # 3. App RAM
264
+ # 3) APP RAM (your process)
196
265
  try:
197
- mb = get_memory_usage_mb()
266
+ mb = float(get_memory_usage_mb())
198
267
  self._app_ram_val = mb
199
268
  self._app_ram_str = f"{int(mb)} MB"
200
269
  except Exception:
@@ -206,13 +275,22 @@ class ResourceBackend(QObject):
206
275
 
207
276
  def stop(self):
208
277
  """Explicitly stop background threads."""
278
+ try:
279
+ if hasattr(self, "_timer") and self._timer.isActive():
280
+ self._timer.stop()
281
+ except Exception:
282
+ pass
283
+
209
284
  if hasattr(self, "_gpu_worker") and self._gpu_worker.isRunning():
210
285
  self._gpu_worker.requestInterruption()
211
286
  self._gpu_worker.quit()
212
287
  self._gpu_worker.wait(1000)
213
288
 
214
289
  def __del__(self):
215
- self.stop()
290
+ try:
291
+ self.stop()
292
+ except Exception:
293
+ pass
216
294
 
217
295
 
218
296
  class SystemMonitorWidget(QQuickWidget):
@@ -221,57 +299,28 @@ class SystemMonitorWidget(QQuickWidget):
221
299
  """
222
300
  def __init__(self, parent=None):
223
301
  super().__init__(parent)
224
-
302
+
225
303
  self.setResizeMode(QQuickWidget.ResizeMode.SizeRootObjectToView)
226
304
  self.setAttribute(Qt.WidgetAttribute.WA_AlwaysStackOnTop, False)
227
305
  self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground, True)
228
306
  self.setClearColor(Qt.GlobalColor.transparent)
229
- self._qml_push_pending = False
230
307
 
231
308
  # Connect Backend
232
309
  self.backend = ResourceBackend(self)
233
310
  self.rootContext().setContextProperty("backend", self.backend)
234
-
235
- # We need to manually wire property updates because we are binding to root properties in QML
236
- # Actually, simpler pattern: QML file reads from an object we inject.
237
- # Let's adjust QML slightly to bind to `backend.cpuUsage` etc. if we can,
238
- # OR we leave QML as having properties and we set them from Python.
239
- #
240
- # Better approach for Py+QML:
241
- # Inject `backend` into context, modify QML to use `backend.cpuUsage`.
242
- # But since I already wrote QML with root properties, I will just set them directly
243
- # or update the QML file. Updating QML is cleaner.
244
- #
245
- # For now, let's keep QML independent and binding via setProperty?
246
- # No, properly: context property is best.
247
- #
248
- # Let's re-write the QML loading part to use a safer 'initialProperties' approach or just signal/slots.
249
- #
250
- # EASIEST: QML binds to `root.cpuUsage`. Python sets `root.cpuUsage`.
251
-
252
-
311
+
253
312
  # Load QML
254
313
  qml_path = os.path.join(_get_base_path(), "qml", "ResourceMonitor.qml")
255
314
  self.setSource(QUrl.fromLocalFile(qml_path))
256
315
 
257
- def _schedule_qml_push(self):
258
- if self._qml_push_pending:
259
- return
260
- self._qml_push_pending = True
261
- QTimer.singleShot(0, self._push_data_to_qml_coalesced)
262
-
263
- def _push_data_to_qml_coalesced(self):
264
- self._qml_push_pending = False
265
- self._push_data_to_qml()
266
-
267
-
268
- def _push_data_to_qml(self):
269
- root = self.rootObject()
270
- if root:
271
- root.setProperty("cpuUsage", self.backend.cpuUsage)
272
- root.setProperty("ramUsage", self.backend.ramUsage)
273
- root.setProperty("gpuUsage", self.backend.gpuUsage)
274
- root.setProperty("appRamString", self.backend.appRamString)
316
+ def closeEvent(self, e):
317
+ # make sure worker threads stop when widget closes
318
+ try:
319
+ if hasattr(self, "backend") and self.backend is not None:
320
+ self.backend.stop()
321
+ except Exception:
322
+ pass
323
+ super().closeEvent(e)
275
324
 
276
325
  # --- Drag & Drop Support ---
277
326
  def mousePressEvent(self, event):
@@ -280,7 +329,6 @@ class SystemMonitorWidget(QQuickWidget):
280
329
  wh = self.windowHandle()
281
330
  if wh is not None:
282
331
  try:
283
- # Works best for frameless overlays on Wayland
284
332
  wh.startSystemMove()
285
333
  event.accept()
286
334
  return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: setiastrosuitepro
3
- Version: 1.6.10
3
+ Version: 1.7.0
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
@@ -35,7 +35,7 @@ Requires-Dist: numba
35
35
  Requires-Dist: numpy
36
36
  Requires-Dist: oktopus
37
37
  Requires-Dist: onnx
38
- Requires-Dist: onnxruntime
38
+ Requires-Dist: onnxruntime ; sys_platform != "win32"
39
39
  Requires-Dist: onnxruntime-directml ; sys_platform == "win32"
40
40
  Requires-Dist: opencv-python-headless
41
41
  Requires-Dist: pandas
@@ -36,6 +36,7 @@ setiastro/images/blink.png,sha256=kV2J74CfkMMqn4WqhHHXWQEvq7Y1zXW21RXaJL29eGI,57
36
36
  setiastro/images/clahe.png,sha256=oobMQzfW-LDCKhaz7JeTqqtxYL0Jp30KbEvk6-oowqw,179866
37
37
  setiastro/images/collage.png,sha256=muJZ5NbhwHXyPL1YcMtMmacTr29hYEc8h7fb0iZ2dzk,5324
38
38
  setiastro/images/colorwheel.png,sha256=CuD6SjrLw6ENqPfTtAX5xRfSQ9vd08RjuFuFsmZNooE,225785
39
+ setiastro/images/colorwheel.svg,sha256=QUUnQ9-hGf3hOd_rNZ1efYq2dZLBZ7g390Le_MJ3zsk,89976
39
40
  setiastro/images/contsub.png,sha256=iKQcs-fXd7E82h-zHo3x43t95TFYBbCmNU4ACQXo0p4,27630
40
41
  setiastro/images/convo.png,sha256=_q0zFo45ZkTVYtMS39aNiKB72WiuJEgg1zOmHk5RaFs,13831
41
42
  setiastro/images/copyslot.png,sha256=dwouSCufaK6P7Ah9Sy_E-5cEaacXp3dj9aBs4uY75Ik,28717
@@ -91,6 +92,7 @@ setiastro/images/maskremove.png,sha256=Oi_NRrruNFh9j9rvdtbFpv7Ob6wehyi_BOq7I4c6n
91
92
  setiastro/images/morpho.png,sha256=ypBFJNRNrl9ZOY3MCpSGeoHgIe6sabZQc4qM1nGiiG0,80192
92
93
  setiastro/images/mosaic.png,sha256=Lml13ofxFYug4fYF7LFzA4ZaPFm9bKDVirH0r5XcZKs,29514
93
94
  setiastro/images/multiscale_decomp.png,sha256=DFlFVG8xHP1LvTF7pL3v1Uy8i9CI6CVVgN-x9uHDv6U,7525
95
+ setiastro/images/narrowbandnormalization.png,sha256=a6aJNT9LmHLSZn44TajNHH6Qlu3qr1Cq_TweQE82gJM,191182
94
96
  setiastro/images/nbtorgb.png,sha256=tzxgLNKbXSvKVmv3PIQ42zWIbvwRVBX8Egc7pvwYQV0,33271
95
97
  setiastro/images/neutral.png,sha256=sOfj3-SH8gNTd4oy6yhnx-rYqMq6qbKtm7NHzWCYMvs,13591
96
98
  setiastro/images/new_moon.png,sha256=GKLXCQGPh7cFfo87598roMCcn6XCN7bn0k5C2arAs-w,2071
@@ -101,6 +103,7 @@ setiastro/images/pedestal.png,sha256=hidv6ofPwx_lHic5Ne6NOZUAmGGTdFMRTdtz5sZusdk
101
103
  setiastro/images/pen.png,sha256=tSuv3pRXX-AwXsn1dxuWgep-D4Km30Zttdk0SikQQW4,26122
102
104
  setiastro/images/pixelmath.png,sha256=TL4ghw_u83iV2Kprs5PgT94C7wiLtewiP9Y51Uf4Qzc,86235
103
105
  setiastro/images/pixelmath.svg,sha256=A-ZxI6Yp_dtqd72uherWbTutd9gO6rcY9Xr8pYcYNKk,1728
106
+ setiastro/images/planetarystacker.png,sha256=1x0bf_QieRgHpheVBxlgGT-d3Y6MI1RNXtLTFTDPPmk,192197
104
107
  setiastro/images/platesolve.png,sha256=9Wxv9Zclg4BGrBfQV4tUsWp_jvHj4RE8SEtfm9HjtEk,29889
105
108
  setiastro/images/ppp.png,sha256=2UNa076cxHa-U_Avo7G0661nAVB0vHfGSDOTP46dKBE,276987
106
109
  setiastro/images/pro.png,sha256=jGAnv8T8AaiazevJot-5XQvMKGjWG4CSAMforRJDTHQ,23036
@@ -175,13 +178,13 @@ setiastro/images/wrench_icon.png,sha256=4-DFNkXZUBkfK4WCFLdcr1-b3MsrYcE3DGrp4tL6
175
178
  setiastro/images/xisfliberator.png,sha256=sPC7mPHX_ToyBh9nSLn9B5fVRaM89QvqzW30ohbW8VE,1551111
176
179
  setiastro/qml/ResourceMonitor.qml,sha256=k9_qXKAZLi8vj-5BffJTJu_UkRnxunZKn53HthdySKE,3948
177
180
  setiastro/saspro/__init__.py,sha256=C6Puq5PQr3n0aJ-2i_YAaUhTjPI-pcSzie3_tij3hhw,608
178
- setiastro/saspro/__main__.py,sha256=BzYiDr0q30L_BdCQz53WjZM8Z0xXpHnIb7KpMqTvMSc,38487
181
+ setiastro/saspro/__main__.py,sha256=eghNEGSQqHQjNp0BY84T-nhQMPYSnWdIN_eRFvbLj3Q,38487
179
182
  setiastro/saspro/_generated/__init__.py,sha256=HbruQfKNbbVL4kh_t4oVG3UeUieaW8MUaqIcDCmnTvA,197
180
- setiastro/saspro/_generated/build_info.py,sha256=CXSVme5dcDLk_YalnYiKSRoG4_XtJgMSynQ_t-xgEkY,112
183
+ setiastro/saspro/_generated/build_info.py,sha256=kQnJZOy40C_W1DU5MsPeb6omw-IxFqtehqjwaOcdg3w,111
181
184
  setiastro/saspro/abe.py,sha256=ao9UiOneVvgubI19TCE4gk2FNfW_E3D8rr0D_bmQOwI,59779
182
185
  setiastro/saspro/abe_preset.py,sha256=u9t16yTb9v98tLjhvh496Fsp3Z-dNiBSs5itnAaJwh8,7750
183
- setiastro/saspro/aberration_ai.py,sha256=lKHHIqWmwZmmar8YJIbaBQvWfMt_amX6hbPXth0j_zY,36115
184
- setiastro/saspro/aberration_ai_preset.py,sha256=xwodvMH77DA4j7-M4tbXFp5bAjAx-cTLENir6oqbfcc,8910
186
+ setiastro/saspro/aberration_ai.py,sha256=o-l0NQFy8YJXqCUAnp_fT7pjxfYgrCAGircjw3KtMuU,37196
187
+ setiastro/saspro/aberration_ai_preset.py,sha256=nxtjo0qQYEML_8AzemMXtLNSdWf2FhMzPO9xELjlZ0U,9747
185
188
  setiastro/saspro/accel_installer.py,sha256=OSt66m7hrENHTx92Ib4xDyD3xy6X_TU4XeMbizBqRq4,9483
186
189
  setiastro/saspro/accel_workers.py,sha256=efFvyg6v0AkMF4liVcVqooHWEHhk-c2J9rRx6XAJGv4,1141
187
190
  setiastro/saspro/acv_exporter.py,sha256=em1SJDXStP_Exv7hQZCSqBBcXc-7AF0UOA0iLX4-BIM,14911
@@ -190,11 +193,11 @@ setiastro/saspro/astrobin_exporter.py,sha256=-MZFoUVVZ3FItTbwoqoLzuOsrR3R5RQ7zf4
190
193
  setiastro/saspro/astrospike.py,sha256=Or-14MS3iZrn3q1teNf-BkjVdMCsZYaON7T95dm96oI,5930
191
194
  setiastro/saspro/astrospike_python.py,sha256=sdBEsdLUKPqRK7Db0wosImYTJhqg8w5lzWGnzCDKj8c,72603
192
195
  setiastro/saspro/autostretch.py,sha256=buqmrfv38gY4C4J7RcWYOX0M_oGUaKnbGkOW2Hhbj7g,7646
193
- setiastro/saspro/backgroundneutral.py,sha256=7IW1oz4oGAA7IYBRegoWu7lBBkG__7EXEi6o3Za1NJ0,25013
196
+ setiastro/saspro/backgroundneutral.py,sha256=MFlBEwR65ASNXIY0S-0ZUaS89FCmNV_qafPs-OxUlO4,26383
194
197
  setiastro/saspro/batch_convert.py,sha256=O46KyB-DBZiTHokaWt_op1GDRr3juSaDSeFzP3pv1Zs,12377
195
198
  setiastro/saspro/batch_renamer.py,sha256=PZe2MEwjg0n055UETIbwnwdfAux4heTVx5gr3qnNW5g,21900
196
199
  setiastro/saspro/blemish_blaster.py,sha256=aqD8v_85SBJJBLHB1XbPM-_YzXEIeQM-g-YGhaIcmGE,21314
197
- setiastro/saspro/blink_comparator_pro.py,sha256=MoQTAd0iaw-Q9Js1Bk2qQMfSs1Fs86DIWE-1dlKB9Os,130439
200
+ setiastro/saspro/blink_comparator_pro.py,sha256=XwXR-0Xj6Z3R3IYheTRwdyhpnGMiwXh3lpziAZzWRdE,132085
198
201
  setiastro/saspro/bundles.py,sha256=jWMYpalOcaMQ1QgikseOOmF7bBzDz9aykhRddaTsReQ,1892
199
202
  setiastro/saspro/bundles_dock.py,sha256=IEAJEOEEe7V4NvsmClMygTf55LXN3SkV4e23K1erzkc,4441
200
203
  setiastro/saspro/cheat_sheet.py,sha256=0bLmwY3GBWGcb4M7BBYzzrB_03XfqvZWAhQ2cBPavQ8,7852
@@ -205,19 +208,19 @@ setiastro/saspro/config.py,sha256=FhvWG-efVdzuEPef-eOezem-YaFgnGNCl86XmkruGYE,13
205
208
  setiastro/saspro/config_bootstrap.py,sha256=5em6r29-PA0nnX7M20NGAteQZ_8ecilGsbPRYF_4yIo,1236
206
209
  setiastro/saspro/config_manager.py,sha256=lDHmEDfnj40CGPcD-U4ybpZiR6uJVimcDCQXtQ38PEA,10758
207
210
  setiastro/saspro/continuum_subtract.py,sha256=o4pptQdRra4oMlSaEmY_qlFdJmtCyzcW2pbJ9HSxZYA,66261
208
- setiastro/saspro/convo.py,sha256=N-lEttU-sh-k7z8qO8rj8reJrdU0wCudZRj0u4SVkRQ,67621
211
+ setiastro/saspro/convo.py,sha256=pAczsoS7g596mk1eI4XmVvd1EAoTZVdj12qRzFIISjg,67708
209
212
  setiastro/saspro/convo_preset.py,sha256=31Fzk6ssA3lHuM5vehYOpFNVdIyRNNpL78Ts69ivWKk,20013
210
213
  setiastro/saspro/copyastro.py,sha256=ImDMrus4_LqdEXozMQMiM6SjpF0Yd3D-TzMJ2ggFrNc,7322
211
214
  setiastro/saspro/cosmicclarity.py,sha256=S8RsI_beDadvgImkB7fXS83FQbL6svsmZPDfEu3-M4c,72594
212
215
  setiastro/saspro/cosmicclarity_preset.py,sha256=1nUTzC3nFe79pyWTBvNyvUL-MfTWC4SbOUvgJHA80v8,17853
213
216
  setiastro/saspro/crop_dialog_pro.py,sha256=Cv0A_XGIZPYdZknygL9_JcY0thEYklQVPMMxcHLavtA,45645
214
217
  setiastro/saspro/crop_preset.py,sha256=ubN3BZUt5okwe4qOYScJCQv0YV8PewVciCLUDo4pGOk,7033
215
- setiastro/saspro/curve_editor_pro.py,sha256=r_rQO0gt0H4ZX6EKkt7l-TLJ2FYMG96akZ-yNCDbd-0,106727
216
- setiastro/saspro/curves_preset.py,sha256=Y_SbmM5DmMqvQRCuluo3xgFNOnAQTabZjlhZrP_kFFM,13645
218
+ setiastro/saspro/curve_editor_pro.py,sha256=yfPudAPqQHevgtv-xnlL4oNB75nLk68WTsJG2pAW-k8,108609
219
+ setiastro/saspro/curves_preset.py,sha256=Cmz34JZWWrPIbudpPk1WvDk5NFjGIP-Vui3h_mxlXlk,19239
217
220
  setiastro/saspro/debayer.py,sha256=emuQdb41xHwGVvnBU-SF1H_Zdz271RFTz0lm09xl184,25314
218
221
  setiastro/saspro/debug_utils.py,sha256=uYQne3MHxg_R7y17NqKFj1_befrmjzOI3_jD4JKovnA,1085
219
222
  setiastro/saspro/dnd_mime.py,sha256=QNG97JQJc3xNQ5cPD4zwbC7OZTf9BzqjXE2SvZV9H5Q,1143
220
- setiastro/saspro/doc_manager.py,sha256=iLEhfDiPQbXlmwYyxzQXCR_DAOxiBN0PHiOeRRECrIc,106561
223
+ setiastro/saspro/doc_manager.py,sha256=phRjYuGm1hI-tkSOHcvlkWyBCKdwy0CR2nYiIfVLbJk,112851
221
224
  setiastro/saspro/exoplanet_detector.py,sha256=_zhasWOf63BCZJuFy1vRC5PMGcc4Rf6DmkbveUuzDdY,96858
222
225
  setiastro/saspro/file_utils.py,sha256=zB2BqVnDVLbg_5eO3PIFgYu_Ulm5M3MXQUuzNdvO6Q4,7569
223
226
  setiastro/saspro/fitsmodifier.py,sha256=jYrSUwMacohP8ErFdJy0sr8Ld4YrTUgDdwaDr-_pRWg,30362
@@ -231,42 +234,44 @@ setiastro/saspro/ghs_preset.py,sha256=Zw3MJH5rEz7nqLdlmRBm3vYXgyopoupyDGAhM-PRXq
231
234
  setiastro/saspro/graxpert.py,sha256=XSLeBhlAY2DkYUw93j2OEOuPLOPfzWYcT5Dz3JhhpW8,22579
232
235
  setiastro/saspro/graxpert_preset.py,sha256=ESds2NPMPfsBHWNBfyYZ1rFpQxZ9gPOtxwz8enHfFfc,10719
233
236
  setiastro/saspro/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
- setiastro/saspro/gui/main_window.py,sha256=1yS2GjlLBUt_mchgRAsJ1-dkirmqzUGNZa-Ogq-Pg3Q,365163
237
+ setiastro/saspro/gui/main_window.py,sha256=zrDla3zdhpdsGLEf29ZCrqiMiRDbP8VX1_EYs8_vJG8,370052
235
238
  setiastro/saspro/gui/mixins/__init__.py,sha256=ubdTIri0xoRs6MwDnEaVsAHbMxuPqz0CZcYcue3Mkcc,836
236
- setiastro/saspro/gui/mixins/dock_mixin.py,sha256=O8eFy_qAzuSr3HbcfCSASqHGaaVOLjSuIML8_DK01Wo,16188
237
- setiastro/saspro/gui/mixins/file_mixin.py,sha256=MjFTsq99lyHl4hdqt3U28H3tLwGByaRX9ln-dxuT4-0,17073
239
+ setiastro/saspro/gui/mixins/dock_mixin.py,sha256=C6IWKM-uP2ekqO7ozVQQcTnEgAkUL_OaRZbncIdrh8g,23893
240
+ setiastro/saspro/gui/mixins/file_mixin.py,sha256=ZzKzJhnNKjbi7UQHFhq4Nr2tNLRbB_fQeMHcOj09BU8,17714
238
241
  setiastro/saspro/gui/mixins/geometry_mixin.py,sha256=x-HyLXGFhEs8SJuXT8EF6tS3XJaH8IhAP-ZFJ2BS2Lw,19038
239
242
  setiastro/saspro/gui/mixins/header_mixin.py,sha256=kfZUJviB61c8NBXFB3MVBEcRPX_36ZV8tUZNJkDmMJ0,17253
240
243
  setiastro/saspro/gui/mixins/mask_mixin.py,sha256=hrC5jLWxUZgQiYUXp7nvECo2uiarK7_HKgawG4HGB9w,15711
241
- setiastro/saspro/gui/mixins/menu_mixin.py,sha256=0XASzjABBWPe9yzshT8Xp5S0sokOIr7OoGjO1aM-L_k,15411
244
+ setiastro/saspro/gui/mixins/menu_mixin.py,sha256=nVuJbNZdVTYgq11nOxxCbbqjN6ugBI1QnPULhU3fdXo,16590
242
245
  setiastro/saspro/gui/mixins/theme_mixin.py,sha256=td6hYnZn17lXlFxQOXgK7-qfKo6CIJACF8_zrULlEkc,20740
243
- setiastro/saspro/gui/mixins/toolbar_mixin.py,sha256=az6PqYdXpLl_EKvvHIu_aw-rZBD4SWceo6wbBCT2u4s,86425
246
+ setiastro/saspro/gui/mixins/toolbar_mixin.py,sha256=8n1kkruEaAYSMm_jZUtaxQnyfn4AnJZcapqqTY5qhFU,91938
244
247
  setiastro/saspro/gui/mixins/update_mixin.py,sha256=rq7J0Pcn_gO8UehCGVtcSvf-MDbmeGf796h0JBGr0sM,16545
245
248
  setiastro/saspro/gui/mixins/view_mixin.py,sha256=EacXxtoAvkectGgLiahf3rHv2AaqKDQUteocVV_P834,17850
246
249
  setiastro/saspro/gui/statistics_dialog.py,sha256=celhcsHcp3lNpox_X0ByAiYE80qFaF-dYyP8StzgrcU,1955
247
250
  setiastro/saspro/halobgon.py,sha256=fjwsCWgf8aIGGGiUKcbMcI8A3z2vgvssThM_bTws-EE,20488
248
251
  setiastro/saspro/header_viewer.py,sha256=B2jlIcySInGL3pm5gqgWi3aWBIxtiqjyPAYBuXFn7IQ,17555
249
252
  setiastro/saspro/headless_utils.py,sha256=Zz7yozPAcSNGqZOf3InecK9nvyOZVzziOVVJatF_Yio,2646
250
- setiastro/saspro/histogram.py,sha256=YU3q-4vwlZ1yq99FTmUtnkb7NtkgIEe-VvsnXQC5e-0,29144
253
+ setiastro/saspro/histogram.py,sha256=Mx1cSSJsgDu2zAbaALNTGUGnEN0Ig1_UUVZvXLGP78Q,35080
251
254
  setiastro/saspro/history_explorer.py,sha256=wpVRUnZdS8F7bKEXoCDtdcGlVl9nJfRNj3NTOf1zDrc,34747
252
255
  setiastro/saspro/i18n.py,sha256=365ZMyO1rk_ToKbdBXjUQqka9dv7tp5pjIWcql7AosM,4873
253
256
  setiastro/saspro/image_combine.py,sha256=WjlEMOJoY968feneRhiXRkR5sh5O-lmoxUvxLbPCvwM,18144
254
257
  setiastro/saspro/image_peeker_pro.py,sha256=Ct5z2SHDZ4zDGmx8651dXyhN12kNwsYTp2yxEQnK0_w,62329
255
258
  setiastro/saspro/imageops/__init__.py,sha256=CE9mHOsruHOQ5bYOHr1_fhxd9sdK1W9BpAimo-r5V8w,1084
256
259
  setiastro/saspro/imageops/mdi_snap.py,sha256=Xyogrv3N0KRAKcfC65hy_PKG6ZktjmwDBisCQ_cP9pY,10117
260
+ setiastro/saspro/imageops/narrowband_normalization.py,sha256=q1KdHS7bjRYW-N0Jbszxf0TF38tNNgXKknM80lrzUsA,26793
257
261
  setiastro/saspro/imageops/scnr.py,sha256=jLHxBU4KQ9Mu61Cym5YUq0pwxajJmGrPQRV2pug9LXE,1330
258
- setiastro/saspro/imageops/starbasedwhitebalance.py,sha256=u0HfLDH79XjqjuS1zIOm3sEWdp5DIpYEDhy-i13JfIY,7753
259
- setiastro/saspro/imageops/stretch.py,sha256=iVEOncYQD6qBDPsBLeGl41JAkUJXUCdTkXrTLDRPcfs,25284
262
+ setiastro/saspro/imageops/serloader.py,sha256=EyrvI8IKugP_U3JQI7Cm63qw3iBk52ssUw05pOrrOEk,23576
263
+ setiastro/saspro/imageops/starbasedwhitebalance.py,sha256=urssLdgKD7J_LOuscjbf9zFImnUWoH-sotGvtbxfxTo,6589
264
+ setiastro/saspro/imageops/stretch.py,sha256=E_Ydh5VxUHrehwivhvVDvF8y89U6SRyjIFUQgJjHWXI,27113
260
265
  setiastro/saspro/isophote.py,sha256=eSzlyBN_tZJSJTKlnBjwHY0zdw0SXPV6BRk_jt9TlVU,53753
261
266
  setiastro/saspro/layers.py,sha256=L-_C91YlPF8NtyNbALkU9OlhK5mhtP3Ks1XiGWGG5c0,6641
262
267
  setiastro/saspro/layers_dock.py,sha256=M4rc-UNDggClDxQdf-6wMwuvo6A23RK8fAqlcHJC8I4,35677
263
268
  setiastro/saspro/lazy_imports.py,sha256=0M-4zklRGlqt5tvV6XZEFm958cRrOkxrjvSp_Ib1_zA,6564
264
269
  setiastro/saspro/legacy/__init__.py,sha256=NjuxU-id3METsQ6tNd53YVqDTZK6mEz7uYjLzguCdNQ,121
265
270
  setiastro/saspro/legacy/image_manager.py,sha256=ApWwRKOgmzgpNLw_t0l4AFXdOAZhrIG71zL8NiDnzQY,101372
266
- setiastro/saspro/legacy/numba_utils.py,sha256=tHkUBb1RAm92ivjivQtDot31glPunE2ZHo2rbEkvMKA,136299
271
+ setiastro/saspro/legacy/numba_utils.py,sha256=JZW1yJGMd0QLYojVpk9h_nEf6MpbdFTzqEPnN4m7GjU,135407
267
272
  setiastro/saspro/legacy/xisf.py,sha256=Ah1CXDAohN__ej1Lq7LPU8vGLnDz8fluLQTGE71aUoc,52669
268
273
  setiastro/saspro/linear_fit.py,sha256=s17ZExDxToqBuqv14-o6OFQpXYTyW2TUj_EunohxvAk,20918
269
- setiastro/saspro/live_stacking.py,sha256=CrjmU16S5PKJriO-SZAjKUq6gvDIQZ-JICCGDqXHnGY,80351
274
+ setiastro/saspro/live_stacking.py,sha256=txqnqzPCJa4Ub-XQmfHRy8xuqY-5L129ryuY2LhA_e0,81253
270
275
  setiastro/saspro/log_bus.py,sha256=1H6cTrv138I89BU5K7rhA-QRXPxY0_2C5eegS38Mc-o,178
271
276
  setiastro/saspro/logging_config.py,sha256=vRETX9Nw4bYaBDZAbglo1m7V-2rh85QGE8eRS-yoOcA,14868
272
277
  setiastro/saspro/luminancerecombine.py,sha256=Y2l96xHPLj1K7W7TptvYZ8d4WagsqQ3uM40jokeHVkI,19264
@@ -282,16 +287,17 @@ setiastro/saspro/mfdeconvcudnn.py,sha256=Y8ThkwOs-CZdF_53N6Wu2naDQ1VIa055oGtlgo1
282
287
  setiastro/saspro/mfdeconvsport.py,sha256=UcDV3FP5wDIhFsOnDlLVywtk_RDrpKVOjWbJNOL-Cdk,95323
283
288
  setiastro/saspro/minorbodycatalog.py,sha256=PaOwy1T_ApEfPyGZFUD4qB1n7jyK6kuw1FjBhP2HCTw,19662
284
289
  setiastro/saspro/morphology.py,sha256=WdxA3yLdMCLsAQoRY6qmP3LB5jjZNzliFBhuNkGN_o8,16695
285
- setiastro/saspro/multiscale_decomp.py,sha256=g3KSxmjlBUH9RmZ1RPRqtRZVtBtodUdQNqeBgK1n-nQ,66592
290
+ setiastro/saspro/multiscale_decomp.py,sha256=GQ6iTFcTDxj0WvnO0bQjTz8G4Wli9Dl9bQNeEcBpxBw,66724
291
+ setiastro/saspro/narrowband_normalization.py,sha256=mVzf8JJVZREbsai63GspR41iH3WnwGrYu0pywczfIi0,64036
286
292
  setiastro/saspro/nbtorgb_stars.py,sha256=uteG7X0g2nC9bIJwb_1TfdQP1xUY_jCI_hbiAygMRJg,23329
287
- setiastro/saspro/numba_utils.py,sha256=--Y5kGRL2XRtCARL8T56fwjiaHClH4sSIfApEylTNGs,117697
293
+ setiastro/saspro/numba_utils.py,sha256=hOSayRTzrzD4glweFI7ztjVjRjBWZtjK3FIGObYmOT8,116040
288
294
  setiastro/saspro/numba_warmup.py,sha256=6ZbZ2Ss4VrioLnMUcyRQyY2KR1fmRBqzyoUwxuvIyh4,5268
289
295
  setiastro/saspro/ops/__init__.py,sha256=-GivNKsFxX46qeVUWnFVmzcCpQffT9RuWHmyUjfqvDQ,268
290
296
  setiastro/saspro/ops/command_help_dialog.py,sha256=p4E9r0aMplQTTq7tZLScksAIPxmMWUmmnTQ0O_CY9aE,23061
291
297
  setiastro/saspro/ops/command_runner.py,sha256=teyrnOVJcd2IVxIPhh-ud4Q8MrBMxzSNR3QQe_2K-hk,7512
292
298
  setiastro/saspro/ops/commands.py,sha256=RoB99R3wN9j-K25QoJf5ir-CU35lL_d2veLFmfIXRMQ,54246
293
- setiastro/saspro/ops/script_editor.py,sha256=SuiTwNxjqdYIL669RTPubKcSbNWRtYwUYq2EFZJehck,40871
294
- setiastro/saspro/ops/scripts.py,sha256=RBpLVClK84lQZzlhK2hRHok-LT05SHeQIEGw_5Spu20,51989
299
+ setiastro/saspro/ops/script_editor.py,sha256=ygWNzPJ3LxsQyTMgfvAHC9MuGnE8IXsRNKu19mLPYKY,40986
300
+ setiastro/saspro/ops/scripts.py,sha256=5BOnirSUia0NDg-keBy0HgfrElqcRIUNV-89FfYks8o,55817
295
301
  setiastro/saspro/ops/settings.py,sha256=G2b59PdG-k_k1vjPKTcTto-fOffS9OKzIZPhIv25gQA,29799
296
302
  setiastro/saspro/parallel_utils.py,sha256=GoPhypMsp3k8dffv4129CjLU-xDqpu9wnhHI463RR6U,15931
297
303
  setiastro/saspro/pedestal.py,sha256=WkwNaY0Qp1XP6KFtb6tnnKMhg71R5WEhVOdwWwJFmJ8,4014
@@ -303,10 +309,10 @@ setiastro/saspro/project_io.py,sha256=usCbXxgB6bKj4L_71eTQIIzOzYAWxaNUoY4duB6oC5
303
309
  setiastro/saspro/psf_utils.py,sha256=K3R4BjUzsopLRuLTbPlm8lBw3-x9twNWG4bK-4phDM4,4555
304
310
  setiastro/saspro/psf_viewer.py,sha256=gaQhzLIhk0i5aRXREzWeieaD5VY22wOJx-ehbfaETuc,22952
305
311
  setiastro/saspro/pyi_rthook_astroquery.py,sha256=Omt8U0gMI3efw3y-GUUJtBYUylwT1OMn0285QW3kRzE,3993
306
- setiastro/saspro/remove_green.py,sha256=AxeHtN_FqbXKpPRkUfsVefyhQfTsxKHN9Hoxmygp1co,12088
312
+ setiastro/saspro/remove_green.py,sha256=bd_4xLe-tEYPncOSVUHh-fVIrPWG6K0ESKgAygrwj_M,12082
307
313
  setiastro/saspro/remove_stars.py,sha256=tv61y58xdm5g5Gu5T3I7jUqSmVVguJ9BWOKBy_X8ub8,60967
308
314
  setiastro/saspro/remove_stars_preset.py,sha256=HcR50bRXqiJSx4jMyle389g8b6SIulXHxgSysk07vdk,19195
309
- setiastro/saspro/resources.py,sha256=X2xHo-l0ttzdcw5wjbTVijXegXx4uAoJkChfRGv2ul4,26912
315
+ setiastro/saspro/resources.py,sha256=JLHjproE_wwcDYRCmh1AHETbopA-Lk-ZLdBpvOvdmtk,27259
310
316
  setiastro/saspro/rgb_combination.py,sha256=8MKlxsbn5Pmiq3Vh28fMVYgYG4EIsvOYrwSJisJGyds,8765
311
317
  setiastro/saspro/rgb_extract.py,sha256=FZRA2qac8LR2u-jNcQP-1xFeiOYVBo06-Q3Xl0KAlZM,624
312
318
  setiastro/saspro/rgbalign.py,sha256=WpKzuvwese19Yo0n8ew75GwqQ6aKiryruoVVgL9k220,30217
@@ -314,18 +320,23 @@ setiastro/saspro/runtime_imports.py,sha256=tgIHH10cdAEbCTOmcs7retQhAww2dEc_3mKrv
314
320
  setiastro/saspro/runtime_torch.py,sha256=IEVqD8jgn6la8t3R9ngZ2egSGMAC_tr1im3R8BnvXTQ,33497
315
321
  setiastro/saspro/save_options.py,sha256=HPMXl5ya7HlCgDle9mPUrthzIFVJWXQGrea_OkcHg6c,2722
316
322
  setiastro/saspro/selective_color.py,sha256=hx-9X4jeso797ifoBmwp9hNagPW4cvNPs9-T0JLHce0,64804
317
- setiastro/saspro/sfcc.py,sha256=9zHQ8JEitdQz5bp9rF82QAjh_MoxEmKxMl2_O8hNkJU,77144
318
- setiastro/saspro/shortcuts.py,sha256=Rh9hmuqMRAihJTh3Cw2hCjbKZYuu3r2FMeJt2rrV_iM,137668
323
+ setiastro/saspro/ser_stack_config.py,sha256=nmeowk9I3a4gCFfhddd-etYGIhaS1_5zWG1LOY6c7JE,2864
324
+ setiastro/saspro/ser_stacker.py,sha256=JGFLZ0XRsuotd320dkP5sEIQqSA-kafwPxjbbkZF2Rk,82048
325
+ setiastro/saspro/ser_stacker_dialog.py,sha256=SkecUJHp3BG1PrNF2XDj5n2PkqQTWs4SCf4sKVLlBh8,54663
326
+ setiastro/saspro/ser_tracking.py,sha256=z5jHJIs0t3kK3p5C330vwz0c6zJ9KXtKIh1FlJ1LljU,7141
327
+ setiastro/saspro/serviewer.py,sha256=q8cLpXvoZLJEcDcUtkaqzhQrrLmHXwGtMLV0zMZBlWY,47678
328
+ setiastro/saspro/sfcc.py,sha256=mKdNfbMxl4fgqyZnuAlkzNNIU3huYOHgqw0FGjtVhUs,89097
329
+ setiastro/saspro/shortcuts.py,sha256=QvFBXN_S8jqEwaP9m4pJMLVqzBmxo5HrjWhVCV9etQg,138256
319
330
  setiastro/saspro/signature_insert.py,sha256=pWDxUO1Rxm27_fHSo2Y99bdOD2iG9q4AUjGR20x6TiA,70401
320
- setiastro/saspro/stacking_suite.py,sha256=QtX_GYx-9Ur9Vd3OQoTQ1te05epag3kgk8jjg5JRGW4,861970
321
- setiastro/saspro/star_alignment.py,sha256=ZerkT94gNtzXjteq-nVBGZgLFj5kPF9D_jQYdPf_2c4,322226
331
+ setiastro/saspro/stacking_suite.py,sha256=D0-5dkuy0LGgUxv5hp27V3xtzZ-rbqQvV3cH8vdJ5YI,871357
332
+ setiastro/saspro/star_alignment.py,sha256=lRpDFvDKsMluu2P_kotQ9OumlnGtEWwGE7Gm-ZYccm8,326894
322
333
  setiastro/saspro/star_alignment_preset.py,sha256=1QLRRUsVGr3-iX4kKvV9s-NuDRJVnRQat8qdTIs1nao,13164
323
334
  setiastro/saspro/star_metrics.py,sha256=LRfBdqjwJJ9iz_paY-CkhPIqt2MxoXARLUy73ZKTA_0,1503
324
335
  setiastro/saspro/star_spikes.py,sha256=PKI9C8SYmyi9St-IMtyJn75858kfi0NIJ26uDEjlSV0,33021
325
336
  setiastro/saspro/star_stretch.py,sha256=Sb4ZD3nTVS7zVIWPDtgjgwwhDnuOqM-cW6DBVLlqM1c,21308
326
- setiastro/saspro/stat_stretch.py,sha256=UdvoTqpFcHLXJdSjQP76WBDsZVGvcwtU_6i80DFFrs0,43661
337
+ setiastro/saspro/stat_stretch.py,sha256=DQjLzhsvcqhJrBmR_ZuSoGHEo5D1R7SHg_pfRnEZQ58,50934
327
338
  setiastro/saspro/status_log_dock.py,sha256=SEZiijVLmtWbGxxjvf3XWUuMUhoVw50nwVfj7NhAl8s,2922
328
- setiastro/saspro/subwindow.py,sha256=YzTTmqb4_6XWOiVEgck631ysUf3OnnSr5Ok_Xjx2yOY,142799
339
+ setiastro/saspro/subwindow.py,sha256=-4m-2XS4H02H6kvloGnoPsvVj0GAy8eED-llQ1HmA2E,142877
329
340
  setiastro/saspro/supernovaasteroidhunter.py,sha256=PgCq3IR2pzsNBx6IxdhqfZlKPMZFhWI6cMJi600He78,66781
330
341
  setiastro/saspro/swap_manager.py,sha256=7hJvQsnm1LSqLmXrj5uQkTSqNJq1SvrtrkCQPJdNego,4643
331
342
  setiastro/saspro/torch_backend.py,sha256=e8ZNIeSP33NjNRH4yNhrhZRo5k7tNEpJ6FNlOQ-kp8I,2473
@@ -375,7 +386,7 @@ setiastro/saspro/wavescale_hdr_preset.py,sha256=ertUDFHBYmkZf2vyucE70dzgr3M_lSoX
375
386
  setiastro/saspro/wavescalede.py,sha256=jbM7vucHSIXV6lA5-TYL_mXY2ypc2MQgrgqPRCEnhn8,30085
376
387
  setiastro/saspro/wavescalede_preset.py,sha256=Xls_-0DM5hIhau_Px_kJ-g06-nT6ETLgylcP6DuipUE,9792
377
388
  setiastro/saspro/wcs_update.py,sha256=XwNmtcj-ThmgTwN_RyXGS4vRUW9bsAOshP9YQeTo76E,13288
378
- setiastro/saspro/whitebalance.py,sha256=VAFsGwkRWPYnmdYJW1rn-GjuI1yO81E_mQQ3XqRF3Mg,22449
389
+ setiastro/saspro/whitebalance.py,sha256=pQ1m3nI8RIrFqb3gOpxrDBXc_xKPI7wUIvUEX5rH19g,23455
379
390
  setiastro/saspro/widgets/__init__.py,sha256=InMH1TPPzj1kHeHv7gQRwQcUlHvohcUYcfFti15hO1A,1287
380
391
  setiastro/saspro/widgets/common_utilities.py,sha256=3jg_bOYgnwSjD85Vu_kB-9m04pMZ_MJmLEywjqmk_B0,10702
381
392
  setiastro/saspro/widgets/graphics_views.py,sha256=VfYokl0TYP-dLnwdcsmy61X5ETlNH1DWlGTMm2GlI7Q,4208
@@ -384,7 +395,7 @@ setiastro/saspro/widgets/minigame/game.js,sha256=M8A8NL1RKc9kLtGvkL4Zd2_AE_Zjc-P
384
395
  setiastro/saspro/widgets/minigame/index.html,sha256=BD39tHEdpSIo1sdQpHuG3OaE9Hwe5Y0imI8a7T10uck,2290
385
396
  setiastro/saspro/widgets/minigame/style.css,sha256=RNj9XrKnn_r9ow3JnQmRwSpyJlBOwx_Rs5rWDEjRTC0,4540
386
397
  setiastro/saspro/widgets/preview_dialogs.py,sha256=qt2bRgLBD_a0sGb0t4losYFMAFC-ZCe-l5H7jPjDC2o,10679
387
- setiastro/saspro/widgets/resource_monitor.py,sha256=_HXce1CBmjrhQtOcBh3IUEdiwuGlP6vnG7MTsKq81mw,11032
398
+ setiastro/saspro/widgets/resource_monitor.py,sha256=2mSZXiqpcKp2xxqDMZRAh4GTF5cUC7Be_ZrN2w6CONo,12154
388
399
  setiastro/saspro/widgets/spinboxes.py,sha256=hPBaoFlQDZ1uikZBZXiaymW0Nq_PYpJ5RWHV8BNxsLI,10405
389
400
  setiastro/saspro/widgets/themed_buttons.py,sha256=m6f_AYCx-tUmKf3U1CBuBbUsXOLW3cS3_oZUd4plVuU,445
390
401
  setiastro/saspro/widgets/wavelet_utils.py,sha256=RNat7N2mtkK74jAIwmdcxYghrdCe39DjFZ-iCvC5cuQ,11985
@@ -392,9 +403,9 @@ setiastro/saspro/wimi.py,sha256=CNo833Pur9P-A1DUSntlAaQWekf6gzWIvetOMvLDrOw,3146
392
403
  setiastro/saspro/wims.py,sha256=HDfVI3Ckf5OJEJLH8NI36pFc2USZnETpb4UDIvweNX4,27450
393
404
  setiastro/saspro/window_shelf.py,sha256=jQUifB3uJ9tkzXqmscWj8lHQN5E8yleuRc7hDnes4-k,7453
394
405
  setiastro/saspro/xisf.py,sha256=Ah1CXDAohN__ej1Lq7LPU8vGLnDz8fluLQTGE71aUoc,52669
395
- setiastrosuitepro-1.6.10.dist-info/entry_points.txt,sha256=vJfnZaV6Uj3laETakqT8-D-aJZI_nYIicrhSoL0uuko,227
396
- setiastrosuitepro-1.6.10.dist-info/licenses/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
397
- setiastrosuitepro-1.6.10.dist-info/licenses/license.txt,sha256=KCwYZ9VpVwmzjelDq1BzzWqpBvt9nbbapa-woz47hfQ,123930
398
- setiastrosuitepro-1.6.10.dist-info/METADATA,sha256=8yjU6tYdQPIfWcOq06UA2pNZesFp8Zh-I3KtRXBN7tI,9809
399
- setiastrosuitepro-1.6.10.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
400
- setiastrosuitepro-1.6.10.dist-info/RECORD,,
406
+ setiastrosuitepro-1.7.0.dist-info/entry_points.txt,sha256=vJfnZaV6Uj3laETakqT8-D-aJZI_nYIicrhSoL0uuko,227
407
+ setiastrosuitepro-1.7.0.dist-info/licenses/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
408
+ setiastrosuitepro-1.7.0.dist-info/licenses/license.txt,sha256=KCwYZ9VpVwmzjelDq1BzzWqpBvt9nbbapa-woz47hfQ,123930
409
+ setiastrosuitepro-1.7.0.dist-info/METADATA,sha256=mPXJiGyemn95E0TPqW0gpRKFSO70MR9EJgceMJVcY30,9834
410
+ setiastrosuitepro-1.7.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
411
+ setiastrosuitepro-1.7.0.dist-info/RECORD,,