Skip to content

v2.0.6

Choose a tag to compare

@devinslick devinslick released this 22 Nov 19:20
· 7 commits to main since this release
Immutable release. Only release title and notes can be modified.

Release v2.0.6

Overview

This release focuses on code quality, stability, and developer experience. We have implemented Phase 1 of our Strict Typing Enforcement Plan, ensuring the core library is fully type-safe. Additionally, we have achieved 100% test coverage, ensuring robust handling of edge cases and deprecated methods.

Key Changes

🛡️ Strict Typing (Phase 1)

  • Full Type Safety: The fmd_api core library (client.py, device.py, models.py) now passes strict mypy checks.
  • Improved Signatures: Public methods now have precise return types and generic type hints (e.g., List[Dict[str, Any]]), improving IDE autocompletion and static analysis for consumers.
  • Configuration: Updated pyproject.toml to enforce strict typing rules (disallowing untyped definitions and implicit optionals).

🧪 Test Coverage Improvements

  • Full Coverage: Increased overall test coverage to 100%.
  • Edge Case Handling: Added comprehensive tests for Location parsing, including scenarios with missing dates or invalid inputs.
  • Deprecation Verification: Added specific tests to ensure deprecated methods in Device (like take_front_photo, fetch_pictures) continue to function correctly while emitting appropriate warnings.
  • Command Sanitization: Verified that Device.lock() correctly sanitizes and truncates messages.

📚 Documentation

  • Roadmap: Added docs/strict_typing_enforcement_plan.md outlining the roadmap for maintaining type safety.

Upgrade Guide

This release is fully backward compatible with v2.0.5. No code changes are required for consumers, though you may notice improved type checking results if you use mypy in your own projects.