threeML 2.4.3.dev1__tar.gz → 2.5.0.dev2__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.
- {threeml-2.4.3.dev1/threeML.egg-info → threeml-2.5.0.dev2}/PKG-INFO +15 -10
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/README.md +2 -2
- threeml-2.5.0.dev2/pyproject.toml +138 -0
- threeml-2.5.0.dev2/setup.cfg +4 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/setup.py +11 -18
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/__init__.py +59 -102
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/_version.py +4 -5
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/analysis_results.py +220 -339
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/autoemcee_sampler.py +47 -68
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/bayesian_analysis.py +60 -87
- threeml-2.5.0.dev2/threeML/bayesian/dynesty_sampler.py +360 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/emcee_sampler.py +33 -45
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/multinest_sampler.py +13 -34
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/nautilus_sampler.py +71 -50
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/sampler_base.py +58 -98
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/tutorial_material.py +14 -28
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/ultranest_sampler.py +38 -55
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/zeus_sampler.py +31 -47
- threeml-2.5.0.dev2/threeML/catalogs/Fermi.py +4 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/FermiGBM.py +28 -56
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/FermiLAT.py +133 -128
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/FermiLLE.py +4 -19
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/Swift.py +40 -91
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/VirtualObservatoryCatalog.py +33 -48
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/catalog_utils.py +137 -146
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/goodness_of_fit.py +26 -20
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/joint_likelihood.py +196 -262
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/joint_likelihood_set.py +52 -74
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/likelihood_ratio_test.py +44 -83
- threeml-2.5.0.dev2/threeML/config/catalog_structure.py +43 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/config.py +0 -1
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/config_structure.py +17 -7
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/config_utils.py +24 -29
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/fitting_structure.py +2 -3
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/plotting_structure.py +5 -3
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/plugin_structure.py +3 -0
- threeml-2.5.0.dev2/threeML/config/point_source_structure.py +13 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data_list.py +6 -15
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/exceptions/custom_exceptions.py +4 -10
- threeml-2.5.0.dev2/threeML/io/__init__.py +15 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/calculate_flux.py +75 -143
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/cern_root_utils/io_utils.py +6 -7
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/cern_root_utils/tobject_to_numpy.py +5 -9
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/configuration.py +0 -3
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/detect_notebook.py +2 -6
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/dict_with_pretty_print.py +4 -9
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/download_from_ftp.py +6 -16
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/download_from_http.py +32 -61
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/file_utils.py +17 -40
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/fits_file.py +18 -45
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/get_heasarc_table_as_pandas.py +33 -43
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/hdf5_utils.py +16 -28
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/logging.py +27 -83
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/network.py +6 -12
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/package_data.py +18 -30
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/cmap_cycle.py +13 -17
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/data_residual_plot.py +35 -57
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/light_curve_plots.py +13 -31
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/model_plot.py +56 -158
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/post_process_data_plots.py +71 -135
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/step_plot.py +4 -10
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/results_table.py +4 -8
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/rich_display.py +0 -5
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/serialization.py +3 -14
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/suppress_stdout.py +2 -3
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/table.py +2 -5
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/uncertainty_formatter.py +24 -50
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/ROOT_minimizer.py +32 -38
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/grid_minimizer.py +31 -50
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/minimization.py +170 -315
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/minuit_minimizer.py +45 -67
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/multinest_minimizer.py +13 -29
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/pagmo_minimizer.py +13 -35
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/scipy_minimizer.py +26 -62
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/tutorial_material.py +29 -53
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/parallel/parallel_client.py +47 -65
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugin_prototype.py +49 -63
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/DispersionSpectrumLike.py +59 -72
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/FermiLATLike.py +106 -185
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/FermipyLike.py +157 -271
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/HAWCLike.py +90 -132
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/OGIPLike.py +25 -45
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/PhotometryLike.py +26 -76
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/SpectrumLike.py +425 -554
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/SwiftXRTLike.py +0 -1
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/UnbinnedPoissonLike.py +34 -52
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/UnresolvedExtendedXYLike.py +24 -56
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/XYLike.py +85 -131
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/CastroLike.py +37 -62
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/SherpaLike.py +30 -31
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/VERITASLike.py +51 -95
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/random_variates.py +37 -34
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/conftest.py +131 -109
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/generate_pha.py +5 -1
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_AAA_against_xspec.py +26 -36
- threeml-2.5.0.dev2/threeML/test/test_FermiLATLike.py +136 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_FermipyLike.py +32 -34
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_UnresolvedExtendedXYLike.py +24 -19
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_XYLike.py +21 -16
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_analysis_results.py +31 -49
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_basic.py +18 -25
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_bayesian.py +33 -35
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_catalogs.py +94 -12
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_configuration.py +7 -29
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_download_GBM_data.py +6 -11
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_download_LAT_data.py +17 -18
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_event_list.py +9 -22
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_file_utils.py +7 -8
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_fits_file.py +7 -9
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_fitted_point_sources.py +12 -18
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_generic.py +9 -21
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_get_package_data.py +1 -2
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_goodness_of_fit.py +2 -5
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_hawc.py +22 -32
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_histogram.py +13 -22
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_joint_likelihood_set.py +8 -7
- threeml-2.5.0.dev2/threeML/test/test_minimizers.py +172 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_model_from_catalog.py +103 -94
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_ogip.py +32 -31
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_photometry_utils.py +14 -19
- threeml-2.5.0.dev2/threeML/test/test_plotting.py +68 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_plugin_loading.py +7 -8
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_power_of_two_utils.py +4 -5
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_response.py +30 -42
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_spectrum_class.py +13 -21
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_spectrumlike.py +15 -19
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_time_energy_fit.py +5 -5
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_time_interval.py +13 -40
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_time_series.py +32 -49
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_unbinned_poisson_like.py +7 -16
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/test_verbosity.py +22 -15
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/OGIP/pha.py +57 -104
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/OGIP/response.py +206 -288
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/bayesian_blocks.py +13 -33
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/binner.py +41 -106
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/__init__.py +3 -2
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/gbm_data.py +63 -74
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/lat_data.py +29 -65
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/lat_transient_builder.py +403 -301
- threeml-2.5.0.dev2/threeML/utils/data_builders/fermi/test.py +24 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/time_series_builder.py +199 -352
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_GBM/download_GBM_data.py +69 -117
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_LAT/download_LAT_data.py +213 -229
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_LAT/download_LLE_data.py +23 -35
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/differentiation.py +7 -26
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fermi_relative_mission_time.py +14 -11
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fitted_objects/fitted_point_sources.py +43 -87
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fitted_objects/fitted_source_handler.py +40 -81
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/histogram.py +9 -37
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/interval.py +46 -123
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/numba_utils.py +5 -4
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/filter_library.py +6 -24
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/filter_set.py +55 -64
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/photometric_observation.py +47 -64
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/polarization/binned_polarization.py +11 -20
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/power_of_two_utils.py +6 -8
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/progress_bar.py +18 -25
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/binned_spectrum.py +58 -126
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/binned_spectrum_set.py +5 -28
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/pha_spectrum.py +125 -309
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/share_spectrum.py +20 -12
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/spectrum_likelihood.py +55 -68
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/gammaln.py +3 -2
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/likelihood_functions.py +38 -43
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/stats_tools.py +62 -77
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/step_parameter_generator.py +11 -22
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/string_utils.py +2 -3
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_interval.py +14 -38
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/binned_spectrum_series.py +77 -127
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/event_list.py +147 -203
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/polynomial.py +104 -135
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/time_series.py +162 -254
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/unique_deterministic_tag.py +4 -3
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2/threeML.egg-info}/PKG-INFO +15 -10
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML.egg-info/SOURCES.txt +1 -1
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML.egg-info/requires.txt +3 -1
- threeml-2.5.0.dev2/threeML.egg-info/top_level.txt +1 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/versioneer.py +919 -418
- threeml-2.4.3.dev1/setup.cfg +0 -79
- threeml-2.4.3.dev1/threeML/bayesian/dynesty_sampler.py +0 -667
- threeml-2.4.3.dev1/threeML/catalogs/Fermi.py +0 -913
- threeml-2.4.3.dev1/threeML/config/catalog_structure.py +0 -35
- threeml-2.4.3.dev1/threeML/config/point_source_structure.py +0 -17
- threeml-2.4.3.dev1/threeML/io/__init__.py +0 -5
- threeml-2.4.3.dev1/threeML/test/test_FermiLATLike.py +0 -113
- threeml-2.4.3.dev1/threeML/test/test_minimizers.py +0 -169
- threeml-2.4.3.dev1/threeML/test/test_plotting.py +0 -54
- threeml-2.4.3.dev1/threeML/utils/data_builders/fermi/test.py +0 -22
- threeml-2.4.3.dev1/threeML.egg-info/top_level.txt +0 -27
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/LICENSE +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/MANIFEST.in +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/bayesian/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/catalogs/__init__.py +1 -1
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/classicMLE/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/config/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bat/gbm_bat_joint_BAT.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bat/gbm_bat_joint_BAT.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_b1_bkgspectra.bak +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_b1_srcspectra.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_b1_weightedrsp.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n6_bkgspectra.bak +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n6_srcspectra.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n6_weightedrsp.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n9_bkgspectra.bak +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n9_srcspectra.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/bn090217206/bn090217206_n9_weightedrsp.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral_spi.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/example_integral_spi.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_cspec_b0_bn080916009_v00.rsp2 +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_cspec_n3_bn080916009_v00.rsp2 +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_cspec_n3_bn080916009_v01.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_tte_b0_bn080916009_v01.fit.gz +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/bn080916009/glg_tte_n3_bn080916009_v01.fit.gz +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_BGO_00.bak +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_BGO_00.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_BGO_00.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_NAI_06.bak +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_NAI_06.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gbm/gbm_bat_joint_NAI_06.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_cspec_n3_bn080916009_v00.rsp2 +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_cspec_n3_bn080916009_v01.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_cspec_n3_bn080916009_v07.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/glg_tte_n3_bn080916009_v01.fit.gz +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gll_cspec_bn080916009_v10.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gll_lle_bn080916009_v10.fit +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/gll_pt_bn080916009_v10.fit +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/bn090217206_LAT_xmlmodel.xml +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_cspec_bn080916009_v10.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_cspec_bn080916009_v10.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_ft1_tr_bn090217206_v00_filt.fit +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_ft1_tr_bn090217206_v00_filt_expomap.fit +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_ft1_tr_bn090217206_v00_filt_ltcube.fit.gz +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_lle_bn080916009_v10.fit +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/lat/gll_pt_bn080916009_v10.fit +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt.arf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt.pi +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt.rmf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awt_fit.fit +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awtback.pi +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/multi_analysis/awtsource.pi +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/ogip_powerlaw.bak +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/ogip_powerlaw.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/ogip_powerlaw.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/test.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/test_bak.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/interval0wtback.pi +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/interval0wtsource.pi +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt.arf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt.rmf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt_bkg.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xrt/xrt_src.pha +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/datasets/xy_powerlaw.txt +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/default_style.yml +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/doc_config.yml +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/fermipy_basic_config.yml +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_gbm_b0.rsp2 +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_gbm_n6.rsp +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_xmm_pn.arf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/ogip_test_xmm_pn.rmf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/optical_filters/filter_library.h5 +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/threeml.mplstyle +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/threeml_docs.mplstyle +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/xmm/pnS004-A2443_reg2.arf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/xmm/pnS004-A2443_reg2.fak +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/data/xmm/pnS004-A2443_reg2.rmf +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/exceptions/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/cern_root_utils/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/get_style.py +2 -2
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/model_plot_2D.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/io/plotting/model_plot_tags.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/minimizer/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/parallel/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/BinnedProfileLike.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/plugins/experimental/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/test/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/OGIP/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/cartesian.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_builders/fermi/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_GBM/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/Fermi_LAT/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/data_download/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/fitted_objects/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/photometry/__init__.py +1 -1
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/polarization/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/spectrum/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/statistics/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML/utils/time_series/__init__.py +0 -0
- {threeml-2.4.3.dev1 → threeml-2.5.0.dev2}/threeML.egg-info/dependency_links.txt +0 -0
|
@@ -1,28 +1,30 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: threeML
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5.0.dev2
|
|
4
4
|
Summary: The Multi-Mission Maximum Likelihood framework
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Author-email: Giacomo Vianello <io@tu.com>
|
|
6
|
+
Maintainer-email: Niccolò Di Lalla <niccolo.dilalla@stanford.edu>, Nicola Omodei <nicola.omodei@stanford.edu>
|
|
7
|
+
License-Expression: BSD-3-Clause
|
|
8
|
+
Project-URL: Homepage, https://github.com/threeml/threeML
|
|
9
9
|
Project-URL: Documentation, https://threeml.readthedocs.io
|
|
10
|
+
Project-URL: Repository, https://github.com/threeML/threeML
|
|
10
11
|
Project-URL: Bug Tracker, https://github.com/threeML/threeML/issues
|
|
11
12
|
Project-URL: Source Code, https://github.com/threeML/threeML
|
|
12
|
-
Keywords: Likelihood,Multi-mission,3ML,HAWC,Fermi,HESS,joint
|
|
13
|
+
Keywords: Likelihood,Multi-mission,3ML,HAWC,Fermi,HESS,joint fit,bayesian,multi-wavelength
|
|
13
14
|
Classifier: Development Status :: 5 - Production/Stable
|
|
14
15
|
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
15
16
|
Classifier: Intended Audience :: Science/Research
|
|
16
17
|
Classifier: Operating System :: POSIX
|
|
17
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
18
19
|
Classifier: Environment :: Console
|
|
20
|
+
Requires-Python: >=3.9.0
|
|
19
21
|
Description-Content-Type: text/markdown
|
|
20
22
|
License-File: LICENSE
|
|
21
23
|
Requires-Dist: numpy>=1.16
|
|
22
24
|
Requires-Dist: scipy>=1.4
|
|
23
25
|
Requires-Dist: emcee>=3
|
|
24
26
|
Requires-Dist: astropy
|
|
25
|
-
Requires-Dist: matplotlib
|
|
27
|
+
Requires-Dist: matplotlib
|
|
26
28
|
Requires-Dist: uncertainties
|
|
27
29
|
Requires-Dist: pyyaml>=5.1
|
|
28
30
|
Requires-Dist: dill
|
|
@@ -45,13 +47,16 @@ Requires-Dist: colorama
|
|
|
45
47
|
Requires-Dist: omegaconf
|
|
46
48
|
Requires-Dist: ipywidgets
|
|
47
49
|
Requires-Dist: rich
|
|
50
|
+
Requires-Dist: packaging
|
|
48
51
|
Provides-Extra: tests
|
|
49
52
|
Requires-Dist: pytest; extra == "tests"
|
|
53
|
+
Requires-Dist: pytest-codecov; extra == "tests"
|
|
50
54
|
Provides-Extra: docs
|
|
51
55
|
Requires-Dist: sphinx>=1.4; extra == "docs"
|
|
52
56
|
Requires-Dist: sphinx_rtd_theme; extra == "docs"
|
|
53
57
|
Requires-Dist: nbsphinx; extra == "docs"
|
|
54
58
|
Requires-Dist: sphinx-autoapi; extra == "docs"
|
|
59
|
+
Dynamic: license-file
|
|
55
60
|
|
|
56
61
|

|
|
57
62
|
[](https://github.com/threeML/threeML/actions/workflows/conda_build.yml)
|
|
@@ -150,7 +155,7 @@ Here is a highlight list of teams and their publications using 3ML.
|
|
|
150
155
|
* [POLAR](https://www.astro.unige.ch/polar-2/?fbclid=IwAR0IxMxHtiXZyqc0A_kT1xKe9ASAk_VmfJpCEBr0HOhDG5eOHY7AE5TWHv8)
|
|
151
156
|
* [The POLAR gamma-ray burst polarization catalog](https://ui.adsabs.harvard.edu/link_gateway/2020A&A...644A.124K/doi:10.1051/0004-6361/202037915)
|
|
152
157
|
|
|
153
|
-
A full list of publications using 3ML is [here](https://
|
|
158
|
+
A full list of publications using 3ML is [here](https://scixplorer.org/abs/2015arXiv150708343V/citations).
|
|
154
159
|
|
|
155
160
|
## Citing
|
|
156
161
|
If you find this package useful in you analysis, or the code in your own custom data tools, please cite:
|
|
@@ -172,5 +177,5 @@ The SVO Filter Profile Service. Rodrigo, C., Solano, E., Bayo, A. http://ivoa.ne
|
|
|
172
177
|
The Filter Profile Service Access Protocol. Rodrigo, C., Solano, E. http://ivoa.net/documents/Notes/SVOFPSDAL/index.html
|
|
173
178
|
|
|
174
179
|
|
|
175
|
-
<img src="https://
|
|
180
|
+
<img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100"> ThreeML is supported by National Science Foundation (NSF) <img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100">
|
|
176
181
|
|
|
@@ -95,7 +95,7 @@ Here is a highlight list of teams and their publications using 3ML.
|
|
|
95
95
|
* [POLAR](https://www.astro.unige.ch/polar-2/?fbclid=IwAR0IxMxHtiXZyqc0A_kT1xKe9ASAk_VmfJpCEBr0HOhDG5eOHY7AE5TWHv8)
|
|
96
96
|
* [The POLAR gamma-ray burst polarization catalog](https://ui.adsabs.harvard.edu/link_gateway/2020A&A...644A.124K/doi:10.1051/0004-6361/202037915)
|
|
97
97
|
|
|
98
|
-
A full list of publications using 3ML is [here](https://
|
|
98
|
+
A full list of publications using 3ML is [here](https://scixplorer.org/abs/2015arXiv150708343V/citations).
|
|
99
99
|
|
|
100
100
|
## Citing
|
|
101
101
|
If you find this package useful in you analysis, or the code in your own custom data tools, please cite:
|
|
@@ -117,5 +117,5 @@ The SVO Filter Profile Service. Rodrigo, C., Solano, E., Bayo, A. http://ivoa.ne
|
|
|
117
117
|
The Filter Profile Service Access Protocol. Rodrigo, C., Solano, E. http://ivoa.net/documents/Notes/SVOFPSDAL/index.html
|
|
118
118
|
|
|
119
119
|
|
|
120
|
-
<img src="https://
|
|
120
|
+
<img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100"> ThreeML is supported by National Science Foundation (NSF) <img src="https://nsf.widen.net/content/txvhzmsofh/png/NSF_Official_logo_High_Res_1200ppi.png?position=c&quality=80&x.portal_shortcode_generated=dnmqqhzz&x.collection_sharename=wc3fwkos&x.app=portals" width="100">
|
|
121
121
|
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools", "wheel", "versioneer[toml]"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "threeML"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "The Multi-Mission Maximum Likelihood framework"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = "BSD-3-Clause"
|
|
11
|
+
license-files = ["LICENSE"]
|
|
12
|
+
requires-python = ">=3.9.0"
|
|
13
|
+
authors = [
|
|
14
|
+
{name = "Giacomo Vianello", email = "io@tu.com"}
|
|
15
|
+
]
|
|
16
|
+
maintainers = [
|
|
17
|
+
{name = "Niccolò Di Lalla", email = "niccolo.dilalla@stanford.edu"},
|
|
18
|
+
{name = "Nicola Omodei", email = "nicola.omodei@stanford.edu"}
|
|
19
|
+
]
|
|
20
|
+
keywords = [
|
|
21
|
+
"Likelihood",
|
|
22
|
+
"Multi-mission",
|
|
23
|
+
"3ML",
|
|
24
|
+
"HAWC",
|
|
25
|
+
"Fermi",
|
|
26
|
+
"HESS",
|
|
27
|
+
"joint fit",
|
|
28
|
+
"bayesian",
|
|
29
|
+
"multi-wavelength"
|
|
30
|
+
]
|
|
31
|
+
classifiers = [
|
|
32
|
+
"Development Status :: 5 - Production/Stable",
|
|
33
|
+
"Topic :: Scientific/Engineering :: Astronomy",
|
|
34
|
+
"Intended Audience :: Science/Research",
|
|
35
|
+
"Operating System :: POSIX",
|
|
36
|
+
"Programming Language :: Python :: 3.9",
|
|
37
|
+
"Environment :: Console",
|
|
38
|
+
]
|
|
39
|
+
dependencies = [
|
|
40
|
+
"numpy>=1.16",
|
|
41
|
+
"scipy>=1.4",
|
|
42
|
+
"emcee>=3",
|
|
43
|
+
"astropy",
|
|
44
|
+
"matplotlib",
|
|
45
|
+
"uncertainties",
|
|
46
|
+
"pyyaml>=5.1",
|
|
47
|
+
"dill",
|
|
48
|
+
"iminuit>=2.0",
|
|
49
|
+
"astromodels",
|
|
50
|
+
"astroquery",
|
|
51
|
+
"corner",
|
|
52
|
+
"pandas",
|
|
53
|
+
"requests",
|
|
54
|
+
"speclite>=0.11",
|
|
55
|
+
"ipython",
|
|
56
|
+
"ipyparallel",
|
|
57
|
+
"joblib",
|
|
58
|
+
"numexpr",
|
|
59
|
+
"dynesty",
|
|
60
|
+
"numba",
|
|
61
|
+
"numdifftools",
|
|
62
|
+
"tqdm>=4.56.0",
|
|
63
|
+
"colorama",
|
|
64
|
+
"omegaconf",
|
|
65
|
+
"ipywidgets",
|
|
66
|
+
"rich",
|
|
67
|
+
"packaging"
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
[project.optional-dependencies]
|
|
71
|
+
tests = [
|
|
72
|
+
"pytest",
|
|
73
|
+
"pytest-codecov",
|
|
74
|
+
]
|
|
75
|
+
docs = [
|
|
76
|
+
"sphinx>=1.4",
|
|
77
|
+
"sphinx_rtd_theme",
|
|
78
|
+
"nbsphinx",
|
|
79
|
+
"sphinx-autoapi",
|
|
80
|
+
]
|
|
81
|
+
|
|
82
|
+
[project.urls]
|
|
83
|
+
Homepage = "https://github.com/threeml/threeML"
|
|
84
|
+
Documentation = "https://threeml.readthedocs.io"
|
|
85
|
+
Repository = "https://github.com/threeML/threeML"
|
|
86
|
+
"Bug Tracker" = "https://github.com/threeML/threeML/issues"
|
|
87
|
+
"Source Code" = "https://github.com/threeML/threeML"
|
|
88
|
+
|
|
89
|
+
[tool.setuptools]
|
|
90
|
+
packages = [
|
|
91
|
+
"threeML",
|
|
92
|
+
"threeML.exceptions",
|
|
93
|
+
"threeML.bayesian",
|
|
94
|
+
"threeML.minimizer",
|
|
95
|
+
"threeML.utils",
|
|
96
|
+
"threeML.utils.OGIP",
|
|
97
|
+
"threeML.utils.spectrum",
|
|
98
|
+
"threeML.utils.polarization",
|
|
99
|
+
"threeML.utils.photometry",
|
|
100
|
+
"threeML.utils.time_series",
|
|
101
|
+
"threeML.utils.data_builders",
|
|
102
|
+
"threeML.utils.data_builders.fermi",
|
|
103
|
+
"threeML.utils.data_download",
|
|
104
|
+
"threeML.utils.data_download.Fermi_LAT",
|
|
105
|
+
"threeML.utils.data_download.Fermi_GBM",
|
|
106
|
+
"threeML.utils.fitted_objects",
|
|
107
|
+
"threeML.utils.statistics",
|
|
108
|
+
"threeML.plugins",
|
|
109
|
+
"threeML.classicMLE",
|
|
110
|
+
"threeML.catalogs",
|
|
111
|
+
"threeML.io",
|
|
112
|
+
"threeML.io.plotting",
|
|
113
|
+
"threeML.io.cern_root_utils",
|
|
114
|
+
"threeML.parallel",
|
|
115
|
+
"threeML.config",
|
|
116
|
+
"threeML.test",
|
|
117
|
+
"threeML.plugins.experimental",
|
|
118
|
+
]
|
|
119
|
+
include-package-data = true
|
|
120
|
+
|
|
121
|
+
[tool.setuptools.package-data]
|
|
122
|
+
threeML = ["threeML/data/*"]
|
|
123
|
+
|
|
124
|
+
[tool.versioneer]
|
|
125
|
+
VCS = "git"
|
|
126
|
+
style = "pep440"
|
|
127
|
+
versionfile_source = "threeML/_version.py"
|
|
128
|
+
versionfile_build = "threeML/_version.py"
|
|
129
|
+
tag_prefix = "v"
|
|
130
|
+
parentdir_prefix = "threeML-"
|
|
131
|
+
|
|
132
|
+
[tool.pytest.ini_options]
|
|
133
|
+
markers = [
|
|
134
|
+
"slow: slow tests",
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[tool.isort]
|
|
138
|
+
profile = "black"
|
|
@@ -1,45 +1,34 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
|
-
import sys
|
|
5
|
-
|
|
6
|
-
import glob
|
|
7
4
|
|
|
8
5
|
from setuptools import setup
|
|
9
6
|
|
|
10
7
|
import versioneer
|
|
11
8
|
|
|
12
|
-
|
|
13
9
|
# This dynamically loads a module and return it in a variable.
|
|
14
10
|
# Will use it for check optional dependencies
|
|
15
11
|
|
|
16
12
|
|
|
17
13
|
def is_module_available(module_name):
|
|
18
|
-
|
|
19
14
|
# Fast path: see if the module has already been imported.
|
|
20
15
|
|
|
21
16
|
try:
|
|
22
|
-
|
|
23
17
|
exec("import %s" % module_name)
|
|
24
18
|
|
|
25
19
|
except ImportError:
|
|
26
|
-
|
|
27
20
|
return False
|
|
28
21
|
|
|
29
22
|
else:
|
|
30
|
-
|
|
31
23
|
return True
|
|
32
24
|
|
|
33
25
|
|
|
34
26
|
# Create list of data files
|
|
35
27
|
def find_data_files(directory):
|
|
36
|
-
|
|
37
28
|
paths = []
|
|
38
29
|
|
|
39
|
-
for
|
|
40
|
-
|
|
30
|
+
for path, directories, filenames in os.walk(directory):
|
|
41
31
|
for filename in filenames:
|
|
42
|
-
|
|
43
32
|
paths.append(os.path.join("..", path, filename))
|
|
44
33
|
|
|
45
34
|
return paths
|
|
@@ -96,8 +85,16 @@ setup(
|
|
|
96
85
|
"bayesian",
|
|
97
86
|
"multi-wavelength",
|
|
98
87
|
],
|
|
99
|
-
# NOTE: we use '' as package name because the extra_files already contain the full
|
|
100
|
-
|
|
88
|
+
# NOTE: we use '' as package name because the extra_files already contain the full
|
|
89
|
+
# path from here
|
|
90
|
+
package_data={
|
|
91
|
+
"threeML/": [
|
|
92
|
+
"data/*",
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
# package_data={
|
|
96
|
+
# "": extra_files,
|
|
97
|
+
# },
|
|
101
98
|
) # End of setup()
|
|
102
99
|
|
|
103
100
|
# Check for optional dependencies
|
|
@@ -114,7 +111,6 @@ optional_dependencies = {
|
|
|
114
111
|
}
|
|
115
112
|
|
|
116
113
|
for dep_name in optional_dependencies:
|
|
117
|
-
|
|
118
114
|
optional_dependencies[dep_name][0] = is_module_available(dep_name)
|
|
119
115
|
|
|
120
116
|
# Now print the final messages
|
|
@@ -124,13 +120,10 @@ print("OPTIONAL FEATURES:")
|
|
|
124
120
|
print("##################\n\n")
|
|
125
121
|
|
|
126
122
|
for dep_name in optional_dependencies:
|
|
127
|
-
|
|
128
123
|
if optional_dependencies[dep_name][0]:
|
|
129
|
-
|
|
130
124
|
status = "available"
|
|
131
125
|
|
|
132
126
|
else:
|
|
133
|
-
|
|
134
127
|
status = "*NOT* available"
|
|
135
128
|
|
|
136
129
|
print(" * %s is %s (%s)\n" % (dep_name, status, optional_dependencies[dep_name][1]))
|
|
@@ -1,31 +1,36 @@
|
|
|
1
1
|
# We import matplotlib first, because we need control on the backend
|
|
2
2
|
# Indeed, if no DISPLAY variable is set, matplotlib 2.0 crashes (at the moment, 05/26/2017)
|
|
3
|
+
import os
|
|
4
|
+
import traceback
|
|
5
|
+
import warnings
|
|
6
|
+
|
|
3
7
|
import pandas as pd
|
|
4
8
|
|
|
5
9
|
pd.set_option("display.max_columns", None)
|
|
6
10
|
|
|
7
|
-
import os
|
|
8
|
-
import traceback
|
|
9
|
-
import warnings
|
|
10
11
|
|
|
11
12
|
# Workaround to avoid a segmentation fault with ROOT and a CFITSIO issue
|
|
12
13
|
# LEAVE THESE HERE BEFORE ANY THREEML IMPORT
|
|
13
14
|
try:
|
|
14
15
|
import ROOT
|
|
16
|
+
|
|
17
|
+
ROOT.__doc__
|
|
15
18
|
except ImportError:
|
|
16
19
|
pass
|
|
17
20
|
try:
|
|
18
21
|
import pyLikelihood
|
|
22
|
+
|
|
23
|
+
pyLikelihood.__doc__
|
|
19
24
|
except ImportError:
|
|
20
25
|
pass
|
|
21
26
|
|
|
22
27
|
from pathlib import Path
|
|
23
28
|
|
|
24
|
-
from threeML.io.logging import setup_logger
|
|
25
|
-
|
|
26
29
|
# Import everything from astromodels
|
|
27
30
|
from astromodels import *
|
|
28
31
|
|
|
32
|
+
from .io.logging import setup_logger
|
|
33
|
+
|
|
29
34
|
from .config import (
|
|
30
35
|
threeML_config,
|
|
31
36
|
show_configuration,
|
|
@@ -38,9 +43,7 @@ log.propagate = False
|
|
|
38
43
|
if threeML_config["logging"]["startup_warnings"]:
|
|
39
44
|
log.info("Starting 3ML!")
|
|
40
45
|
log.warning("WARNINGs here are [red]NOT[/red] errors")
|
|
41
|
-
log.warning(
|
|
42
|
-
"but are inform you about optional packages that can be installed"
|
|
43
|
-
)
|
|
46
|
+
log.warning("but are inform you about optional packages that can be installed")
|
|
44
47
|
log.warning(
|
|
45
48
|
"[red] to disable these messages, turn off start_warning in your config file[/red]"
|
|
46
49
|
)
|
|
@@ -57,14 +60,12 @@ if os.environ.get("DISPLAY") is None:
|
|
|
57
60
|
|
|
58
61
|
# Import version (this has to be placed before the import of serialization
|
|
59
62
|
# since __version__ needs to be defined at that stage)
|
|
60
|
-
from .
|
|
61
|
-
|
|
62
|
-
__version__ = get_versions()["version"]
|
|
63
|
-
del get_versions
|
|
63
|
+
from . import _version
|
|
64
64
|
|
|
65
|
+
__version__ = _version.get_versions()["version"]
|
|
65
66
|
|
|
66
67
|
import traceback
|
|
67
|
-
|
|
68
|
+
import importlib.util
|
|
68
69
|
|
|
69
70
|
# Finally import the serialization machinery
|
|
70
71
|
from .io.serialization import *
|
|
@@ -101,32 +102,24 @@ except ImportError:
|
|
|
101
102
|
|
|
102
103
|
|
|
103
104
|
def is_module_importable(module_full_path):
|
|
104
|
-
|
|
105
105
|
try:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
106
|
+
spec = importlib.util.spec_from_file_location(
|
|
107
|
+
module_full_path.stem, module_full_path
|
|
108
|
+
)
|
|
109
|
+
if spec is None or spec.loader is None:
|
|
110
|
+
raise ImportError(f"Cannot load {module_full_path}")
|
|
111
|
+
module = importlib.util.module_from_spec(spec)
|
|
112
|
+
spec.loader.exec_module(module)
|
|
113
|
+
return True, module
|
|
114
|
+
except Exception:
|
|
111
115
|
return False, traceback.format_exc()
|
|
112
116
|
|
|
113
|
-
else:
|
|
114
|
-
|
|
115
|
-
return True, "%s imported ok" % module_full_path
|
|
116
|
-
|
|
117
117
|
|
|
118
118
|
plugins_dir = Path(__file__).parent / "plugins"
|
|
119
119
|
|
|
120
120
|
found_plugins = plugins_dir.glob("*.py")
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
# found_plugins = filter(lambda x: str(x).find("__init__") < 0, found_plugins)
|
|
125
|
-
|
|
126
|
-
# Filter out __init__
|
|
127
|
-
|
|
128
|
-
found_plugins = filter(lambda x: str(x).find("__init__") < 0, found_plugins)
|
|
129
|
-
|
|
122
|
+
found_plugins = [f for f in plugins_dir.glob("*.py") if f.name != "__init__.py"]
|
|
130
123
|
|
|
131
124
|
_working_plugins = {}
|
|
132
125
|
_not_working_plugins = {}
|
|
@@ -134,10 +127,9 @@ _not_working_plugins = {}
|
|
|
134
127
|
# Loop over each candidates plugins and check if it is importable
|
|
135
128
|
|
|
136
129
|
for i, module_full_path in enumerate(found_plugins):
|
|
137
|
-
|
|
138
130
|
plugin_name = module_full_path.stem
|
|
139
131
|
|
|
140
|
-
is_importable,
|
|
132
|
+
is_importable, result = is_module_importable(module_full_path)
|
|
141
133
|
|
|
142
134
|
if not is_importable:
|
|
143
135
|
if threeML_config.logging.startup_warnings:
|
|
@@ -147,89 +139,65 @@ for i, module_full_path in enumerate(found_plugins):
|
|
|
147
139
|
# custom_exceptions.CannotImportPlugin,
|
|
148
140
|
)
|
|
149
141
|
|
|
150
|
-
_not_working_plugins[plugin_name] =
|
|
142
|
+
_not_working_plugins[plugin_name] = result
|
|
151
143
|
|
|
152
144
|
continue
|
|
153
145
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
exec(f"from threeML.plugins.{plugin_name} import __instrument_name")
|
|
160
|
-
|
|
161
|
-
except ImportError:
|
|
162
|
-
|
|
163
|
-
# This module does not contain a plugin, continue
|
|
164
|
-
continue
|
|
165
|
-
|
|
166
|
-
# Now import the plugin itself
|
|
146
|
+
# First get the instrument name
|
|
147
|
+
module = result
|
|
148
|
+
instrument_name = getattr(module, "__instrument_name", None)
|
|
149
|
+
if not instrument_name:
|
|
150
|
+
continue
|
|
167
151
|
|
|
168
|
-
|
|
169
|
-
|
|
152
|
+
try:
|
|
153
|
+
imported_plugin = importlib.import_module(f"threeML.plugins.{plugin_name}")
|
|
154
|
+
plugin_class = getattr(imported_plugin, plugin_name)
|
|
155
|
+
globals()[plugin_name] = plugin_class
|
|
156
|
+
except ImportError:
|
|
157
|
+
log.warning(
|
|
158
|
+
f"Could not import plugin {plugin_name}."
|
|
159
|
+
"Do you have the relative instrument software installed?"
|
|
170
160
|
)
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
exec(import_command)
|
|
175
|
-
|
|
176
|
-
except ImportError:
|
|
177
|
-
|
|
178
|
-
pass
|
|
179
|
-
|
|
180
|
-
else:
|
|
181
|
-
|
|
182
|
-
_working_plugins[__instrument_name] = plugin_name
|
|
183
|
-
|
|
161
|
+
continue
|
|
162
|
+
_working_plugins[instrument_name] = plugin_name
|
|
184
163
|
|
|
185
164
|
# Now some convenience functions
|
|
186
165
|
|
|
187
166
|
|
|
188
167
|
def get_available_plugins():
|
|
189
|
-
"""
|
|
190
|
-
Print a list of available plugins
|
|
168
|
+
"""Print a list of available plugins.
|
|
191
169
|
|
|
192
170
|
:return:
|
|
193
171
|
"""
|
|
194
172
|
print("Available plugins:\n")
|
|
195
173
|
|
|
196
174
|
for instrument, class_name in _working_plugins.items():
|
|
197
|
-
|
|
198
175
|
print(f"{class_name} for {instrument}")
|
|
199
176
|
|
|
200
177
|
|
|
201
178
|
def _display_plugin_traceback(plugin):
|
|
202
179
|
if threeML_config.logging.startup_warnings:
|
|
203
|
-
log.warning(
|
|
204
|
-
"#############################################################"
|
|
205
|
-
)
|
|
180
|
+
log.warning("#############################################################")
|
|
206
181
|
log.warning("\nCouldn't import plugin %s" % plugin)
|
|
207
182
|
log.warning("\nTraceback:\n")
|
|
208
183
|
log.warning(_not_working_plugins[plugin])
|
|
209
|
-
log.warning(
|
|
210
|
-
"#############################################################"
|
|
211
|
-
)
|
|
184
|
+
log.warning("#############################################################")
|
|
212
185
|
|
|
213
186
|
|
|
214
187
|
def is_plugin_available(plugin):
|
|
215
|
-
"""
|
|
216
|
-
Test whether the plugin for the provided instrument is available
|
|
188
|
+
"""Test whether the plugin for the provided instrument is available.
|
|
217
189
|
|
|
218
190
|
:param plugin: the name of the plugin class
|
|
219
191
|
:return: True or False
|
|
220
192
|
"""
|
|
221
193
|
|
|
222
194
|
if plugin in _working_plugins.values():
|
|
223
|
-
|
|
224
195
|
# FIXME
|
|
225
196
|
if plugin == "FermipyLike":
|
|
226
|
-
|
|
227
197
|
try:
|
|
228
|
-
|
|
229
198
|
_ = FermipyLike.__new__(FermipyLike, test=True)
|
|
230
199
|
|
|
231
200
|
except:
|
|
232
|
-
|
|
233
201
|
# Do not register it
|
|
234
202
|
|
|
235
203
|
_not_working_plugins[plugin] = traceback.format_exc()
|
|
@@ -241,15 +209,12 @@ def is_plugin_available(plugin):
|
|
|
241
209
|
return True
|
|
242
210
|
|
|
243
211
|
else:
|
|
244
|
-
|
|
245
212
|
if plugin in _not_working_plugins:
|
|
246
|
-
|
|
247
213
|
_display_plugin_traceback(plugin)
|
|
248
214
|
|
|
249
215
|
return False
|
|
250
216
|
|
|
251
217
|
else:
|
|
252
|
-
|
|
253
218
|
log.error(f"Plugin {plugin} is not known")
|
|
254
219
|
raise RuntimeError()
|
|
255
220
|
|
|
@@ -272,23 +237,22 @@ from threeML.catalogs import (
|
|
|
272
237
|
FermiGBMBurstCatalog,
|
|
273
238
|
FermiGBMTriggerCatalog,
|
|
274
239
|
FermiLATSourceCatalog,
|
|
275
|
-
FermiPySourceCatalog,
|
|
276
240
|
FermiLLEBurstCatalog,
|
|
241
|
+
FermiPySourceCatalog,
|
|
277
242
|
SwiftGRBCatalog,
|
|
278
243
|
)
|
|
279
|
-
|
|
280
244
|
from threeML.io import (
|
|
245
|
+
activate_logs,
|
|
246
|
+
activate_progress_bars,
|
|
281
247
|
activate_warnings,
|
|
282
|
-
|
|
283
|
-
|
|
248
|
+
debug_mode,
|
|
249
|
+
loud_mode,
|
|
250
|
+
quiet_mode,
|
|
284
251
|
silence_logs,
|
|
285
252
|
silence_progress_bars,
|
|
286
|
-
|
|
253
|
+
silence_warnings,
|
|
287
254
|
toggle_progress_bars,
|
|
288
|
-
|
|
289
|
-
loud_mode,
|
|
290
|
-
debug_mode,
|
|
291
|
-
activate_logs,
|
|
255
|
+
update_logging_level,
|
|
292
256
|
)
|
|
293
257
|
from threeML.io.plotting.light_curve_plots import plot_tte_lightcurve
|
|
294
258
|
from threeML.io.plotting.model_plot import (
|
|
@@ -306,8 +270,8 @@ from threeML.io.uncertainty_formatter import interval_to_errors
|
|
|
306
270
|
# import time series builder, soon to replace the Fermi plugins
|
|
307
271
|
from threeML.utils.data_builders import *
|
|
308
272
|
from threeML.utils.data_download.Fermi_GBM.download_GBM_data import (
|
|
309
|
-
download_GBM_trigger_data,
|
|
310
273
|
download_GBM_daily_data,
|
|
274
|
+
download_GBM_trigger_data,
|
|
311
275
|
)
|
|
312
276
|
|
|
313
277
|
# Import the LAT data downloader
|
|
@@ -331,20 +295,18 @@ from .classicMLE.joint_likelihood_set import (
|
|
|
331
295
|
JointLikelihoodSetAnalyzer,
|
|
332
296
|
)
|
|
333
297
|
from .classicMLE.likelihood_ratio_test import LikelihoodRatioTest
|
|
334
|
-
|
|
335
|
-
# Now read the configuration and make it available as threeML_config
|
|
336
|
-
|
|
337
298
|
from .data_list import DataList
|
|
299
|
+
from .io import get_threeML_style, set_threeML_style
|
|
338
300
|
from .io.calculate_flux import calculate_point_source_flux
|
|
339
|
-
|
|
340
|
-
# Import the plot_style context manager and the function to create new styles
|
|
341
|
-
|
|
342
301
|
from .parallel.parallel_client import parallel_computation
|
|
343
302
|
|
|
344
303
|
# Added by JM. step generator for time-resolved fits
|
|
345
304
|
from .utils.step_parameter_generator import step_generator
|
|
346
305
|
|
|
347
|
-
|
|
306
|
+
# Now read the configuration and make it available as threeML_config
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
# Import the plot_style context manager and the function to create new styles
|
|
348
310
|
|
|
349
311
|
|
|
350
312
|
# Import optical filters
|
|
@@ -364,13 +326,10 @@ var_to_check = ["OMP_NUM_THREADS", "MKL_NUM_THREADS", "NUMEXPR_NUM_THREADS"]
|
|
|
364
326
|
|
|
365
327
|
|
|
366
328
|
for var in var_to_check:
|
|
367
|
-
|
|
368
329
|
num_threads = os.environ.get(var)
|
|
369
330
|
|
|
370
331
|
if num_threads is not None:
|
|
371
|
-
|
|
372
332
|
try:
|
|
373
|
-
|
|
374
333
|
num_threads = int(num_threads)
|
|
375
334
|
|
|
376
335
|
except ValueError:
|
|
@@ -382,7 +341,6 @@ for var in var_to_check:
|
|
|
382
341
|
)
|
|
383
342
|
|
|
384
343
|
else:
|
|
385
|
-
|
|
386
344
|
if threeML_config.logging.startup_warnings:
|
|
387
345
|
log.warning(
|
|
388
346
|
"Env. variable %s is not set. Please set it to 1 for optimal performances in 3ML"
|
|
@@ -394,4 +352,3 @@ for var in var_to_check:
|
|
|
394
352
|
del os
|
|
395
353
|
del Path
|
|
396
354
|
del warnings
|
|
397
|
-
del SourceFileLoader
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
|
|
2
|
-
# This file was generated by 'versioneer.py' (0.
|
|
2
|
+
# This file was generated by 'versioneer.py' (0.29) from
|
|
3
3
|
# revision-control system data, or from the parent directory name of an
|
|
4
4
|
# unpacked source archive. Distribution tarballs contain a pre-generated copy
|
|
5
5
|
# of this file.
|
|
6
6
|
|
|
7
|
-
from __future__ import absolute_import
|
|
8
7
|
import json
|
|
9
8
|
|
|
10
9
|
version_json = '''
|
|
11
10
|
{
|
|
12
|
-
"date": "
|
|
11
|
+
"date": "2026-02-16T18:58:32-0800",
|
|
13
12
|
"dirty": false,
|
|
14
13
|
"error": null,
|
|
15
|
-
"full-revisionid": "
|
|
16
|
-
"version": "2.
|
|
14
|
+
"full-revisionid": "edfee2b64f8527908fb0d0f6e07f3d64e8c8ce4f",
|
|
15
|
+
"version": "2.5.0.dev2"
|
|
17
16
|
}
|
|
18
17
|
''' # END VERSION_JSON
|
|
19
18
|
|