FitBenchmarking 1.1.0__tar.gz → 1.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/PKG-INFO +15 -18
  2. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/README.md +10 -9
  3. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/__main__.py +2 -1
  4. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cli/checkpoint_handler.py +162 -115
  5. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cli/exception_handler.py +8 -7
  6. fitbenchmarking-1.2.0/fitbenchmarking/cli/main.py +571 -0
  7. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/base_controller.py +175 -102
  8. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/bumps_controller.py +54 -49
  9. fitbenchmarking-1.2.0/fitbenchmarking/controllers/ceres_controller.py +211 -0
  10. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/controller_factory.py +28 -18
  11. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/dfo_controller.py +35 -37
  12. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/gofit_controller.py +58 -38
  13. fitbenchmarking-1.2.0/fitbenchmarking/controllers/gradient_free_controller.py +171 -0
  14. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/gsl_controller.py +69 -51
  15. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/horace_controller.py +43 -39
  16. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/levmar_controller.py +26 -24
  17. fitbenchmarking-1.2.0/fitbenchmarking/controllers/lmfit_controller.py +203 -0
  18. fitbenchmarking-1.2.0/fitbenchmarking/controllers/mantid_controller.py +374 -0
  19. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_controller.py +27 -21
  20. fitbenchmarking-1.2.0/fitbenchmarking/controllers/matlab_curve_controller.py +123 -0
  21. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_mixin.py +42 -29
  22. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_opt_controller.py +62 -42
  23. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_stats_controller.py +28 -22
  24. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/minuit_controller.py +34 -25
  25. fitbenchmarking-1.2.0/fitbenchmarking/controllers/nlopt_controller.py +196 -0
  26. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/paramonte_controller.py +31 -22
  27. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/ralfit_controller.py +78 -43
  28. fitbenchmarking-1.2.0/fitbenchmarking/controllers/scipy_controller.py +159 -0
  29. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/scipy_go_controller.py +42 -37
  30. fitbenchmarking-1.2.0/fitbenchmarking/controllers/scipy_leastsq_controller.py +85 -0
  31. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/scipy_ls_controller.py +36 -27
  32. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/theseus_controller.py +66 -54
  33. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/core/fitting_benchmarking.py +167 -128
  34. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/core/results_output.py +351 -249
  35. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/base_cost_func.py +7 -4
  36. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/cost_func_factory.py +17 -9
  37. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/hellinger_nlls_cost_func.py +16 -9
  38. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/loglike_nlls_cost_func.py +1 -0
  39. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/nlls_base_cost_func.py +4 -2
  40. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/nlls_cost_func.py +7 -4
  41. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/poisson_cost_func.py +19 -10
  42. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/weighted_nlls_cost_func.py +13 -5
  43. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/analytic_hessian.py +4 -2
  44. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/base_hessian.py +3 -1
  45. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/best_available_hessian.py +15 -10
  46. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/hessian_factory.py +17 -12
  47. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/numdifftools_hessian.py +2 -1
  48. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/scipy_hessian.py +12 -7
  49. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/analytic_jacobian.py +28 -3
  50. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/base_jacobian.py +3 -1
  51. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/best_available_jacobian.py +15 -10
  52. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/default_jacobian.py +1 -0
  53. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/jacobian_factory.py +17 -12
  54. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/numdifftools_jacobian.py +2 -2
  55. fitbenchmarking-1.2.0/fitbenchmarking/jacobian/scipy_jacobian.py +85 -0
  56. fitbenchmarking-1.2.0/fitbenchmarking/parsing/bal_parser.py +202 -0
  57. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/base_parser.py +4 -4
  58. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/fitbenchmark_parser.py +194 -109
  59. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/fitting_problem.py +73 -61
  60. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/hogben_parser.py +12 -9
  61. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/horace_parser.py +74 -55
  62. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/ivp_parser.py +15 -12
  63. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/mantid_parser.py +4 -2
  64. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/mantiddev_parser.py +49 -47
  65. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/nist_data_functions.py +58 -47
  66. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/nist_parser.py +79 -55
  67. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/parser_factory.py +35 -26
  68. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/sasview_parser.py +2 -2
  69. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/acc_table.py +3 -1
  70. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/base_table.py +246 -152
  71. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/compare_table.py +67 -32
  72. fitbenchmarking-1.1.0/fitbenchmarking/results_processing/emissions_table.py → fitbenchmarking-1.2.0/fitbenchmarking/results_processing/energy_usage_table.py +13 -12
  73. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/fitting_report.py +69 -48
  74. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/local_min_table.py +54 -33
  75. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/performance_profiler.py +150 -148
  76. fitbenchmarking-1.2.0/fitbenchmarking/results_processing/plots.py +373 -0
  77. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/problem_summary_page.py +72 -52
  78. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/runtime_table.py +3 -1
  79. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/tables.py +110 -71
  80. fitbenchmarking-1.2.0/fitbenchmarking/templates/css/custom_style.css +159 -0
  81. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/fitting_report_template.html +74 -26
  82. fitbenchmarking-1.2.0/fitbenchmarking/templates/images/accuracy.png +0 -0
  83. fitbenchmarking-1.2.0/fitbenchmarking/templates/images/compare.png +0 -0
  84. fitbenchmarking-1.2.0/fitbenchmarking/templates/images/energy.png +0 -0
  85. fitbenchmarking-1.2.0/fitbenchmarking/templates/images/fitbenchmarking_logo.png +0 -0
  86. fitbenchmarking-1.2.0/fitbenchmarking/templates/images/local_min.png +0 -0
  87. fitbenchmarking-1.2.0/fitbenchmarking/templates/images/runtime.png +0 -0
  88. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/index_page.html +1 -0
  89. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/table.js +2 -2
  90. fitbenchmarking-1.2.0/fitbenchmarking/templates/problem_index_page.html +62 -0
  91. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/problem_summary_page_template.html +77 -37
  92. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/table_template.html +30 -32
  93. fitbenchmarking-1.2.0/fitbenchmarking/utils/checkpoint.py +390 -0
  94. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/create_dirs.py +5 -3
  95. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/debug.py +11 -8
  96. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/exceptions.py +112 -47
  97. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/fitbm_result.py +113 -92
  98. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/log.py +18 -11
  99. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/matlab_engine.py +6 -6
  100. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/misc.py +20 -17
  101. fitbenchmarking-1.2.0/fitbenchmarking/utils/options.py +912 -0
  102. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/output_grabber.py +15 -12
  103. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/timer.py +2 -0
  104. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/write_files.py +12 -6
  105. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/pyproject.toml +35 -40
  106. fitbenchmarking-1.1.0/fitbenchmarking/cli/main.py +0 -439
  107. fitbenchmarking-1.1.0/fitbenchmarking/controllers/ceres_controller.py +0 -188
  108. fitbenchmarking-1.1.0/fitbenchmarking/controllers/gradient_free_controller.py +0 -158
  109. fitbenchmarking-1.1.0/fitbenchmarking/controllers/lmfit_controller.py +0 -190
  110. fitbenchmarking-1.1.0/fitbenchmarking/controllers/mantid_controller.py +0 -330
  111. fitbenchmarking-1.1.0/fitbenchmarking/controllers/matlab_curve_controller.py +0 -112
  112. fitbenchmarking-1.1.0/fitbenchmarking/controllers/nlopt_controller.py +0 -188
  113. fitbenchmarking-1.1.0/fitbenchmarking/controllers/scipy_controller.py +0 -130
  114. fitbenchmarking-1.1.0/fitbenchmarking/jacobian/scipy_jacobian.py +0 -33
  115. fitbenchmarking-1.1.0/fitbenchmarking/results_processing/plots.py +0 -314
  116. fitbenchmarking-1.1.0/fitbenchmarking/templates/css/custom_style.css +0 -73
  117. fitbenchmarking-1.1.0/fitbenchmarking/templates/problem_index_page.html +0 -51
  118. fitbenchmarking-1.1.0/fitbenchmarking/templates/table_descriptions.rst +0 -63
  119. fitbenchmarking-1.1.0/fitbenchmarking/utils/checkpoint.py +0 -330
  120. fitbenchmarking-1.1.0/fitbenchmarking/utils/options.py +0 -716
  121. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/.gitignore +0 -0
  122. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/LICENSE.txt +0 -0
  123. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/__init__.py +0 -0
  124. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/ENSO.dat +0 -0
  125. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Gauss3.dat +0 -0
  126. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Hahn1.dat +0 -0
  127. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Kirby2.dat +0 -0
  128. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos1.dat +0 -0
  129. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Lanczos2.dat +0 -0
  130. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/META.txt +0 -0
  131. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/MGH17.dat +0 -0
  132. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1c.dat +0 -0
  133. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/Misra1d.dat +0 -0
  134. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.hes +0 -0
  135. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/ENSO.jac +0 -0
  136. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.hes +0 -0
  137. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Gauss3.jac +0 -0
  138. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.hes +0 -0
  139. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Hahn1.jac +0 -0
  140. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.hes +0 -0
  141. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Kirby2.jac +0 -0
  142. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.hes +0 -0
  143. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos1.jac +0 -0
  144. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.hes +0 -0
  145. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Lanczos2.jac +0 -0
  146. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.hes +0 -0
  147. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/MGH17.jac +0 -0
  148. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.hes +0 -0
  149. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1c.jac +0 -0
  150. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.hes +0 -0
  151. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/average_difficulty/data_files/Misra1d.jac +0 -0
  152. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Bennett5.dat +0 -0
  153. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/BoxBOD.dat +0 -0
  154. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Eckerle4.dat +0 -0
  155. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/META.txt +0 -0
  156. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH09.dat +0 -0
  157. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/MGH10.dat +0 -0
  158. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat42.dat +0 -0
  159. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Rat43.dat +0 -0
  160. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/Thurber.dat +0 -0
  161. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.hes +0 -0
  162. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Bennett5.jac +0 -0
  163. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.hes +0 -0
  164. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/BoxBOD.jac +0 -0
  165. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.hes +0 -0
  166. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Eckerle4.jac +0 -0
  167. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.hes +0 -0
  168. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH09.jac +0 -0
  169. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.hes +0 -0
  170. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/MGH10.jac +0 -0
  171. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.hes +0 -0
  172. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat42.jac +0 -0
  173. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.hes +0 -0
  174. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Rat43.jac +0 -0
  175. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.hes +0 -0
  176. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/high_difficulty/data_files/Thurber.jac +0 -0
  177. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut1.dat +0 -0
  178. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Chwirut2.dat +0 -0
  179. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/DanWood.dat +0 -0
  180. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss1.dat +0 -0
  181. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Gauss2.dat +0 -0
  182. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Lanczos3.dat +0 -0
  183. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/META.txt +0 -0
  184. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1a.dat +0 -0
  185. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/Misra1b.dat +0 -0
  186. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.hes +0 -0
  187. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut1.jac +0 -0
  188. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.hes +0 -0
  189. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Chwirut2.jac +0 -0
  190. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.hes +0 -0
  191. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/DanWood.jac +0 -0
  192. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.hes +0 -0
  193. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss1.jac +0 -0
  194. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.hes +0 -0
  195. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Gauss2.jac +0 -0
  196. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.hes +0 -0
  197. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Lanczos3.jac +0 -0
  198. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.hes +0 -0
  199. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1a.jac +0 -0
  200. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.hes +0 -0
  201. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/benchmark_problems/NIST/low_difficulty/data_files/Misra1b.jac +0 -0
  202. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cli/__init__.py +0 -0
  203. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/__init__.py +0 -0
  204. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/controllers/matlab_curve_controller/eval_r.m +0 -0
  205. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/core/__init__.py +0 -0
  206. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/cost_func/__init__.py +0 -0
  207. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Bold.eot +0 -0
  208. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-BoldItalic.eot +0 -0
  209. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Italic.eot +0 -0
  210. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Light.eot +0 -0
  211. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-LightItalic.eot +0 -0
  212. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Medium.eot +0 -0
  213. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-MediumItalic.eot +0 -0
  214. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/eot/FiraSans-Regular.eot +0 -0
  215. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Bold.ttf +0 -0
  216. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-BoldItalic.ttf +0 -0
  217. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Italic.ttf +0 -0
  218. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Light.ttf +0 -0
  219. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-LightItalic.ttf +0 -0
  220. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Medium.ttf +0 -0
  221. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-MediumItalic.ttf +0 -0
  222. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/ttf/FiraSans-Regular.ttf +0 -0
  223. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Bold.woff +0 -0
  224. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-BoldItalic.woff +0 -0
  225. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Italic.woff +0 -0
  226. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Light.woff +0 -0
  227. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-LightItalic.woff +0 -0
  228. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Medium.woff +0 -0
  229. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-MediumItalic.woff +0 -0
  230. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff/FiraSans-Regular.woff +0 -0
  231. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Bold.woff2 +0 -0
  232. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-BoldItalic.woff2 +0 -0
  233. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Italic.woff2 +0 -0
  234. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Light.woff2 +0 -0
  235. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-LightItalic.woff2 +0 -0
  236. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Medium.woff2 +0 -0
  237. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-MediumItalic.woff2 +0 -0
  238. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FiraSans/woff2/FiraSans-Regular.woff2 +0 -0
  239. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.eot +0 -0
  240. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.svg +0 -0
  241. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.ttf +0 -0
  242. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff +0 -0
  243. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/fonts/FontAwesome/fontawesome-webfont.woff2 +0 -0
  244. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/hessian/__init__.py +0 -0
  245. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/__init__.py +0 -0
  246. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/jacobian/scripts/NIST-Jacobians.nb +0 -0
  247. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/parsing/__init__.py +0 -0
  248. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/results_processing/__init__.py +0 -0
  249. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/dropdown_style.css +0 -0
  250. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/main_style.css +0 -0
  251. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/math_style.css +0 -0
  252. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/css/table_style.css +0 -0
  253. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/dropdown.js +0 -0
  254. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
  255. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
  256. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
  257. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
  258. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
  259. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/plotly.js +0 -0
  260. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/js/tex-mml-chtml.js +0 -0
  261. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/templates/style_sheet.py +0 -0
  262. {fitbenchmarking-1.1.0 → fitbenchmarking-1.2.0}/fitbenchmarking/utils/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: FitBenchmarking
3
- Version: 1.1.0
3
+ Version: 1.2.0
4
4
  Summary: FitBenchmarking: A tool for comparing fitting software
5
5
  Project-URL: Homepage, https://fitbenchmarking.github.io
6
6
  Project-URL: Documentation, https://fitbenchmarking.readthedocs.io/en/stable
@@ -8,20 +8,19 @@ Project-URL: Repository, https://github.com/fitbenchmarking/fitbenchmarking
8
8
  Project-URL: Release Notes, https://github.com/fitbenchmarking/fitbenchmarking/releases
9
9
  Project-URL: Issues, https://github.com/fitbenchmarking/fitbenchmarking/issues
10
10
  Author: FitBenchmarkign Team
11
- License-File: LICENSE.txt
12
11
  Keywords: benchmark,comparison,fitting,least squares,optimisation
13
12
  Classifier: License :: OSI Approved :: BSD License
14
13
  Classifier: Operating System :: OS Independent
15
14
  Classifier: Programming Language :: Python :: 3
16
- Requires-Python: >=3.7.1
17
- Requires-Dist: codecarbon>=2.3.4
15
+ Requires-Python: >=3.9.1
16
+ Requires-Dist: codecarbon<2.7,>=2.5.1
18
17
  Requires-Dist: configparser
19
18
  Requires-Dist: dash
20
19
  Requires-Dist: docutils
21
20
  Requires-Dist: jinja2
22
21
  Requires-Dist: lxml
23
22
  Requires-Dist: matplotlib>=2.0
24
- Requires-Dist: numpy<1.24
23
+ Requires-Dist: numpy
25
24
  Requires-Dist: pandas>=1.3
26
25
  Requires-Dist: plotly>=5.0.0
27
26
  Requires-Dist: scipy>=0.18
@@ -31,18 +30,15 @@ Requires-Dist: bumps>=0.9.0; extra == 'bumps'
31
30
  Provides-Extra: dev
32
31
  Requires-Dist: coverage[toml]>=6.3; extra == 'dev'
33
32
  Requires-Dist: coveralls; extra == 'dev'
34
- Requires-Dist: flake8==3.9.2; extra == 'dev'
35
33
  Requires-Dist: iminuit>=2.25.2; extra == 'dev'
36
34
  Requires-Dist: pandas; extra == 'dev'
37
35
  Requires-Dist: parameterized; extra == 'dev'
38
36
  Requires-Dist: pre-commit; extra == 'dev'
39
- Requires-Dist: pylint-exit; extra == 'dev'
40
- Requires-Dist: pylint==2.9.5; extra == 'dev'
41
37
  Requires-Dist: pytest; extra == 'dev'
42
38
  Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
39
+ Requires-Dist: ruff; extra == 'dev'
43
40
  Provides-Extra: dfo
44
41
  Requires-Dist: dfo-ls; extra == 'dfo'
45
- Requires-Dist: dfogn; extra == 'dfo'
46
42
  Provides-Extra: gofit
47
43
  Requires-Dist: gofit; extra == 'gofit'
48
44
  Provides-Extra: gradient-free
@@ -72,21 +68,22 @@ Requires-Dist: sasmodels; extra == 'sas'
72
68
  Requires-Dist: tinycc; (platform_system == 'Windows') and extra == 'sas'
73
69
  Description-Content-Type: text/markdown
74
70
 
75
- [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.1.0)
76
- [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.1.0)
77
- [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.1.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.1.0)
71
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.2.0)
72
+ [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.2.0)
73
+ [![Install Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/install.yml?label=install&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
74
+ [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.2.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.2.0)
78
75
  [![Coverage Status](https://img.shields.io/coveralls/github/fitbenchmarking/fitbenchmarking.svg?style=flat-square)](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
79
76
  [![Chat](https://img.shields.io/badge/chat-CompareFitMinimizers-lightgrey.svg?style=flat-square&logo=slack)](https://slack.com/)
80
- [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.6597790-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.6597790)
77
+ [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.11198140-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.11198140)
81
78
  [![JOSS](https://img.shields.io/badge/JOSS-10.21105/joss.03127-brightgreen.svg?style=flat-square)](https://doi.org/10.21105/joss.03127)
82
79
  # FitBenchmarking
83
80
 
84
- FitBenchmarking is an open source tool for comparing different minimizers/fitting frameworks. FitBenchmarking is cross platform and we support Windows, Linux and Mac OS. For questions, feature requests or any other inquiries, please open an issue on GitHub, or send us an e-mail at support@fitbenchmarking.com.
81
+ FitBenchmarking is an open source tool for comparing different minimizers/fitting frameworks. FitBenchmarking is cross platform and we support Windows, Linux and Mac OS. For questions, feature requests or any other inquiries, please open an issue on GitHub.
85
82
 
86
- - **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.1.0/users/install_instructions/index.html
87
- - **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.1.0/users/index.html
88
- - **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.1.0/contributors/guidelines.html
89
- - **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.1.0/users/tests.html
83
+ - **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/install_instructions/index.html
84
+ - **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/index.html
85
+ - **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/contributors/guidelines.html
86
+ - **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/tests.html
90
87
 
91
88
  The package is the result of a collaboration between STFC’s Scientific Computing Department and ISIS Neutron and Muon Facility and the Diamond Light Source. We also would like to acknowledge support from:
92
89
 
@@ -1,18 +1,19 @@
1
- [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.1.0)
2
- [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.1.0)
3
- [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.1.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.1.0)
1
+ [![Build Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/release.yml?style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/release.yml?query=branch%3Av1.2.0)
2
+ [![Tests Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/main.yml?label=tests&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/main.yml?query=branch%3Av1.2.0)
3
+ [![Install Status](https://img.shields.io/github/actions/workflow/status/fitbenchmarking/fitbenchmarking/install.yml?label=install&style=flat-square)](https://github.com/fitbenchmarking/fitbenchmarking/actions/workflows/install.yml)
4
+ [![Documentation Status](https://img.shields.io/readthedocs/fitbenchmarking/v1.2.0?style=flat-square)](https://fitbenchmarking.readthedocs.io/en/v1.2.0)
4
5
  [![Coverage Status](https://img.shields.io/coveralls/github/fitbenchmarking/fitbenchmarking.svg?style=flat-square)](https://coveralls.io/github/fitbenchmarking/fitbenchmarking)
5
6
  [![Chat](https://img.shields.io/badge/chat-CompareFitMinimizers-lightgrey.svg?style=flat-square&logo=slack)](https://slack.com/)
6
- [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.6597790-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.6597790)
7
+ [![Zenodo](https://img.shields.io/badge/Zenodo-10.5281/zenodo.11198140-blue.svg?style=flat-square)](https://doi.org/10.5281/zenodo.11198140)
7
8
  [![JOSS](https://img.shields.io/badge/JOSS-10.21105/joss.03127-brightgreen.svg?style=flat-square)](https://doi.org/10.21105/joss.03127)
8
9
  # FitBenchmarking
9
10
 
10
- FitBenchmarking is an open source tool for comparing different minimizers/fitting frameworks. FitBenchmarking is cross platform and we support Windows, Linux and Mac OS. For questions, feature requests or any other inquiries, please open an issue on GitHub, or send us an e-mail at support@fitbenchmarking.com.
11
+ FitBenchmarking is an open source tool for comparing different minimizers/fitting frameworks. FitBenchmarking is cross platform and we support Windows, Linux and Mac OS. For questions, feature requests or any other inquiries, please open an issue on GitHub.
11
12
 
12
- - **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.1.0/users/install_instructions/index.html
13
- - **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.1.0/users/index.html
14
- - **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.1.0/contributors/guidelines.html
15
- - **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.1.0/users/tests.html
13
+ - **Installation Instructions:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/install_instructions/index.html
14
+ - **User Documentation & Example Usage:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/index.html
15
+ - **Community Guidelines:** https://fitbenchmarking.readthedocs.io/en/v1.2.0/contributors/guidelines.html
16
+ - **Automated Tests:** Run via GitHub Actions, https://github.com/fitbenchmarking/fitbenchmarking/actions, and tests are documented at https://fitbenchmarking.readthedocs.io/en/v1.2.0/users/tests.html
16
17
 
17
18
  The package is the result of a collaboration between STFC’s Scientific Computing Department and ISIS Neutron and Muon Facility and the Diamond Light Source. We also would like to acknowledge support from:
18
19
 
@@ -2,7 +2,8 @@
2
2
  Main entry point for fitbenchmarking.
3
3
  This allows the package to be called on the command line.
4
4
  """
5
+
5
6
  from fitbenchmarking.cli.main import main
6
7
 
7
- if __name__ == '__main__':
8
+ if __name__ == "__main__":
8
9
  main()
@@ -5,6 +5,7 @@ For more information on usage type fitbenchmarking --help
5
5
  or for more general information, see the online docs at
6
6
  docs.fitbenchmarking.com.
7
7
  """
8
+
8
9
  import json
9
10
  import os
10
11
  import sys
@@ -12,8 +13,11 @@ import textwrap
12
13
  from argparse import ArgumentParser, RawDescriptionHelpFormatter
13
14
 
14
15
  from fitbenchmarking.cli.exception_handler import exception_handler
15
- from fitbenchmarking.core.results_output import (create_index_page,
16
- open_browser, save_results)
16
+ from fitbenchmarking.core.results_output import (
17
+ create_index_page,
18
+ open_browser,
19
+ save_results,
20
+ )
17
21
  from fitbenchmarking.utils.checkpoint import Checkpoint
18
22
  from fitbenchmarking.utils.options import find_options_file
19
23
 
@@ -27,84 +31,110 @@ def get_parser() -> ArgumentParser:
27
31
  """
28
32
 
29
33
  description = (
30
- 'This is a tool for working with checkpoint files generated during a '
31
- 'FitBenchmarking run.'
34
+ "This is a tool for working with checkpoint files generated during a "
35
+ "FitBenchmarking run."
32
36
  )
33
37
 
34
38
  parser = ArgumentParser(
35
- prog='fitbenchmarking-cp', add_help=True, description=description,
36
- formatter_class=RawDescriptionHelpFormatter)
37
- parser.add_argument('-d', '--debug-mode',
38
- default=False,
39
- action='store_true',
40
- help='Enable debug mode (prints traceback).',)
39
+ prog="fitbenchmarking-cp",
40
+ add_help=True,
41
+ description=description,
42
+ formatter_class=RawDescriptionHelpFormatter,
43
+ )
44
+ parser.add_argument(
45
+ "-d",
46
+ "--debug-mode",
47
+ default=False,
48
+ action="store_true",
49
+ help="Enable debug mode (prints traceback).",
50
+ )
41
51
 
42
52
  subparsers = parser.add_subparsers(
43
- metavar='ACTION',
44
- dest='subprog',
45
- help='Which action should be performed? '
46
- 'For more information on options use '
47
- '`fitbenchmarking-cp ACTION -h`')
53
+ metavar="ACTION",
54
+ dest="subprog",
55
+ help=(
56
+ "Which action should be performed? "
57
+ "For more information on options use "
58
+ "`fitbenchmarking-cp ACTION -h`"
59
+ ),
60
+ )
48
61
 
49
- report_epilog = textwrap.dedent('''
62
+ report_epilog = textwrap.dedent("""
50
63
  Usage Examples:
51
64
 
52
65
  $ fitbenchmarking-cp report
53
66
  $ fitbenchmarking-cp report -o examples/options_template.ini
54
67
  $ fitbenchmarking-cp report -f results/checkpoint
55
- ''')
68
+ """)
56
69
  report = subparsers.add_parser(
57
- 'report',
58
- description='Generate a report from a checkpoint file',
59
- help='Generate a report from a checkpoint file',
60
- epilog=report_epilog)
61
- report.add_argument('-f', '--filename',
62
- metavar='CHECKPOINT_FILE',
63
- default='',
64
- help='The path to a fitbenchmarking checkpoint file. '
65
- 'If omitted, this will be taken from the options '
66
- 'file.')
67
- report.add_argument('-o', '--options-file',
68
- metavar='OPTIONS_FILE',
69
- default='',
70
- help='The path to a fitbenchmarking options file')
71
-
72
- merge_epilog = textwrap.dedent('''
70
+ "report",
71
+ description="Generate a report from a checkpoint file",
72
+ help="Generate a report from a checkpoint file",
73
+ epilog=report_epilog,
74
+ )
75
+ report.add_argument(
76
+ "-f",
77
+ "--filename",
78
+ metavar="CHECKPOINT_FILE",
79
+ default="",
80
+ help=(
81
+ "The path to a fitbenchmarking checkpoint file. "
82
+ "If omitted, this will be taken from the options file."
83
+ ),
84
+ )
85
+ report.add_argument(
86
+ "-o",
87
+ "--options-file",
88
+ metavar="OPTIONS_FILE",
89
+ default="",
90
+ help="The path to a fitbenchmarking options file",
91
+ )
92
+
93
+ merge_epilog = textwrap.dedent("""
73
94
  Usage Examples:
74
95
 
75
96
  $ fitbenchmarking-cp merge -f old_results/checkpoint.json \
76
97
  to_add/checkpoint.json
77
98
  $ fitbenchmarking-cp merge -f cp1 cp2 cp3 cp4 -o \
78
99
  new_results/checkpoint.json
79
- ''')
100
+ """)
80
101
  merge_parser = subparsers.add_parser(
81
- 'merge',
82
- description='Merge multiple checkpoint files into one',
83
- help='Merge multiple checkpoint files into one',
84
- epilog=merge_epilog)
85
- merge_parser.add_argument('-f', '--files',
86
- metavar='FILES',
87
- nargs='+',
88
- help='The checkpoint files to merge'
89
- )
90
- merge_parser.add_argument('-o', '--output-filename',
91
- metavar='OUTPUT',
92
- default='checkpoint.json',
93
- help='The name of the merged checkpoint file')
102
+ "merge",
103
+ description="Merge multiple checkpoint files into one",
104
+ help="Merge multiple checkpoint files into one",
105
+ epilog=merge_epilog,
106
+ )
107
+ merge_parser.add_argument(
108
+ "-f",
109
+ "--files",
110
+ metavar="FILES",
111
+ nargs="+",
112
+ help="The checkpoint files to merge",
113
+ )
114
+ merge_parser.add_argument(
115
+ "-o",
116
+ "--output-filename",
117
+ metavar="OUTPUT",
118
+ default="checkpoint.json",
119
+ help="The name of the merged checkpoint file",
120
+ )
94
121
  merge_parser.add_argument(
95
- '-s', '--strategy',
96
- metavar='STRATEGY',
97
- default='first',
98
- choices=['first', 'last', 'accuracy', 'runtime', 'emissions'],
99
- help='The merge strategy to use when dealing with conflicts.'
100
- 'Selecting accuracy, emissions, or runtime will select for the '
101
- 'lowest from conflicting runs.')
122
+ "-s",
123
+ "--strategy",
124
+ metavar="STRATEGY",
125
+ default="first",
126
+ choices=["first", "last", "accuracy", "runtime", "energy"],
127
+ help=(
128
+ "The merge strategy to use when dealing with conflicts. "
129
+ "Selecting accuracy, energy, or runtime will select for the "
130
+ "lowest from conflicting runs."
131
+ ),
132
+ )
102
133
  return parser
103
134
 
104
135
 
105
136
  @exception_handler
106
- def generate_report(options_file='', additional_options=None, debug=False):
107
- # pylint: disable=unused-argument
137
+ def generate_report(options_file="", additional_options=None, debug=False):
108
138
  """
109
139
  Generate the fitting reports and tables for a checkpoint file.
110
140
 
@@ -118,21 +148,24 @@ def generate_report(options_file='', additional_options=None, debug=False):
118
148
  if additional_options is None:
119
149
  additional_options = {}
120
150
 
121
- options = find_options_file(options_file=options_file,
122
- additional_options=additional_options)
151
+ options = find_options_file(
152
+ options_file=options_file, additional_options=additional_options
153
+ )
123
154
 
124
155
  checkpoint = Checkpoint(options=options)
125
- results, unselected_minimizers, failed_problems = checkpoint.load()
156
+ results, unselected_minimizers, failed_problems, config = checkpoint.load()
126
157
 
127
158
  all_dirs = []
128
159
  pp_dfs_all_prob_sets = {}
129
- for label in results: # pylint: disable=consider-using-dict-items
160
+ for label in results:
130
161
  directory, pp_dfs = save_results(
131
162
  group_name=label,
132
163
  results=results[label],
133
164
  options=options,
134
165
  failed_problems=failed_problems[label],
135
- unselected_minimizers=unselected_minimizers[label])
166
+ unselected_minimizers=unselected_minimizers[label],
167
+ config=config,
168
+ )
136
169
 
137
170
  pp_dfs_all_prob_sets[label] = pp_dfs
138
171
 
@@ -144,10 +177,12 @@ def generate_report(options_file='', additional_options=None, debug=False):
144
177
 
145
178
 
146
179
  @exception_handler
147
- def merge_data_sets(files: 'list[str]', output: 'str',
148
- strategy: 'str' = 'first',
149
- debug: 'bool' = False):
150
- # pylint: disable=unused-argument
180
+ def merge_data_sets(
181
+ files: list[str],
182
+ output: str,
183
+ strategy: str = "first",
184
+ debug: bool = False,
185
+ ):
151
186
  """
152
187
  Combine multiple checkpoint files into one following these rules:
153
188
  1) The output will be the same as combining them one at a time in
@@ -205,16 +240,16 @@ def merge_data_sets(files: 'list[str]', output: 'str',
205
240
  return
206
241
 
207
242
  print(f"Loading {files[0]}...")
208
- with open(files[0], 'r', encoding='utf-8') as f:
243
+ with open(files[0], encoding="utf-8") as f:
209
244
  A = json.load(f)
210
245
  for to_merge in files[1:]:
211
246
  print(f"Merging {to_merge}...")
212
- with open(to_merge, 'r', encoding='utf-8') as f:
247
+ with open(to_merge, encoding="utf-8") as f:
213
248
  B = json.load(f)
214
249
  A = merge(A, B, strategy=strategy)
215
250
 
216
- print(f'Writing to {output}...')
217
- with open(output, 'w', encoding='utf-8') as f:
251
+ print(f"Writing to {output}...")
252
+ with open(output, "w", encoding="utf-8") as f:
218
253
  json.dump(A, f, indent=2)
219
254
 
220
255
 
@@ -233,28 +268,31 @@ def merge(A, B, strategy):
233
268
  :return: The merged checkpoint data.
234
269
  :rtype: dict[str, any]
235
270
  """
236
- if strategy == 'last':
271
+ if strategy == "last":
237
272
  A, B = B, A
238
273
  for k in B:
239
274
  if k not in A:
240
275
  A[k] = B[k]
241
276
  continue
242
- A[k]['problems'], update_names = merge_problems(A[k]['problems'],
243
- B[k]['problems'])
277
+ A[k]["problems"], update_names = merge_problems(
278
+ A[k]["problems"], B[k]["problems"]
279
+ )
244
280
  if update_names:
245
- for r in B[k]['results']:
246
- if r['name'] in update_names:
247
- r['name'] = update_names[r['name']]
248
- A[k]['results'] = merge_results(A[k]['results'], B[k]['results'],
249
- strategy=strategy)
250
- A[k]['failed_problems'] = []
251
- A[k]['unselected_minimisers'] = {r['software_tag']: []
252
- for r in A[k]['results']}
281
+ for r in B[k]["results"]:
282
+ if r["name"] in update_names:
283
+ r["name"] = update_names[r["name"]]
284
+ A[k]["results"] = merge_results(
285
+ A[k]["results"], B[k]["results"], strategy=strategy
286
+ )
287
+ A[k]["failed_problems"] = []
288
+ A[k]["unselected_minimisers"] = {
289
+ r["software_tag"]: [] for r in A[k]["results"]
290
+ }
253
291
 
254
292
  return A
255
293
 
256
294
 
257
- def merge_problems(A: 'dict[str, dict]', B: 'dict[str, dict]'):
295
+ def merge_problems(A: dict[str, dict], B: dict[str, dict]):
258
296
  """
259
297
  Merge the problem sections of 2 checkpoint files.
260
298
  If problems have matching names but different values, the problem from
@@ -276,26 +314,28 @@ def merge_problems(A: 'dict[str, dict]', B: 'dict[str, dict]'):
276
314
  for k, prob in B.items():
277
315
  # Handle case where A/B contains k, k*, k**, ... from previous merges
278
316
  orig_k = k
279
- k = k.rstrip('*')
280
- prob['name'] = prob['name'].rstrip('*')
281
- prob['problem_tag'] = prob['problem_tag'].rstrip('*')
317
+ k = k.rstrip("*")
318
+ prob["name"] = prob["name"].rstrip("*")
319
+ prob["problem_tag"] = prob["problem_tag"].rstrip("*")
282
320
  while k in A:
283
321
  A_prob = A[k]
284
322
  # Identical - take problem from A
285
- if (A_prob['ini_params'] == prob['ini_params']
286
- and A_prob['ini_y'] == prob['ini_y']
287
- and A_prob['x'] == prob['x']
288
- and A_prob['y'] == prob['y']
289
- and A_prob['e'] == prob['e']):
323
+ if (
324
+ A_prob["ini_params"] == prob["ini_params"]
325
+ and A_prob["ini_y"] == prob["ini_y"]
326
+ and A_prob["x"] == prob["x"]
327
+ and A_prob["y"] == prob["y"]
328
+ and A_prob["e"] == prob["e"]
329
+ ):
290
330
  if orig_k != k:
291
331
  update_keys[orig_k] = k
292
332
  break
293
333
 
294
334
  # Agree on name but aren't identical
295
- name_change = '{}*'
335
+ name_change = "{}*"
296
336
  k = name_change.format(k)
297
- prob['name'] = name_change.format(prob['name'])
298
- prob['problem_tag'] = name_change.format(prob['problem_tag'])
337
+ prob["name"] = name_change.format(prob["name"])
338
+ prob["problem_tag"] = name_change.format(prob["problem_tag"])
299
339
 
300
340
  else: # k not in A (no break called)
301
341
  A[k] = prob
@@ -306,7 +346,7 @@ def merge_problems(A: 'dict[str, dict]', B: 'dict[str, dict]'):
306
346
  return A, update_keys
307
347
 
308
348
 
309
- def merge_results(A: 'list[dict]', B: 'list[dict]', strategy: str):
349
+ def merge_results(A: list[dict], B: list[dict], strategy: str):
310
350
  """
311
351
  Merge the results sections of 2 checkpoint files.
312
352
 
@@ -321,24 +361,29 @@ def merge_results(A: 'list[dict]', B: 'list[dict]', strategy: str):
321
361
  :return: Merged results list
322
362
  :rtype: list[dict[str, any]]
323
363
  """
324
- def key_gen(k: 'dict'):
364
+
365
+ def key_gen(k: dict):
325
366
  """
326
367
  Get a uid for a result entry in cp file.
327
368
  """
328
- return (k['name'],
329
- k['software_tag'],
330
- k['minimizer_tag'],
331
- k['jacobian_tag'],
332
- k['hessian_tag'],
333
- k['costfun_tag'])
369
+ return (
370
+ k["name"],
371
+ k["software_tag"],
372
+ k["minimizer_tag"],
373
+ k["jacobian_tag"],
374
+ k["hessian_tag"],
375
+ k["costfun_tag"],
376
+ )
334
377
 
335
378
  A_key = {key_gen(r): i for i, r in enumerate(A)}
336
379
 
337
380
  for res in B:
338
381
  key = key_gen(res)
339
382
  if key in A_key:
340
- if (strategy in ['accuracy', 'emissions', 'runtime']
341
- and A[A_key[key]][strategy] > res[strategy]):
383
+ if (
384
+ strategy in ["accuracy", "energy", "runtime"]
385
+ and A[A_key[key]][strategy] > res[strategy]
386
+ ):
342
387
  A[A_key[key]] = res
343
388
  else:
344
389
  A_key[key] = len(A)
@@ -357,18 +402,20 @@ def main():
357
402
 
358
403
  additional_options = {}
359
404
 
360
- if args.subprog == 'report':
405
+ if args.subprog == "report":
361
406
  if args.filename:
362
- additional_options['checkpoint_filename'] = args.filename
363
- generate_report(args.options_file,
364
- additional_options,
365
- debug=args.debug_mode)
366
- elif args.subprog == 'merge':
367
- merge_data_sets(files=args.files,
368
- output=args.output_filename,
369
- strategy=args.strategy,
370
- debug=args.debug_mode)
371
-
372
-
373
- if __name__ == '__main__':
407
+ additional_options["checkpoint_filename"] = args.filename
408
+ generate_report(
409
+ args.options_file, additional_options, debug=args.debug_mode
410
+ )
411
+ elif args.subprog == "merge":
412
+ merge_data_sets(
413
+ files=args.files,
414
+ output=args.output_filename,
415
+ strategy=args.strategy,
416
+ debug=args.debug_mode,
417
+ )
418
+
419
+
420
+ if __name__ == "__main__":
374
421
  main()
@@ -3,8 +3,8 @@ This file holds an exception handler decorator that should wrap all cli
3
3
  functions to provide cleaner output.
4
4
  """
5
5
 
6
- from functools import wraps
7
6
  import sys
7
+ from functools import wraps
8
8
 
9
9
  from fitbenchmarking.utils import exceptions
10
10
  from fitbenchmarking.utils.log import get_logger
@@ -13,7 +13,6 @@ LOGGER = get_logger()
13
13
 
14
14
 
15
15
  def exception_handler(f):
16
- # pylint: disable=W0703
17
16
  """
18
17
  Decorator to simplify handling exceptions within FitBenchmarking
19
18
  This will strip off any 'debug' inputs.
@@ -21,16 +20,18 @@ def exception_handler(f):
21
20
  :param f: The function to wrap
22
21
  :type f: python function
23
22
  """
23
+
24
24
  @wraps(f)
25
25
  def wrapped(*args, **kwargs):
26
- debug = kwargs.get('debug', False)
26
+ debug = kwargs.get("debug", False)
27
27
 
28
28
  try:
29
29
  return f(*args, **kwargs)
30
30
  except exceptions.FitBenchmarkException as e:
31
-
32
- LOGGER.error('Error while running FitBenchmarking. Exiting. '
33
- 'See below for more information.')
31
+ LOGGER.error(
32
+ "Error while running FitBenchmarking. Exiting. "
33
+ "See below for more information."
34
+ )
34
35
  if debug:
35
36
  raise
36
37
 
@@ -38,7 +39,7 @@ def exception_handler(f):
38
39
  sys.exit(1)
39
40
 
40
41
  except Exception as e:
41
- LOGGER.error('Unknown exception. Exiting.')
42
+ LOGGER.error("Unknown exception. Exiting.")
42
43
  if debug:
43
44
  raise
44
45