setiastrosuitepro 1.7.3.post1__tar.gz → 1.7.5.post1__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.

Potentially problematic release.


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

Files changed (417) hide show
  1. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/PKG-INFO +1 -1
  2. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/pyproject.toml +2 -2
  3. setiastrosuitepro-1.7.5.post1/src/setiastro/images/clonestamp.png +0 -0
  4. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/__init__.py +15 -4
  5. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/__main__.py +23 -5
  6. setiastrosuitepro-1.7.5.post1/src/setiastro/saspro/_generated/build_info.py +3 -0
  7. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/abe.py +1 -1
  8. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/autostretch.py +11 -0
  9. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/blemish_blaster.py +54 -14
  10. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/blink_comparator_pro.py +146 -2
  11. setiastrosuitepro-1.7.5.post1/src/setiastro/saspro/clone_stamp.py +753 -0
  12. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/main_window.py +25 -4
  13. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/menu_mixin.py +1 -0
  14. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/toolbar_mixin.py +10 -15
  15. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/legacy/numba_utils.py +301 -119
  16. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/numba_utils.py +998 -270
  17. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/planetprojection.py +310 -105
  18. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/resources.py +2 -0
  19. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/sfcc.py +14 -8
  20. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/stacking_suite.py +867 -251
  21. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/window_shelf.py +62 -1
  22. setiastrosuitepro-1.7.3.post1/src/setiastro/saspro/_generated/build_info.py +0 -3
  23. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/LICENSE +0 -0
  24. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/README.md +0 -0
  25. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/license.txt +0 -0
  26. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/__init__.py +0 -0
  27. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/SASP_data.fits +0 -0
  28. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/List_of_Galaxies_with_Distances_Gly.csv +0 -0
  29. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/astrobin_filters.csv +0 -0
  30. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/astrobin_filters_page1_local.csv +0 -0
  31. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/cali2.csv +0 -0
  32. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/cali2color.csv +0 -0
  33. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/celestial_catalog - original.csv +0 -0
  34. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/celestial_catalog.csv +0 -0
  35. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/detected_stars.csv +0 -0
  36. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/fits_header_data.csv +0 -0
  37. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/test.csv +0 -0
  38. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/data/catalogs/updated_celestial_catalog.csv +0 -0
  39. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/3dplanet.png +0 -0
  40. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/Astro_Spikes.png +0 -0
  41. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/Background_startup.jpg +0 -0
  42. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/HRDiagram.png +0 -0
  43. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/LExtract.png +0 -0
  44. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/LInsert.png +0 -0
  45. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/Oxygenation-atm-2.svg.png +0 -0
  46. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/RGB080604.png +0 -0
  47. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/TextureClarity.svg +0 -0
  48. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/abeicon.png +0 -0
  49. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/abeicon.svg +0 -0
  50. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/aberration.png +0 -0
  51. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/acv_icon.png +0 -0
  52. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/andromedatry.png +0 -0
  53. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/andromedatry_satellited.png +0 -0
  54. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/annotated.png +0 -0
  55. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/aperture.png +0 -0
  56. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/astrosuite.ico +0 -0
  57. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/astrosuite.png +0 -0
  58. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/astrosuitepro.icns +0 -0
  59. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/astrosuitepro.ico +0 -0
  60. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/astrosuitepro.png +0 -0
  61. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/background.png +0 -0
  62. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/background2.png +0 -0
  63. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/benchmark.png +0 -0
  64. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/big_moon_stabilizer_timeline.png +0 -0
  65. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/big_moon_stabilizer_timeline_clean.png +0 -0
  66. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/blaster.png +0 -0
  67. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/blink.png +0 -0
  68. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/clahe.png +0 -0
  69. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/collage.png +0 -0
  70. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/colorwheel.png +0 -0
  71. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/colorwheel.svg +0 -0
  72. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/contsub.png +0 -0
  73. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/convo.png +0 -0
  74. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/copyslot.png +0 -0
  75. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/cosmic.png +0 -0
  76. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/cosmic.svg +0 -0
  77. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/cosmicsat.png +0 -0
  78. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/cosmicsat.svg +0 -0
  79. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/crop1.png +0 -0
  80. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/cropicon.png +0 -0
  81. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/curves.png +0 -0
  82. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/cvs.png +0 -0
  83. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/debayer.png +0 -0
  84. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/denoise_cnn_custom.png +0 -0
  85. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/denoise_cnn_graph.png +0 -0
  86. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/disk.png +0 -0
  87. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/dse.png +0 -0
  88. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/exoicon.png +0 -0
  89. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/eye.png +0 -0
  90. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/first_quarter.png +0 -0
  91. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/fliphorizontal.png +0 -0
  92. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/flipvertical.png +0 -0
  93. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/font.png +0 -0
  94. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/freqsep.png +0 -0
  95. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/full_moon.png +0 -0
  96. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/functionbundle.png +0 -0
  97. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/graxpert.png +0 -0
  98. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/graxpert.svg +0 -0
  99. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/green.png +0 -0
  100. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/gridicon.png +0 -0
  101. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/halo.png +0 -0
  102. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/hdr.png +0 -0
  103. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/histogram.png +0 -0
  104. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/hubble.png +0 -0
  105. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/imagecombine.png +0 -0
  106. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/invert.png +0 -0
  107. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/isophote.png +0 -0
  108. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/isophote_demo_figure.png +0 -0
  109. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/isophote_demo_image.png +0 -0
  110. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/isophote_demo_model.png +0 -0
  111. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/isophote_demo_residual.png +0 -0
  112. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/jwstpupil.png +0 -0
  113. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/last_quarter.png +0 -0
  114. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/linearfit.png +0 -0
  115. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/linearfit.svg +0 -0
  116. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/livestacking.png +0 -0
  117. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/mask.png +0 -0
  118. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/maskapply.png +0 -0
  119. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/maskcreate.png +0 -0
  120. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/maskremove.png +0 -0
  121. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/morpho.png +0 -0
  122. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/mosaic.png +0 -0
  123. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/multiscale_decomp.png +0 -0
  124. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/narrowbandnormalization.png +0 -0
  125. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/nbtorgb.png +0 -0
  126. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/neutral.png +0 -0
  127. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/new_moon.png +0 -0
  128. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/nuke.png +0 -0
  129. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/openfile.png +0 -0
  130. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/pedestal.png +0 -0
  131. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/pen.png +0 -0
  132. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/pixelmath.png +0 -0
  133. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/pixelmath.svg +0 -0
  134. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/planetarystacker.png +0 -0
  135. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/platesolve.png +0 -0
  136. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/ppp.png +0 -0
  137. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/pro.png +0 -0
  138. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/project.png +0 -0
  139. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/psf.png +0 -0
  140. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/redo.png +0 -0
  141. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/redoicon.png +0 -0
  142. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rescale.png +0 -0
  143. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rgbalign.png +0 -0
  144. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rgbcombo.png +0 -0
  145. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rgbextract.png +0 -0
  146. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rotate180.png +0 -0
  147. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rotatearbitrary.png +0 -0
  148. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rotateclockwise.png +0 -0
  149. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/rotatecounterclockwise.png +0 -0
  150. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/satellite.png +0 -0
  151. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/script.png +0 -0
  152. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/selectivecolor.png +0 -0
  153. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/simbad.png +0 -0
  154. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot0.png +0 -0
  155. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot1.png +0 -0
  156. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot2.png +0 -0
  157. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot3.png +0 -0
  158. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot4.png +0 -0
  159. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot5.png +0 -0
  160. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot6.png +0 -0
  161. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot7.png +0 -0
  162. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot8.png +0 -0
  163. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/slot9.png +0 -0
  164. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/spcc.png +0 -0
  165. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/spin_precession_vs_lunar_distance.png +0 -0
  166. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/spinner.gif +0 -0
  167. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/stacking.png +0 -0
  168. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/staradd.png +0 -0
  169. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/staralign.png +0 -0
  170. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/starnet.png +0 -0
  171. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/starregistration.png +0 -0
  172. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/starspike.png +0 -0
  173. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/starstretch.png +0 -0
  174. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/statstretch.png +0 -0
  175. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/supernova.png +0 -0
  176. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/uhs.png +0 -0
  177. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/undoicon.png +0 -0
  178. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/upscale.png +0 -0
  179. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/viewbundle.png +0 -0
  180. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_crescent_1.png +0 -0
  181. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_crescent_2.png +0 -0
  182. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_crescent_3.png +0 -0
  183. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_crescent_4.png +0 -0
  184. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_crescent_5.png +0 -0
  185. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_gibbous_1.png +0 -0
  186. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_gibbous_2.png +0 -0
  187. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_gibbous_3.png +0 -0
  188. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_gibbous_4.png +0 -0
  189. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waning_gibbous_5.png +0 -0
  190. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_crescent_1.png +0 -0
  191. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_crescent_2.png +0 -0
  192. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_crescent_3.png +0 -0
  193. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_crescent_4.png +0 -0
  194. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_crescent_5.png +0 -0
  195. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_gibbous_1.png +0 -0
  196. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_gibbous_2.png +0 -0
  197. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_gibbous_3.png +0 -0
  198. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_gibbous_4.png +0 -0
  199. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/waxing_gibbous_5.png +0 -0
  200. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/whitebalance.png +0 -0
  201. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/wimi_icon_256x256.png +0 -0
  202. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/wimilogo.png +0 -0
  203. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/wims.png +0 -0
  204. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/wrench_icon.png +0 -0
  205. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/images/xisfliberator.png +0 -0
  206. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/qml/ResourceMonitor.qml +0 -0
  207. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/_generated/__init__.py +0 -0
  208. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/abe_preset.py +0 -0
  209. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/aberration_ai.py +0 -0
  210. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/aberration_ai_preset.py +0 -0
  211. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/accel_installer.py +0 -0
  212. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/accel_workers.py +0 -0
  213. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/acv_exporter.py +0 -0
  214. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/add_stars.py +0 -0
  215. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/astrobin_exporter.py +0 -0
  216. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/astrospike.py +0 -0
  217. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/astrospike_python.py +0 -0
  218. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/backgroundneutral.py +0 -0
  219. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/batch_convert.py +0 -0
  220. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/batch_renamer.py +0 -0
  221. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/bundles.py +0 -0
  222. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/bundles_dock.py +0 -0
  223. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/cheat_sheet.py +0 -0
  224. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/clahe.py +0 -0
  225. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/comet_stacking.py +0 -0
  226. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/common_tr.py +0 -0
  227. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/config.py +0 -0
  228. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/config_bootstrap.py +0 -0
  229. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/config_manager.py +0 -0
  230. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/continuum_subtract.py +0 -0
  231. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/convo.py +0 -0
  232. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/convo_preset.py +0 -0
  233. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/copyastro.py +0 -0
  234. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/cosmicclarity.py +0 -0
  235. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/cosmicclarity_preset.py +0 -0
  236. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/crop_dialog_pro.py +0 -0
  237. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/crop_preset.py +0 -0
  238. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/curve_editor_pro.py +0 -0
  239. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/curves_preset.py +0 -0
  240. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/debayer.py +0 -0
  241. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/debug_utils.py +0 -0
  242. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/dnd_mime.py +0 -0
  243. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/doc_manager.py +0 -0
  244. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/exoplanet_detector.py +0 -0
  245. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/file_utils.py +0 -0
  246. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/fitsmodifier.py +0 -0
  247. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/fix_bom.py +0 -0
  248. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/free_torch_memory.py +0 -0
  249. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/frequency_separation.py +0 -0
  250. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/function_bundle.py +0 -0
  251. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/generate_translations.py +0 -0
  252. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ghs_dialog_pro.py +0 -0
  253. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ghs_preset.py +0 -0
  254. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/graxpert.py +0 -0
  255. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/graxpert_preset.py +0 -0
  256. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/__init__.py +0 -0
  257. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/__init__.py +0 -0
  258. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/dock_mixin.py +0 -0
  259. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/file_mixin.py +0 -0
  260. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/geometry_mixin.py +0 -0
  261. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/header_mixin.py +0 -0
  262. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/mask_mixin.py +0 -0
  263. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/theme_mixin.py +0 -0
  264. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/update_mixin.py +0 -0
  265. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/mixins/view_mixin.py +0 -0
  266. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/gui/statistics_dialog.py +0 -0
  267. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/halobgon.py +0 -0
  268. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/header_viewer.py +0 -0
  269. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/headless_utils.py +0 -0
  270. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/histogram.py +0 -0
  271. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/history_explorer.py +0 -0
  272. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/i18n.py +0 -0
  273. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/image_combine.py +0 -0
  274. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/image_peeker_pro.py +0 -0
  275. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/imageops/__init__.py +0 -0
  276. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/imageops/mdi_snap.py +0 -0
  277. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/imageops/narrowband_normalization.py +0 -0
  278. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/imageops/scnr.py +0 -0
  279. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/imageops/serloader.py +0 -0
  280. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/imageops/starbasedwhitebalance.py +0 -0
  281. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/imageops/stretch.py +0 -0
  282. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/isophote.py +0 -0
  283. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/layers.py +0 -0
  284. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/layers_dock.py +0 -0
  285. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/lazy_imports.py +0 -0
  286. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/legacy/__init__.py +0 -0
  287. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/legacy/image_manager.py +0 -0
  288. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/legacy/xisf.py +0 -0
  289. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/linear_fit.py +0 -0
  290. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/live_stacking.py +0 -0
  291. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/log_bus.py +0 -0
  292. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/logging_config.py +0 -0
  293. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/luminancerecombine.py +0 -0
  294. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/main_helpers.py +0 -0
  295. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/mask_creation.py +0 -0
  296. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/masks_core.py +0 -0
  297. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/mdi_widgets.py +0 -0
  298. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/memory_utils.py +0 -0
  299. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/metadata_patcher.py +0 -0
  300. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/mfdeconv.py +0 -0
  301. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/mfdeconv_earlystop.py +0 -0
  302. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/mfdeconvcudnn.py +0 -0
  303. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/mfdeconvsport.py +0 -0
  304. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/minorbodycatalog.py +0 -0
  305. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/morphology.py +0 -0
  306. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/multiscale_decomp.py +0 -0
  307. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/narrowband_normalization.py +0 -0
  308. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/nbtorgb_stars.py +0 -0
  309. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/numba_warmup.py +0 -0
  310. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ops/__init__.py +0 -0
  311. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ops/command_help_dialog.py +0 -0
  312. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ops/command_runner.py +0 -0
  313. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ops/commands.py +0 -0
  314. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ops/script_editor.py +0 -0
  315. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ops/scripts.py +0 -0
  316. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ops/settings.py +0 -0
  317. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/parallel_utils.py +0 -0
  318. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/pedestal.py +0 -0
  319. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/perfect_palette_picker.py +0 -0
  320. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/pipeline.py +0 -0
  321. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/pixelmath.py +0 -0
  322. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/plate_solver.py +0 -0
  323. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/project_io.py +0 -0
  324. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/psf_utils.py +0 -0
  325. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/psf_viewer.py +0 -0
  326. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/pyi_rthook_astroquery.py +0 -0
  327. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/remove_green.py +0 -0
  328. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/remove_stars.py +0 -0
  329. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/remove_stars_preset.py +0 -0
  330. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/rgb_combination.py +0 -0
  331. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/rgb_extract.py +0 -0
  332. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/rgbalign.py +0 -0
  333. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/runtime_imports.py +0 -0
  334. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/runtime_torch.py +0 -0
  335. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/save_options.py +0 -0
  336. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/selective_color.py +0 -0
  337. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ser_stack_config.py +0 -0
  338. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ser_stacker.py +0 -0
  339. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ser_stacker_dialog.py +0 -0
  340. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/ser_tracking.py +0 -0
  341. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/serviewer.py +0 -0
  342. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/shortcuts.py +0 -0
  343. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/signature_insert.py +0 -0
  344. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/star_alignment.py +0 -0
  345. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/star_alignment_preset.py +0 -0
  346. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/star_metrics.py +0 -0
  347. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/star_spikes.py +0 -0
  348. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/star_stretch.py +0 -0
  349. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/stat_stretch.py +0 -0
  350. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/status_log_dock.py +0 -0
  351. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/subwindow.py +0 -0
  352. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/supernovaasteroidhunter.py +0 -0
  353. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/swap_manager.py +0 -0
  354. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/texture_clarity.py +0 -0
  355. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/torch_backend.py +0 -0
  356. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/torch_rejection.py +0 -0
  357. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/all_source_strings.json +0 -0
  358. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/ar_translations.py +0 -0
  359. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/de_translations.py +0 -0
  360. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/es_translations.py +0 -0
  361. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/fr_translations.py +0 -0
  362. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/hi_translations.py +0 -0
  363. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/integrate_translations.py +0 -0
  364. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/it_translations.py +0 -0
  365. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/ja_translations.py +0 -0
  366. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/pt_translations.py +0 -0
  367. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/ru_translations.py +0 -0
  368. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_ar.qm +0 -0
  369. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_ar.ts +0 -0
  370. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_de.qm +0 -0
  371. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_de.ts +0 -0
  372. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_es.qm +0 -0
  373. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_es.ts +0 -0
  374. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_fr.qm +0 -0
  375. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_fr.ts +0 -0
  376. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_hi.qm +0 -0
  377. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_hi.ts +0 -0
  378. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_it.qm +0 -0
  379. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_it.ts +0 -0
  380. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_ja.qm +0 -0
  381. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_ja.ts +0 -0
  382. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_pt.qm +0 -0
  383. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_pt.ts +0 -0
  384. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_ru.qm +0 -0
  385. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_ru.ts +0 -0
  386. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_sw.qm +0 -0
  387. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_sw.ts +0 -0
  388. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_uk.qm +0 -0
  389. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_uk.ts +0 -0
  390. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_zh.qm +0 -0
  391. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/saspro_zh.ts +0 -0
  392. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/sw_translations.py +0 -0
  393. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/uk_translations.py +0 -0
  394. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/translations/zh_translations.py +0 -0
  395. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/versioning.py +0 -0
  396. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/view_bundle.py +0 -0
  397. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/wavescale_hdr.py +0 -0
  398. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/wavescale_hdr_preset.py +0 -0
  399. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/wavescalede.py +0 -0
  400. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/wavescalede_preset.py +0 -0
  401. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/wcs_update.py +0 -0
  402. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/whitebalance.py +0 -0
  403. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/__init__.py +0 -0
  404. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/common_utilities.py +0 -0
  405. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/graphics_views.py +0 -0
  406. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/image_utils.py +0 -0
  407. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/minigame/game.js +0 -0
  408. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/minigame/index.html +0 -0
  409. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/minigame/style.css +0 -0
  410. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/preview_dialogs.py +0 -0
  411. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/resource_monitor.py +0 -0
  412. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/spinboxes.py +0 -0
  413. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/themed_buttons.py +0 -0
  414. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/widgets/wavelet_utils.py +0 -0
  415. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/wimi.py +0 -0
  416. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/wims.py +0 -0
  417. {setiastrosuitepro-1.7.3.post1 → setiastrosuitepro-1.7.5.post1}/src/setiastro/saspro/xisf.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: setiastrosuitepro
3
- Version: 1.7.3.post1
3
+ Version: 1.7.5.post1
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
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "setiastrosuitepro"
3
- version = "1.7.3.post1"
3
+ version = "1.7.5.post1"
4
4
  description = "Seti Astro Suite Pro - Advanced astrophotography toolkit for image calibration, stacking, registration, photometry, and visualization"
5
5
  authors = ["Franklin Marek <info@setiastro.com>"]
6
6
  readme = "README.md"
@@ -94,7 +94,7 @@ build-backend = "poetry.core.masonry.api"
94
94
  # Optional extras can be added here if needed in the future
95
95
 
96
96
  [tool.poetry.scripts]
97
- setiastrosuitepro = "setiastro.saspro:main"
97
+ setiastrosuitepro = "setiastro.saspro.__main__:main"
98
98
  saspro-export-requirements = "ops.export_requirements:main"
99
99
  saspro-write-build-info = "ops.write_build_info:main"
100
100
  saspro-prime-matplotlib-cache = "ops.prime_matplotlib_cache:main"
@@ -6,7 +6,7 @@ stacking, registration, photometry, and visualization.
6
6
 
7
7
  Important:
8
8
  - __init__.py must remain import-safe (no UI side effects, no splash, no QApplication).
9
- - Do NOT import setiastro.saspro.__main__ from here.
9
+ - Do NOT import setiastro.saspro.__main__ at import time.
10
10
  """
11
11
 
12
12
  __all__ = []
@@ -15,7 +15,18 @@ __all__ = []
15
15
  try:
16
16
  from .doc_manager import DocManager, ImageDocument
17
17
  from .subwindow import ImageSubWindow
18
- __all__ = ["DocManager", "ImageDocument", "ImageSubWindow"]
18
+ __all__ += ["DocManager", "ImageDocument", "ImageSubWindow"]
19
19
  except Exception:
20
- # During initial setup or partial installs, some modules may not be available
21
- __all__ = []
20
+ pass
21
+
22
+ def main():
23
+ """
24
+ Console entrypoint shim.
25
+
26
+ IMPORTANT: This must stay import-safe. We import the real entrypoint
27
+ lazily only when the command is executed.
28
+ """
29
+ from .__main__ import main as _main
30
+ return _main()
31
+
32
+ __all__ += ["main"]
@@ -440,17 +440,25 @@ def _init_splash():
440
440
  self.close()
441
441
  self.deleteLater()
442
442
 
443
- def start_fade_out(self):
443
+ def start_fade_out(self, on_finished=None):
444
444
  if not _allow_window_opacity_effects():
445
445
  self.finish()
446
+ if callable(on_finished):
447
+ on_finished()
446
448
  return
447
- """Smoothly fade out the splash screen."""
449
+
448
450
  self._anim = QPropertyAnimation(self, b"windowOpacity")
449
451
  self._anim.setDuration(1000)
450
452
  self._anim.setStartValue(1.0)
451
453
  self._anim.setEndValue(0.0)
452
454
  self._anim.setEasingCurve(QEasingCurve.Type.OutQuad)
453
- self._anim.finished.connect(self.finish)
455
+
456
+ def _done():
457
+ self.finish()
458
+ if callable(on_finished):
459
+ on_finished()
460
+
461
+ self._anim.finished.connect(_done)
454
462
  self._anim.start()
455
463
 
456
464
  def start_fade_in(self):
@@ -790,6 +798,7 @@ def main():
790
798
  - When running as a module: python -m setiastro.saspro
791
799
  """
792
800
  global _splash, _app, _splash_initialized
801
+ from PyQt6.QtCore import QTimer
793
802
 
794
803
  # Initialize splash if not already done
795
804
  if not _splash_initialized:
@@ -910,7 +919,16 @@ def main():
910
919
  version=VERSION,
911
920
  build_timestamp=BUILD_TIMESTAMP,
912
921
  )
913
-
922
+
923
+ def _kick_updates_after_splash():
924
+ try:
925
+ win.raise_()
926
+ win.activateWindow()
927
+ if win.settings.value("updates/check_on_startup", True, type=bool):
928
+ QTimer.singleShot(1000, win.check_for_updates_startup)
929
+ except Exception:
930
+ pass
931
+
914
932
  if _splash:
915
933
  _splash.setMessage(QCoreApplication.translate("Splash", "Showing main window..."))
916
934
  _splash.setProgress(95)
@@ -965,7 +983,7 @@ def main():
965
983
 
966
984
  # 2. Animate Splash Fade Out
967
985
  # Note: We do NOT use finish() directly here. The animation calls it when done.
968
- _splash.start_fade_out()
986
+ _splash.start_fade_out(on_finished=_kick_updates_after_splash)
969
987
 
970
988
  # NOTE: We keep a reference to _splash (global) so it doesn't get GC'd during animation.
971
989
  # It will deleteLater() itself.
@@ -0,0 +1,3 @@
1
+ # Auto-generated at build time. Do not edit.
2
+ BUILD_TIMESTAMP = "2026-01-24T17:02:32Z"
3
+ APP_VERSION = "1.7.5.post1"
@@ -951,7 +951,7 @@ class ABEDialog(QDialog):
951
951
 
952
952
  # show autostretched or raw; siril_style_autostretch() already clips its result
953
953
  src_to_show = (hard_autostretch(self._preview_source_f01, target_median=0.5, sigma=2,
954
- linked=False, use_16bit=True)
954
+ linked=False, use_24bit=True)
955
955
  if getattr(self, "_autostretch_on", False) else self._preview_source_f01)
956
956
 
957
957
  if src_to_show.ndim == 2 or (src_to_show.ndim == 3 and src_to_show.shape[2] == 1):
@@ -141,11 +141,22 @@ def autostretch(
141
141
  sigma: float = _DEFAULT_SIGMA,
142
142
  *,
143
143
  use_24bit: bool | None = None,
144
+ use_16bit: bool | None = None, # <-- legacy compat (ignored / mapped)
145
+ **_ignored_kwargs, # <-- swallow any other legacy flags safely
144
146
  ) -> np.ndarray:
145
147
 
146
148
  if img is None:
147
149
  return None
148
150
 
151
+ # ---- legacy compat -------------------------------------------------
152
+ # Old callers may pass use_16bit. We no longer support 16-bit preview output.
153
+ # If they pass it, we just treat it as "use higher precision display", i.e. 24-bit.
154
+ if use_16bit is not None:
155
+ # If caller explicitly asked for 16-bit, we interpret that as "high precision".
156
+ # Only override if caller didn't explicitly pass use_24bit.
157
+ if use_24bit is None:
158
+ use_24bit = True
159
+
149
160
  # Optional auto-read from QSettings if caller didn’t pass a flag.
150
161
  if use_24bit is None:
151
162
  try:
@@ -6,8 +6,8 @@ from typing import Optional
6
6
  from PyQt6.QtCore import Qt, QEvent, QPointF, QRunnable, QThreadPool, pyqtSlot, QObject, pyqtSignal
7
7
  from PyQt6.QtGui import QImage, QPixmap, QPen, QBrush, QAction, QKeySequence, QColor, QWheelEvent, QIcon
8
8
  from PyQt6.QtWidgets import (
9
- QDialog, QVBoxLayout, QHBoxLayout, QFormLayout, QGroupBox, QLabel, QPushButton, QSlider,
10
- QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QGraphicsEllipseItem, QMessageBox, QScrollArea, QCheckBox, QDoubleSpinBox
9
+ QDialog, QVBoxLayout, QHBoxLayout, QFormLayout, QGroupBox, QLabel, QPushButton, QSlider, QSizePolicy,
10
+ QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QGraphicsEllipseItem, QMessageBox, QScrollArea, QCheckBox, QDoubleSpinBox, QWidget, QFrame
11
11
  )
12
12
  from setiastro.saspro.imageops.stretch import stretch_color_image, stretch_mono_image
13
13
 
@@ -209,7 +209,7 @@ class BlemishBlasterDialogPro(QDialog):
209
209
  self.scroll = QScrollArea(self)
210
210
  self.scroll.setWidgetResizable(True)
211
211
  self.scroll.setWidget(self.view)
212
-
212
+ self.scroll.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
213
213
  # --- Zoom controls (buttons) ---------------------------------
214
214
  # --- Zoom controls (standard themed toolbuttons) ---------------
215
215
  self._zoom = 1.0 # initial zoom factor
@@ -273,17 +273,57 @@ class BlemishBlasterDialogPro(QDialog):
273
273
  bb.addWidget(self.btn_apply)
274
274
  bb.addWidget(self.btn_close)
275
275
 
276
- main = QVBoxLayout(self)
277
- main.addWidget(self.scroll)
278
- zoom_bar = QHBoxLayout()
279
- zoom_bar.addStretch()
280
- zoom_bar.addWidget(self.btn_zoom_out)
281
- zoom_bar.addWidget(self.btn_zoom_in)
282
- zoom_bar.addWidget(self.btn_zoom_fit)
283
- zoom_bar.addStretch()
284
- main.addLayout(zoom_bar)
285
- main.addWidget(ctrls)
286
- main.addLayout(bb)
276
+ # ─────────────────────────────────────────────────────────────
277
+ # Layout: Left = Controls, Right = Preview (so preview gets height)
278
+ # ─────────────────────────────────────────────────────────────
279
+ root = QHBoxLayout(self)
280
+ root.setContentsMargins(8, 8, 8, 8)
281
+ root.setSpacing(10)
282
+
283
+ # ---- LEFT: Zoom + Controls + Buttons (scrollable on small screens) ----
284
+ left = QVBoxLayout()
285
+ left.setSpacing(10)
286
+
287
+ zoom_box = QGroupBox(self.tr("Zoom"))
288
+ zoom_lay = QHBoxLayout(zoom_box)
289
+ zoom_lay.addStretch(1)
290
+ zoom_lay.addWidget(self.btn_zoom_out)
291
+ zoom_lay.addWidget(self.btn_zoom_in)
292
+ zoom_lay.addWidget(self.btn_zoom_fit)
293
+ zoom_lay.addStretch(1)
294
+
295
+ left.addWidget(zoom_box)
296
+ left.addWidget(ctrls, 0)
297
+
298
+ btn_row = QWidget(self)
299
+ btn_row.setLayout(bb)
300
+ left.addWidget(btn_row, 0)
301
+
302
+ left.addStretch(1)
303
+
304
+ left_widget = QWidget(self)
305
+ left_widget.setLayout(left)
306
+
307
+ left_scroll = QScrollArea(self)
308
+ left_scroll.setWidgetResizable(True)
309
+ left_scroll.setMinimumWidth(320) # tweak 300–360
310
+ left_scroll.setWidget(left_widget)
311
+
312
+ # ---- vertical separator ----
313
+ sep = QFrame(self)
314
+ sep.setFrameShape(QFrame.Shape.VLine)
315
+ sep.setFrameShadow(QFrame.Shadow.Sunken)
316
+
317
+ # ---- RIGHT: Preview ----
318
+ right = QVBoxLayout()
319
+ right.setSpacing(8)
320
+ right.addWidget(self.scroll, 1)
321
+
322
+ # Add in order: controls left, preview right
323
+ root.addWidget(left_scroll, 0)
324
+ root.addWidget(sep)
325
+ root.addLayout(right, 1)
326
+
287
327
 
288
328
  # behavior
289
329
  self._threadpool = QThreadPool.globalInstance()
@@ -63,6 +63,7 @@ class MetricsPanel(QWidget):
63
63
  self.flags = None # list of bools
64
64
  self._threshold_initialized = [False]*4
65
65
  self._open_previews = []
66
+ self._show_guides = True # default on (or False if you prefer)
66
67
 
67
68
  self.plots, self.scats, self.lines = [], [], []
68
69
  titles = [self.tr("FWHM (px)"), self.tr("Eccentricity"), self.tr("Background"), self.tr("Star Count")]
@@ -86,11 +87,101 @@ class MetricsPanel(QWidget):
86
87
  lambda ln, m=idx: self._on_line_move(m, ln))
87
88
  pw.addItem(line)
88
89
 
90
+ # --- dashed reference lines: median + ±3σ (robust) ---
91
+ median_ln = pg.InfiniteLine(pos=0, angle=0, movable=False,
92
+ pen=pg.mkPen((220, 220, 220, 170), width=1, style=Qt.PenStyle.DashLine))
93
+ sigma_lo = pg.InfiniteLine(pos=0, angle=0, movable=False,
94
+ pen=pg.mkPen((220, 220, 220, 120), width=1, style=Qt.PenStyle.DashLine))
95
+ sigma_hi = pg.InfiniteLine(pos=0, angle=0, movable=False,
96
+ pen=pg.mkPen((220, 220, 220, 120), width=1, style=Qt.PenStyle.DashLine))
97
+
98
+ # keep them behind points/threshold visually
99
+ median_ln.setZValue(-10)
100
+ sigma_lo.setZValue(-10)
101
+ sigma_hi.setZValue(-10)
102
+
103
+ pw.addItem(median_ln)
104
+ pw.addItem(sigma_lo)
105
+ pw.addItem(sigma_hi)
106
+
107
+ # create the lists once
108
+ if not hasattr(self, "median_lines"):
109
+ self.median_lines = []
110
+ self.sigma_lines = [] # list of (lo, hi)
111
+
112
+ self.median_lines.append(median_ln)
113
+ self.sigma_lines.append((sigma_lo, sigma_hi))
89
114
  grid.addWidget(pw, idx//2, idx%2)
90
115
  self.plots.append(pw)
91
116
  self.scats.append(scat)
92
117
  self.lines.append(line)
93
118
 
119
+ def set_guides_visible(self, on: bool):
120
+ self._show_guides = bool(on)
121
+
122
+ if not self._show_guides:
123
+ # ✅ hide immediately
124
+ if hasattr(self, "median_lines"):
125
+ for ln in self.median_lines:
126
+ ln.hide()
127
+ if hasattr(self, "sigma_lines"):
128
+ for lo, hi in self.sigma_lines:
129
+ lo.hide()
130
+ hi.hide()
131
+ return
132
+
133
+ # ✅ turning ON: recompute/restore based on what’s currently plotted
134
+ self._refresh_guides_from_current_plot()
135
+
136
+ def _refresh_guides_from_current_plot(self):
137
+ """Recompute/position guide lines using current plot data (if any)."""
138
+ if not getattr(self, "_show_guides", True):
139
+ return
140
+ if not hasattr(self, "median_lines") or not hasattr(self, "sigma_lines"):
141
+ return
142
+ # Use the scatter data already in each panel
143
+ for m, scat in enumerate(self.scats):
144
+ x, y = scat.getData()[:2]
145
+ if y is None or len(y) == 0:
146
+ self.median_lines[m].hide()
147
+ lo, hi = self.sigma_lines[m]
148
+ lo.hide(); hi.hide()
149
+ continue
150
+
151
+ med, sig = self._median_and_robust_sigma(np.asarray(y, dtype=np.float32))
152
+ mline = self.median_lines[m]
153
+ lo_ln, hi_ln = self.sigma_lines[m]
154
+
155
+ if np.isfinite(med):
156
+ mline.setPos(med); mline.show()
157
+ else:
158
+ mline.hide()
159
+
160
+ if np.isfinite(med) and np.isfinite(sig) and sig > 0:
161
+ lo = med - 3.0 * sig
162
+ hi = med + 3.0 * sig
163
+ if m == 3:
164
+ lo = max(0.0, lo)
165
+ lo_ln.setPos(lo); hi_ln.setPos(hi)
166
+ lo_ln.show(); hi_ln.show()
167
+ else:
168
+ lo_ln.hide(); hi_ln.hide()
169
+
170
+
171
+ @staticmethod
172
+ def _median_and_robust_sigma(y: np.ndarray):
173
+ """Return (median, sigma) using MAD-based robust sigma. Ignores NaN/Inf."""
174
+ y = np.asarray(y, dtype=np.float32)
175
+ finite = np.isfinite(y)
176
+ if not finite.any():
177
+ return np.nan, np.nan
178
+ v = y[finite]
179
+ med = float(np.nanmedian(v))
180
+ mad = float(np.nanmedian(np.abs(v - med)))
181
+ sigma = 1.4826 * mad # robust sigma estimate
182
+ return med, float(sigma)
183
+
184
+
94
185
  @staticmethod
95
186
  def _compute_one(i_entry):
96
187
  """
@@ -324,6 +415,15 @@ class MetricsPanel(QWidget):
324
415
  line.setPos(0)
325
416
  pw.getPlotItem().getViewBox().update()
326
417
  pw.repaint()
418
+
419
+ # ✅ hide guides too
420
+ if hasattr(self, "median_lines"):
421
+ for ln in self.median_lines:
422
+ ln.hide()
423
+ if hasattr(self, "sigma_lines"):
424
+ for lo, hi in self.sigma_lines:
425
+ lo.hide()
426
+ hi.hide()
327
427
  return
328
428
 
329
429
  # compute & cache on first call or new image list
@@ -358,6 +458,41 @@ class MetricsPanel(QWidget):
358
458
  ]
359
459
  scat.setData(x=x, y=y, brush=brushes, pen=pg.mkPen(None), size=8)
360
460
 
461
+ # --- update dashed reference lines (median + ±3σ) ---
462
+ if getattr(self, "_show_guides", True):
463
+ try:
464
+ med, sig = self._median_and_robust_sigma(y)
465
+ mline = self.median_lines[m]
466
+ lo_ln, hi_ln = self.sigma_lines[m]
467
+
468
+ if np.isfinite(med):
469
+ mline.setPos(med)
470
+ mline.show()
471
+ else:
472
+ mline.hide()
473
+
474
+ if np.isfinite(med) and np.isfinite(sig) and sig > 0:
475
+ lo = med - 3.0 * sig
476
+ hi = med + 3.0 * sig
477
+ if m == 3:
478
+ lo = max(0.0, lo)
479
+ lo_ln.setPos(lo); hi_ln.setPos(hi)
480
+ lo_ln.show(); hi_ln.show()
481
+ else:
482
+ lo_ln.hide(); hi_ln.hide()
483
+ except Exception:
484
+ if hasattr(self, "median_lines") and m < len(self.median_lines):
485
+ self.median_lines[m].hide()
486
+ a, b = self.sigma_lines[m]
487
+ a.hide(); b.hide()
488
+ else:
489
+ # guides disabled -> force-hide
490
+ if hasattr(self, "median_lines") and m < len(self.median_lines):
491
+ self.median_lines[m].hide()
492
+ a, b = self.sigma_lines[m]
493
+ a.hide(); b.hide()
494
+
495
+
361
496
  # initialize threshold line once
362
497
  if not self._threshold_initialized[m]:
363
498
  mx, mn = np.nanmax(y), np.nanmin(y)
@@ -456,7 +591,10 @@ class MetricsWindow(QWidget):
456
591
  instr.setWordWrap(True)
457
592
  instr.setStyleSheet("color: #ccc; font-size: 12px;")
458
593
  vbox.addWidget(instr)
459
-
594
+ self.chk_guides = QCheckBox(self.tr("Show median and ±3σ guides"), self)
595
+ self.chk_guides.setChecked(True) # default on
596
+ self.chk_guides.toggled.connect(self._on_toggle_guides)
597
+ vbox.addWidget(self.chk_guides)
460
598
  # → filter selector
461
599
  self.group_combo = QComboBox(self)
462
600
  self.group_combo.addItem(self.tr("All"))
@@ -479,6 +617,10 @@ class MetricsWindow(QWidget):
479
617
  self._all_images = []
480
618
  self._current_indices: Optional[List[int]] = None
481
619
 
620
+ def _on_toggle_guides(self, on: bool):
621
+ if hasattr(self, "metrics_panel") and self.metrics_panel is not None:
622
+ self.metrics_panel.set_guides_visible(on)
623
+
482
624
 
483
625
  def _update_status(self, *args):
484
626
  """Recompute and show: Flagged Items X / Y (Z%). Robust to stale indices."""
@@ -537,6 +679,7 @@ class MetricsWindow(QWidget):
537
679
  self._current_indices = self._order_all
538
680
  self._apply_thresholds("All")
539
681
  self.metrics_panel.plot(self._all_images, indices=self._current_indices)
682
+ self.metrics_panel.set_guides_visible(self.chk_guides.isChecked())
540
683
  self._update_status()
541
684
 
542
685
  def _reindex_list_after_remove(self, lst: List[int] | None, removed: List[int]) -> List[int] | None:
@@ -666,7 +809,8 @@ class MetricsWindow(QWidget):
666
809
  grp = self.group_combo.currentText()
667
810
  # save it for this group
668
811
  self._thresholds_per_group[grp][metric_idx] = new_val
669
-
812
+ self.metrics_panel.plot(self._all_images, indices=self._current_indices)
813
+ self.metrics_panel.set_guides_visible(self.chk_guides.isChecked())
670
814
  # (if you also want immediate re-flagging in the tree, keep your BlinkTab logic hooked here)
671
815
 
672
816
  def _apply_thresholds(self, group_name: str):