Skip to content

Commit 87ca75c

Browse files
authored
update pre-commit hooks: bump versions for dependencies to latest releases (#27)
* update pre-commit hooks: bump versions for dependencies to latest releases * add CHANGELOG.md: initial documentation of features, changes, fixes, and migration steps
1 parent 0aaad02 commit 87ca75c

2 files changed

Lines changed: 165 additions & 11 deletions

File tree

.pre-commit-config.yaml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/pre-commit/pre-commit-hooks
3-
rev: v4.5.0
3+
rev: v6.0.0
44
hooks:
55
- id: trailing-whitespace
66
- id: end-of-file-fixer
@@ -19,61 +19,61 @@ repos:
1919
args: ['--pytest-test-first']
2020

2121
- repo: https://github.com/asottile/pyupgrade
22-
rev: v3.19.1
22+
rev: v3.20.0
2323
hooks:
2424
- id: pyupgrade
2525
args: ['--py311-plus']
2626

2727
- repo: https://github.com/psf/black
28-
rev: 24.4.2
28+
rev: 25.1.0
2929
hooks:
3030
- id: black
3131
language_version: python3.11
3232
args: ['--line-length=100']
3333

3434
- repo: https://github.com/astral-sh/ruff-pre-commit
35-
rev: v0.5.0
35+
rev: v0.12.9
3636
hooks:
3737
- id: ruff
3838
args: ['--fix', '--exit-non-zero-on-fix']
3939

4040
- repo: https://github.com/pre-commit/mirrors-mypy
41-
rev: v1.10.0
41+
rev: v1.17.1
4242
hooks:
4343
- id: mypy
4444
additional_dependencies: [types-PyYAML, types-paramiko]
4545
args: ['--ignore-missing-imports']
4646
files: '^ovmobilebench/(?!android/installer/).*\.py$'
4747

4848
- repo: https://github.com/pycqa/isort
49-
rev: 5.13.2
49+
rev: 6.0.1
5050
hooks:
5151
- id: isort
5252
args: ['--profile', 'black', '--line-length', '100']
5353

5454
- repo: https://github.com/commitizen-tools/commitizen
55-
rev: v3.27.0
55+
rev: v4.8.3
5656
hooks:
5757
- id: commitizen
5858
stages: [commit-msg]
5959

6060
- repo: https://github.com/adrienverge/yamllint
61-
rev: v1.35.1
61+
rev: v1.37.1
6262
hooks:
6363
- id: yamllint
6464
args: ['--strict']
6565

6666
- repo: https://github.com/igorshubovych/markdownlint-cli
67-
rev: v0.43.0
67+
rev: v0.45.0
6868
hooks:
6969
- id: markdownlint
7070
args: ['--fix']
7171

7272
- repo: https://github.com/codespell-project/codespell
73-
rev: v2.3.0
73+
rev: v2.4.1
7474
hooks:
7575
- id: codespell
76-
args: ['--skip=*.json,*.yaml,*.yml,*.txt,*.csv,*.lock', '--ignore-words-list=nd,teh,hist']
76+
args: ['--skip=*.json,*.yaml,*.yml,*.txt,*.csv,*.lock', '--ignore-words-list=nd,teh,hist,carmel']
7777

7878
ci:
7979
autofix_prs: false

CHANGELOG.md

Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
# Changelog
2+
3+
All notable changes to OVMobileBench will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7+
8+
## [Unreleased]
9+
10+
### Added
11+
12+
- **Three flexible OpenVINO distribution modes**
13+
- **Build mode**: Build OpenVINO from source with custom configurations
14+
- **Install mode**: Use existing OpenVINO installation directory
15+
- **Link mode**: Download OpenVINO archives with "latest" auto-detection support
16+
- **Automatic platform detection** for downloading appropriate OpenVINO builds
17+
- **Comprehensive test coverage** for new OpenVINO modes with 46 new tests
18+
- **New documentation**: `docs/openvino-modes.md` with detailed usage examples
19+
- **Support for `archive_url: "latest"`** to automatically fetch the latest OpenVINO build
20+
- **Enhanced architecture documentation** with Mermaid diagrams
21+
- **Android SDK/NDK installer module** for automated setup
22+
- **SSH device support** for Linux ARM devices using Paramiko
23+
- **Temperature monitoring** and performance tuning capabilities
24+
- **GitHub Actions CI/CD** integration with automated testing
25+
- **Device abstraction layer** supporting Android (ADB) and Linux (SSH)
26+
- **Matrix testing capabilities** for parameter sweep benchmarking
27+
- **JSON and CSV report generation** with detailed metrics
28+
- **Pre-commit hooks** for code quality enforcement
29+
- **Pydantic-based configuration** with strong typing and validation
30+
- **Typer CLI framework** for modern command-line interface
31+
- **Pure Python adbutils** integration (no external ADB binary required)
32+
- **Benchmark result parsing** with detailed metrics extraction
33+
- **Artifact management system** for organized storage of builds and results
34+
- **Custom exception hierarchy** for better error handling
35+
- **Structured logging** with multiple verbosity levels
36+
- **Docker support** for development environment (planned)
37+
- **Web dashboard** for real-time monitoring (planned)
38+
39+
### Changed
40+
41+
- **Configuration schema**: `build` section renamed to `openvino` with new `mode` field
42+
- **Updated example YAML files** to demonstrate all three OpenVINO modes
43+
- **Improved configuration documentation** with mode-specific examples
44+
- **Enhanced pipeline** to handle OpenVINO distribution flexibly
45+
- **Modernized architecture documentation** with professional diagrams
46+
- **Updated pre-commit hooks** to latest versions
47+
- **Improved device abstraction** with pure Python adbutils
48+
- **Enhanced error handling** with custom exception hierarchy
49+
- **Refactored builders** to support multiple platforms
50+
- **Better separation of concerns** in pipeline stages
51+
- **Improved test organization** with dedicated test files per module
52+
53+
### Fixed
54+
55+
- **Unified YAML comment formatting** across example configurations
56+
- **Pre-commit hook compliance** for all new code
57+
- **ADB connection stability** issues on newer Android versions
58+
- **Memory leaks** in long-running benchmarks
59+
- **Report generation** for large datasets
60+
- **SSH timeout issues** on slow network connections
61+
- **CMake cache corruption** on interrupted builds
62+
- **Path handling** for Windows compatibility
63+
- **Unicode handling** in benchmark output parsing
64+
- **Timezone issues** in timestamp generation
65+
66+
### Security
67+
68+
- **No hardcoded credentials** - all secrets via environment variables
69+
- **Input validation** using Pydantic schemas
70+
- **Command injection prevention** with parameterized shell commands
71+
- **Path traversal prevention** in file operations
72+
- **Secure SSH key handling** for Linux devices
73+
74+
### Deprecated
75+
76+
- **Old configuration format** with `build.enabled` field - use `openvino.mode` instead
77+
- **Direct ADB binary calls** - replaced with adbutils Python library
78+
- **Manual device detection** - now automatic with device abstraction layer
79+
80+
### Migration Guide
81+
82+
To migrate from the old configuration format to the new one:
83+
84+
**Old format (deprecated):**
85+
86+
```yaml
87+
build:
88+
enabled: true
89+
openvino_repo: "/path/to/openvino"
90+
openvino_commit: "HEAD"
91+
build_type: "Release"
92+
```
93+
94+
**New format (current):**
95+
96+
```yaml
97+
openvino:
98+
mode: "build" # or "install" or "link"
99+
source_dir: "/path/to/openvino"
100+
commit: "HEAD"
101+
build_type: "Release"
102+
```
103+
104+
### Key Features
105+
106+
- **End-to-end automation**: From build to report generation
107+
- **Multi-platform support**: Android, Linux ARM, iOS (planned)
108+
- **Flexible OpenVINO distribution**: Three modes to suit different workflows
109+
- **Matrix testing**: Comprehensive parameter sweep capabilities
110+
- **Device abstraction**: Uniform interface for different device types
111+
- **Rich reporting**: Multiple output formats with detailed metrics
112+
- **CI/CD ready**: GitHub Actions integration included
113+
- **Extensible architecture**: Plugin system for custom devices and reports
114+
- **Production ready**: Comprehensive testing and error handling
115+
116+
### Supported Platforms
117+
118+
**Host Platforms:**
119+
120+
- Linux (x86_64, ARM64)
121+
- macOS (x86_64, Apple Silicon)
122+
- Windows (x86_64, ARM64)
123+
124+
**Target Devices:**
125+
126+
- Android devices (ARM64, x86_64) via ADB
127+
- Linux ARM devices (Raspberry Pi, Jetson) via SSH
128+
- iOS devices (planned)
129+
130+
**OpenVINO Versions:**
131+
132+
- 2024.x releases
133+
- Nightly builds
134+
- Custom builds from source
135+
136+
### Requirements
137+
138+
- Python 3.11+
139+
- CMake 3.24+ (for build mode)
140+
- Ninja 1.11+ (for build mode)
141+
- Android NDK r26d+ (for Android targets)
142+
- SSH access (for Linux targets)
143+
144+
## Contributors
145+
146+
- Alexander Nesterov (@allnes) - Project Lead
147+
- Community contributors via GitHub
148+
149+
## Links
150+
151+
- [GitHub Repository](https://github.com/embedded-dev-research/OVMobileBench)
152+
- [Documentation](https://github.com/embedded-dev-research/OVMobileBench/tree/main/docs)
153+
- [Issue Tracker](https://github.com/embedded-dev-research/OVMobileBench/issues)
154+
- [Discussions](https://github.com/embedded-dev-research/OVMobileBench/discussions)

0 commit comments

Comments
 (0)