holobench 1.27.0__tar.gz → 1.28.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 (123) hide show
  1. {holobench-1.27.0/holobench.egg-info → holobench-1.28.0}/PKG-INFO +4 -4
  2. {holobench-1.27.0 → holobench-1.28.0}/README.md +1 -1
  3. {holobench-1.27.0 → holobench-1.28.0}/bencher/bencher.py +48 -46
  4. {holobench-1.27.0 → holobench-1.28.0}/bencher/variables/parametrised_sweep.py +3 -1
  5. {holobench-1.27.0 → holobench-1.28.0/holobench.egg-info}/PKG-INFO +4 -4
  6. {holobench-1.27.0 → holobench-1.28.0}/holobench.egg-info/requires.txt +2 -2
  7. {holobench-1.27.0 → holobench-1.28.0}/pyproject.toml +11 -10
  8. {holobench-1.27.0 → holobench-1.28.0}/test/test_sweep_base.py +11 -0
  9. {holobench-1.27.0 → holobench-1.28.0}/LICENSE +0 -0
  10. {holobench-1.27.0 → holobench-1.28.0}/MANIFEST.in +0 -0
  11. {holobench-1.27.0 → holobench-1.28.0}/bencher/__init__.py +0 -0
  12. {holobench-1.27.0 → holobench-1.28.0}/bencher/bench_cfg.py +0 -0
  13. {holobench-1.27.0 → holobench-1.28.0}/bencher/bench_plot_server.py +0 -0
  14. {holobench-1.27.0 → holobench-1.28.0}/bencher/bench_report.py +0 -0
  15. {holobench-1.27.0 → holobench-1.28.0}/bencher/bench_runner.py +0 -0
  16. {holobench-1.27.0 → holobench-1.28.0}/bencher/caching.py +0 -0
  17. {holobench-1.27.0 → holobench-1.28.0}/bencher/class_enum.py +0 -0
  18. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/__init__.py +0 -0
  19. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/benchmark_data.py +0 -0
  20. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_all.py +0 -0
  21. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_categorical.py +0 -0
  22. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_composable_container.py +0 -0
  23. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_composable_container2.py +0 -0
  24. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_consts.py +0 -0
  25. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_custom_sweep.py +0 -0
  26. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_custom_sweep2.py +0 -0
  27. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_docs.py +0 -0
  28. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_filepath.py +0 -0
  29. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_float3D.py +0 -0
  30. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_float_cat.py +0 -0
  31. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_floats.py +0 -0
  32. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_floats2D.py +0 -0
  33. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_holosweep.py +0 -0
  34. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_holosweep_objects.py +0 -0
  35. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_holosweep_tap.py +0 -0
  36. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_image.py +0 -0
  37. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_levels.py +0 -0
  38. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_levels2.py +0 -0
  39. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_pareto.py +0 -0
  40. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_sample_cache.py +0 -0
  41. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_sample_cache_context.py +0 -0
  42. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_simple.py +0 -0
  43. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_simple_bool.py +0 -0
  44. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_simple_cat.py +0 -0
  45. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_simple_float.py +0 -0
  46. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_simple_float2d.py +0 -0
  47. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_strings.py +0 -0
  48. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_time_event.py +0 -0
  49. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_video.py +0 -0
  50. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/example_workflow.py +0 -0
  51. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_bokeh_plotly.py +0 -0
  52. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_hover_ex.py +0 -0
  53. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_hvplot_explorer.py +0 -0
  54. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_interactive.py +0 -0
  55. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_streamnd.py +0 -0
  56. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_streams.py +0 -0
  57. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_template.py +0 -0
  58. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_updates.py +0 -0
  59. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/experimental/example_vector.py +0 -0
  60. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/meta/example_meta.py +0 -0
  61. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/meta/example_meta_cat.py +0 -0
  62. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/meta/example_meta_float.py +0 -0
  63. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/meta/example_meta_levels.py +0 -0
  64. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/optuna/example_optuna.py +0 -0
  65. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/shelved/example_float2D_scatter.py +0 -0
  66. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/shelved/example_float3D_cone.py +0 -0
  67. {holobench-1.27.0 → holobench-1.28.0}/bencher/example/shelved/example_kwargs.py +0 -0
  68. {holobench-1.27.0 → holobench-1.28.0}/bencher/job.py +0 -0
  69. {holobench-1.27.0 → holobench-1.28.0}/bencher/optuna_conversions.py +0 -0
  70. {holobench-1.27.0 → holobench-1.28.0}/bencher/plotting/__init__.py +0 -0
  71. {holobench-1.27.0 → holobench-1.28.0}/bencher/plotting/plot_filter.py +0 -0
  72. {holobench-1.27.0 → holobench-1.28.0}/bencher/plotting/plt_cnt_cfg.py +0 -0
  73. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/__init__.py +0 -0
  74. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/bench_result.py +0 -0
  75. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/bench_result_base.py +0 -0
  76. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/composable_container/__init__.py +0 -0
  77. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/composable_container/composable_container_base.py +0 -0
  78. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/composable_container/composable_container_panel.py +0 -0
  79. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/composable_container/composable_container_video.py +0 -0
  80. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/float_formatter.py +0 -0
  81. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/holoview_result.py +0 -0
  82. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/optuna_result.py +0 -0
  83. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/panel_result.py +0 -0
  84. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/plotly_result.py +0 -0
  85. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/video_result.py +0 -0
  86. {holobench-1.27.0 → holobench-1.28.0}/bencher/results/video_summary.py +0 -0
  87. {holobench-1.27.0 → holobench-1.28.0}/bencher/utils.py +0 -0
  88. {holobench-1.27.0 → holobench-1.28.0}/bencher/variables/__init__.py +0 -0
  89. {holobench-1.27.0 → holobench-1.28.0}/bencher/variables/inputs.py +0 -0
  90. {holobench-1.27.0 → holobench-1.28.0}/bencher/variables/results.py +0 -0
  91. {holobench-1.27.0 → holobench-1.28.0}/bencher/variables/sweep_base.py +0 -0
  92. {holobench-1.27.0 → holobench-1.28.0}/bencher/variables/time.py +0 -0
  93. {holobench-1.27.0 → holobench-1.28.0}/bencher/video_writer.py +0 -0
  94. {holobench-1.27.0 → holobench-1.28.0}/bencher/worker_job.py +0 -0
  95. {holobench-1.27.0 → holobench-1.28.0}/holobench.egg-info/SOURCES.txt +0 -0
  96. {holobench-1.27.0 → holobench-1.28.0}/holobench.egg-info/dependency_links.txt +0 -0
  97. {holobench-1.27.0 → holobench-1.28.0}/holobench.egg-info/not-zip-safe +0 -0
  98. {holobench-1.27.0 → holobench-1.28.0}/holobench.egg-info/top_level.txt +0 -0
  99. {holobench-1.27.0 → holobench-1.28.0}/package.xml +0 -0
  100. {holobench-1.27.0 → holobench-1.28.0}/resource/bencher +0 -0
  101. {holobench-1.27.0 → holobench-1.28.0}/setup.cfg +0 -0
  102. {holobench-1.27.0 → holobench-1.28.0}/setup.py +0 -0
  103. {holobench-1.27.0 → holobench-1.28.0}/test/test_bch_p.py +0 -0
  104. {holobench-1.27.0 → holobench-1.28.0}/test/test_bench_examples.py +0 -0
  105. {holobench-1.27.0 → holobench-1.28.0}/test/test_bench_report.py +0 -0
  106. {holobench-1.27.0 → holobench-1.28.0}/test/test_bench_result_base.py +0 -0
  107. {holobench-1.27.0 → holobench-1.28.0}/test/test_bench_runner.py +0 -0
  108. {holobench-1.27.0 → holobench-1.28.0}/test/test_bencher.py +0 -0
  109. {holobench-1.27.0 → holobench-1.28.0}/test/test_cache.py +0 -0
  110. {holobench-1.27.0 → holobench-1.28.0}/test/test_class_enum.py +0 -0
  111. {holobench-1.27.0 → holobench-1.28.0}/test/test_combinations.py +0 -0
  112. {holobench-1.27.0 → holobench-1.28.0}/test/test_composable_container_base.py +0 -0
  113. {holobench-1.27.0 → holobench-1.28.0}/test/test_composable_container_video.py +0 -0
  114. {holobench-1.27.0 → holobench-1.28.0}/test/test_float_formatter.py +0 -0
  115. {holobench-1.27.0 → holobench-1.28.0}/test/test_job.py +0 -0
  116. {holobench-1.27.0 → holobench-1.28.0}/test/test_meta_tests.py +0 -0
  117. {holobench-1.27.0 → holobench-1.28.0}/test/test_parametrized_sweep.py +0 -0
  118. {holobench-1.27.0 → holobench-1.28.0}/test/test_plot_filter.py +0 -0
  119. {holobench-1.27.0 → holobench-1.28.0}/test/test_plot_server.py +0 -0
  120. {holobench-1.27.0 → holobench-1.28.0}/test/test_sample_cache.py +0 -0
  121. {holobench-1.27.0 → holobench-1.28.0}/test/test_sweep_vars.py +0 -0
  122. {holobench-1.27.0 → holobench-1.28.0}/test/test_utils.py +0 -0
  123. {holobench-1.27.0 → holobench-1.28.0}/test/test_vars.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: holobench
3
- Version: 1.27.0
3
+ Version: 1.28.0
4
4
  Summary: A package for benchmarking the performance of arbitrary functions
5
5
  Author-email: Austin Gregg-Smith <blooop@gmail.com>
6
6
  Project-URL: Repository, https://github.com/dyson-ai/bencher
@@ -9,7 +9,7 @@ Project-URL: Documentation, https://bencher.readthedocs.io/en/latest/
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
11
  Requires-Dist: holoviews<=1.19.0,>=1.15
12
- Requires-Dist: numpy<=1.26.4,>=1.0
12
+ Requires-Dist: numpy<=2.0.0,>=1.0
13
13
  Requires-Dist: param<=2.1.0,>=1.13.0
14
14
  Requires-Dist: hvplot<=0.10.0,>=0.8
15
15
  Requires-Dist: matplotlib<=3.9.0,>=3.6.3
@@ -31,7 +31,7 @@ Requires-Dist: pylint<=3.2.3,>=2.17.7; extra == "test"
31
31
  Requires-Dist: pytest-cov<=5.0.0,>=4.1; extra == "test"
32
32
  Requires-Dist: pytest<=8.2.2,>=7.4; extra == "test"
33
33
  Requires-Dist: hypothesis<=6.103.2,>=6.82; extra == "test"
34
- Requires-Dist: ruff<=0.4.9,>=0.0.280; extra == "test"
34
+ Requires-Dist: ruff<=0.4.10,>=0.0.280; extra == "test"
35
35
  Requires-Dist: coverage<=7.5.3,>=7.2.7; extra == "test"
36
36
 
37
37
  # Bencher
@@ -90,4 +90,4 @@ Bencher is designed to work with stochastic pure functions with no side effects.
90
90
 
91
91
  ### Example Output
92
92
 
93
- https://dyson-ai.github.io/bencher/
93
+ https://dyson-ai.github.io/bencher/
@@ -54,4 +54,4 @@ Bencher is designed to work with stochastic pure functions with no side effects.
54
54
 
55
55
  ### Example Output
56
56
 
57
- https://dyson-ai.github.io/bencher/
57
+ https://dyson-ai.github.io/bencher/
@@ -280,40 +280,42 @@ class Bench(BenchPlotServer):
280
280
  BenchResult: A class with all the data used to generate the results and the results
281
281
  """
282
282
 
283
+ input_vars_in = deepcopy(input_vars)
284
+ result_vars_in = deepcopy(result_vars)
285
+ const_vars_in = deepcopy(const_vars)
286
+
283
287
  if self.worker_class_instance is not None:
284
- if input_vars is None:
288
+ if input_vars_in is None:
285
289
  logging.info(
286
290
  "No input variables passed, using all param variables in bench class as inputs"
287
291
  )
288
292
  if self.input_vars is None:
289
- input_vars = self.worker_class_instance.get_inputs_only()
293
+ input_vars_in = self.worker_class_instance.get_inputs_only()
290
294
  else:
291
- input_vars = self.input_vars
292
- for i in input_vars:
295
+ input_vars_in = deepcopy(self.input_vars)
296
+ for i in input_vars_in:
293
297
  logging.info(f"input var: {i.name}")
294
- if result_vars is None:
298
+ if result_vars_in is None:
295
299
  logging.info(
296
300
  "No results variables passed, using all result variables in bench class:"
297
301
  )
298
302
  if self.result_vars is None:
299
- result_vars = self.worker_class_instance.get_results_only()
303
+ result_vars_in = self.worker_class_instance.get_results_only()
300
304
  else:
301
- result_vars = self.result_vars
305
+ result_vars_in = deepcopy(self.result_vars)
302
306
 
303
- if const_vars is None:
307
+ if const_vars_in is None:
304
308
  if self.const_vars is None:
305
- const_vars = self.worker_class_instance.get_input_defaults()
309
+ const_vars_in = self.worker_class_instance.get_input_defaults()
306
310
  else:
307
- const_vars = self.const_vars
311
+ const_vars_in = deepcopy(self.const_vars)
308
312
  else:
309
- if input_vars is None:
310
- input_vars = []
311
- if result_vars is None:
312
- result_vars = []
313
- if const_vars is None:
314
- const_vars = []
315
- else:
316
- const_vars = deepcopy(const_vars)
313
+ if input_vars_in is None:
314
+ input_vars_in = []
315
+ if result_vars_in is None:
316
+ result_vars_in = []
317
+ if const_vars_in is None:
318
+ const_vars_in = []
317
319
 
318
320
  if run_cfg is None:
319
321
  if self.run_cfg is None:
@@ -328,9 +330,9 @@ class Bench(BenchPlotServer):
328
330
 
329
331
  self.last_run_cfg = run_cfg
330
332
 
331
- if isinstance(input_vars, dict):
333
+ if isinstance(input_vars_in, dict):
332
334
  input_lists = []
333
- for k, v in input_vars.items():
335
+ for k, v in input_vars_in.items():
334
336
  param_var = self.convert_vars_to_params(k, "input", run_cfg)
335
337
  if isinstance(v, list):
336
338
  assert len(v) > 0
@@ -340,56 +342,56 @@ class Bench(BenchPlotServer):
340
342
  raise RuntimeError("Unsupported type")
341
343
  input_lists.append(param_var)
342
344
 
343
- input_vars = input_lists
345
+ input_vars_in = input_lists
344
346
  else:
345
- for i in range(len(input_vars)):
346
- input_vars[i] = self.convert_vars_to_params(input_vars[i], "input", run_cfg)
347
- for i in range(len(result_vars)):
348
- result_vars[i] = self.convert_vars_to_params(result_vars[i], "result", run_cfg)
347
+ for i in range(len(input_vars_in)):
348
+ input_vars_in[i] = self.convert_vars_to_params(input_vars_in[i], "input", run_cfg)
349
+ for i in range(len(result_vars_in)):
350
+ result_vars_in[i] = self.convert_vars_to_params(result_vars_in[i], "result", run_cfg)
349
351
 
350
- for r in result_vars:
352
+ for r in result_vars_in:
351
353
  logging.info(f"result var: {r.name}")
352
354
 
353
- if isinstance(const_vars, dict):
354
- const_vars = list(const_vars.items())
355
+ if isinstance(const_vars_in, dict):
356
+ const_vars_in = list(const_vars_in.items())
355
357
 
356
- for i in range(len(const_vars)):
358
+ for i in range(len(const_vars_in)):
357
359
  # consts come as tuple pairs
358
- cv_list = list(const_vars[i])
360
+ cv_list = list(const_vars_in[i])
359
361
  cv_list[0] = self.convert_vars_to_params(cv_list[0], "const", run_cfg)
360
- const_vars[i] = cv_list
362
+ const_vars_in[i] = cv_list
361
363
 
362
364
  if title is None:
363
- if len(input_vars) > 0:
364
- title = "Sweeping " + " vs ".join([i.name for i in input_vars])
365
- elif len(const_vars) > 0:
365
+ if len(input_vars_in) > 0:
366
+ title = "Sweeping " + " vs ".join([i.name for i in input_vars_in])
367
+ elif len(const_vars_in) > 0:
366
368
  title = "Constant Value"
367
- if len(const_vars) > 1:
369
+ if len(const_vars_in) > 1:
368
370
  title += "s"
369
- title += ": " + ", ".join([f"{c[0].name}={c[1]}" for c in const_vars])
371
+ title += ": " + ", ".join([f"{c[0].name}={c[1]}" for c in const_vars_in])
370
372
  else:
371
373
  raise RuntimeError("you must pass a title, or define inputs or consts")
372
374
 
373
375
  if run_cfg.level > 0:
374
376
  inputs = []
375
- print(input_vars)
376
- if len(input_vars) > 0:
377
- for i in input_vars:
377
+ print(input_vars_in)
378
+ if len(input_vars_in) > 0:
379
+ for i in input_vars_in:
378
380
  inputs.append(i.with_level(run_cfg.level))
379
- input_vars = inputs
381
+ input_vars_in = inputs
380
382
 
381
383
  # if any of the inputs have been include as constants, remove those variables from the list of constants
382
384
  with suppress(ValueError, AttributeError):
383
- for i in input_vars:
384
- for c in const_vars:
385
+ for i in input_vars_in:
386
+ for c in const_vars_in:
385
387
  # print(i.hash_persistent())
386
388
  if i.name == c[0].name:
387
- const_vars.remove(c)
389
+ const_vars_in.remove(c)
388
390
  logging.info(f"removing {i.name} from constants")
389
391
 
390
392
  result_hmaps = []
391
393
  result_vars_only = []
392
- for i in result_vars:
394
+ for i in result_vars_in:
393
395
  if isinstance(i, ResultHmap):
394
396
  result_hmaps.append(i)
395
397
  else:
@@ -409,10 +411,10 @@ class Bench(BenchPlotServer):
409
411
  plot_callbacks = [BenchResult.to_auto_plots] if plot_callbacks else []
410
412
 
411
413
  bench_cfg = BenchCfg(
412
- input_vars=input_vars,
414
+ input_vars=input_vars_in,
413
415
  result_vars=result_vars_only,
414
416
  result_hmaps=result_hmaps,
415
- const_vars=const_vars,
417
+ const_vars=const_vars_in,
416
418
  bench_name=self.bench_name,
417
419
  description=description,
418
420
  post_description=post_description,
@@ -7,6 +7,7 @@ import panel as pn
7
7
 
8
8
  from bencher.utils import make_namedtuple, hash_sha1
9
9
  from bencher.variables.results import ALL_RESULT_TYPES, ResultHmap
10
+ from bencher.bench_cfg import BenchRunCfg
10
11
 
11
12
 
12
13
  class ParametrizedSweep(Parameterized):
@@ -197,7 +198,8 @@ class ParametrizedSweep(Parameterized):
197
198
  def plot_hmap(self, **kwargs):
198
199
  return self.__call__(**kwargs)["hmap"]
199
200
 
200
- def to_bench(self, run_cfg=None, report=None, name: str = None):
201
+ # TODO Add type hints here and fix the circular imports
202
+ def to_bench(self, run_cfg: BenchRunCfg = None, report=None, name: str = None):
201
203
  from bencher import Bench
202
204
 
203
205
  assert isinstance(self, ParametrizedSweep)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: holobench
3
- Version: 1.27.0
3
+ Version: 1.28.0
4
4
  Summary: A package for benchmarking the performance of arbitrary functions
5
5
  Author-email: Austin Gregg-Smith <blooop@gmail.com>
6
6
  Project-URL: Repository, https://github.com/dyson-ai/bencher
@@ -9,7 +9,7 @@ Project-URL: Documentation, https://bencher.readthedocs.io/en/latest/
9
9
  Description-Content-Type: text/markdown
10
10
  License-File: LICENSE
11
11
  Requires-Dist: holoviews<=1.19.0,>=1.15
12
- Requires-Dist: numpy<=1.26.4,>=1.0
12
+ Requires-Dist: numpy<=2.0.0,>=1.0
13
13
  Requires-Dist: param<=2.1.0,>=1.13.0
14
14
  Requires-Dist: hvplot<=0.10.0,>=0.8
15
15
  Requires-Dist: matplotlib<=3.9.0,>=3.6.3
@@ -31,7 +31,7 @@ Requires-Dist: pylint<=3.2.3,>=2.17.7; extra == "test"
31
31
  Requires-Dist: pytest-cov<=5.0.0,>=4.1; extra == "test"
32
32
  Requires-Dist: pytest<=8.2.2,>=7.4; extra == "test"
33
33
  Requires-Dist: hypothesis<=6.103.2,>=6.82; extra == "test"
34
- Requires-Dist: ruff<=0.4.9,>=0.0.280; extra == "test"
34
+ Requires-Dist: ruff<=0.4.10,>=0.0.280; extra == "test"
35
35
  Requires-Dist: coverage<=7.5.3,>=7.2.7; extra == "test"
36
36
 
37
37
  # Bencher
@@ -90,4 +90,4 @@ Bencher is designed to work with stochastic pure functions with no side effects.
90
90
 
91
91
  ### Example Output
92
92
 
93
- https://dyson-ai.github.io/bencher/
93
+ https://dyson-ai.github.io/bencher/
@@ -1,5 +1,5 @@
1
1
  holoviews<=1.19.0,>=1.15
2
- numpy<=1.26.4,>=1.0
2
+ numpy<=2.0.0,>=1.0
3
3
  param<=2.1.0,>=1.13.0
4
4
  hvplot<=0.10.0,>=0.8
5
5
  matplotlib<=3.9.0,>=3.6.3
@@ -22,5 +22,5 @@ pylint<=3.2.3,>=2.17.7
22
22
  pytest-cov<=5.0.0,>=4.1
23
23
  pytest<=8.2.2,>=7.4
24
24
  hypothesis<=6.103.2,>=6.82
25
- ruff<=0.4.9,>=0.0.280
25
+ ruff<=0.4.10,>=0.0.280
26
26
  coverage<=7.5.3,>=7.2.7
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "holobench"
3
- version = "1.27.0"
3
+ version = "1.28.0"
4
4
 
5
5
  authors = [{ name = "Austin Gregg-Smith", email = "blooop@gmail.com" }]
6
6
  description = "A package for benchmarking the performance of arbitrary functions"
@@ -8,7 +8,7 @@ readme = "README.md"
8
8
 
9
9
  dependencies = [
10
10
  "holoviews>=1.15,<=1.19.0",
11
- "numpy>=1.0,<=1.26.4",
11
+ "numpy>=1.0,<=2.0.0",
12
12
  "param>=1.13.0,<=2.1.0",
13
13
  "hvplot>=0.8,<=0.10.0",
14
14
  "matplotlib>=3.6.3,<=3.9.0",
@@ -49,7 +49,7 @@ test = [
49
49
  "pytest-cov>=4.1,<=5.0.0",
50
50
  "pytest>=7.4,<=8.2.2",
51
51
  "hypothesis>=6.82,<=6.103.2",
52
- "ruff>=0.0.280,<=0.4.9",
52
+ "ruff>=0.0.280,<=0.4.10",
53
53
  "coverage>=7.2.7,<=7.5.3",
54
54
  ]
55
55
 
@@ -67,9 +67,9 @@ include = ["bencher"]
67
67
 
68
68
  # Environments
69
69
  [tool.pixi.environments]
70
- default = {features = ["test"], solve-group = "default" }
71
- py310 = ["py310","test"]
72
- py311 = ["py311","test"]
70
+ default = { features = ["test"], solve-group = "default" }
71
+ py310 = ["py310", "test"]
72
+ py311 = ["py311", "test"]
73
73
 
74
74
  [tool.pixi.tasks]
75
75
  format = "black ."
@@ -78,16 +78,15 @@ ruff-lint = "ruff check . --fix"
78
78
  pylint = "pylint --version && echo 'running pylint...' && pylint $(git ls-files '*.py')"
79
79
  lint = { depends_on = ["ruff-lint", "pylint"] }
80
80
  style = { depends_on = ["format", "lint"] }
81
- commit-format = "git commit -a -m'autoformat code'"
81
+ commit-format = "git commit -a -m'autoformat code' || true"
82
82
  test = "pytest"
83
83
  coverage = "coverage run -m pytest && coverage xml -o coverage.xml"
84
84
  coverage-report = "coverage report -m"
85
- update-lock = "pixi update && git commit -a -m'update pixi.lock'"
86
- fix = { depends_on = ["update-lock", "format", "ruff-lint"] }
85
+ update-lock = "pixi update && git commit -a -m'update pixi.lock' || true"
87
86
  push = "git push"
88
87
  update-lock-push = { depends_on = ["update-lock", "push"] }
88
+ fix = { depends_on = ["update-lock", "format", "ruff-lint"] }
89
89
  fix-commit-push = { depends_on = ["fix", "commit-format", "update-lock-push"] }
90
-
91
90
  ci-no-cover = { depends_on = ["style", "test"] }
92
91
  ci = { depends_on = [
93
92
  "format",
@@ -99,6 +98,8 @@ ci = { depends_on = [
99
98
  ] }
100
99
  ci-push = { depends_on = ["format", "ruff-lint", "update-lock", "ci", "push"] }
101
100
  clear-pixi = "rm -rf .pixi pixi.lock"
101
+ setup-git-merge-driver = "git config merge.ours.driver true"
102
+ update-from-template-repo = "./scripts/update_from_template.sh"
102
103
 
103
104
  [tool.pylint]
104
105
  extension-pkg-whitelist = ["numpy", "scipy"]
@@ -96,6 +96,17 @@ class TestSweepBase(unittest.TestCase):
96
96
  instance_defaults = exp.get_input_defaults([exp.param.var_float.with_const(2)])
97
97
  self.assertEqual(instance_defaults[0][1], 2)
98
98
 
99
+ def test_default_values_override(self):
100
+
101
+ initial = AllSweepVars.get_input_defaults()
102
+
103
+ overrride_defaults = AllSweepVars.get_input_defaults_override()
104
+ override = AllSweepVars.get_input_defaults_override(var_float=1)
105
+ after = AllSweepVars.get_input_defaults()
106
+
107
+ self.assertListEqual(initial, after)
108
+ self.assertNotEqual(override, overrride_defaults)
109
+
99
110
  def test_with_sample_values(self):
100
111
  vals = AllSweepVars.param.var_float.with_sample_values([0, 1]).values()
101
112
  self.assertEqual(vals[0], 0)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes