v2.0.3
·
48 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
π― Highlights
- Test coverage increased from 81% to 98% with comprehensive unit tests
- Pre-commit hooks for local code quality enforcement
- Improved CI/CD workflows to prevent publish conflicts
β¨ Testing Improvements
- Added 45+ new unit tests covering edge cases and error handling paths in
client.pyanddevice.py - Comprehensive coverage of:
- Authentication flows and password hashing
- Connection error retry logic with backoff/jitter
- HTTP 429/5xx retry handling with Retry-After header parsing
- JSON parsing fallbacks and error handling
- Export data ZIP generation with picture format detection
- Device photo download and history decryption error paths
- Stream response handling
π§ Developer Experience
- Pre-commit hooks configured with:
flake8for linting (catch CI errors locally!)blackfor code formattingmypyfor type checking- File cleanup (trailing whitespace, line endings, etc.)
- Setup:
pip install -e ".[dev]"thenpython -m pre_commit install
π CI/CD Enhancements
- Simplified publish workflow: Only publishes to PyPI from main branch or GitHub releases
- Manual TestPyPI workflow: New workflow for controlled pre-release testing (trigger from Actions UI)
- Fixed version conflicts: Removed automatic TestPyPI publishing from PRs to avoid duplicate version errors
π Coverage Metrics
- Overall: 98% (512 statements, 10 missed)
- client.py: 97%
- device.py: 100%
- All tests pass: 104 unit tests
π Bug Fixes
- Fixed packaging version alignment between
pyproject.tomland_version.py - Resolved flake8 linting issues (import ordering, whitespace)
π¦ What's Changed
- Version bumped to 2.0.3
- Added pre-commit to dev dependencies
- Updated documentation and line endings normalization