specula 0.0.0__tar.gz → 1.0.0__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 (438) hide show
  1. specula-1.0.0/.github/workflows/publish.yml +34 -0
  2. specula-1.0.0/.github/workflows/pythonpackage.yml +58 -0
  3. specula-1.0.0/.github/workflows/pythonpackageW.yml +53 -0
  4. specula-1.0.0/.github/workflows/pythonpackage_full.yml +69 -0
  5. specula-1.0.0/.github/workflows/pythonpackage_fullW.yml +54 -0
  6. specula-1.0.0/.gitignore +150 -0
  7. specula-1.0.0/.readthedocs.yaml +23 -0
  8. {specula-0.0.0/specula.egg-info → specula-1.0.0}/PKG-INFO +7 -2
  9. specula-1.0.0/config/ANDES/params_andes.yml +284 -0
  10. specula-1.0.0/config/ANDES/params_andes_1kHz.yml +266 -0
  11. specula-1.0.0/config/ERIS/calib_eris_ngs_rec.yml +59 -0
  12. specula-1.0.0/config/ERIS/calib_eris_ngs_subaps.yml +26 -0
  13. specula-1.0.0/config/ERIS/calib_eris_rec_lgs.yml +64 -0
  14. specula-1.0.0/config/ERIS/calib_eris_rec_lo.yml +95 -0
  15. specula-1.0.0/config/ERIS/calib_eris_subaps.yml +45 -0
  16. specula-1.0.0/config/ERIS/eris_lgsonly.yml +15 -0
  17. specula-1.0.0/config/ERIS/params_eris.yml +267 -0
  18. specula-1.0.0/config/ERIS/params_eris_ngs.yml +164 -0
  19. specula-1.0.0/config/ERIS/params_eris_ngs_ut4pupil.yml +174 -0
  20. specula-1.0.0/config/MORFEO/calib_morfeo_im.yml +249 -0
  21. specula-1.0.0/config/MORFEO/calib_morfeo_scao_rec.yml +53 -0
  22. specula-1.0.0/config/MORFEO/calib_morfeo_small_rec.yml +74 -0
  23. specula-1.0.0/config/MORFEO/calib_morfeo_small_rec_override.yml +74 -0
  24. specula-1.0.0/config/MORFEO/calib_morfeo_subaps.yml +105 -0
  25. specula-1.0.0/config/MORFEO/override_morfeo_focus_ref_2gpus.yml +36 -0
  26. specula-1.0.0/config/MORFEO/override_morfeo_no_focus_no_ref_2gpus.yml +24 -0
  27. specula-1.0.0/config/MORFEO/params_morfeo_focus_ref.yml +591 -0
  28. specula-1.0.0/config/MORFEO/params_morfeo_full.yml +672 -0
  29. specula-1.0.0/config/MORFEO/params_morfeo_ltao.yml +440 -0
  30. specula-1.0.0/config/MORFEO/params_morfeo_ltao_plots.yml +425 -0
  31. specula-1.0.0/config/MORFEO/params_morfeo_no_focus_no_ref.yml +525 -0
  32. specula-1.0.0/config/MORFEO/params_morfeo_no_na_no_focus_no_ref.yml +512 -0
  33. specula-1.0.0/config/MORFEO/params_morfeo_scao_plots.yml +215 -0
  34. specula-1.0.0/config/MORFEO/params_morfeo_small.yml +441 -0
  35. specula-1.0.0/config/SOUL/ov_add_display.yml +41 -0
  36. specula-1.0.0/config/SOUL/params_pyr_soul.yml +160 -0
  37. specula-1.0.0/config/SOUL/params_pyr_soul_basic.yml +138 -0
  38. specula-1.0.0/config/leonardo/jobScripts/jobScriptANDES +20 -0
  39. specula-1.0.0/config/leonardo/jobScripts/jobScriptERIS +19 -0
  40. specula-1.0.0/config/leonardo/jobScripts/jobScriptMorfeoMpi +22 -0
  41. specula-1.0.0/config/leonardo/jobScripts/jobScriptMorfeoMpiDistributed4 +22 -0
  42. specula-1.0.0/config/leonardo/jobScripts/jobScriptMorfeoMpiSpread +22 -0
  43. specula-1.0.0/config/leonardo/jobScripts/jobScriptSOULCPU +19 -0
  44. specula-1.0.0/config/leonardo/jobScripts/jobScriptSOULGPU +19 -0
  45. specula-1.0.0/config/leonardo/jobScripts/jobScriptScao +20 -0
  46. specula-1.0.0/config/leonardo/overrides/ov_ANDES_leonardo.yml +4 -0
  47. specula-1.0.0/config/leonardo/overrides/ov_ERIS_leonardo.yml +14 -0
  48. specula-1.0.0/config/leonardo/overrides/ov_MORFEO_leonardo.yml +70 -0
  49. specula-1.0.0/config/leonardo/overrides/ov_MORFEO_leonardo_ds4.yml +64 -0
  50. specula-1.0.0/config/leonardo/overrides/ov_MORFEO_leonardo_spread.yml +88 -0
  51. specula-1.0.0/config/leonardo/overrides/ov_SOUL_CPU_leonardo.yml +3 -0
  52. specula-1.0.0/config/leonardo/overrides/ov_SOUL_GPU_leonardo.yml +3 -0
  53. specula-1.0.0/config/leonardo/overrides/ov_scao_leonardo.yml +62 -0
  54. specula-1.0.0/config/other/extract_filenames.py +86 -0
  55. specula-1.0.0/config/other/gandalf.yml +39 -0
  56. specula-1.0.0/config/other/gandalf_mpi.yml +47 -0
  57. specula-1.0.0/config/other/params_atmo_petals_ol.yml +113 -0
  58. specula-1.0.0/config/other/params_atmo_random_phase.yml +116 -0
  59. specula-1.0.0/config/other/params_atmo_test.yml +99 -0
  60. specula-1.0.0/config/other/params_control_lpf.yml +60 -0
  61. specula-1.0.0/config/other/params_test_comb.yml +65 -0
  62. specula-1.0.0/config/scao/calib/SCAO/im/scao_recmat.fits +0 -0
  63. specula-1.0.0/config/scao/calib/SCAO/pupils/scao_pup.fits +0 -0
  64. specula-1.0.0/config/scao/calib/SCAO/rec/scao_recmat.fits +0 -0
  65. specula-1.0.0/config/scao/calib/SCAO/slopenulls/scao_sn.fits +0 -0
  66. specula-1.0.0/config/scao/calib_atmo_random_phase_pupdata.yml +25 -0
  67. specula-1.0.0/config/scao/calib_ltao_sh_rec.yml +82 -0
  68. specula-1.0.0/config/scao/calib_pyr_pupdata.yml +25 -0
  69. specula-1.0.0/config/scao/calib_pyr_rec.yml +57 -0
  70. specula-1.0.0/config/scao/calib_scao_pupdata.yml +25 -0
  71. specula-1.0.0/config/scao/calib_scao_rec.yml +64 -0
  72. specula-1.0.0/config/scao/calib_sh_rec.yml +64 -0
  73. specula-1.0.0/config/scao/calib_sh_subaps.yml +22 -0
  74. specula-1.0.0/config/scao/params_scao.yml +150 -0
  75. specula-1.0.0/config/scao/params_scao_elt.yml +148 -0
  76. specula-1.0.0/config/scao/params_scao_elt_plots.yml +182 -0
  77. specula-1.0.0/config/scao/params_scao_plots.yml +195 -0
  78. specula-1.0.0/config/scao/params_scao_pyr.yml +156 -0
  79. specula-1.0.0/config/scao/params_scao_pyr_extended.yml +169 -0
  80. specula-1.0.0/config/scao/params_scao_sh.yml +156 -0
  81. specula-1.0.0/config/scao/params_scao_sh_plots.yml +196 -0
  82. specula-1.0.0/config/scao/runAll.sh +8 -0
  83. specula-1.0.0/config/scao/sncalib.yml +17 -0
  84. specula-1.0.0/docs/Makefile +20 -0
  85. specula-1.0.0/docs/_static/diagrams/params_control_lpf.png +0 -0
  86. specula-1.0.0/docs/_static/diagrams/params_scao_sh.png +0 -0
  87. specula-1.0.0/docs/_static/diagrams/params_scao_sh_colors.png +0 -0
  88. specula-1.0.0/docs/_static/tutorial/DM_shapes.png +0 -0
  89. specula-1.0.0/docs/_static/tutorial/SR.png +0 -0
  90. specula-1.0.0/docs/_static/tutorial/modal_plot.png +0 -0
  91. specula-1.0.0/docs/_static/tutorial/singular_values.png +0 -0
  92. specula-1.0.0/docs/api/base_classes.rst +77 -0
  93. specula-1.0.0/docs/api/data_objects.rst +203 -0
  94. specula-1.0.0/docs/api/lib.rst +221 -0
  95. specula-1.0.0/docs/api/processing_objects.rst +500 -0
  96. specula-1.0.0/docs/base_classes.rst +115 -0
  97. specula-1.0.0/docs/calibration_manager.rst +265 -0
  98. specula-1.0.0/docs/conf.py +98 -0
  99. specula-1.0.0/docs/data_objects.rst +138 -0
  100. specula-1.0.0/docs/development.rst +35 -0
  101. specula-1.0.0/docs/index.rst +67 -0
  102. specula-1.0.0/docs/installation.rst +155 -0
  103. specula-1.0.0/docs/make.bat +35 -0
  104. specula-1.0.0/docs/processing_objects.rst +253 -0
  105. specula-1.0.0/docs/readme.txt +8 -0
  106. specula-1.0.0/docs/requirements.txt +8 -0
  107. specula-1.0.0/docs/running_simulations.rst +259 -0
  108. specula-1.0.0/docs/scripts/generate_api_docs.py +135 -0
  109. specula-1.0.0/docs/simul_diagrams.rst +54 -0
  110. specula-1.0.0/docs/simulation_basics.rst +171 -0
  111. specula-1.0.0/docs/tutorials/field_analyser_tutorial.rst +169 -0
  112. specula-1.0.0/docs/tutorials/pwfs_calib_pc_tutorial.rst +401 -0
  113. specula-1.0.0/docs/tutorials/scao_basic_tutorial.rst +472 -0
  114. specula-1.0.0/docs/tutorials/scao_tutorial.rst +1133 -0
  115. specula-1.0.0/docs/tutorials/step_response_tutorial.rst +141 -0
  116. {specula-0.0.0 → specula-1.0.0}/pyproject.toml +4 -6
  117. specula-1.0.0/specula/_version.py +34 -0
  118. specula-1.0.0/specula/data/EltM1SegmMap1015pix38570mm.fits +0 -0
  119. specula-1.0.0/specula/display/base_display.py +99 -0
  120. specula-1.0.0/specula/display/data_plotter.py +177 -0
  121. specula-1.0.0/specula/display/double_phase_display.py +142 -0
  122. specula-1.0.0/specula/display/modes_display.py +89 -0
  123. specula-1.0.0/specula/display/phase_display.py +48 -0
  124. specula-1.0.0/specula/display/pixels_display.py +197 -0
  125. specula-1.0.0/specula/display/plot_display.py +135 -0
  126. specula-1.0.0/specula/display/plot_vector_display.py +270 -0
  127. specula-1.0.0/specula/display/psf_display.py +72 -0
  128. specula-1.0.0/specula/display/pupil_display.py +134 -0
  129. specula-1.0.0/specula/display/slopec_display.py +47 -0
  130. specula-1.0.0/specula/lib/ELT_M1_ifunc_calculator.py +114 -0
  131. specula-1.0.0/specula/lib/__init__.py +0 -0
  132. specula-1.0.0/specula/lib/calc_noise_cov_elong.py +322 -0
  133. specula-1.0.0/specula/lib/calc_phasescreen.py +105 -0
  134. specula-1.0.0/specula/lib/calc_psf.py +185 -0
  135. specula-1.0.0/specula/lib/calc_spatialfrequency.py +36 -0
  136. specula-1.0.0/specula/lib/compute_petal_ifunc.py +146 -0
  137. specula-1.0.0/specula/lib/compute_zern_ifunc.py +30 -0
  138. specula-1.0.0/specula/lib/compute_zonal_ifunc.py +191 -0
  139. specula-1.0.0/specula/lib/extrapolation_2d.py +172 -0
  140. specula-1.0.0/specula/lib/flatten.py +37 -0
  141. specula-1.0.0/specula/lib/fsoc_lib.py +71 -0
  142. specula-1.0.0/specula/lib/interp2d.py +170 -0
  143. specula-1.0.0/specula/lib/make_mask.py +147 -0
  144. specula-1.0.0/specula/lib/make_xy.py +186 -0
  145. specula-1.0.0/specula/lib/mask.py +383 -0
  146. specula-1.0.0/specula/lib/mmse_reconstructor.py +132 -0
  147. specula-1.0.0/specula/lib/modal_base_generator.py +370 -0
  148. specula-1.0.0/specula/lib/modal_pushpull_signal.py +114 -0
  149. specula-1.0.0/specula/lib/n_phot.py +304 -0
  150. specula-1.0.0/specula/lib/phasescreen_manager.py +54 -0
  151. specula-1.0.0/specula/lib/platescale_coeff.py +125 -0
  152. specula-1.0.0/specula/lib/process_utils.py +50 -0
  153. specula-1.0.0/specula/lib/rebin.py +58 -0
  154. specula-1.0.0/specula/lib/toccd.py +190 -0
  155. specula-1.0.0/specula/lib/utils.py +245 -0
  156. specula-1.0.0/specula/lib/zernike_generator.py +457 -0
  157. specula-1.0.0/specula/processing_objects/__init__.py +0 -0
  158. specula-1.0.0/specula/scripts/parse_classes.py +159 -0
  159. specula-1.0.0/specula/scripts/specula_main.py +31 -0
  160. specula-1.0.0/specula/scripts/templates/specula_display.html +168 -0
  161. specula-1.0.0/specula/scripts/templates/specula_frontend.html +128 -0
  162. specula-1.0.0/specula/scripts/web_frontend.py +47 -0
  163. {specula-0.0.0 → specula-1.0.0/specula.egg-info}/PKG-INFO +7 -2
  164. specula-1.0.0/specula.egg-info/SOURCES.txt +435 -0
  165. {specula-0.0.0 → specula-1.0.0}/specula.egg-info/requires.txt +8 -1
  166. specula-1.0.0/test/README.py +21 -0
  167. specula-1.0.0/test/__init__.py +0 -0
  168. specula-1.0.0/test/bench_fft.py +40 -0
  169. specula-1.0.0/test/bench_fft_numpy.py +47 -0
  170. specula-1.0.0/test/calib/pupilstop/EELT480pp0.0803m_obs0.283_spider2023.fits +0 -0
  171. specula-1.0.0/test/calib/subapdata/maory_np_ps480p0.080_shs68x68_wl589_fv16.1_np14_th0.50_rot6.2.fits +0 -0
  172. specula-1.0.0/test/calib/subapdata/maory_np_ps480p0.080_shs68x68_wl589_fv16.1_np14_th0.50_rot6.2_reduced_17x17.fits +0 -0
  173. specula-1.0.0/test/data/PASSATA_pupilstop_64pix.fits +0 -0
  174. specula-1.0.0/test/data/atmo_s0.8asec_L010m_D8m_100modes_rms.fits +0 -0
  175. specula-1.0.0/test/data/cov_sh_ref.fits +0 -0
  176. specula-1.0.0/test/data/diff_ref.fits +0 -0
  177. specula-1.0.0/test/data/input_phase.fits +0 -0
  178. specula-1.0.0/test/data/lgs_map_sh_ref.fits +0 -0
  179. specula-1.0.0/test/data/mask.fits +0 -0
  180. specula-1.0.0/test/data/phase.fits +0 -0
  181. specula-1.0.0/test/data/ref_phase.fits +0 -0
  182. specula-1.0.0/test/data/ref_test_morfeo_crop_intensity.fits +0 -0
  183. specula-1.0.0/test/data/ref_test_morfeo_crop_slopes.fits +0 -0
  184. specula-1.0.0/test/data/ref_test_morfeo_intensity.fits +0 -0
  185. specula-1.0.0/test/data/ref_test_morfeo_phase.fits +0 -0
  186. specula-1.0.0/test/data/ref_test_morfeo_slopes.fits +0 -0
  187. specula-1.0.0/test/data/res_sr_ref.fits +0 -0
  188. specula-1.0.0/test/data/scao_dr_im_20modes_ref.fits +0 -0
  189. specula-1.0.0/test/data/scao_dr_pupdata_ref.fits +0 -0
  190. specula-1.0.0/test/data/scao_dr_rec_20modes_ref.fits +0 -0
  191. specula-1.0.0/test/data/scao_im_n8_th0.5_ref.fits +0 -0
  192. specula-1.0.0/test/data/scao_pupdata_ref.fits +0 -0
  193. specula-1.0.0/test/data/scao_rec_n8_th0.5_ref.fits +0 -0
  194. specula-1.0.0/test/data/scao_sn_n8_th0.5_ref.fits +0 -0
  195. specula-1.0.0/test/data/scao_subaps_n8_th0.5_ref.fits +0 -0
  196. specula-1.0.0/test/data/timehistory_test.fits +0 -0
  197. specula-1.0.0/test/params_atmo_test.yml +116 -0
  198. specula-1.0.0/test/params_demodulator_test.yml +46 -0
  199. specula-1.0.0/test/params_elt_pfs_test.yml +228 -0
  200. specula-1.0.0/test/params_field_analyser_test.yml +164 -0
  201. specula-1.0.0/test/params_gain_optimizer.yml +79 -0
  202. specula-1.0.0/test/params_low_pass_filter_test.yml +57 -0
  203. specula-1.0.0/test/params_optical_gain_estimator_test.yml +58 -0
  204. specula-1.0.0/test/params_platescale_test.yml +33 -0
  205. specula-1.0.0/test/params_pyr_ol_test.yml +129 -0
  206. specula-1.0.0/test/params_scao_dr_test.yml +140 -0
  207. specula-1.0.0/test/params_scao_dr_test_pupdata.yml +20 -0
  208. specula-1.0.0/test/params_scao_dr_test_rec.yml +41 -0
  209. specula-1.0.0/test/params_scao_pyr_test.yml +141 -0
  210. specula-1.0.0/test/params_scao_pyr_test_pupdata.yml +20 -0
  211. specula-1.0.0/test/params_scao_sh_test.yml +151 -0
  212. specula-1.0.0/test/params_scao_sh_test_rec.yml +46 -0
  213. specula-1.0.0/test/params_scao_sh_test_sn.yml +26 -0
  214. specula-1.0.0/test/params_scao_sh_test_subap.yml +20 -0
  215. specula-1.0.0/test/params_timehistory_test.yml +24 -0
  216. specula-1.0.0/test/params_trigger_zero.yml +32 -0
  217. specula-1.0.0/test/specula_testlib.py +59 -0
  218. specula-0.0.0/specula.egg-info/SOURCES.txt +0 -223
  219. {specula-0.0.0 → specula-1.0.0}/LICENSE +0 -0
  220. {specula-0.0.0 → specula-1.0.0}/README.md +0 -0
  221. {specula-0.0.0 → specula-1.0.0}/requirements.txt +0 -0
  222. {specula-0.0.0 → specula-1.0.0}/setup.cfg +0 -0
  223. {specula-0.0.0 → specula-1.0.0}/specula/__init__.py +0 -0
  224. {specula-0.0.0 → specula-1.0.0}/specula/base_data_obj.py +0 -0
  225. {specula-0.0.0 → specula-1.0.0}/specula/base_processing_obj.py +0 -0
  226. {specula-0.0.0 → specula-1.0.0}/specula/base_time_obj.py +0 -0
  227. {specula-0.0.0 → specula-1.0.0}/specula/base_value.py +0 -0
  228. {specula-0.0.0 → specula-1.0.0}/specula/calib_manager.py +0 -0
  229. {specula-0.0.0 → specula-1.0.0}/specula/connections.py +0 -0
  230. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/__init__.py +0 -0
  231. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/convolution_kernel.py +0 -0
  232. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/electric_field.py +0 -0
  233. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/gaussian_convolution_kernel.py +0 -0
  234. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/ifunc.py +0 -0
  235. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/ifunc_inv.py +0 -0
  236. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/iir_filter_data.py +0 -0
  237. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/infinite_phase_screen.py +0 -0
  238. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/intensity.py +0 -0
  239. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/intmat.py +0 -0
  240. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/laser_launch_telescope.py +0 -0
  241. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/layer.py +0 -0
  242. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/lenslet.py +0 -0
  243. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/m2c.py +0 -0
  244. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/pixels.py +0 -0
  245. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/pupdata.py +0 -0
  246. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/pupilstop.py +0 -0
  247. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/recmat.py +0 -0
  248. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/simul_params.py +0 -0
  249. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/slopes.py +0 -0
  250. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/source.py +0 -0
  251. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/subap_data.py +0 -0
  252. {specula-0.0.0 → specula-1.0.0}/specula/data_objects/time_history.py +0 -0
  253. {specula-0.0.0/specula/processing_objects → specula-1.0.0/specula/display}/__init__.py +0 -0
  254. {specula-0.0.0 → specula-1.0.0}/specula/field_analyser.py +0 -0
  255. {specula-0.0.0 → specula-1.0.0}/specula/loop_control.py +0 -0
  256. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_evolution.py +0 -0
  257. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_infinite_evolution.py +0 -0
  258. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_propagation.py +0 -0
  259. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_random_phase.py +0 -0
  260. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/avc.py +0 -0
  261. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/base_generator.py +0 -0
  262. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/base_operation.py +0 -0
  263. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/base_slicer.py +0 -0
  264. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/ccd.py +0 -0
  265. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_buffer.py +0 -0
  266. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_print.py +0 -0
  267. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_source.py +0 -0
  268. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_store.py +0 -0
  269. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/demodulator.py +0 -0
  270. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/display_server.py +0 -0
  271. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/distributed_sh.py +0 -0
  272. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/dm.py +0 -0
  273. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/double_roof_slopec.py +0 -0
  274. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/electric_field_combinator.py +0 -0
  275. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/electric_field_reflection.py +0 -0
  276. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/ext_source_pyramid.py +0 -0
  277. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/extended_source.py +0 -0
  278. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/focal_plane_filter.py +0 -0
  279. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/gain_optimizer.py +0 -0
  280. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/ideal_derivative_sensor.py +0 -0
  281. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/iir_filter.py +0 -0
  282. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/im_calibrator.py +0 -0
  283. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/integrator.py +0 -0
  284. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/linear_combination.py +0 -0
  285. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/low_pass_filter.py +0 -0
  286. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/mirror_commands_combinator.py +0 -0
  287. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modal_analysis.py +0 -0
  288. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modalrec.py +0 -0
  289. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modalrec_implicit_polc.py +0 -0
  290. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modulated_double_roof.py +0 -0
  291. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modulated_pyramid.py +0 -0
  292. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/multi_im_calibrator.py +0 -0
  293. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/multi_rec_calibrator.py +0 -0
  294. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/mvm.py +0 -0
  295. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/optical_gain_estimator.py +0 -0
  296. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/phase_flattening.py +0 -0
  297. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/poly_chrom_sh.py +0 -0
  298. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/poly_chrom_wfs.py +0 -0
  299. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/poly_crom_pyramid.py +0 -0
  300. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/power_loss.py +0 -0
  301. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/psf.py +0 -0
  302. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/psf_coronagraph.py +0 -0
  303. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/push_pull_generator.py +0 -0
  304. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/pyr_pupdata_calibrator.py +0 -0
  305. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/pyr_slopec.py +0 -0
  306. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/random_generator.py +0 -0
  307. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/rec_calibrator.py +0 -0
  308. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/schedule_generator.py +0 -0
  309. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sh.py +0 -0
  310. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sh_slopec.py +0 -0
  311. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sh_subap_calibrator.py +0 -0
  312. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/slopec.py +0 -0
  313. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sn_calibrator.py +0 -0
  314. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/spot_monitor.py +0 -0
  315. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/time_history_generator.py +0 -0
  316. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/vibration_generator.py +0 -0
  317. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/wave_generator.py +0 -0
  318. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/windowed_integration.py +0 -0
  319. {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/zernike_sensor.py +0 -0
  320. {specula-0.0.0 → specula-1.0.0}/specula/simul.py +0 -0
  321. {specula-0.0.0 → specula-1.0.0}/specula/template_processing_obj.py +0 -0
  322. {specula-0.0.0 → specula-1.0.0}/specula.egg-info/dependency_links.txt +0 -0
  323. {specula-0.0.0 → specula-1.0.0}/specula.egg-info/entry_points.txt +0 -0
  324. {specula-0.0.0 → specula-1.0.0}/specula.egg-info/top_level.txt +0 -0
  325. {specula-0.0.0 → specula-1.0.0}/test/test_atmo_evolution.py +0 -0
  326. {specula-0.0.0 → specula-1.0.0}/test/test_atmo_infinite_evolution.py +0 -0
  327. {specula-0.0.0 → specula-1.0.0}/test/test_atmo_propagation.py +0 -0
  328. {specula-0.0.0 → specula-1.0.0}/test/test_atmo_random_phase.py +0 -0
  329. {specula-0.0.0 → specula-1.0.0}/test/test_atmo_simulation.py +0 -0
  330. {specula-0.0.0 → specula-1.0.0}/test/test_base_data_obj.py +0 -0
  331. {specula-0.0.0 → specula-1.0.0}/test/test_base_operation.py +0 -0
  332. {specula-0.0.0 → specula-1.0.0}/test/test_base_processing_obj.py +0 -0
  333. {specula-0.0.0 → specula-1.0.0}/test/test_base_slicer.py +0 -0
  334. {specula-0.0.0 → specula-1.0.0}/test/test_base_time_obj.py +0 -0
  335. {specula-0.0.0 → specula-1.0.0}/test/test_base_value.py +0 -0
  336. {specula-0.0.0 → specula-1.0.0}/test/test_calc_psf.py +0 -0
  337. {specula-0.0.0 → specula-1.0.0}/test/test_calib_manager.py +0 -0
  338. {specula-0.0.0 → specula-1.0.0}/test/test_ccd.py +0 -0
  339. {specula-0.0.0 → specula-1.0.0}/test/test_compute_ifs_covmat.py +0 -0
  340. {specula-0.0.0 → specula-1.0.0}/test/test_compute_zonal_ifunc.py +0 -0
  341. {specula-0.0.0 → specula-1.0.0}/test/test_connections.py +0 -0
  342. {specula-0.0.0 → specula-1.0.0}/test/test_convolution_kernel.py +0 -0
  343. {specula-0.0.0 → specula-1.0.0}/test/test_cov_elong.py +0 -0
  344. {specula-0.0.0 → specula-1.0.0}/test/test_data_buffer.py +0 -0
  345. {specula-0.0.0 → specula-1.0.0}/test/test_data_objects.py +0 -0
  346. {specula-0.0.0 → specula-1.0.0}/test/test_data_print.py +0 -0
  347. {specula-0.0.0 → specula-1.0.0}/test/test_data_source.py +0 -0
  348. {specula-0.0.0 → specula-1.0.0}/test/test_data_store.py +0 -0
  349. {specula-0.0.0 → specula-1.0.0}/test/test_demodulator.py +0 -0
  350. {specula-0.0.0 → specula-1.0.0}/test/test_diagram.py +0 -0
  351. {specula-0.0.0 → specula-1.0.0}/test/test_display.py +0 -0
  352. {specula-0.0.0 → specula-1.0.0}/test/test_display_server.py +0 -0
  353. {specula-0.0.0 → specula-1.0.0}/test/test_distributed_sh.py +0 -0
  354. {specula-0.0.0 → specula-1.0.0}/test/test_dm.py +0 -0
  355. {specula-0.0.0 → specula-1.0.0}/test/test_double_roof.py +0 -0
  356. {specula-0.0.0 → specula-1.0.0}/test/test_double_roof_calibration.py +0 -0
  357. {specula-0.0.0 → specula-1.0.0}/test/test_double_roof_slopec.py +0 -0
  358. {specula-0.0.0 → specula-1.0.0}/test/test_electric_field.py +0 -0
  359. {specula-0.0.0 → specula-1.0.0}/test/test_elt_m1_ifunc.py +0 -0
  360. {specula-0.0.0 → specula-1.0.0}/test/test_ext_source_pyr.py +0 -0
  361. {specula-0.0.0 → specula-1.0.0}/test/test_extended_source.py +0 -0
  362. {specula-0.0.0 → specula-1.0.0}/test/test_extrapolation_2d.py +0 -0
  363. {specula-0.0.0 → specula-1.0.0}/test/test_field_analyser.py +0 -0
  364. {specula-0.0.0 → specula-1.0.0}/test/test_focal_plane_filter.py +0 -0
  365. {specula-0.0.0 → specula-1.0.0}/test/test_fsoc_lib.py +0 -0
  366. {specula-0.0.0 → specula-1.0.0}/test/test_gain_optimizer.py +0 -0
  367. {specula-0.0.0 → specula-1.0.0}/test/test_generators.py +0 -0
  368. {specula-0.0.0 → specula-1.0.0}/test/test_ideal_derivative_sensor.py +0 -0
  369. {specula-0.0.0 → specula-1.0.0}/test/test_ifunc.py +0 -0
  370. {specula-0.0.0 → specula-1.0.0}/test/test_ifunc_inv.py +0 -0
  371. {specula-0.0.0 → specula-1.0.0}/test/test_iircontrol.py +0 -0
  372. {specula-0.0.0 → specula-1.0.0}/test/test_iirfilter.py +0 -0
  373. {specula-0.0.0 → specula-1.0.0}/test/test_im_rec_calibrator.py +0 -0
  374. {specula-0.0.0 → specula-1.0.0}/test/test_import_class.py +0 -0
  375. {specula-0.0.0 → specula-1.0.0}/test/test_infinite_phase_screen.py +0 -0
  376. {specula-0.0.0 → specula-1.0.0}/test/test_init.py +0 -0
  377. {specula-0.0.0 → specula-1.0.0}/test/test_intensity.py +0 -0
  378. {specula-0.0.0 → specula-1.0.0}/test/test_interp2d.py +0 -0
  379. {specula-0.0.0 → specula-1.0.0}/test/test_intmat.py +0 -0
  380. {specula-0.0.0 → specula-1.0.0}/test/test_laser_launch_telescope.py +0 -0
  381. {specula-0.0.0 → specula-1.0.0}/test/test_layer.py +0 -0
  382. {specula-0.0.0 → specula-1.0.0}/test/test_lenslet.py +0 -0
  383. {specula-0.0.0 → specula-1.0.0}/test/test_linear_combination.py +0 -0
  384. {specula-0.0.0 → specula-1.0.0}/test/test_local_mean_rebin.py +0 -0
  385. {specula-0.0.0 → specula-1.0.0}/test/test_loop_control.py +0 -0
  386. {specula-0.0.0 → specula-1.0.0}/test/test_low_pass_filter_simulation.py +0 -0
  387. {specula-0.0.0 → specula-1.0.0}/test/test_m2c.py +0 -0
  388. {specula-0.0.0 → specula-1.0.0}/test/test_make_mask.py +0 -0
  389. {specula-0.0.0 → specula-1.0.0}/test/test_make_xy.py +0 -0
  390. {specula-0.0.0 → specula-1.0.0}/test/test_mask.py +0 -0
  391. {specula-0.0.0 → specula-1.0.0}/test/test_mmse_reconstructor.py +0 -0
  392. {specula-0.0.0 → specula-1.0.0}/test/test_modal_analysis_simulation.py +0 -0
  393. {specula-0.0.0 → specula-1.0.0}/test/test_modal_basis.py +0 -0
  394. {specula-0.0.0 → specula-1.0.0}/test/test_modal_pushpull_signal.py +0 -0
  395. {specula-0.0.0 → specula-1.0.0}/test/test_modalrec.py +0 -0
  396. {specula-0.0.0 → specula-1.0.0}/test/test_multi_im_calibrator.py +0 -0
  397. {specula-0.0.0 → specula-1.0.0}/test/test_multi_rec_calibrator.py +0 -0
  398. {specula-0.0.0 → specula-1.0.0}/test/test_mvm.py +0 -0
  399. {specula-0.0.0 → specula-1.0.0}/test/test_optical_gain_estimator.py +0 -0
  400. {specula-0.0.0 → specula-1.0.0}/test/test_phase_flattening.py +0 -0
  401. {specula-0.0.0 → specula-1.0.0}/test/test_physical_propagation.py +0 -0
  402. {specula-0.0.0 → specula-1.0.0}/test/test_pixels.py +0 -0
  403. {specula-0.0.0 → specula-1.0.0}/test/test_platescale.py +0 -0
  404. {specula-0.0.0 → specula-1.0.0}/test/test_poly_chrom_pyramid.py +0 -0
  405. {specula-0.0.0 → specula-1.0.0}/test/test_poly_chrom_sh.py +0 -0
  406. {specula-0.0.0 → specula-1.0.0}/test/test_power_loss.py +0 -0
  407. {specula-0.0.0 → specula-1.0.0}/test/test_process_utils.py +0 -0
  408. {specula-0.0.0 → specula-1.0.0}/test/test_psf.py +0 -0
  409. {specula-0.0.0 → specula-1.0.0}/test/test_pupdata.py +0 -0
  410. {specula-0.0.0 → specula-1.0.0}/test/test_pupilstop.py +0 -0
  411. {specula-0.0.0 → specula-1.0.0}/test/test_pyr.py +0 -0
  412. {specula-0.0.0 → specula-1.0.0}/test/test_pyr_calibration.py +0 -0
  413. {specula-0.0.0 → specula-1.0.0}/test/test_pyr_simulation.py +0 -0
  414. {specula-0.0.0 → specula-1.0.0}/test/test_pyr_slopec.py +0 -0
  415. {specula-0.0.0 → specula-1.0.0}/test/test_rec_calibrator.py +0 -0
  416. {specula-0.0.0 → specula-1.0.0}/test/test_recmat.py +0 -0
  417. {specula-0.0.0 → specula-1.0.0}/test/test_sh.py +0 -0
  418. {specula-0.0.0 → specula-1.0.0}/test/test_sh_calibration.py +0 -0
  419. {specula-0.0.0 → specula-1.0.0}/test/test_sh_simulation.py +0 -0
  420. {specula-0.0.0 → specula-1.0.0}/test/test_sh_slopec.py +0 -0
  421. {specula-0.0.0 → specula-1.0.0}/test/test_sh_slopec_morfeo.py +0 -0
  422. {specula-0.0.0 → specula-1.0.0}/test/test_sh_subap_calibrator.py +0 -0
  423. {specula-0.0.0 → specula-1.0.0}/test/test_simul.py +0 -0
  424. {specula-0.0.0 → specula-1.0.0}/test/test_simul_params.py +0 -0
  425. {specula-0.0.0 → specula-1.0.0}/test/test_slopes.py +0 -0
  426. {specula-0.0.0 → specula-1.0.0}/test/test_sn_calibrator.py +0 -0
  427. {specula-0.0.0 → specula-1.0.0}/test/test_source.py +0 -0
  428. {specula-0.0.0 → specula-1.0.0}/test/test_spot_monitor.py +0 -0
  429. {specula-0.0.0 → specula-1.0.0}/test/test_subapdata.py +0 -0
  430. {specula-0.0.0 → specula-1.0.0}/test/test_time_history.py +0 -0
  431. {specula-0.0.0 → specula-1.0.0}/test/test_timehistory_integration.py +0 -0
  432. {specula-0.0.0 → specula-1.0.0}/test/test_to_xp.py +0 -0
  433. {specula-0.0.0 → specula-1.0.0}/test/test_toccd.py +0 -0
  434. {specula-0.0.0 → specula-1.0.0}/test/test_trigger_zero.py +0 -0
  435. {specula-0.0.0 → specula-1.0.0}/test/test_utils.py +0 -0
  436. {specula-0.0.0 → specula-1.0.0}/test/test_windowed_integration.py +0 -0
  437. {specula-0.0.0 → specula-1.0.0}/test/test_zernike.py +0 -0
  438. {specula-0.0.0 → specula-1.0.0}/test/test_zernike_sensor.py +0 -0
@@ -0,0 +1,34 @@
1
+ name: Release
2
+ on:
3
+ pull_request:
4
+ push:
5
+ tags:
6
+ - "*"
7
+ jobs:
8
+ build-n-publish:
9
+ name: Build and publish Python 🐍 distributions 📦
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: read
13
+ if: >
14
+ (github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) ||
15
+ contains(toJson(github.event.pull_request.labels), 'Build wheels')
16
+ steps:
17
+ - uses: actions/checkout@v3
18
+ with:
19
+ fetch-depth: 0
20
+ - uses: actions/setup-python@v4
21
+ with:
22
+ python-version: "3.11"
23
+ - name: Install python-build and twine
24
+ run: python -m pip install build twine
25
+ - name: Build package
26
+ run: python -m build --sdist --wheel .
27
+ - name: List result
28
+ run: ls -l dist
29
+ - name: Publish distribution 📦 to PyPI
30
+ if: startsWith(github.ref, 'refs/tags')
31
+ env:
32
+ TWINE_USERNAME: __token__
33
+ TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
34
+ run: python -m twine upload dist/*
@@ -0,0 +1,58 @@
1
+ name: Release
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ tags:
7
+ - "*"
8
+
9
+ jobs:
10
+ build-n-publish:
11
+ name: Build and publish Python 🐍 distributions 📦
12
+ runs-on: ubuntu-latest
13
+
14
+ # Run only on:
15
+ # - tag pushes
16
+ # - PRs with label "Build wheels"
17
+ if: >
18
+ (github.event_name == 'push' && startsWith(github.ref, 'refs/tags')) ||
19
+ contains(toJson(github.event.pull_request.labels), 'Build wheels')
20
+
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ with:
24
+ fetch-depth: 0
25
+
26
+ - uses: actions/setup-python@v4
27
+ with:
28
+ python-version: "3.11"
29
+
30
+ - name: Install python-build and twine
31
+ run: python -m pip install build twine
32
+
33
+ - name: Build package
34
+ run: python -m build --sdist --wheel .
35
+
36
+ - name: List result
37
+ run: ls -l dist
38
+
39
+ # ----------------------------------------
40
+ # Publish to TestPyPI for pre-release tags (USA TOKEN GLOBALE TEMPORANEO)
41
+ # ----------------------------------------
42
+ - name: Publish pre-release 📦 to TestPyPI
43
+ if: startsWith(github.ref, 'refs/tags') && contains(github.ref, '-')
44
+ uses: pypa/gh-action-pypi-publish@release/v1
45
+ with:
46
+ repository-url: https://test.pypi.org/legacy/
47
+ user: __token__
48
+ password: ${{ secrets.TEST_PYPI_TOKEN }}
49
+
50
+ # ----------------------------------------
51
+ # Publish to PyPI for final releases (USA TOKEN GLOBALE TEMPORANEO)
52
+ # ----------------------------------------
53
+ - name: Publish distribution 📦 to PyPI
54
+ if: startsWith(github.ref, 'refs/tags') && !contains(github.ref, '-')
55
+ uses: pypa/gh-action-pypi-publish@release/v1
56
+ with:
57
+ user: __token__
58
+ password: ${{ secrets.PYPI_TOKEN }}
@@ -0,0 +1,53 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3
+
4
+ name: Python package
5
+
6
+ on:
7
+ push:
8
+ branches: [ main ]
9
+ pull_request:
10
+ branches: [ main ]
11
+ # schedule:
12
+ # - cron: "1 1 * * *"
13
+
14
+
15
+ jobs:
16
+ build:
17
+
18
+ runs-on: ${{ matrix.os }}
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ os: [windows-latest]
23
+ python-version: ["3.8", "3.9", "3.10"]
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - name: Set up Python ${{ matrix.python-version }}
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+ - name: Install dependencies
32
+ run: |
33
+ choco install -y gtk-runtime libjpeg-turbo
34
+ python -m pip install --upgrade pip
35
+ pip install -r requirements.txt
36
+ - name: Lint with flake8
37
+ run: |
38
+ pip install flake8
39
+ # stop the build if there are Python syntax errors or undefined names
40
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
41
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
42
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
43
+ - name: Test with pytest
44
+ run: |
45
+ pip install pytest
46
+ pip install pytest-cov
47
+ pytest --cov=./
48
+ - name: "Upload coverage to Codecov"
49
+ uses: codecov/codecov-action@v4
50
+ env:
51
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
52
+ with:
53
+ fail_ci_if_error: false
@@ -0,0 +1,69 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3
+
4
+ name: Python package
5
+
6
+ on:
7
+ push:
8
+ branches: [ main ]
9
+ pull_request:
10
+ branches: [ main ]
11
+ # schedule:
12
+ # - cron: "1 1 * * *"
13
+
14
+
15
+ jobs:
16
+ build:
17
+
18
+ runs-on: ${{ matrix.os }}
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ os: [ubuntu-latest, macos-latest]
23
+ python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ with:
28
+ fetch-depth: 0
29
+
30
+ - name: Set up Python ${{ matrix.python-version }}
31
+ uses: actions/setup-python@v5
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+
36
+ - name: Install dependencies
37
+ run: |
38
+ bash
39
+ if ${{runner.os == 'Linux'}}; then
40
+ sudo apt update
41
+ sudo apt install libcairo2-dev pkg-config python3-dev
42
+ fi
43
+ python -m pip install --upgrade pip
44
+ pip install -r requirements.txt
45
+ pip install orthogram control
46
+ pip install pytest pytest-cov flake8
47
+
48
+ - name: Lint with flake8
49
+ run: |
50
+ # stop the build if there are Python syntax errors or undefined names
51
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
52
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
53
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
54
+
55
+ - name: Test with pytest and generate coverage report
56
+ run: |
57
+ pytest --cov=./ --cov-report=xml
58
+
59
+ - name: Upload coverage to Codecov
60
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.12'
61
+ uses: codecov/codecov-action@v4
62
+ with:
63
+ token: ${{ secrets.CODECOV_TOKEN }}
64
+ file: ./coverage.xml
65
+ flags: unittests
66
+ override_branch: ${{ github.head_ref || github.ref_name }}
67
+ override_commit: ${{ github.sha }}
68
+ fail_ci_if_error: false
69
+ verbose: true
@@ -0,0 +1,54 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a variety of Python versions
2
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3
+
4
+ name: Python package
5
+
6
+ on:
7
+ push:
8
+ branches: [ main ]
9
+ pull_request:
10
+ branches: [ main ]
11
+ # schedule:
12
+ # - cron: "1 1 * * *"
13
+
14
+
15
+ jobs:
16
+ build:
17
+
18
+ runs-on: ${{ matrix.os }}
19
+ strategy:
20
+ fail-fast: false
21
+ matrix:
22
+ os: [windows-latest]
23
+ python-version: ["3.8", "3.9", "3.10"]
24
+
25
+ steps:
26
+ - uses: actions/checkout@v4
27
+ - name: Set up Python ${{ matrix.python-version }}
28
+ uses: actions/setup-python@v5
29
+ with:
30
+ python-version: ${{ matrix.python-version }}
31
+ - name: Install dependencies
32
+ run: |
33
+ choco install -y gtk-runtime libjpeg-turbo
34
+ python -m pip install --upgrade pip
35
+ pip install orthogram control
36
+ pip install -r requirements.txt
37
+ - name: Lint with flake8
38
+ run: |
39
+ pip install flake8
40
+ # stop the build if there are Python syntax errors or undefined names
41
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
42
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
43
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
44
+ - name: Test with pytest
45
+ run: |
46
+ pip install pytest
47
+ pip install pytest-cov
48
+ pytest --cov=./
49
+ - name: "Upload coverage to Codecov"
50
+ uses: codecov/codecov-action@v4
51
+ env:
52
+ CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
53
+ with:
54
+ fail_ci_if_error: false
@@ -0,0 +1,150 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib64/
18
+ parts/
19
+ sdist/
20
+ var/
21
+ wheels/
22
+ pip-wheel-metadata/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py,cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+
53
+ # Translations
54
+ *.mo
55
+ *.pot
56
+
57
+ # Django stuff:
58
+ *.log
59
+ local_settings.py
60
+ db.sqlite3
61
+ db.sqlite3-journal
62
+
63
+ # Flask stuff:
64
+ instance/
65
+ .webassets-cache
66
+
67
+ # Scrapy stuff:
68
+ .scrapy
69
+
70
+ # Sphinx documentation
71
+ docs/_build/
72
+
73
+ # PyBuilder
74
+ target/
75
+
76
+ # Jupyter Notebook
77
+ .ipynb_checkpoints
78
+
79
+ # IPython
80
+ profile_default/
81
+ ipython_config.py
82
+
83
+ # pyenv
84
+ .python-version
85
+
86
+ # pipenv
87
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
88
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
89
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
90
+ # install all needed dependencies.
91
+ #Pipfile.lock
92
+
93
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
94
+ __pypackages__/
95
+
96
+ # Celery stuff
97
+ celerybeat-schedule
98
+ celerybeat.pid
99
+
100
+ # SageMath parsed files
101
+ *.sage.py
102
+
103
+ # Environments
104
+ .env
105
+ .venv
106
+ env/
107
+ venv/
108
+ ENV/
109
+ env.bak/
110
+ venv.bak/
111
+
112
+ # Spyder project settings
113
+ .spyderproject
114
+ .spyproject
115
+
116
+ # Rope project settings
117
+ .ropeproject
118
+
119
+ # mkdocs documentation
120
+ /site
121
+
122
+ # mypy
123
+ .mypy_cache/
124
+ .dmypy.json
125
+ dmypy.json
126
+
127
+ # Pyre type checker
128
+ .pyre/
129
+ /.project
130
+ /.pydevproject
131
+ /.DS_Store
132
+ .settings/org.eclipse.core.resources.prefs
133
+ .vscode/settings.json
134
+ *.code-workspace
135
+
136
+ # Profiler output
137
+ *.nsys-rep
138
+ *.sqlite
139
+
140
+ # SPECULA calibs
141
+ main/scao/calib/*
142
+ main/scao/output/*
143
+
144
+ # EKARUS config data output
145
+ config/EKARUS/*
146
+
147
+ # Nsys profiler repots
148
+ *.nsys-rep
149
+
150
+ .DS_Store
@@ -0,0 +1,23 @@
1
+ # Read the Docs configuration file
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ # Required
5
+ version: 2
6
+
7
+ # Set the OS, Python version, and other tools you might need
8
+ build:
9
+ os: ubuntu-24.04
10
+ tools:
11
+ python: "3.13"
12
+
13
+ # Build documentation in the "docs/" directory with Sphinx
14
+ sphinx:
15
+ configuration: docs/conf.py
16
+
17
+ # Optionally, but recommended,
18
+ # declare the Python requirements required to build your documentation
19
+ # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
20
+ python:
21
+ install:
22
+ - requirements: docs/requirements.txt
23
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: specula
3
- Version: 0.0.0
3
+ Version: 1.0.0
4
4
  Summary: PYramid Simulator Software for Adaptive OpTics Arcetri
5
5
  Author: Alfio Puglisi, Guido Agapito, INAF Arcetri Adaptive Optics group
6
6
  Author-email: Fabio Rossi <fabio.rossi@inaf.it>
@@ -24,7 +24,12 @@ Requires-Dist: requests
24
24
  Requires-Dist: pytest
25
25
  Requires-Dist: scikit-image
26
26
  Provides-Extra: control
27
- Requires-Dist: iircontrol; extra == "control"
27
+ Requires-Dist: control; extra == "control"
28
+ Provides-Extra: diagrams
29
+ Requires-Dist: orthogram; extra == "diagrams"
30
+ Provides-Extra: all
31
+ Requires-Dist: control; extra == "all"
32
+ Requires-Dist: orthogram; extra == "all"
28
33
  Dynamic: license-file
29
34
 
30
35
  # SPECULA