A framework for building and running benchmarks.
-
0.8.0-alpha.0 2025-12-2
- Implemented auto-calibration of rounds
- Added timers module for measuring overhead and precision of timers
- Implemented auto-calibration of number of rounds by default
- Fixed major bugs in timing measurements
- Was incorrectly dividing total time for an interation by number of rounds twice
- Was incorrectly adjusting for effect of rounds on std deviation calculation
- Refactored utils module into separate files
- Implemented auto-calibration of rounds
-
0.7.0-alpha.0 2025-12-1
- Added configuration options for the timer used by benchmarking code.
- Enhanced the documentation for the Matplotlib theme class to include external links to the Matplotlib API.
- Added a note in the installation guide regarding the size impact of installing optional dependencies for graphs.
- Refactored the ScatterPlotReporter class method name for clarity.
- Adjusted the
pyproject.tomlto properly define optional dependencies for Matplotlib, Pandas, and Seaborn.
-
0.6.1-alpha.0 2025-12-1
- Fix for failed imports related to optional [graphs] dependencies in default install
-
0.6.0-alpha.0 2025-12-1
- Splitting of pypi install groups
- default - all reporters except graph reporters
- graph - add graph reporters to default install
- all - all reporters including graph reporters
- Splitting of pypi install groups
-
0.5.1-alpha.0 2025-11-30
- Documentation updates
-
0.5.0-alpha.0 2025-11-30
- Extended CSVReporter and RichTableReporter to allow customization of output columns using options.
- Added checked support for explict parameters in benchmark functions.
- Completed documentation for parameterized benchmarks.
-
0.4.1-alpha.0 2025-11-29 - Seventh alpha release
- Documentation Update
- Migration of README to .rst format
- Addition of doctest support
- Creation of first tutorials
- Documentation Update
-
0.4.0-alpha.0 2025-11-27 - Sixth alpha release
- Major Refactoring of Command-Line Interface (
cli.py):- The main CLI logic has been significantly refactored for improved structure, robustness, and readability.
- The
main()function is now a high-level orchestrator, with argument parsing and session configuration moved into dedicated helper functions (_create_parser,_configure_session_from_args). - Implemented a robust
try...except...finallypattern using afinal_messagevariable. This ensures that terminal UI cleanup (e.g., stopping progress bars) always happens correctly before printing final error messages, preventing visual glitches. - The
argparsesetup now usesadd_mutually_exclusive_groupto properly handle conflicting verbosity flags (--quiet,--verbose,--debug).
- Improved Exception Handling:
- Added a new
SimpleBenchBenchmarkErrorand a correspondingBENCHMARK_ERRORexit code to specifically handle and report exceptions that occur during the execution of a benchmark function itself. - The
Session.run()method now wraps benchmark execution to catch these errors. - The CLI now explicitly catches
SimpleBenchTimeoutErrorandSimpleBenchBenchmarkErrorto provide more specific feedback and exit codes to the user.
- Added a new
- API and Code Organization:
- The
enumsmodule was split into separate files for each enumeration (e.g.,ExitCode,Verbosity), improving code organization. - The
add_reporter_flags()method inSessionis now called automatically byparse_args(), simplifying the API for programmatic use. - Removed the unused
groupargument from the internalgenerate_benchmark_id()function. - Removed the
section_mean()method fromCaseand themean_change()method fromJSONReporteras being garbage metrics that should not exist.
- The
- Documentation:
- Improved the visual styling of parameter lists in the Sphinx documentation for better readability.
- Customized 'furo' theme for improved UX.
- Added and improved module-level and function docstrings for clarity.
- Licensing:
- Updated
pyproject.tomlto use the modern SPDX license identifier (Apache-2.0).
- Updated
- Testing:
- Added new unit tests for the
Session.report_keys()method. - Added new unit tests for the
Session.add_reporter_flags()method.
- Added new unit tests for the
- Major Refactoring of Command-Line Interface (
-
0.3.1-alpha.0 2025-11-25 - Fifth alpha release
- Fixed bug in rich tables report caused by switch to floats for 'n' complexity weights
- Switched to a furo derived theme for Sphinx documentation
-
0.3.0-alpha.0 2025-11-24 - Fourth alpha release
- Added enforced timeouts for benchmark runs
- Updated 'n' complexity handling to allow floats as well as int
- Changed 'progress' init parameter for Session() to 'show_progress'
-
0.2.1-alpha.0 2025-11-23 - Third alpha release
- Changed _report_log format to use 'benchmark_id', 'benchmark_title', and 'benchmark_group'
- Fixed oversharing issue with building tarball in dist
-
0.2.0-alpha.0 2025-11-23 - Second alpha release
- Added support for tracking git commits and stable case_ids.
- Added JSON structured _report_log for filesystem reports.
- Restructured filesystem output directory
- Added benchmark environment to _report_log entries
-
0.1.0-alpha.0 2025-11-21 - First public release to PyPI. First alpha release.