xopt 3.2__tar.gz → 3.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 (268) hide show
  1. xopt-3.2.0/.github/workflows/gh-pages.yml +353 -0
  2. xopt-3.2.0/.github/workflows/lint.yml +64 -0
  3. xopt-3.2.0/.github/workflows/pypi_upload.yml +36 -0
  4. xopt-3.2.0/.github/workflows/test-notebooks.yml +265 -0
  5. xopt-3.2.0/.github/workflows/tests.yml +62 -0
  6. {xopt-3.2/xopt.egg-info → xopt-3.2.0}/PKG-INFO +2 -2
  7. xopt-3.2.0/docs/examples/basic/checkpointing_and_restarts.ipynb +155 -0
  8. xopt-3.2.0/docs/examples/basic/xopt_basic.ipynb +532 -0
  9. xopt-3.2.0/docs/examples/basic/xopt_cli.md +77 -0
  10. xopt-3.2.0/docs/examples/basic/xopt_evaluator.ipynb +448 -0
  11. xopt-3.2.0/docs/examples/basic/xopt_generator.ipynb +222 -0
  12. xopt-3.2.0/docs/examples/basic/xopt_parallel.ipynb +584 -0
  13. xopt-3.2.0/docs/examples/basic/xopt_stopping_condition.ipynb +791 -0
  14. xopt-3.2.0/docs/examples/basic/xopt_vocs.ipynb +506 -0
  15. xopt-3.2.0/docs/examples/bayes_exp/bayesian_exploration.ipynb +261 -0
  16. xopt-3.2.0/docs/examples/bayes_exp/bayesian_exploration_from_yaml.ipynb +169 -0
  17. xopt-3.2.0/docs/examples/bayes_exp/bayesian_exploration_w_interpolation.ipynb +299 -0
  18. xopt-3.2.0/docs/examples/bayes_exp/bayesian_exploration_with_nans.ipynb +191 -0
  19. xopt-3.2.0/docs/examples/developer/benchmarking.md +87 -0
  20. xopt-3.2.0/docs/examples/ga/cnsga_tnk.ipynb +537 -0
  21. xopt-3.2.0/docs/examples/ga/nsga2/assets/benchmarking.pdf +0 -0
  22. xopt-3.2.0/docs/examples/ga/nsga2/assets/zdt3_pf.png +0 -0
  23. xopt-3.2.0/docs/examples/ga/nsga2/genetic_operators.ipynb +165 -0
  24. xopt-3.2.0/docs/examples/ga/nsga2/index.md +40 -0
  25. xopt-3.2.0/docs/examples/ga/nsga2/nsga2_python.ipynb +379 -0
  26. xopt-3.2.0/docs/examples/ga/nsga2/nsga2_to_cnsga.ipynb +276 -0
  27. xopt-3.2.0/docs/examples/ga/nsga2/yaml_interface/assets/yaml_runner_example/eval_fun.py +41 -0
  28. xopt-3.2.0/docs/examples/ga/nsga2/yaml_interface/assets/yaml_runner_example/nsga2_from_checkpoint.yml +71 -0
  29. xopt-3.2.0/docs/examples/ga/nsga2/yaml_interface/assets/yaml_runner_example/nsga2_zdt3.yml +72 -0
  30. xopt-3.2.0/docs/examples/ga/nsga2/yaml_interface/index.md +297 -0
  31. xopt-3.2.0/docs/examples/ga/nsga2/yaml_interface/nsga2_yaml.ipynb +201 -0
  32. xopt-3.2.0/docs/examples/gp_model_creation/approximate.ipynb +186 -0
  33. xopt-3.2.0/docs/examples/gp_model_creation/batched_model.ipynb +264 -0
  34. xopt-3.2.0/docs/examples/gp_model_creation/model_creation.ipynb +243 -0
  35. xopt-3.2.0/docs/examples/multi_objective_bayes_opt/mggpo.ipynb +205 -0
  36. xopt-3.2.0/docs/examples/multi_objective_bayes_opt/mobo.ipynb +220 -0
  37. xopt-3.2.0/docs/examples/multi_objective_bayes_opt/multi_fidelity_mobo.ipynb +335 -0
  38. xopt-3.2.0/docs/examples/scipy/latin_hypercube.ipynb +190 -0
  39. xopt-3.2.0/docs/examples/sequential/extremum_seeking.ipynb +962 -0
  40. xopt-3.2.0/docs/examples/sequential/neldermead.ipynb +653 -0
  41. xopt-3.2.0/docs/examples/sequential/rcds.ipynb +862 -0
  42. xopt-3.2.0/docs/examples/single_objective_bayes_opt/bax_tutorial.ipynb +378 -0
  43. xopt-3.2.0/docs/examples/single_objective_bayes_opt/benchmarking.ipynb +280 -0
  44. xopt-3.2.0/docs/examples/single_objective_bayes_opt/bo_tutorial.ipynb +313 -0
  45. xopt-3.2.0/docs/examples/single_objective_bayes_opt/constrained_bo_tutorial.ipynb +383 -0
  46. xopt-3.2.0/docs/examples/single_objective_bayes_opt/contextual_bo.ipynb +380 -0
  47. xopt-3.2.0/docs/examples/single_objective_bayes_opt/custom_model.ipynb +270 -0
  48. xopt-3.2.0/docs/examples/single_objective_bayes_opt/custom_objective.ipynb +231 -0
  49. xopt-3.2.0/docs/examples/single_objective_bayes_opt/fast_model_eval.ipynb +160 -0
  50. xopt-3.2.0/docs/examples/single_objective_bayes_opt/fixed_features.ipynb +309 -0
  51. xopt-3.2.0/docs/examples/single_objective_bayes_opt/hessian_kernel.ipynb +157 -0
  52. xopt-3.2.0/docs/examples/single_objective_bayes_opt/heteroskedastic_noise_tutorial.ipynb +314 -0
  53. xopt-3.2.0/docs/examples/single_objective_bayes_opt/interpolate_tutorial.ipynb +298 -0
  54. xopt-3.2.0/docs/examples/single_objective_bayes_opt/mixed_discrete.ipynb +274 -0
  55. xopt-3.2.0/docs/examples/single_objective_bayes_opt/multi_fidelity_simple.ipynb +339 -0
  56. xopt-3.2.0/docs/examples/single_objective_bayes_opt/noisy_bo_tutorial.ipynb +312 -0
  57. xopt-3.2.0/docs/examples/single_objective_bayes_opt/time_dependent_bo.ipynb +425 -0
  58. xopt-3.2.0/docs/examples/single_objective_bayes_opt/upper_confidence_bound.ipynb +153 -0
  59. xopt-3.2.0/docs/examples/trust_region_bo/turbo_basics.ipynb +222 -0
  60. xopt-3.2.0/docs/examples/trust_region_bo/turbo_optimize.ipynb +361 -0
  61. xopt-3.2.0/docs/examples/trust_region_bo/turbo_safety.ipynb +368 -0
  62. {xopt-3.2 → xopt-3.2.0}/docs/index.md +32 -34
  63. {xopt-3.2 → xopt-3.2.0}/environment.yml +1 -1
  64. {xopt-3.2 → xopt-3.2.0}/mkdocs.yml +2 -0
  65. {xopt-3.2 → xopt-3.2.0}/pyproject.toml +1 -1
  66. {xopt-3.2 → xopt-3.2.0}/xopt/_version.py +3 -3
  67. {xopt-3.2 → xopt-3.2.0}/xopt/base.py +29 -3
  68. {xopt-3.2 → xopt-3.2.0}/xopt/entrypoint.py +58 -0
  69. {xopt-3.2 → xopt-3.2.0}/xopt/evaluator.py +16 -1
  70. {xopt-3.2 → xopt-3.2.0}/xopt/generator.py +63 -12
  71. {xopt-3.2 → xopt-3.2.0}/xopt/generators/__init__.py +5 -0
  72. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/base_model.py +5 -2
  73. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/bax/acquisition.py +14 -24
  74. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/bax/algorithms.py +95 -53
  75. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/bax/visualize.py +5 -2
  76. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/bax_generator.py +46 -22
  77. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/bayesian_exploration.py +1 -4
  78. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/bayesian_generator.py +251 -113
  79. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/expected_improvement.py +1 -13
  80. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/mggpo.py +1 -0
  81. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/mobo.py +1 -1
  82. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/models/standard.py +70 -15
  83. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/multi_fidelity.py +1 -1
  84. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/objectives.py +1 -1
  85. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/time_dependent.py +3 -0
  86. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/turbo.py +50 -5
  87. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/utils.py +15 -11
  88. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/visualize.py +290 -64
  89. {xopt-3.2 → xopt-3.2.0}/xopt/generators/ga/nsga2.py +59 -30
  90. {xopt-3.2 → xopt-3.2.0}/xopt/generators/random.py +1 -0
  91. {xopt-3.2 → xopt-3.2.0}/xopt/numerical_optimizer.py +87 -5
  92. {xopt-3.2 → xopt-3.2.0}/xopt/pydantic.py +51 -0
  93. {xopt-3.2 → xopt-3.2.0}/xopt/resources/testing.py +7 -0
  94. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_bax.py +105 -30
  95. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_bax_visualize.py +2 -2
  96. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_bayesian_exploration.py +4 -4
  97. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_bayesian_generator.py +185 -28
  98. xopt-3.2.0/xopt/tests/generators/bayesian/test_contextual_bo.py +399 -0
  99. xopt-3.2.0/xopt/tests/generators/bayesian/test_discrete_integration.py +264 -0
  100. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_mggpo.py +11 -0
  101. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_model_constructor.py +13 -33
  102. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_turbo.py +3 -1
  103. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_visualize.py +255 -1
  104. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/external/test_aposmm.py +30 -16
  105. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/ga/test_nsga2.py +52 -0
  106. xopt-3.2.0/xopt/tests/test_entrypoint.py +140 -0
  107. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_generator.py +54 -0
  108. xopt-3.2.0/xopt/tests/test_numerical_optimizer.py +212 -0
  109. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_pydantic.py +9 -0
  110. xopt-3.2.0/xopt/tests/test_resources.py +343 -0
  111. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_utils.py +5 -5
  112. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_vocs.py +376 -0
  113. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_xopt.py +73 -2
  114. {xopt-3.2 → xopt-3.2.0}/xopt/utils.py +0 -34
  115. {xopt-3.2 → xopt-3.2.0}/xopt/vocs.py +329 -37
  116. {xopt-3.2 → xopt-3.2.0/xopt.egg-info}/PKG-INFO +2 -2
  117. {xopt-3.2 → xopt-3.2.0}/xopt.egg-info/SOURCES.txt +64 -0
  118. {xopt-3.2 → xopt-3.2.0}/xopt.egg-info/requires.txt +1 -1
  119. xopt-3.2.0/xopt.egg-info/scm_file_list.json +258 -0
  120. xopt-3.2.0/xopt.egg-info/scm_version.json +8 -0
  121. xopt-3.2/xopt/tests/test_entrypoint.py +0 -59
  122. xopt-3.2/xopt/tests/test_numerical_optimizer.py +0 -106
  123. xopt-3.2/xopt/tests/test_resources.py +0 -108
  124. {xopt-3.2 → xopt-3.2.0}/.pre-commit-config.yaml +0 -0
  125. {xopt-3.2 → xopt-3.2.0}/LICENSE +0 -0
  126. {xopt-3.2 → xopt-3.2.0}/MANIFEST.in +0 -0
  127. {xopt-3.2 → xopt-3.2.0}/README.md +0 -0
  128. {xopt-3.2 → xopt-3.2.0}/benchmarks/__init__.py +0 -0
  129. {xopt-3.2 → xopt-3.2.0}/benchmarks/test_mo.py +0 -0
  130. {xopt-3.2 → xopt-3.2.0}/benchmarks/test_neldermead.py +0 -0
  131. {xopt-3.2 → xopt-3.2.0}/benchmarks/test_ucb.py +0 -0
  132. {xopt-3.2 → xopt-3.2.0}/codecov.yml +0 -0
  133. {xopt-3.2 → xopt-3.2.0}/docs/algorithms.md +0 -0
  134. {xopt-3.2 → xopt-3.2.0}/docs/api/evaluator.md +0 -0
  135. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/bax/acquisition_functions.md +0 -0
  136. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/bax/algorithms.md +0 -0
  137. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/bax/bax_generator.md +0 -0
  138. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/bax/visualize.md +0 -0
  139. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/bayesian_exploration.md +0 -0
  140. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/bayesian_generator.md +0 -0
  141. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/expected_improvement.md +0 -0
  142. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/mggpo.md +0 -0
  143. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/mobo.md +0 -0
  144. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/models/base_model_constructor.md +0 -0
  145. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/models/standard_model_constructor.md +0 -0
  146. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/models/time_dependent_model_constructor.md +0 -0
  147. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/multi_fidelity.md +0 -0
  148. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/time_dependent.md +0 -0
  149. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/turbo.md +0 -0
  150. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/upper_confidence_bound.md +0 -0
  151. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/bayesian/utils.md +0 -0
  152. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/deduplicated.md +0 -0
  153. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/ga/cnsga.md +0 -0
  154. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/ga/deap_creator.md +0 -0
  155. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/ga/deap_fitness_with_constraints.md +0 -0
  156. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/ga/nsga2.md +0 -0
  157. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/ga/operators.md +0 -0
  158. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/random.md +0 -0
  159. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/sequential/extremumseeking.md +0 -0
  160. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/sequential/neldermead.md +0 -0
  161. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/sequential/rcds.md +0 -0
  162. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/sequential/sequential_generator.md +0 -0
  163. {xopt-3.2 → xopt-3.2.0}/docs/api/generators/utils.md +0 -0
  164. {xopt-3.2 → xopt-3.2.0}/docs/api/generators.md +0 -0
  165. {xopt-3.2 → xopt-3.2.0}/docs/api/numerical_optimizer.md +0 -0
  166. {xopt-3.2 → xopt-3.2.0}/docs/api/stopping_conditions.md +0 -0
  167. {xopt-3.2 → xopt-3.2.0}/docs/api/utils.md +0 -0
  168. {xopt-3.2 → xopt-3.2.0}/docs/api/vocs.md +0 -0
  169. {xopt-3.2 → xopt-3.2.0}/docs/api/xopt.md +0 -0
  170. {xopt-3.2 → xopt-3.2.0}/docs/assets/Xopt-logo.png +0 -0
  171. {xopt-3.2 → xopt-3.2.0}/docs/assets/xopt_overview.pdf +0 -0
  172. {xopt-3.2 → xopt-3.2.0}/docs/hooks/zip_generator.py +0 -0
  173. {xopt-3.2 → xopt-3.2.0}/docs/installation.md +0 -0
  174. {xopt-3.2 → xopt-3.2.0}/docs/overrides/main.html +0 -0
  175. {xopt-3.2 → xopt-3.2.0}/docs/stylesheets/extra.css +0 -0
  176. {xopt-3.2 → xopt-3.2.0}/scripts/execute_notebooks.bash +0 -0
  177. {xopt-3.2 → xopt-3.2.0}/scripts/run_benchmarks.py +0 -0
  178. {xopt-3.2 → xopt-3.2.0}/scripts/run_examples.py +0 -0
  179. {xopt-3.2 → xopt-3.2.0}/scripts/run_tests.py +0 -0
  180. {xopt-3.2 → xopt-3.2.0}/setup.cfg +0 -0
  181. {xopt-3.2 → xopt-3.2.0}/xopt/__init__.py +0 -0
  182. {xopt-3.2 → xopt-3.2.0}/xopt/asynchronous.py +0 -0
  183. {xopt-3.2 → xopt-3.2.0}/xopt/errors.py +0 -0
  184. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/__init__.py +0 -0
  185. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/bax/__init__.py +0 -0
  186. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/custom_botorch/__init__.py +0 -0
  187. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/custom_botorch/constrained_acquisition.py +0 -0
  188. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/custom_botorch/hessian_kernel.py +0 -0
  189. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/custom_botorch/heteroskedastic.py +0 -0
  190. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/custom_botorch/log_acquisition_function.py +0 -0
  191. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/custom_botorch/multi_fidelity.py +0 -0
  192. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/models/__init__.py +0 -0
  193. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/models/approximate.py +0 -0
  194. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/models/prior_mean.py +0 -0
  195. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/models/time_dependent.py +0 -0
  196. {xopt-3.2 → xopt-3.2.0}/xopt/generators/bayesian/upper_confidence_bound.py +0 -0
  197. {xopt-3.2 → xopt-3.2.0}/xopt/generators/deduplicated.py +0 -0
  198. {xopt-3.2 → xopt-3.2.0}/xopt/generators/ga/__init__.py +0 -0
  199. {xopt-3.2 → xopt-3.2.0}/xopt/generators/ga/cnsga.py +0 -0
  200. {xopt-3.2 → xopt-3.2.0}/xopt/generators/ga/deap_creator.py +0 -0
  201. {xopt-3.2 → xopt-3.2.0}/xopt/generators/ga/deap_fitness_with_constraints.py +0 -0
  202. {xopt-3.2 → xopt-3.2.0}/xopt/generators/ga/operators.py +0 -0
  203. {xopt-3.2 → xopt-3.2.0}/xopt/generators/scipy/__init__.py +0 -0
  204. {xopt-3.2 → xopt-3.2.0}/xopt/generators/scipy/latin_hypercube.py +0 -0
  205. {xopt-3.2 → xopt-3.2.0}/xopt/generators/sequential/__init__.py +0 -0
  206. {xopt-3.2 → xopt-3.2.0}/xopt/generators/sequential/extremumseeking.py +0 -0
  207. {xopt-3.2 → xopt-3.2.0}/xopt/generators/sequential/neldermead.py +0 -0
  208. {xopt-3.2 → xopt-3.2.0}/xopt/generators/sequential/rcds.py +0 -0
  209. {xopt-3.2 → xopt-3.2.0}/xopt/generators/sequential/sequential_generator.py +0 -0
  210. {xopt-3.2 → xopt-3.2.0}/xopt/generators/utils.py +0 -0
  211. {xopt-3.2 → xopt-3.2.0}/xopt/log.py +0 -0
  212. {xopt-3.2 → xopt-3.2.0}/xopt/mpi/__init__.py +0 -0
  213. {xopt-3.2 → xopt-3.2.0}/xopt/mpi/run.py +0 -0
  214. {xopt-3.2 → xopt-3.2.0}/xopt/resources/__init__.py +0 -0
  215. {xopt-3.2 → xopt-3.2.0}/xopt/resources/bench_framework.py +0 -0
  216. {xopt-3.2 → xopt-3.2.0}/xopt/resources/bench_functions/__init__.py +0 -0
  217. {xopt-3.2 → xopt-3.2.0}/xopt/resources/bench_functions/generators.py +0 -0
  218. {xopt-3.2 → xopt-3.2.0}/xopt/resources/bench_functions/models.py +0 -0
  219. {xopt-3.2 → xopt-3.2.0}/xopt/resources/bench_profiler.py +0 -0
  220. {xopt-3.2 → xopt-3.2.0}/xopt/resources/bench_runner.py +0 -0
  221. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/__init__.py +0 -0
  222. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/ackley_20.py +0 -0
  223. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/haverly_pooling.py +0 -0
  224. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/modified_tnk.py +0 -0
  225. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/multi_objective.py +0 -0
  226. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/problem.py +0 -0
  227. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/rosenbrock.py +0 -0
  228. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/sinusoid_1d.py +0 -0
  229. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/tnk.py +0 -0
  230. {xopt-3.2 → xopt-3.2.0}/xopt/resources/test_functions/zdt.py +0 -0
  231. {xopt-3.2 → xopt-3.2.0}/xopt/stopping_conditions.py +0 -0
  232. {xopt-3.2 → xopt-3.2.0}/xopt/tests/__init__.py +0 -0
  233. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/__init__.py +0 -0
  234. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/__init__.py +0 -0
  235. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/conftest.py +0 -0
  236. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_constraints.py +0 -0
  237. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_custom_model.py +0 -0
  238. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_expected_improvement.py +0 -0
  239. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_hessian_kernel.py +0 -0
  240. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_high_level.py +0 -0
  241. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_mobo.py +0 -0
  242. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_multi_fidelity.py +0 -0
  243. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_objectives.py +0 -0
  244. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_time_dependent_bo.py +0 -0
  245. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_upper_confidence_bound.py +0 -0
  246. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/bayesian/test_utils.py +0 -0
  247. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/ga/test_cnsga.py +0 -0
  248. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/ga/test_deap_creator.py +0 -0
  249. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/sequential/test_extremum_seeking.py +0 -0
  250. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/sequential/test_neldermead.py +0 -0
  251. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/sequential/test_rcds.py +0 -0
  252. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/sequential/test_sequential.py +0 -0
  253. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/sequential/test_serialization.py +0 -0
  254. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/test_deduplicated.py +0 -0
  255. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/test_latin_hypercube.py +0 -0
  256. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/test_operators.py +0 -0
  257. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/test_random.py +0 -0
  258. {xopt-3.2 → xopt-3.2.0}/xopt/tests/generators/test_utils.py +0 -0
  259. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_asynch_xopt.py +0 -0
  260. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_evaluator.py +0 -0
  261. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_io.py +0 -0
  262. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_log.py +0 -0
  263. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_mpi.py +0 -0
  264. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_perf.py +0 -0
  265. {xopt-3.2 → xopt-3.2.0}/xopt/tests/test_stopping_condition.py +0 -0
  266. {xopt-3.2 → xopt-3.2.0}/xopt.egg-info/dependency_links.txt +0 -0
  267. {xopt-3.2 → xopt-3.2.0}/xopt.egg-info/entry_points.txt +0 -0
  268. {xopt-3.2 → xopt-3.2.0}/xopt.egg-info/top_level.txt +0 -0
@@ -0,0 +1,353 @@
1
+ name: Deploy Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ tags:
8
+ - '*'
9
+ release:
10
+ types:
11
+ - published
12
+
13
+ permissions:
14
+ id-token: write
15
+ contents: write
16
+ pages: write
17
+ actions: read
18
+
19
+ jobs:
20
+ test-notebooks:
21
+ runs-on: ubuntu-latest
22
+ name: "Test Notebooks"
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ group: [1, 2, 3, 4]
27
+
28
+ steps:
29
+ - uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 1
32
+
33
+ - name: Set up uv
34
+ uses: astral-sh/setup-uv@v5
35
+ with:
36
+ enable-cache: true
37
+ cache-dependency-glob: "**/pyproject.toml"
38
+
39
+ - name: Set up Python
40
+ run: uv python install 3.12
41
+
42
+ - name: Install system dependencies
43
+ run: sudo apt-get update && sudo apt-get install -y libopenmpi-dev
44
+
45
+ - name: Install dependencies
46
+ run: uv sync --extra dev
47
+
48
+ - name: Execute notebooks in parallel
49
+ id: execute
50
+ shell: bash
51
+ env:
52
+ GROUP: ${{ matrix.group }}
53
+ TOTAL_GROUPS: 4 # Make sure to NOT set SMOKE_TEST to a value here
54
+ run: |
55
+ set +e # Don't exit on first error
56
+ NOTEBOOKS=$(find . -type f -name "*.ipynb" -not -path '*/.*' | sort)
57
+ NOTEBOOK_ARRAY=($NOTEBOOKS)
58
+
59
+ # Create temp directory for tracking
60
+ TMPDIR=$(mktemp -d)
61
+ trap "rm -rf $TMPDIR" EXIT
62
+ SCRIPT_START=$(date +%s)
63
+
64
+ # Directory to stage executed notebooks for upload
65
+ mkdir -p executed-notebooks
66
+ # Function to execute a notebook and track results, with jitter + retries
67
+ execute_notebook() {
68
+ local file=$1
69
+ local tmpdir=$2
70
+
71
+ # Add small random jitter (0–2s) to desynchronize parallel starts
72
+ sleep "$(awk -v seed="$RANDOM" 'BEGIN{srand(seed); printf "%.2f", rand() * 2}')"
73
+
74
+ local START_TIME END_TIME DURATION
75
+ local MAX_RETRIES=3
76
+ local RETRY_COUNT=0
77
+ local SUCCESS=false
78
+
79
+ # Use a unique log file per notebook (based on filename hash) to avoid collisions
80
+ local FILE_HASH=$(echo "$file" | md5sum | cut -c1-8)
81
+ local LAST_LOG_FILE=""
82
+
83
+ START_TIME=$(date +%s)
84
+
85
+ while [ "$RETRY_COUNT" -lt "$MAX_RETRIES" ]; do
86
+ LAST_LOG_FILE="/tmp/nbconvert_${FILE_HASH}_${RETRY_COUNT}.log"
87
+
88
+ if uv run jupyter nbconvert --to notebook --execute "$file" --inplace \
89
+ --ExecutePreprocessor.timeout=600 \
90
+ >"$LAST_LOG_FILE" 2>&1; then
91
+ SUCCESS=true
92
+ # On success, stream log to stdout for context if it exists
93
+ if [ -f "$LAST_LOG_FILE" ]; then
94
+ echo "--- Begin nbconvert log for $file (SUCCESS) ---"
95
+ cat "$LAST_LOG_FILE"
96
+ echo "--- End nbconvert log for $file (SUCCESS) ---"
97
+ rm -f "$LAST_LOG_FILE"
98
+ fi
99
+ break
100
+ fi
101
+
102
+ # If this looks like a transient kernel/port issue, retry with backoff
103
+ if [ -f "$LAST_LOG_FILE" ] && \
104
+ grep -qE "Address already in use|ZMQError|Kernel died before replying" "$LAST_LOG_FILE"; then
105
+ RETRY_COUNT=$((RETRY_COUNT + 1))
106
+ if [ "$RETRY_COUNT" -lt "$MAX_RETRIES" ]; then
107
+ local WAIT_TIME=$((2 ** RETRY_COUNT)) # 2,4,8s
108
+ echo "Port/kernel issue for $file, retrying in ${WAIT_TIME}s (attempt $((RETRY_COUNT + 1))/$MAX_RETRIES)..."
109
+ sleep "$WAIT_TIME"
110
+ continue
111
+ fi
112
+ fi
113
+
114
+ # Non-retryable error or max retries reached - exit loop
115
+ break
116
+ done
117
+
118
+ END_TIME=$(date +%s)
119
+ DURATION=$((END_TIME - START_TIME))
120
+
121
+ if [ "$SUCCESS" = true ]; then
122
+ echo "$DURATION" > "$tmpdir/$(basename $file).status"
123
+ echo "✓ Successfully executed $file (${DURATION}s)"
124
+ # Copy executed notebook to staging directory, preserving path structure
125
+ target_dir="executed-notebooks/$(dirname "$file")"
126
+ mkdir -p "$target_dir"
127
+ cp "$file" "$target_dir/"
128
+ else
129
+ echo "failed:$DURATION" > "$tmpdir/$(basename $file).status"
130
+ echo "✗ Failed to execute $file (${DURATION}s)"
131
+ # Always print the log file for failed notebooks
132
+ if [ -f "$LAST_LOG_FILE" ]; then
133
+ echo "--- Begin nbconvert log for $file (FAILURE) ---"
134
+ cat "$LAST_LOG_FILE"
135
+ echo "--- End nbconvert log for $file (FAILURE) ---"
136
+ rm -f "$LAST_LOG_FILE"
137
+ else
138
+ echo "No log file found for $file"
139
+ fi
140
+ fi
141
+ }
142
+ export -f execute_notebook
143
+ # Execute notebooks in this group in parallel (all notebooks in this group)
144
+ for ((i=GROUP-1; i<${#NOTEBOOK_ARRAY[@]}; i+=TOTAL_GROUPS)); do
145
+ execute_notebook "${NOTEBOOK_ARRAY[$i]}" "$TMPDIR" &
146
+ done
147
+ wait
148
+ # Collect results
149
+ TOTAL=0
150
+ SUCCESS=0
151
+ FAILED=0
152
+ TOTAL_TIME=0
153
+
154
+ # Write group summary header
155
+ echo "## Group $GROUP Results" >> $GITHUB_STEP_SUMMARY
156
+ echo "" >> $GITHUB_STEP_SUMMARY
157
+
158
+ # Collect status for each notebook in this group
159
+ for ((i=GROUP-1; i<${#NOTEBOOK_ARRAY[@]}; i+=TOTAL_GROUPS)); do
160
+ file="${NOTEBOOK_ARRAY[$i]}"
161
+ TOTAL=$((TOTAL + 1))
162
+ status_file="$TMPDIR/$(basename $file).status"
163
+
164
+ if [ -f "$status_file" ]; then
165
+ status=$(cat "$status_file")
166
+
167
+ if [[ "$status" == failed:* ]]; then
168
+ FAILED=$((FAILED + 1))
169
+ duration=${status#failed:}
170
+ TOTAL_TIME=$((TOTAL_TIME + duration))
171
+ echo "- ❌ \`$file\` (${duration}s)" >> $GITHUB_STEP_SUMMARY
172
+ else
173
+ SUCCESS=$((SUCCESS + 1))
174
+ TOTAL_TIME=$((TOTAL_TIME + status))
175
+ echo "- ✅ \`$file\` (${status}s)" >> $GITHUB_STEP_SUMMARY
176
+ fi
177
+ fi
178
+ done
179
+
180
+ # Calculate wall clock time
181
+ SCRIPT_END=$(date +%s)
182
+ SCRIPT_DURATION=$((SCRIPT_END - SCRIPT_START))
183
+
184
+ # Write summary totals
185
+ echo "" >> $GITHUB_STEP_SUMMARY
186
+ echo "**Summary for Group $GROUP:**" >> $GITHUB_STEP_SUMMARY
187
+ echo "- Total: $TOTAL" >> $GITHUB_STEP_SUMMARY
188
+ echo "- Success: $SUCCESS" >> $GITHUB_STEP_SUMMARY
189
+ echo "- Failed: $FAILED" >> $GITHUB_STEP_SUMMARY
190
+ echo "- Total execution time: ${TOTAL_TIME}s" >> $GITHUB_STEP_SUMMARY
191
+ echo "- Wall clock time: ${SCRIPT_DURATION}s" >> $GITHUB_STEP_SUMMARY
192
+
193
+ # Export outputs for next step
194
+ echo "failed=$FAILED" >> $GITHUB_OUTPUT
195
+ echo "success=$SUCCESS" >> $GITHUB_OUTPUT
196
+ echo "total=$TOTAL" >> $GITHUB_OUTPUT
197
+
198
+ # Exit with error if any notebooks failed
199
+ [ $FAILED -gt 0 ] && exit 1 || exit 0
200
+
201
+ - name: Save results for summary
202
+ if: always()
203
+ run: |
204
+ mkdir -p results
205
+ echo "${{ steps.execute.outputs.success }},${{ steps.execute.outputs.failed }},${{ steps.execute.outputs.total }}" > results/group-${{ matrix.group }}-results.txt
206
+
207
+ - name: Upload results artifact
208
+ if: always()
209
+ uses: actions/upload-artifact@v4
210
+ with:
211
+ name: notebook-results-group-${{ matrix.group }}
212
+ path: results/group-${{ matrix.group }}-results.txt
213
+
214
+ - name: Upload executed notebooks
215
+ if: always()
216
+ uses: actions/upload-artifact@v4
217
+ with:
218
+ name: executed-notebooks-group-${{ matrix.group }}
219
+ path: executed-notebooks/**/*.ipynb
220
+
221
+ - name: Minimize uv cache
222
+ run: uv cache prune --ci
223
+
224
+ summary:
225
+ name: "Notebook Execution Summary"
226
+ needs: test-notebooks
227
+ runs-on: ubuntu-latest
228
+ if: always()
229
+ steps:
230
+ - name: Download all results
231
+ uses: actions/download-artifact@v4
232
+ with:
233
+ pattern: notebook-results-group-*
234
+ merge-multiple: true
235
+
236
+ - name: Generate overall summary
237
+ run: |
238
+ echo "# 📊 Notebook Execution Summary" >> $GITHUB_STEP_SUMMARY
239
+ echo "" >> $GITHUB_STEP_SUMMARY
240
+
241
+ TOTAL_SUCCESS=0
242
+ TOTAL_FAILED=0
243
+ TOTAL_NOTEBOOKS=0
244
+
245
+ echo "## Results by Group" >> $GITHUB_STEP_SUMMARY
246
+ echo "" >> $GITHUB_STEP_SUMMARY
247
+ echo "| Group | Total | Success ✅ | Failed ❌ |" >> $GITHUB_STEP_SUMMARY
248
+ echo "|-------|-------|-----------|----------|" >> $GITHUB_STEP_SUMMARY
249
+
250
+ for i in 1 2 3 4; do
251
+ if [ -f "group-$i-results.txt" ]; then
252
+ IFS=',' read -r success failed total < "group-$i-results.txt"
253
+ echo "| $i | $total | $success | $failed |" >> $GITHUB_STEP_SUMMARY
254
+ TOTAL_SUCCESS=$((TOTAL_SUCCESS + success))
255
+ TOTAL_FAILED=$((TOTAL_FAILED + failed))
256
+ TOTAL_NOTEBOOKS=$((TOTAL_NOTEBOOKS + total))
257
+ else
258
+ echo "| $i | - | - | ⚠️ No results |" >> $GITHUB_STEP_SUMMARY
259
+ fi
260
+ done
261
+
262
+ echo "" >> $GITHUB_STEP_SUMMARY
263
+ echo "## 📈 Overall Results" >> $GITHUB_STEP_SUMMARY
264
+ echo "" >> $GITHUB_STEP_SUMMARY
265
+ echo "- **Total Notebooks**: $TOTAL_NOTEBOOKS" >> $GITHUB_STEP_SUMMARY
266
+ echo "- **✅ Successful**: $TOTAL_SUCCESS" >> $GITHUB_STEP_SUMMARY
267
+ echo "- **❌ Failed**: $TOTAL_FAILED" >> $GITHUB_STEP_SUMMARY
268
+
269
+ if [ $TOTAL_FAILED -gt 0 ]; then
270
+ echo "" >> $GITHUB_STEP_SUMMARY
271
+ echo "⚠️ **Some notebooks failed.** Check individual group summaries above for details." >> $GITHUB_STEP_SUMMARY
272
+ else
273
+ echo "" >> $GITHUB_STEP_SUMMARY
274
+ echo "🎉 **All notebooks executed successfully!**" >> $GITHUB_STEP_SUMMARY
275
+ fi
276
+
277
+ echo "" >> $GITHUB_STEP_SUMMARY
278
+ echo "---" >> $GITHUB_STEP_SUMMARY
279
+ echo "*Check individual group job summaries for detailed notebook-by-notebook results.*" >> $GITHUB_STEP_SUMMARY
280
+
281
+ build:
282
+ needs: [test-notebooks, summary]
283
+ runs-on: ubuntu-latest
284
+ name: "Build Documentation"
285
+
286
+ steps:
287
+ - uses: actions/checkout@v4
288
+ with:
289
+ fetch-depth: 0 # Required for setuptools_scm version calculation
290
+
291
+ - name: Set up uv
292
+ uses: astral-sh/setup-uv@v5
293
+ with:
294
+ enable-cache: true
295
+ cache-dependency-glob: "**/pyproject.toml"
296
+
297
+ - name: Set up Python
298
+ run: uv python install 3.12
299
+
300
+ - name: Install dependencies
301
+ run: uv sync --extra doc
302
+
303
+ - name: Download executed notebooks
304
+ uses: actions/download-artifact@v4
305
+ with:
306
+ pattern: executed-notebooks-group-*
307
+ path: downloaded-notebooks
308
+ merge-multiple: true
309
+
310
+ - name: Replace original notebooks with executed versions
311
+ run: |
312
+ # Copy executed notebooks to replace originals
313
+ # Artifacts preserve the structure from executed-notebooks/ which includes ./docs/examples/
314
+ find downloaded-notebooks -name "*.ipynb" -type f | while read notebook; do
315
+ # Strip the downloaded-notebooks/ prefix
316
+ relative_path=${notebook#downloaded-notebooks/}
317
+ # Strip an optional leading ./
318
+ relative_path=${relative_path#./}
319
+ # Strip the executed-notebooks/ prefix to get back to repo paths
320
+ relative_path=${relative_path#executed-notebooks/}
321
+ target_path="$relative_path"
322
+ echo "Replacing $target_path with executed version from $notebook"
323
+ cp "$notebook" "$target_path"
324
+ done
325
+
326
+ - name: Build docs
327
+ run: uv run mkdocs build
328
+
329
+ - name: Extract examples
330
+ run: |
331
+ zip -r xopt-examples.zip docs/examples/
332
+ mv xopt-examples.zip ./site/assets/
333
+
334
+ - name: Upload docs artifact
335
+ uses: actions/upload-pages-artifact@v3
336
+ with:
337
+ path: ./site
338
+
339
+ deploy:
340
+ if: ${{ github.repository_owner == 'xopt-org' }}
341
+ needs: build
342
+ runs-on: ubuntu-latest
343
+ name: "Deploy to GitHub Pages"
344
+
345
+ # Deploy to the github-pages environment
346
+ environment:
347
+ name: github-pages
348
+ url: ${{ steps.deployment.outputs.page_url }}
349
+
350
+ steps:
351
+ - name: Deploy to GitHub Pages
352
+ id: deployment
353
+ uses: actions/deploy-pages@v4
@@ -0,0 +1,64 @@
1
+ name: Lint
2
+ on:
3
+ pull_request:
4
+ workflow_dispatch:
5
+ push:
6
+
7
+ concurrency:
8
+ group: ${{ github.workflow }}-${{ github.event.pull_request.head.ref || github.ref_name }}
9
+ cancel-in-progress: true
10
+
11
+ jobs:
12
+ delete-cancelled-runs:
13
+ permissions:
14
+ actions: write
15
+ runs-on: 'ubuntu-latest'
16
+ steps:
17
+ - uses: 'MercuryTechnologies/delete-cancelled-runs@1.0.0'
18
+ with:
19
+ workflow-file: 'lint.yml'
20
+ max-deletions: 1
21
+
22
+ lint:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ with:
27
+ fetch-depth: 1
28
+
29
+ - name: Install uv
30
+ uses: astral-sh/setup-uv@v5
31
+ with:
32
+ enable-cache: true
33
+ cache-dependency-glob: "**/pyproject.toml"
34
+
35
+ - name: Set up Python ${{ matrix.python-version }}
36
+ run: uv python install ${{ matrix.python-version }}
37
+
38
+ - name: Install dependencies
39
+ run: uv sync --extra dev
40
+
41
+ - name: Install pre-commit
42
+ run: uv pip install pre-commit
43
+
44
+ - name: List Python package versions
45
+ run: uv pip list
46
+
47
+ - name: Run notebook clearing check first (no diff)
48
+ env:
49
+ RUFF_OUTPUT_FORMAT: github
50
+ run: |
51
+ uv run pre-commit run jupyter-notebook-clear-output --all-files
52
+
53
+ - name: Switch to a temporary branch
54
+ run: |
55
+ git checkout -b _ci_branch_
56
+
57
+ - name: Run pre-commit on all files
58
+ env:
59
+ RUFF_OUTPUT_FORMAT: github
60
+ run: |
61
+ uv run pre-commit run \
62
+ --show-diff-on-failure \
63
+ --color=always \
64
+ --all-files
@@ -0,0 +1,36 @@
1
+ name: Publish Python distributions to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ jobs:
8
+ build-n-publish:
9
+ if: ${{ github.repository == 'xopt-org/xopt' }}
10
+ name: Build and publish Python distributions to PyPI
11
+ runs-on: ubuntu-latest
12
+
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ with:
16
+ fetch-depth: 0
17
+ - name: Set up Python 3.11
18
+ uses: actions/setup-python@v1
19
+ with:
20
+ python-version: 3.11
21
+ - name: Install pypa/build
22
+ run: >-
23
+ python -m
24
+ pip install
25
+ build
26
+ --user
27
+ - name: Build a source tarball and wheel
28
+ run: >-
29
+ python -m
30
+ build
31
+ --outdir dist/
32
+ .
33
+ - name: Publish distribution to PyPI
34
+ uses: pypa/gh-action-pypi-publish@release/v1
35
+ with:
36
+ password: ${{ secrets.PYPI_API_TOKEN }}