graxpert 3.2.0a0.dev4__tar.gz → 3.2.0a0.dev5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/PKG-INFO +3 -2
  2. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/README.md +2 -1
  3. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ai_model_handling.py +215 -215
  4. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/astroimage.py +308 -308
  5. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/background_flood_selection.py +240 -240
  6. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/grid_utils.py +38 -38
  7. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/mp_logging.py +97 -97
  8. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/parallel_processing.py +3 -3
  9. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/preferences.py +139 -139
  10. graxpert-3.2.0a0.dev5/graxpert/s3_secrets.py +8 -0
  11. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui_scaling.py +13 -13
  12. graxpert-3.2.0a0.dev5/graxpert/version.py +2 -0
  13. graxpert-3.2.0a0.dev5/graxpert/version.py.bak +2 -0
  14. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert.egg-info/PKG-INFO +3 -2
  15. graxpert-3.2.0a0.dev5/graxpert.egg-info/SOURCES.txt +80 -0
  16. graxpert-3.2.0a0.dev5/img/Icon.icns +0 -0
  17. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/pyproject.toml +7 -0
  18. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/setup.py +8 -3
  19. graxpert-3.2.0a0.dev4/graxpert/__pycache__/AstroImageRepository.cpython-311.pyc +0 -0
  20. graxpert-3.2.0a0.dev4/graxpert/__pycache__/AstroImageRepository.cpython-312.pyc +0 -0
  21. graxpert-3.2.0a0.dev4/graxpert/__pycache__/AstroImageRepository.cpython-313.pyc +0 -0
  22. graxpert-3.2.0a0.dev4/graxpert/__pycache__/__init__.cpython-310.pyc +0 -0
  23. graxpert-3.2.0a0.dev4/graxpert/__pycache__/__init__.cpython-311.pyc +0 -0
  24. graxpert-3.2.0a0.dev4/graxpert/__pycache__/__init__.cpython-312.pyc +0 -0
  25. graxpert-3.2.0a0.dev4/graxpert/__pycache__/__init__.cpython-313.pyc +0 -0
  26. graxpert-3.2.0a0.dev4/graxpert/__pycache__/ai_model_handling.cpython-310.pyc +0 -0
  27. graxpert-3.2.0a0.dev4/graxpert/__pycache__/ai_model_handling.cpython-311.pyc +0 -0
  28. graxpert-3.2.0a0.dev4/graxpert/__pycache__/ai_model_handling.cpython-312.pyc +0 -0
  29. graxpert-3.2.0a0.dev4/graxpert/__pycache__/ai_model_handling.cpython-313.pyc +0 -0
  30. graxpert-3.2.0a0.dev4/graxpert/__pycache__/app_state.cpython-311.pyc +0 -0
  31. graxpert-3.2.0a0.dev4/graxpert/__pycache__/app_state.cpython-312.pyc +0 -0
  32. graxpert-3.2.0a0.dev4/graxpert/__pycache__/app_state.cpython-313.pyc +0 -0
  33. graxpert-3.2.0a0.dev4/graxpert/__pycache__/astroimage.cpython-311.pyc +0 -0
  34. graxpert-3.2.0a0.dev4/graxpert/__pycache__/astroimage.cpython-312.pyc +0 -0
  35. graxpert-3.2.0a0.dev4/graxpert/__pycache__/astroimage.cpython-313.pyc +0 -0
  36. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_extraction.cpython-311.pyc +0 -0
  37. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_extraction.cpython-312.pyc +0 -0
  38. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_extraction.cpython-313.pyc +0 -0
  39. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_flood_selection.cpython-311.pyc +0 -0
  40. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_flood_selection.cpython-312.pyc +0 -0
  41. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_flood_selection.cpython-313.pyc +0 -0
  42. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_grid_selection.cpython-311.pyc +0 -0
  43. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_grid_selection.cpython-312.pyc +0 -0
  44. graxpert-3.2.0a0.dev4/graxpert/__pycache__/background_grid_selection.cpython-313.pyc +0 -0
  45. graxpert-3.2.0a0.dev4/graxpert/__pycache__/cmdline_tools.cpython-312.pyc +0 -0
  46. graxpert-3.2.0a0.dev4/graxpert/__pycache__/cmdline_tools.cpython-313.pyc +0 -0
  47. graxpert-3.2.0a0.dev4/graxpert/__pycache__/commands.cpython-311.pyc +0 -0
  48. graxpert-3.2.0a0.dev4/graxpert/__pycache__/commands.cpython-312.pyc +0 -0
  49. graxpert-3.2.0a0.dev4/graxpert/__pycache__/commands.cpython-313.pyc +0 -0
  50. graxpert-3.2.0a0.dev4/graxpert/__pycache__/deconvolution.cpython-311.pyc +0 -0
  51. graxpert-3.2.0a0.dev4/graxpert/__pycache__/deconvolution.cpython-312.pyc +0 -0
  52. graxpert-3.2.0a0.dev4/graxpert/__pycache__/deconvolution.cpython-313.pyc +0 -0
  53. graxpert-3.2.0a0.dev4/graxpert/__pycache__/denoising.cpython-311.pyc +0 -0
  54. graxpert-3.2.0a0.dev4/graxpert/__pycache__/denoising.cpython-312.pyc +0 -0
  55. graxpert-3.2.0a0.dev4/graxpert/__pycache__/denoising.cpython-313.pyc +0 -0
  56. graxpert-3.2.0a0.dev4/graxpert/__pycache__/grid_utils.cpython-311.pyc +0 -0
  57. graxpert-3.2.0a0.dev4/graxpert/__pycache__/grid_utils.cpython-312.pyc +0 -0
  58. graxpert-3.2.0a0.dev4/graxpert/__pycache__/grid_utils.cpython-313.pyc +0 -0
  59. graxpert-3.2.0a0.dev4/graxpert/__pycache__/localization.cpython-311.pyc +0 -0
  60. graxpert-3.2.0a0.dev4/graxpert/__pycache__/localization.cpython-312.pyc +0 -0
  61. graxpert-3.2.0a0.dev4/graxpert/__pycache__/localization.cpython-313.pyc +0 -0
  62. graxpert-3.2.0a0.dev4/graxpert/__pycache__/main.cpython-311.pyc +0 -0
  63. graxpert-3.2.0a0.dev4/graxpert/__pycache__/main.cpython-312.pyc +0 -0
  64. graxpert-3.2.0a0.dev4/graxpert/__pycache__/main.cpython-313.pyc +0 -0
  65. graxpert-3.2.0a0.dev4/graxpert/__pycache__/mp_logging.cpython-311.pyc +0 -0
  66. graxpert-3.2.0a0.dev4/graxpert/__pycache__/mp_logging.cpython-312.pyc +0 -0
  67. graxpert-3.2.0a0.dev4/graxpert/__pycache__/mp_logging.cpython-313.pyc +0 -0
  68. graxpert-3.2.0a0.dev4/graxpert/__pycache__/parallel_processing.cpython-311.pyc +0 -0
  69. graxpert-3.2.0a0.dev4/graxpert/__pycache__/parallel_processing.cpython-312.pyc +0 -0
  70. graxpert-3.2.0a0.dev4/graxpert/__pycache__/parallel_processing.cpython-313.pyc +0 -0
  71. graxpert-3.2.0a0.dev4/graxpert/__pycache__/preferences.cpython-311.pyc +0 -0
  72. graxpert-3.2.0a0.dev4/graxpert/__pycache__/preferences.cpython-312.pyc +0 -0
  73. graxpert-3.2.0a0.dev4/graxpert/__pycache__/preferences.cpython-313.pyc +0 -0
  74. graxpert-3.2.0a0.dev4/graxpert/__pycache__/radialbasisinterpolation.cpython-311.pyc +0 -0
  75. graxpert-3.2.0a0.dev4/graxpert/__pycache__/radialbasisinterpolation.cpython-312.pyc +0 -0
  76. graxpert-3.2.0a0.dev4/graxpert/__pycache__/radialbasisinterpolation.cpython-313.pyc +0 -0
  77. graxpert-3.2.0a0.dev4/graxpert/__pycache__/resource_utils.cpython-311.pyc +0 -0
  78. graxpert-3.2.0a0.dev4/graxpert/__pycache__/resource_utils.cpython-312.pyc +0 -0
  79. graxpert-3.2.0a0.dev4/graxpert/__pycache__/resource_utils.cpython-313.pyc +0 -0
  80. graxpert-3.2.0a0.dev4/graxpert/__pycache__/s3_secrets.cpython-311.pyc +0 -0
  81. graxpert-3.2.0a0.dev4/graxpert/__pycache__/s3_secrets.cpython-312.pyc +0 -0
  82. graxpert-3.2.0a0.dev4/graxpert/__pycache__/s3_secrets.cpython-313.pyc +0 -0
  83. graxpert-3.2.0a0.dev4/graxpert/__pycache__/skyall.cpython-311.pyc +0 -0
  84. graxpert-3.2.0a0.dev4/graxpert/__pycache__/skyall.cpython-312.pyc +0 -0
  85. graxpert-3.2.0a0.dev4/graxpert/__pycache__/skyall.cpython-313.pyc +0 -0
  86. graxpert-3.2.0a0.dev4/graxpert/__pycache__/stretch.cpython-311.pyc +0 -0
  87. graxpert-3.2.0a0.dev4/graxpert/__pycache__/stretch.cpython-312.pyc +0 -0
  88. graxpert-3.2.0a0.dev4/graxpert/__pycache__/stretch.cpython-313.pyc +0 -0
  89. graxpert-3.2.0a0.dev4/graxpert/__pycache__/ui_scaling.cpython-311.pyc +0 -0
  90. graxpert-3.2.0a0.dev4/graxpert/__pycache__/ui_scaling.cpython-312.pyc +0 -0
  91. graxpert-3.2.0a0.dev4/graxpert/__pycache__/ui_scaling.cpython-313.pyc +0 -0
  92. graxpert-3.2.0a0.dev4/graxpert/__pycache__/version.cpython-311.pyc +0 -0
  93. graxpert-3.2.0a0.dev4/graxpert/__pycache__/version.cpython-312.pyc +0 -0
  94. graxpert-3.2.0a0.dev4/graxpert/__pycache__/version.cpython-313.pyc +0 -0
  95. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/__init__.cpython-311.pyc +0 -0
  96. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/__init__.cpython-312.pyc +0 -0
  97. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/__init__.cpython-313.pyc +0 -0
  98. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/app.cpython-311.pyc +0 -0
  99. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/app.cpython-312.pyc +0 -0
  100. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/app.cpython-313.pyc +0 -0
  101. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/app_events.cpython-311.pyc +0 -0
  102. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/app_events.cpython-312.pyc +0 -0
  103. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/app_events.cpython-313.pyc +0 -0
  104. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/eventbus.cpython-311.pyc +0 -0
  105. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/eventbus.cpython-312.pyc +0 -0
  106. graxpert-3.2.0a0.dev4/graxpert/application/__pycache__/eventbus.cpython-313.pyc +0 -0
  107. graxpert-3.2.0a0.dev4/graxpert/img/__pycache__/__init__.cpython-312.pyc +0 -0
  108. graxpert-3.2.0a0.dev4/graxpert/s3_secrets.py +0 -16
  109. graxpert-3.2.0a0.dev4/graxpert/theme/__pycache__/__init__.cpython-312.pyc +0 -0
  110. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/__init__.cpython-311.pyc +0 -0
  111. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/__init__.cpython-312.pyc +0 -0
  112. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/__init__.cpython-313.pyc +0 -0
  113. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/application_frame.cpython-311.pyc +0 -0
  114. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/application_frame.cpython-312.pyc +0 -0
  115. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/application_frame.cpython-313.pyc +0 -0
  116. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/canvas.cpython-311.pyc +0 -0
  117. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/canvas.cpython-312.pyc +0 -0
  118. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/canvas.cpython-313.pyc +0 -0
  119. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/left_menu.cpython-311.pyc +0 -0
  120. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/left_menu.cpython-312.pyc +0 -0
  121. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/left_menu.cpython-313.pyc +0 -0
  122. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/loadingframe.cpython-311.pyc +0 -0
  123. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/loadingframe.cpython-312.pyc +0 -0
  124. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/loadingframe.cpython-313.pyc +0 -0
  125. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/right_menu.cpython-311.pyc +0 -0
  126. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/right_menu.cpython-312.pyc +0 -0
  127. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/right_menu.cpython-313.pyc +0 -0
  128. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/statusbar.cpython-311.pyc +0 -0
  129. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/statusbar.cpython-312.pyc +0 -0
  130. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/statusbar.cpython-313.pyc +0 -0
  131. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/styling.cpython-311.pyc +0 -0
  132. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/styling.cpython-312.pyc +0 -0
  133. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/styling.cpython-313.pyc +0 -0
  134. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/tooltip.cpython-311.pyc +0 -0
  135. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/tooltip.cpython-312.pyc +0 -0
  136. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/tooltip.cpython-313.pyc +0 -0
  137. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/ui_events.cpython-311.pyc +0 -0
  138. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/ui_events.cpython-312.pyc +0 -0
  139. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/ui_events.cpython-313.pyc +0 -0
  140. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/widgets.cpython-311.pyc +0 -0
  141. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/widgets.cpython-312.pyc +0 -0
  142. graxpert-3.2.0a0.dev4/graxpert/ui/__pycache__/widgets.cpython-313.pyc +0 -0
  143. graxpert-3.2.0a0.dev4/graxpert/version.py +0 -2
  144. graxpert-3.2.0a0.dev4/graxpert/version.py.bak +0 -2
  145. graxpert-3.2.0a0.dev4/graxpert.egg-info/SOURCES.txt +0 -202
  146. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/MANIFEST.in +0 -0
  147. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/AstroImageRepository.py +0 -0
  148. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/__init__.py +0 -0
  149. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/app_state.py +0 -0
  150. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/application/__init__.py +0 -0
  151. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/application/app.py +0 -0
  152. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/application/app_events.py +0 -0
  153. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/application/eventbus.py +0 -0
  154. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/background_extraction.py +0 -0
  155. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/background_grid_selection.py +0 -0
  156. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/cmdline_tools.py +0 -0
  157. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/commands.py +0 -0
  158. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/deconvolution.py +0 -0
  159. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/denoising.py +0 -0
  160. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/GraXpert_LOGO_Hauptvariante.png +0 -0
  161. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/Icon.png +0 -0
  162. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/LDN1235_original.jpg +0 -0
  163. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/LDN1235_processed.jpg +0 -0
  164. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/__init__.py +0 -0
  165. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/gfx_numbers.png +0 -0
  166. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/gfx_numbers.svg +0 -0
  167. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/graXpert_Startbadge_Umbriel.png +0 -0
  168. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/img/hourglass.png +0 -0
  169. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/locales/__init__.py +0 -0
  170. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/locales/base.pot +0 -0
  171. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/locales/de_DE/LC_MESSAGES/base.mo +0 -0
  172. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/locales/de_DE/LC_MESSAGES/base.po +0 -0
  173. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/localization.py +0 -0
  174. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/main.py +0 -0
  175. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/radialbasisinterpolation.py +0 -0
  176. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/resource_utils.py +0 -0
  177. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/skyall.py +0 -0
  178. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/stretch.py +0 -0
  179. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/theme/__init__.py +0 -0
  180. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/theme/graxpert-dark-blue.json +0 -0
  181. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/__init__.py +0 -0
  182. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/application_frame.py +0 -0
  183. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/canvas.py +0 -0
  184. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/left_menu.py +0 -0
  185. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/loadingframe.py +0 -0
  186. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/right_menu.py +0 -0
  187. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/statusbar.py +0 -0
  188. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/styling.py +0 -0
  189. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/tooltip.py +0 -0
  190. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/ui_events.py +0 -0
  191. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert/ui/widgets.py +0 -0
  192. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert.egg-info/dependency_links.txt +0 -0
  193. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert.egg-info/entry_points.txt +0 -0
  194. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert.egg-info/requires.txt +0 -0
  195. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/graxpert.egg-info/top_level.txt +0 -0
  196. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/Icon.ico +0 -0
  197. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/Icon.png +0 -0
  198. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/NGC7000_original.jpg +0 -0
  199. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/NGC7000_processed.jpg +0 -0
  200. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Ariel.png +0 -0
  201. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Ariel.svg +0 -0
  202. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Dione.png +0 -0
  203. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Dione.svg +0 -0
  204. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Tethys.png +0 -0
  205. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Tethys.svg +0 -0
  206. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Umbriel.png +0 -0
  207. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/img/graXpert_Startbadge_Umbriel.svg +0 -0
  208. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/requirements.txt +0 -0
  209. {graxpert-3.2.0a0.dev4 → graxpert-3.2.0a0.dev5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: graxpert
3
- Version: 3.2.0a0.dev4
3
+ Version: 3.2.0a0.dev5
4
4
  Summary: GraXpert is an astronomical image processing program for extracting and removing gradients in the background of your astrophotos
5
5
  Home-page: https://graxpert.com
6
6
  Author: GraXpert Development Team
@@ -69,7 +69,7 @@ Dynamic: summary
69
69
  </p>
70
70
 
71
71
  # WARNING: This is a test branch/pip build, you probably don't want it yet.
72
- For the time being you a re better off with the install images from the graxpert
72
+ For the time being you are better off with the install images from the graxpert
73
73
  homepage! for questions regarding this test build contact kevinh@geeksville.com.
74
74
 
75
75
  GraXpert is an astronomical image processing program for extracting and removing
@@ -97,6 +97,7 @@ We do this via the the python [pypi.org](https://pypi.org/project/graxpert/) rep
97
97
 
98
98
  FIXME, recommend directml for windows, FIXME for linux and FIXME for mac
99
99
 
100
+ * **pip install graxpert\[cpuonly\]** - Use this if you are on OS-X - it is poorly named, but it will still use the CoreML Apple GPU support
100
101
  * **pip install graxpert\[cuda\]** - Use this if you have an Nvidia GPU
101
102
  * **pip install graxpert\[rocm\]** - Use this if you have an AMD GPU
102
103
  * **pip install graxpert\[openvino\]** - Use this if you don't have an advanced GPU or don't know what you have (provides sizable acceleration on most modern Intel CPUs)
@@ -3,7 +3,7 @@
3
3
  </p>
4
4
 
5
5
  # WARNING: This is a test branch/pip build, you probably don't want it yet.
6
- For the time being you a re better off with the install images from the graxpert
6
+ For the time being you are better off with the install images from the graxpert
7
7
  homepage! for questions regarding this test build contact kevinh@geeksville.com.
8
8
 
9
9
  GraXpert is an astronomical image processing program for extracting and removing
@@ -31,6 +31,7 @@ We do this via the the python [pypi.org](https://pypi.org/project/graxpert/) rep
31
31
 
32
32
  FIXME, recommend directml for windows, FIXME for linux and FIXME for mac
33
33
 
34
+ * **pip install graxpert\[cpuonly\]** - Use this if you are on OS-X - it is poorly named, but it will still use the CoreML Apple GPU support
34
35
  * **pip install graxpert\[cuda\]** - Use this if you have an Nvidia GPU
35
36
  * **pip install graxpert\[rocm\]** - Use this if you have an AMD GPU
36
37
  * **pip install graxpert\[openvino\]** - Use this if you don't have an advanced GPU or don't know what you have (provides sizable acceleration on most modern Intel CPUs)
@@ -1,215 +1,215 @@
1
- import logging
2
- import os
3
- import sys
4
- import re
5
- import shutil
6
- import zipfile
7
-
8
- from appdirs import user_data_dir
9
- from minio import Minio
10
- from packaging import version
11
-
12
- try:
13
- from graxpert.s3_secrets import endpoint, ro_access_key, ro_secret_key
14
-
15
- client = Minio(endpoint, ro_access_key, ro_secret_key)
16
- except Exception as e:
17
- logging.exception(e)
18
- client = None
19
-
20
- from graxpert.ui.loadingframe import DynamicProgressThread
21
-
22
- ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "ai-models")
23
- bge_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "bge-ai-models")
24
-
25
- # old ai-models folder exists, rename to 'bge-ai-models'
26
- if os.path.exists(ai_models_dir):
27
- logging.warning(f"Older 'ai_models_dir' {ai_models_dir} exists. Renaming to {bge_ai_models_dir} due to introduction of new denoising models in GraXpert 3.")
28
- try:
29
- os.rename(ai_models_dir, bge_ai_models_dir)
30
- except Exception as e:
31
- logging.error(f"Renaming {ai_models_dir} to {bge_ai_models_dir} failed. {bge_ai_models_dir} will be newly created. Consider deleting obsolete {ai_models_dir} manually.")
32
-
33
- os.makedirs(bge_ai_models_dir, exist_ok=True)
34
-
35
- deconvolution_object_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "deconvolution-object-ai-models")
36
- os.makedirs(deconvolution_object_ai_models_dir, exist_ok=True)
37
- deconvolution_stars_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "deconvolution-stars-ai-models")
38
- os.makedirs(deconvolution_stars_ai_models_dir, exist_ok=True)
39
- denoise_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "denoise-ai-models")
40
- os.makedirs(denoise_ai_models_dir, exist_ok=True)
41
-
42
-
43
- # ui operations
44
- def list_remote_versions(bucket_name):
45
- if client is None:
46
- return []
47
- try:
48
- objects = client.list_objects(bucket_name)
49
- versions = []
50
-
51
- for o in objects:
52
- tags = client.get_object_tags(o.bucket_name, o.object_name)
53
- if tags is not None and "ai-version" in tags:
54
- versions.append(
55
- {
56
- "bucket": o.bucket_name,
57
- "object": o.object_name,
58
- "version": tags["ai-version"],
59
- }
60
- )
61
- return versions
62
-
63
- except Exception as e:
64
- logging.exception(e)
65
- finally:
66
- return versions
67
-
68
-
69
- def list_local_versions(ai_models_dir):
70
- try:
71
- model_dirs = [
72
- {"path": os.path.join(ai_models_dir, f), "version": f}
73
- for f in os.listdir(ai_models_dir)
74
- if re.search(r"\d\.\d\.\d", f) and len(os.listdir(os.path.join(ai_models_dir, f))) > 0 # match semantic version
75
- ]
76
- return model_dirs
77
- except Exception as e:
78
- logging.exception(e)
79
- return None
80
-
81
-
82
- def latest_version(ai_models_dir, bucket_name):
83
- try:
84
- remote_versions = list_remote_versions(bucket_name)
85
- except Exception as e:
86
- remote_versions = []
87
- logging.exception(e)
88
- try:
89
- local_versions = list_local_versions(ai_models_dir)
90
- except Exception as e:
91
- local_versions = []
92
- logging.exception(e)
93
- ai_options = set([])
94
- ai_options.update([rv["version"] for rv in remote_versions])
95
- ai_options.update(set([lv["version"] for lv in local_versions]))
96
- ai_options = sorted(ai_options, key=lambda k: version.parse(k), reverse=True)
97
- return ai_options[0]
98
-
99
-
100
- def ai_model_path_from_version(ai_models_dir, local_version):
101
- if local_version is None:
102
- return None
103
-
104
- return os.path.join(ai_models_dir, local_version, "model.onnx")
105
-
106
-
107
- def compute_orphaned_local_versions(ai_models_dir):
108
- remote_versions = list_remote_versions(ai_models_dir)
109
-
110
- if remote_versions is None:
111
- logging.warning("Could not fetch remote versions. Thus, aborting cleaning of local versions in {}. Consider manual cleaning".format(ai_models_dir))
112
- return
113
-
114
- local_versions = list_local_versions()
115
-
116
- if local_versions is None:
117
- logging.warning("Could not read local versions in {}. Thus, aborting cleaning. Consider manual cleaning".format(ai_models_dir))
118
- return
119
-
120
- orphaned_local_versions = [{"path": lv["path"], "version": lv["version"]} for lv in local_versions if lv["version"] not in [rv["version"] for rv in remote_versions]]
121
-
122
- return orphaned_local_versions
123
-
124
-
125
- def cleanup_orphaned_local_versions(orphaned_local_versions):
126
- for olv in orphaned_local_versions:
127
- try:
128
- shutil.rmtree(olv["path"])
129
- except Exception as e:
130
- logging.exception(e)
131
-
132
-
133
- def download_version(ai_models_dir, bucket_name, target_version, progress=None):
134
- try:
135
- remote_versions = list_remote_versions(bucket_name)
136
- for r in remote_versions:
137
- if target_version == r["version"]:
138
- remote_version = r
139
- break
140
-
141
- ai_model_dir = os.path.join(ai_models_dir, "{}".format(remote_version["version"]))
142
- os.makedirs(ai_model_dir, exist_ok=True)
143
-
144
- ai_model_file = os.path.join(ai_model_dir, "model.onnx")
145
- ai_model_zip = os.path.join(ai_model_dir, "model.zip")
146
- client.fget_object(
147
- remote_version["bucket"],
148
- remote_version["object"],
149
- ai_model_zip,
150
- progress=DynamicProgressThread(callback=progress),
151
- )
152
-
153
- with zipfile.ZipFile(ai_model_zip, "r") as zip_ref:
154
- zip_ref.extractall(ai_model_dir)
155
-
156
- if not os.path.isfile(ai_model_file):
157
- raise ValueError(f"Could not find ai 'model.onnx' file after extracting {ai_model_zip}")
158
- os.remove(ai_model_zip)
159
-
160
- except Exception as e:
161
- # try to delete (rollback) ai_model_dir in case of errors
162
- logging.exception(e)
163
- try:
164
- shutil.rmtree(ai_model_dir)
165
- except Exception as e2:
166
- logging.exception(e2)
167
-
168
-
169
- def validate_local_version(ai_models_dir, local_version):
170
- return os.path.isfile(os.path.join(ai_models_dir, local_version, "model.onnx"))
171
-
172
-
173
- def get_execution_providers_ordered(gpu_acceleration=True):
174
- if gpu_acceleration:
175
- supported_providers = [
176
- (
177
- "OpenVINOExecutionProvider",
178
- {
179
- # per https://onnxruntime.ai/docs/execution-providers/OpenVINO-ExecutionProvider.html#summary-of-options
180
- # "device_type": "HETERO:GPU,CPU,NPU AUTO:GPU,CPU,NPU MULTI:GPU,CPU,NPU", # Will prefer dGPU, fallback to iGPU, NPU or CPU with extra Intel specific optimizations
181
- "device_type": "AUTO:GPU,CPU", # Will prefer dGPU, fallback to iGPU, NPU or CPU with extra Intel specific optimizations
182
- }
183
- ),
184
- "ROCMExecutionProvider",
185
- "DmlExecutionProvider",
186
- (
187
- "CoreMLExecutionProvider",
188
- {
189
- "flags": "COREML_FLAG_CREATE_MLPROGRAM",
190
- },
191
- ),
192
- "CUDAExecutionProvider",
193
- "CPUExecutionProvider",
194
- ]
195
- else:
196
- supported_providers = ["CPUExecutionProvider"]
197
-
198
- result = []
199
- try:
200
- import onnxruntime as ort
201
- available = ort.get_available_providers()
202
- for provider in supported_providers:
203
- if isinstance(provider, tuple):
204
- if provider[0] in available:
205
- result.append(provider) # Append the entire tuple
206
- else:
207
- if provider in available:
208
- result.append(provider)
209
- return result
210
- except Exception as e:
211
- logging.error("Critical error! The required ONNX Runtime (AI library) package is misconfigured.\n" \
212
- "Please read the README.md to confirm that you've selected the correct build for your hardware.\n" \
213
- "If you are using one of our prebuilt executables, please file a bug with the following information:\n"
214
- "{}".format(e))
215
- sys.exit(1)
1
+ import logging
2
+ import os
3
+ import sys
4
+ import re
5
+ import shutil
6
+ import zipfile
7
+
8
+ from appdirs import user_data_dir
9
+ from minio import Minio
10
+ from packaging import version
11
+
12
+ try:
13
+ from graxpert.s3_secrets import endpoint, ro_access_key, ro_secret_key
14
+
15
+ client = Minio(endpoint, ro_access_key, ro_secret_key)
16
+ except Exception as e:
17
+ logging.exception(e)
18
+ client = None
19
+
20
+ from graxpert.ui.loadingframe import DynamicProgressThread
21
+
22
+ ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "ai-models")
23
+ bge_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "bge-ai-models")
24
+
25
+ # old ai-models folder exists, rename to 'bge-ai-models'
26
+ if os.path.exists(ai_models_dir):
27
+ logging.warning(f"Older 'ai_models_dir' {ai_models_dir} exists. Renaming to {bge_ai_models_dir} due to introduction of new denoising models in GraXpert 3.")
28
+ try:
29
+ os.rename(ai_models_dir, bge_ai_models_dir)
30
+ except Exception as e:
31
+ logging.error(f"Renaming {ai_models_dir} to {bge_ai_models_dir} failed. {bge_ai_models_dir} will be newly created. Consider deleting obsolete {ai_models_dir} manually.")
32
+
33
+ os.makedirs(bge_ai_models_dir, exist_ok=True)
34
+
35
+ deconvolution_object_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "deconvolution-object-ai-models")
36
+ os.makedirs(deconvolution_object_ai_models_dir, exist_ok=True)
37
+ deconvolution_stars_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "deconvolution-stars-ai-models")
38
+ os.makedirs(deconvolution_stars_ai_models_dir, exist_ok=True)
39
+ denoise_ai_models_dir = os.path.join(user_data_dir(appname="GraXpert"), "denoise-ai-models")
40
+ os.makedirs(denoise_ai_models_dir, exist_ok=True)
41
+
42
+
43
+ # ui operations
44
+ def list_remote_versions(bucket_name):
45
+ if client is None:
46
+ return []
47
+ try:
48
+ objects = client.list_objects(bucket_name)
49
+ versions = []
50
+
51
+ for o in objects:
52
+ tags = client.get_object_tags(o.bucket_name, o.object_name)
53
+ if tags is not None and "ai-version" in tags:
54
+ versions.append(
55
+ {
56
+ "bucket": o.bucket_name,
57
+ "object": o.object_name,
58
+ "version": tags["ai-version"],
59
+ }
60
+ )
61
+ return versions
62
+
63
+ except Exception as e:
64
+ logging.exception(e)
65
+ finally:
66
+ return versions
67
+
68
+
69
+ def list_local_versions(ai_models_dir):
70
+ try:
71
+ model_dirs = [
72
+ {"path": os.path.join(ai_models_dir, f), "version": f}
73
+ for f in os.listdir(ai_models_dir)
74
+ if re.search(r"\d\.\d\.\d", f) and len(os.listdir(os.path.join(ai_models_dir, f))) > 0 # match semantic version
75
+ ]
76
+ return model_dirs
77
+ except Exception as e:
78
+ logging.exception(e)
79
+ return None
80
+
81
+
82
+ def latest_version(ai_models_dir, bucket_name):
83
+ try:
84
+ remote_versions = list_remote_versions(bucket_name)
85
+ except Exception as e:
86
+ remote_versions = []
87
+ logging.exception(e)
88
+ try:
89
+ local_versions = list_local_versions(ai_models_dir)
90
+ except Exception as e:
91
+ local_versions = []
92
+ logging.exception(e)
93
+ ai_options = set([])
94
+ ai_options.update([rv["version"] for rv in remote_versions])
95
+ ai_options.update(set([lv["version"] for lv in local_versions]))
96
+ ai_options = sorted(ai_options, key=lambda k: version.parse(k), reverse=True)
97
+ return ai_options[0]
98
+
99
+
100
+ def ai_model_path_from_version(ai_models_dir, local_version):
101
+ if local_version is None:
102
+ return None
103
+
104
+ return os.path.join(ai_models_dir, local_version, "model.onnx")
105
+
106
+
107
+ def compute_orphaned_local_versions(ai_models_dir):
108
+ remote_versions = list_remote_versions(ai_models_dir)
109
+
110
+ if remote_versions is None:
111
+ logging.warning("Could not fetch remote versions. Thus, aborting cleaning of local versions in {}. Consider manual cleaning".format(ai_models_dir))
112
+ return
113
+
114
+ local_versions = list_local_versions()
115
+
116
+ if local_versions is None:
117
+ logging.warning("Could not read local versions in {}. Thus, aborting cleaning. Consider manual cleaning".format(ai_models_dir))
118
+ return
119
+
120
+ orphaned_local_versions = [{"path": lv["path"], "version": lv["version"]} for lv in local_versions if lv["version"] not in [rv["version"] for rv in remote_versions]]
121
+
122
+ return orphaned_local_versions
123
+
124
+
125
+ def cleanup_orphaned_local_versions(orphaned_local_versions):
126
+ for olv in orphaned_local_versions:
127
+ try:
128
+ shutil.rmtree(olv["path"])
129
+ except Exception as e:
130
+ logging.exception(e)
131
+
132
+
133
+ def download_version(ai_models_dir, bucket_name, target_version, progress=None):
134
+ try:
135
+ remote_versions = list_remote_versions(bucket_name)
136
+ for r in remote_versions:
137
+ if target_version == r["version"]:
138
+ remote_version = r
139
+ break
140
+
141
+ ai_model_dir = os.path.join(ai_models_dir, "{}".format(remote_version["version"]))
142
+ os.makedirs(ai_model_dir, exist_ok=True)
143
+
144
+ ai_model_file = os.path.join(ai_model_dir, "model.onnx")
145
+ ai_model_zip = os.path.join(ai_model_dir, "model.zip")
146
+ client.fget_object(
147
+ remote_version["bucket"],
148
+ remote_version["object"],
149
+ ai_model_zip,
150
+ progress=DynamicProgressThread(callback=progress),
151
+ )
152
+
153
+ with zipfile.ZipFile(ai_model_zip, "r") as zip_ref:
154
+ zip_ref.extractall(ai_model_dir)
155
+
156
+ if not os.path.isfile(ai_model_file):
157
+ raise ValueError(f"Could not find ai 'model.onnx' file after extracting {ai_model_zip}")
158
+ os.remove(ai_model_zip)
159
+
160
+ except Exception as e:
161
+ # try to delete (rollback) ai_model_dir in case of errors
162
+ logging.exception(e)
163
+ try:
164
+ shutil.rmtree(ai_model_dir)
165
+ except Exception as e2:
166
+ logging.exception(e2)
167
+
168
+
169
+ def validate_local_version(ai_models_dir, local_version):
170
+ return os.path.isfile(os.path.join(ai_models_dir, local_version, "model.onnx"))
171
+
172
+
173
+ def get_execution_providers_ordered(gpu_acceleration=True):
174
+ if gpu_acceleration:
175
+ supported_providers = [
176
+ (
177
+ "OpenVINOExecutionProvider",
178
+ {
179
+ # per https://onnxruntime.ai/docs/execution-providers/OpenVINO-ExecutionProvider.html#summary-of-options
180
+ # "device_type": "HETERO:GPU,CPU,NPU AUTO:GPU,CPU,NPU MULTI:GPU,CPU,NPU", # Will prefer dGPU, fallback to iGPU, NPU or CPU with extra Intel specific optimizations
181
+ "device_type": "AUTO:GPU,CPU", # Will prefer dGPU, fallback to iGPU, NPU or CPU with extra Intel specific optimizations
182
+ }
183
+ ),
184
+ "ROCMExecutionProvider",
185
+ "DmlExecutionProvider",
186
+ (
187
+ "CoreMLExecutionProvider",
188
+ {
189
+ "flags": "COREML_FLAG_CREATE_MLPROGRAM",
190
+ },
191
+ ),
192
+ "CUDAExecutionProvider",
193
+ "CPUExecutionProvider",
194
+ ]
195
+ else:
196
+ supported_providers = ["CPUExecutionProvider"]
197
+
198
+ result = []
199
+ try:
200
+ import onnxruntime as ort
201
+ available = ort.get_available_providers()
202
+ for provider in supported_providers:
203
+ if isinstance(provider, tuple):
204
+ if provider[0] in available:
205
+ result.append(provider) # Append the entire tuple
206
+ else:
207
+ if provider in available:
208
+ result.append(provider)
209
+ return result
210
+ except Exception as e:
211
+ logging.error("Critical error! The required ONNX Runtime (AI library) package is misconfigured.\n" \
212
+ "Please read the README.md to confirm that you've selected the correct build for your hardware.\n" \
213
+ "If you are using one of our prebuilt executables, please file a bug with the following information:\n"
214
+ "{}".format(e))
215
+ sys.exit(1)