Skip to content

feat(core) Implement parameter search functionality and dynamic API discovery#17

Merged
FrostyHec merged 4 commits intomainfrom
feature/param_search
Feb 10, 2026
Merged

feat(core) Implement parameter search functionality and dynamic API discovery#17
FrostyHec merged 4 commits intomainfrom
feature/param_search

Conversation

@FrostyHec
Copy link
Owner

@FrostyHec FrostyHec commented Feb 10, 2026

Description

This update introduces core components for parameter search, including utilities for PyTorch DataLoader optimization and built-in epoch implementations. It also enhances the public API exposure through dynamic API discovery and refactors existing code for improved structure.

Type of Change

  • feat: New feature
  • fix: Bug fix
  • docs: Documentation only
  • style: Code style (formatting, no functional change)
  • refactor: Code refactoring (no new feature, no bug fix)
  • perf: Performance improvement
  • test: Adding or updating tests
  • build: Build system or dependencies
  • ci: CI/CD configuration
  • chore: Other changes (maintenance, tooling)

Related Issues

Checklist

  • Code follows the project's style guidelines
  • Self-review of the code has been performed
  • Code comments have been added where necessary (English only)
  • Documentation has been updated (if applicable)
  • Tests have been added/updated
  • All tests pass locally (./scripts/check.sh)
  • No breaking changes (or documented in description)

Screenshots (if applicable)

Additional Notes

- Added core components for parameter search including ParamSearcher and SearchResult.
- Implemented exhaustive search using itertools.product for parameter combinations.
- Created built-in epoch implementations: simple_epoch and timed_epoch for metrics evaluation.
- Developed PyTorch-specific utilities for DataLoader parameter selection.
- Introduced utility classes for metrics collection and timing.
- Added decorators for marking public API entries.
- Implemented comprehensive tests for core functionality, epochs, analyzers, and utilities.
@github-actions
Copy link

github-actions bot commented Feb 10, 2026

✅ CI Test Results — Python 3.8

Metric Value
Tests 70
Passed ✅ 70
Duration 5.29s
Commit 31dcf66
Branch feature/param_search
✅ Passed Tests (70)
Test Time
tests.test__utils.test_api_discovery.TestApiDiscovery::test_discover_public_apis_from_tools 0.005s
tests.test__utils.test_api_discovery.TestApiDiscovery::test_get_public_api_names 0.004s
tests.test__utils.test_api_discovery.TestApiDiscovery::test_package_level_imports 0.001s
tests.test__utils.test_api_discovery.TestApiDiscovery::test_from_import_works 0.001s
tests.test__utils.test_api_discovery.TestApiDiscovery::test_all_exports_include_dynamic_apis 0.001s
tests.test__utils.test_utils.TestTimer::test_start_stop_returns_elapsed 0.051s
tests.test__utils.test_utils.TestTimer::test_multiple_laps 0.032s
tests.test__utils.test_utils.TestTimer::test_get_stats 0.011s
tests.test__utils.test_utils.TestTimer::test_stop_without_start_raises 0.001s
tests.test__utils.test_utils.TestTimer::test_reset 0.011s
tests.test__utils.test_utils.TestTimer::test_empty_stats 0.001s
tests.test__utils.test_utils.TestMetricsCollector::test_add_and_get_records 0.001s
tests.test__utils.test_utils.TestMetricsCollector::test_get_best_maximize 0.001s
tests.test__utils.test_utils.TestMetricsCollector::test_get_best_minimize 0.001s
tests.test__utils.test_utils.TestMetricsCollector::test_get_best_empty 0.001s
tests.test__utils.test_utils.TestMetricsCollector::test_get_best_missing_metric 0.001s
tests.test__utils.test_utils.TestMetricsCollector::test_to_list 0.001s
tests.test__utils.test_utils.TestMetricsCollector::test_clear 0.001s
tests.test__utils.test_utils.TestMetricsRecord::test_to_dict 0.001s
tests.test__utils.test_utils.TestPublicApiDecorator::test_marks_function 0.001s
tests.test__utils.test_utils.TestPublicApiDecorator::test_marks_class 0.001s
tests.test__utils.test_utils.TestPublicApiDecorator::test_preserves_behavior 0.001s
tests.test_tools.test_helloworld::test_hello_world 0.001s
tests.test_tools.test_helloworld::test_deep_solution_init 0.001s
tests.test_tools.test_helloworld::test_deep_solution_process 0.001s
tests.test_tools.test_helloworld::test_format_output_default 0.001s
tests.test_tools.test_helloworld::test_format_output_custom_prefix 0.001s
tests.test_tools.test_helloworld::test_format_output_various_types 0.001s
tests.test_tools.test_helloworld::test_public_api_decorator_applied 0.001s
tests.test_tools.test_parameter_search.test_core.TestParamSearcher::test_search_iterates_all_combinations 0.001s
tests.test_tools.test_parameter_search.test_core.TestParamSearcher::test_multi_epoch_aggregation 0.001s
tests.test_tools.test_parameter_search.test_core.TestParamSearcher::test_fixed_config_merged 0.001s
tests.test_tools.test_parameter_search.test_core.TestParamSearcher::test_cleanup_func_called 0.001s
tests.test_tools.test_parameter_search.test_core.TestParamSearcher::test_empty_search_space_raises 0.001s
tests.test_tools.test_parameter_search.test_core.TestParamSearcher::test_invalid_num_epochs_raises 0.001s
tests.test_tools.test_parameter_search.test_core.TestSearchResult::test_get_best_maximize 0.001s
tests.test_tools.test_parameter_search.test_core.TestSearchResult::test_get_best_minimize 0.001s
tests.test_tools.test_parameter_search.test_core.TestSearchResult::test_to_list 0.001s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestTimedEpoch::test_measures_throughput 0.001s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestTimedEpoch::test_invalid_repeats_raises 0.001s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestSimpleEpoch::test_passthrough 0.001s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestBestParamAnalyzer::test_finds_best_maximize 0.001s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestBestParamAnalyzer::test_finds_best_minimize 0.001s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestBestParamAnalyzer::test_all_values_returned 0.001s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestChartAnalyzer::test_generates_chart_file 2.312s
tests.test_tools.test_parameter_search.test_epochs_analyzers.TestChartAnalyzer::test_grouped_chart 0.332s
tests.test_tools.test_parameter_search.test_integration::test_version_check 0.001s
tests.test_tools.test_parameter_search.test_integration::test_top_level_imports 0.001s
tests.test_tools.test_parameter_search.test_integration::test_submodule_imports 0.001s
tests.test_tools.test_parameter_search.test_pytorch.TestDataLoaderParamSelector::test_finds_best_config 0.007s
tests.test_tools.test_parameter_search.test_pytorch.TestDataLoaderParamSelector::test_with_chart 0.342s
tests.test_tools.test_parameter_search.test_pytorch.TestDataLoaderParamSelector::test_fixed_params 0.003s
tests.test_tools.test_parameter_search.test_pytorch.TestDataLoaderParamSelector::test_search_result_accessible 0.004s
tests.test_tools.test_parameter_search.test_utils.TestTimer::test_start_stop_returns_elapsed 0.051s
tests.test_tools.test_parameter_search.test_utils.TestTimer::test_multiple_laps 0.031s
tests.test_tools.test_parameter_search.test_utils.TestTimer::test_get_stats 0.011s
tests.test_tools.test_parameter_search.test_utils.TestTimer::test_stop_without_start_raises 0.001s
tests.test_tools.test_parameter_search.test_utils.TestTimer::test_reset 0.011s
tests.test_tools.test_parameter_search.test_utils.TestTimer::test_empty_stats 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsCollector::test_add_and_get_records 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsCollector::test_get_best_maximize 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsCollector::test_get_best_minimize 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsCollector::test_get_best_empty 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsCollector::test_get_best_missing_metric 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsCollector::test_to_list 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsCollector::test_clear 0.001s
tests.test_tools.test_parameter_search.test_utils.TestMetricsRecord::test_to_dict 0.001s
tests.test_tools.test_parameter_search.test_utils.TestPublicApiDecorator::test_marks_function 0.001s
tests.test_tools.test_parameter_search.test_utils.TestPublicApiDecorator::test_marks_class 0.001s
tests.test_tools.test_parameter_search.test_utils.TestPublicApiDecorator::test_preserves_behavior 0.001s

View full CI run


🤖 This comment is automatically updated on each push.

@FrostyHec FrostyHec merged commit 3dcbd38 into main Feb 10, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant