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.
- specula-1.0.0/.github/workflows/publish.yml +34 -0
- specula-1.0.0/.github/workflows/pythonpackage.yml +58 -0
- specula-1.0.0/.github/workflows/pythonpackageW.yml +53 -0
- specula-1.0.0/.github/workflows/pythonpackage_full.yml +69 -0
- specula-1.0.0/.github/workflows/pythonpackage_fullW.yml +54 -0
- specula-1.0.0/.gitignore +150 -0
- specula-1.0.0/.readthedocs.yaml +23 -0
- {specula-0.0.0/specula.egg-info → specula-1.0.0}/PKG-INFO +7 -2
- specula-1.0.0/config/ANDES/params_andes.yml +284 -0
- specula-1.0.0/config/ANDES/params_andes_1kHz.yml +266 -0
- specula-1.0.0/config/ERIS/calib_eris_ngs_rec.yml +59 -0
- specula-1.0.0/config/ERIS/calib_eris_ngs_subaps.yml +26 -0
- specula-1.0.0/config/ERIS/calib_eris_rec_lgs.yml +64 -0
- specula-1.0.0/config/ERIS/calib_eris_rec_lo.yml +95 -0
- specula-1.0.0/config/ERIS/calib_eris_subaps.yml +45 -0
- specula-1.0.0/config/ERIS/eris_lgsonly.yml +15 -0
- specula-1.0.0/config/ERIS/params_eris.yml +267 -0
- specula-1.0.0/config/ERIS/params_eris_ngs.yml +164 -0
- specula-1.0.0/config/ERIS/params_eris_ngs_ut4pupil.yml +174 -0
- specula-1.0.0/config/MORFEO/calib_morfeo_im.yml +249 -0
- specula-1.0.0/config/MORFEO/calib_morfeo_scao_rec.yml +53 -0
- specula-1.0.0/config/MORFEO/calib_morfeo_small_rec.yml +74 -0
- specula-1.0.0/config/MORFEO/calib_morfeo_small_rec_override.yml +74 -0
- specula-1.0.0/config/MORFEO/calib_morfeo_subaps.yml +105 -0
- specula-1.0.0/config/MORFEO/override_morfeo_focus_ref_2gpus.yml +36 -0
- specula-1.0.0/config/MORFEO/override_morfeo_no_focus_no_ref_2gpus.yml +24 -0
- specula-1.0.0/config/MORFEO/params_morfeo_focus_ref.yml +591 -0
- specula-1.0.0/config/MORFEO/params_morfeo_full.yml +672 -0
- specula-1.0.0/config/MORFEO/params_morfeo_ltao.yml +440 -0
- specula-1.0.0/config/MORFEO/params_morfeo_ltao_plots.yml +425 -0
- specula-1.0.0/config/MORFEO/params_morfeo_no_focus_no_ref.yml +525 -0
- specula-1.0.0/config/MORFEO/params_morfeo_no_na_no_focus_no_ref.yml +512 -0
- specula-1.0.0/config/MORFEO/params_morfeo_scao_plots.yml +215 -0
- specula-1.0.0/config/MORFEO/params_morfeo_small.yml +441 -0
- specula-1.0.0/config/SOUL/ov_add_display.yml +41 -0
- specula-1.0.0/config/SOUL/params_pyr_soul.yml +160 -0
- specula-1.0.0/config/SOUL/params_pyr_soul_basic.yml +138 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptANDES +20 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptERIS +19 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptMorfeoMpi +22 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptMorfeoMpiDistributed4 +22 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptMorfeoMpiSpread +22 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptSOULCPU +19 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptSOULGPU +19 -0
- specula-1.0.0/config/leonardo/jobScripts/jobScriptScao +20 -0
- specula-1.0.0/config/leonardo/overrides/ov_ANDES_leonardo.yml +4 -0
- specula-1.0.0/config/leonardo/overrides/ov_ERIS_leonardo.yml +14 -0
- specula-1.0.0/config/leonardo/overrides/ov_MORFEO_leonardo.yml +70 -0
- specula-1.0.0/config/leonardo/overrides/ov_MORFEO_leonardo_ds4.yml +64 -0
- specula-1.0.0/config/leonardo/overrides/ov_MORFEO_leonardo_spread.yml +88 -0
- specula-1.0.0/config/leonardo/overrides/ov_SOUL_CPU_leonardo.yml +3 -0
- specula-1.0.0/config/leonardo/overrides/ov_SOUL_GPU_leonardo.yml +3 -0
- specula-1.0.0/config/leonardo/overrides/ov_scao_leonardo.yml +62 -0
- specula-1.0.0/config/other/extract_filenames.py +86 -0
- specula-1.0.0/config/other/gandalf.yml +39 -0
- specula-1.0.0/config/other/gandalf_mpi.yml +47 -0
- specula-1.0.0/config/other/params_atmo_petals_ol.yml +113 -0
- specula-1.0.0/config/other/params_atmo_random_phase.yml +116 -0
- specula-1.0.0/config/other/params_atmo_test.yml +99 -0
- specula-1.0.0/config/other/params_control_lpf.yml +60 -0
- specula-1.0.0/config/other/params_test_comb.yml +65 -0
- specula-1.0.0/config/scao/calib/SCAO/im/scao_recmat.fits +0 -0
- specula-1.0.0/config/scao/calib/SCAO/pupils/scao_pup.fits +0 -0
- specula-1.0.0/config/scao/calib/SCAO/rec/scao_recmat.fits +0 -0
- specula-1.0.0/config/scao/calib/SCAO/slopenulls/scao_sn.fits +0 -0
- specula-1.0.0/config/scao/calib_atmo_random_phase_pupdata.yml +25 -0
- specula-1.0.0/config/scao/calib_ltao_sh_rec.yml +82 -0
- specula-1.0.0/config/scao/calib_pyr_pupdata.yml +25 -0
- specula-1.0.0/config/scao/calib_pyr_rec.yml +57 -0
- specula-1.0.0/config/scao/calib_scao_pupdata.yml +25 -0
- specula-1.0.0/config/scao/calib_scao_rec.yml +64 -0
- specula-1.0.0/config/scao/calib_sh_rec.yml +64 -0
- specula-1.0.0/config/scao/calib_sh_subaps.yml +22 -0
- specula-1.0.0/config/scao/params_scao.yml +150 -0
- specula-1.0.0/config/scao/params_scao_elt.yml +148 -0
- specula-1.0.0/config/scao/params_scao_elt_plots.yml +182 -0
- specula-1.0.0/config/scao/params_scao_plots.yml +195 -0
- specula-1.0.0/config/scao/params_scao_pyr.yml +156 -0
- specula-1.0.0/config/scao/params_scao_pyr_extended.yml +169 -0
- specula-1.0.0/config/scao/params_scao_sh.yml +156 -0
- specula-1.0.0/config/scao/params_scao_sh_plots.yml +196 -0
- specula-1.0.0/config/scao/runAll.sh +8 -0
- specula-1.0.0/config/scao/sncalib.yml +17 -0
- specula-1.0.0/docs/Makefile +20 -0
- specula-1.0.0/docs/_static/diagrams/params_control_lpf.png +0 -0
- specula-1.0.0/docs/_static/diagrams/params_scao_sh.png +0 -0
- specula-1.0.0/docs/_static/diagrams/params_scao_sh_colors.png +0 -0
- specula-1.0.0/docs/_static/tutorial/DM_shapes.png +0 -0
- specula-1.0.0/docs/_static/tutorial/SR.png +0 -0
- specula-1.0.0/docs/_static/tutorial/modal_plot.png +0 -0
- specula-1.0.0/docs/_static/tutorial/singular_values.png +0 -0
- specula-1.0.0/docs/api/base_classes.rst +77 -0
- specula-1.0.0/docs/api/data_objects.rst +203 -0
- specula-1.0.0/docs/api/lib.rst +221 -0
- specula-1.0.0/docs/api/processing_objects.rst +500 -0
- specula-1.0.0/docs/base_classes.rst +115 -0
- specula-1.0.0/docs/calibration_manager.rst +265 -0
- specula-1.0.0/docs/conf.py +98 -0
- specula-1.0.0/docs/data_objects.rst +138 -0
- specula-1.0.0/docs/development.rst +35 -0
- specula-1.0.0/docs/index.rst +67 -0
- specula-1.0.0/docs/installation.rst +155 -0
- specula-1.0.0/docs/make.bat +35 -0
- specula-1.0.0/docs/processing_objects.rst +253 -0
- specula-1.0.0/docs/readme.txt +8 -0
- specula-1.0.0/docs/requirements.txt +8 -0
- specula-1.0.0/docs/running_simulations.rst +259 -0
- specula-1.0.0/docs/scripts/generate_api_docs.py +135 -0
- specula-1.0.0/docs/simul_diagrams.rst +54 -0
- specula-1.0.0/docs/simulation_basics.rst +171 -0
- specula-1.0.0/docs/tutorials/field_analyser_tutorial.rst +169 -0
- specula-1.0.0/docs/tutorials/pwfs_calib_pc_tutorial.rst +401 -0
- specula-1.0.0/docs/tutorials/scao_basic_tutorial.rst +472 -0
- specula-1.0.0/docs/tutorials/scao_tutorial.rst +1133 -0
- specula-1.0.0/docs/tutorials/step_response_tutorial.rst +141 -0
- {specula-0.0.0 → specula-1.0.0}/pyproject.toml +4 -6
- specula-1.0.0/specula/_version.py +34 -0
- specula-1.0.0/specula/data/EltM1SegmMap1015pix38570mm.fits +0 -0
- specula-1.0.0/specula/display/base_display.py +99 -0
- specula-1.0.0/specula/display/data_plotter.py +177 -0
- specula-1.0.0/specula/display/double_phase_display.py +142 -0
- specula-1.0.0/specula/display/modes_display.py +89 -0
- specula-1.0.0/specula/display/phase_display.py +48 -0
- specula-1.0.0/specula/display/pixels_display.py +197 -0
- specula-1.0.0/specula/display/plot_display.py +135 -0
- specula-1.0.0/specula/display/plot_vector_display.py +270 -0
- specula-1.0.0/specula/display/psf_display.py +72 -0
- specula-1.0.0/specula/display/pupil_display.py +134 -0
- specula-1.0.0/specula/display/slopec_display.py +47 -0
- specula-1.0.0/specula/lib/ELT_M1_ifunc_calculator.py +114 -0
- specula-1.0.0/specula/lib/__init__.py +0 -0
- specula-1.0.0/specula/lib/calc_noise_cov_elong.py +322 -0
- specula-1.0.0/specula/lib/calc_phasescreen.py +105 -0
- specula-1.0.0/specula/lib/calc_psf.py +185 -0
- specula-1.0.0/specula/lib/calc_spatialfrequency.py +36 -0
- specula-1.0.0/specula/lib/compute_petal_ifunc.py +146 -0
- specula-1.0.0/specula/lib/compute_zern_ifunc.py +30 -0
- specula-1.0.0/specula/lib/compute_zonal_ifunc.py +191 -0
- specula-1.0.0/specula/lib/extrapolation_2d.py +172 -0
- specula-1.0.0/specula/lib/flatten.py +37 -0
- specula-1.0.0/specula/lib/fsoc_lib.py +71 -0
- specula-1.0.0/specula/lib/interp2d.py +170 -0
- specula-1.0.0/specula/lib/make_mask.py +147 -0
- specula-1.0.0/specula/lib/make_xy.py +186 -0
- specula-1.0.0/specula/lib/mask.py +383 -0
- specula-1.0.0/specula/lib/mmse_reconstructor.py +132 -0
- specula-1.0.0/specula/lib/modal_base_generator.py +370 -0
- specula-1.0.0/specula/lib/modal_pushpull_signal.py +114 -0
- specula-1.0.0/specula/lib/n_phot.py +304 -0
- specula-1.0.0/specula/lib/phasescreen_manager.py +54 -0
- specula-1.0.0/specula/lib/platescale_coeff.py +125 -0
- specula-1.0.0/specula/lib/process_utils.py +50 -0
- specula-1.0.0/specula/lib/rebin.py +58 -0
- specula-1.0.0/specula/lib/toccd.py +190 -0
- specula-1.0.0/specula/lib/utils.py +245 -0
- specula-1.0.0/specula/lib/zernike_generator.py +457 -0
- specula-1.0.0/specula/processing_objects/__init__.py +0 -0
- specula-1.0.0/specula/scripts/parse_classes.py +159 -0
- specula-1.0.0/specula/scripts/specula_main.py +31 -0
- specula-1.0.0/specula/scripts/templates/specula_display.html +168 -0
- specula-1.0.0/specula/scripts/templates/specula_frontend.html +128 -0
- specula-1.0.0/specula/scripts/web_frontend.py +47 -0
- {specula-0.0.0 → specula-1.0.0/specula.egg-info}/PKG-INFO +7 -2
- specula-1.0.0/specula.egg-info/SOURCES.txt +435 -0
- {specula-0.0.0 → specula-1.0.0}/specula.egg-info/requires.txt +8 -1
- specula-1.0.0/test/README.py +21 -0
- specula-1.0.0/test/__init__.py +0 -0
- specula-1.0.0/test/bench_fft.py +40 -0
- specula-1.0.0/test/bench_fft_numpy.py +47 -0
- specula-1.0.0/test/calib/pupilstop/EELT480pp0.0803m_obs0.283_spider2023.fits +0 -0
- specula-1.0.0/test/calib/subapdata/maory_np_ps480p0.080_shs68x68_wl589_fv16.1_np14_th0.50_rot6.2.fits +0 -0
- 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
- specula-1.0.0/test/data/PASSATA_pupilstop_64pix.fits +0 -0
- specula-1.0.0/test/data/atmo_s0.8asec_L010m_D8m_100modes_rms.fits +0 -0
- specula-1.0.0/test/data/cov_sh_ref.fits +0 -0
- specula-1.0.0/test/data/diff_ref.fits +0 -0
- specula-1.0.0/test/data/input_phase.fits +0 -0
- specula-1.0.0/test/data/lgs_map_sh_ref.fits +0 -0
- specula-1.0.0/test/data/mask.fits +0 -0
- specula-1.0.0/test/data/phase.fits +0 -0
- specula-1.0.0/test/data/ref_phase.fits +0 -0
- specula-1.0.0/test/data/ref_test_morfeo_crop_intensity.fits +0 -0
- specula-1.0.0/test/data/ref_test_morfeo_crop_slopes.fits +0 -0
- specula-1.0.0/test/data/ref_test_morfeo_intensity.fits +0 -0
- specula-1.0.0/test/data/ref_test_morfeo_phase.fits +0 -0
- specula-1.0.0/test/data/ref_test_morfeo_slopes.fits +0 -0
- specula-1.0.0/test/data/res_sr_ref.fits +0 -0
- specula-1.0.0/test/data/scao_dr_im_20modes_ref.fits +0 -0
- specula-1.0.0/test/data/scao_dr_pupdata_ref.fits +0 -0
- specula-1.0.0/test/data/scao_dr_rec_20modes_ref.fits +0 -0
- specula-1.0.0/test/data/scao_im_n8_th0.5_ref.fits +0 -0
- specula-1.0.0/test/data/scao_pupdata_ref.fits +0 -0
- specula-1.0.0/test/data/scao_rec_n8_th0.5_ref.fits +0 -0
- specula-1.0.0/test/data/scao_sn_n8_th0.5_ref.fits +0 -0
- specula-1.0.0/test/data/scao_subaps_n8_th0.5_ref.fits +0 -0
- specula-1.0.0/test/data/timehistory_test.fits +0 -0
- specula-1.0.0/test/params_atmo_test.yml +116 -0
- specula-1.0.0/test/params_demodulator_test.yml +46 -0
- specula-1.0.0/test/params_elt_pfs_test.yml +228 -0
- specula-1.0.0/test/params_field_analyser_test.yml +164 -0
- specula-1.0.0/test/params_gain_optimizer.yml +79 -0
- specula-1.0.0/test/params_low_pass_filter_test.yml +57 -0
- specula-1.0.0/test/params_optical_gain_estimator_test.yml +58 -0
- specula-1.0.0/test/params_platescale_test.yml +33 -0
- specula-1.0.0/test/params_pyr_ol_test.yml +129 -0
- specula-1.0.0/test/params_scao_dr_test.yml +140 -0
- specula-1.0.0/test/params_scao_dr_test_pupdata.yml +20 -0
- specula-1.0.0/test/params_scao_dr_test_rec.yml +41 -0
- specula-1.0.0/test/params_scao_pyr_test.yml +141 -0
- specula-1.0.0/test/params_scao_pyr_test_pupdata.yml +20 -0
- specula-1.0.0/test/params_scao_sh_test.yml +151 -0
- specula-1.0.0/test/params_scao_sh_test_rec.yml +46 -0
- specula-1.0.0/test/params_scao_sh_test_sn.yml +26 -0
- specula-1.0.0/test/params_scao_sh_test_subap.yml +20 -0
- specula-1.0.0/test/params_timehistory_test.yml +24 -0
- specula-1.0.0/test/params_trigger_zero.yml +32 -0
- specula-1.0.0/test/specula_testlib.py +59 -0
- specula-0.0.0/specula.egg-info/SOURCES.txt +0 -223
- {specula-0.0.0 → specula-1.0.0}/LICENSE +0 -0
- {specula-0.0.0 → specula-1.0.0}/README.md +0 -0
- {specula-0.0.0 → specula-1.0.0}/requirements.txt +0 -0
- {specula-0.0.0 → specula-1.0.0}/setup.cfg +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/__init__.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/base_data_obj.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/base_processing_obj.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/base_time_obj.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/base_value.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/calib_manager.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/connections.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/__init__.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/convolution_kernel.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/electric_field.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/gaussian_convolution_kernel.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/ifunc.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/ifunc_inv.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/iir_filter_data.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/infinite_phase_screen.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/intensity.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/intmat.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/laser_launch_telescope.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/layer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/lenslet.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/m2c.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/pixels.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/pupdata.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/pupilstop.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/recmat.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/simul_params.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/slopes.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/source.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/subap_data.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/data_objects/time_history.py +0 -0
- {specula-0.0.0/specula/processing_objects → specula-1.0.0/specula/display}/__init__.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/field_analyser.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/loop_control.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_evolution.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_infinite_evolution.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_propagation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/atmo_random_phase.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/avc.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/base_generator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/base_operation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/base_slicer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/ccd.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_buffer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_print.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_source.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/data_store.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/demodulator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/display_server.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/distributed_sh.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/dm.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/double_roof_slopec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/electric_field_combinator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/electric_field_reflection.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/ext_source_pyramid.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/extended_source.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/focal_plane_filter.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/gain_optimizer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/ideal_derivative_sensor.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/iir_filter.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/im_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/integrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/linear_combination.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/low_pass_filter.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/mirror_commands_combinator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modal_analysis.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modalrec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modalrec_implicit_polc.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modulated_double_roof.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/modulated_pyramid.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/multi_im_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/multi_rec_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/mvm.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/optical_gain_estimator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/phase_flattening.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/poly_chrom_sh.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/poly_chrom_wfs.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/poly_crom_pyramid.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/power_loss.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/psf.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/psf_coronagraph.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/push_pull_generator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/pyr_pupdata_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/pyr_slopec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/random_generator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/rec_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/schedule_generator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sh.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sh_slopec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sh_subap_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/slopec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/sn_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/spot_monitor.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/time_history_generator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/vibration_generator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/wave_generator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/windowed_integration.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/processing_objects/zernike_sensor.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/simul.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula/template_processing_obj.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula.egg-info/dependency_links.txt +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula.egg-info/entry_points.txt +0 -0
- {specula-0.0.0 → specula-1.0.0}/specula.egg-info/top_level.txt +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_atmo_evolution.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_atmo_infinite_evolution.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_atmo_propagation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_atmo_random_phase.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_atmo_simulation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_base_data_obj.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_base_operation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_base_processing_obj.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_base_slicer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_base_time_obj.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_base_value.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_calc_psf.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_calib_manager.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_ccd.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_compute_ifs_covmat.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_compute_zonal_ifunc.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_connections.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_convolution_kernel.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_cov_elong.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_data_buffer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_data_objects.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_data_print.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_data_source.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_data_store.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_demodulator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_diagram.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_display.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_display_server.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_distributed_sh.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_dm.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_double_roof.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_double_roof_calibration.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_double_roof_slopec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_electric_field.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_elt_m1_ifunc.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_ext_source_pyr.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_extended_source.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_extrapolation_2d.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_field_analyser.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_focal_plane_filter.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_fsoc_lib.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_gain_optimizer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_generators.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_ideal_derivative_sensor.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_ifunc.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_ifunc_inv.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_iircontrol.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_iirfilter.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_im_rec_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_import_class.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_infinite_phase_screen.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_init.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_intensity.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_interp2d.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_intmat.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_laser_launch_telescope.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_layer.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_lenslet.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_linear_combination.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_local_mean_rebin.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_loop_control.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_low_pass_filter_simulation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_m2c.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_make_mask.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_make_xy.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_mask.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_mmse_reconstructor.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_modal_analysis_simulation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_modal_basis.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_modal_pushpull_signal.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_modalrec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_multi_im_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_multi_rec_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_mvm.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_optical_gain_estimator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_phase_flattening.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_physical_propagation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_pixels.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_platescale.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_poly_chrom_pyramid.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_poly_chrom_sh.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_power_loss.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_process_utils.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_psf.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_pupdata.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_pupilstop.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_pyr.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_pyr_calibration.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_pyr_simulation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_pyr_slopec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_rec_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_recmat.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_sh.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_sh_calibration.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_sh_simulation.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_sh_slopec.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_sh_slopec_morfeo.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_sh_subap_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_simul.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_simul_params.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_slopes.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_sn_calibrator.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_source.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_spot_monitor.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_subapdata.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_time_history.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_timehistory_integration.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_to_xp.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_toccd.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_trigger_zero.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_utils.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_windowed_integration.py +0 -0
- {specula-0.0.0 → specula-1.0.0}/test/test_zernike.py +0 -0
- {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
|
specula-1.0.0/.gitignore
ADDED
|
@@ -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:
|
|
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:
|
|
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
|