Skip to content

v2.0.5

Choose a tag to compare

@devinslick devinslick released this 19 Nov 02:24
· 15 commits to main since this release
Immutable release. Only release title and notes can be modified.

Release v2.0.5

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 significantly improved test coverage and updated documentation.

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

  • Coverage Boost: Increased overall test coverage to 97%.
  • 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.
  • Community Updates: Updated the community instance URL in README.md to point to the new server location (https://server.fmd-foss.org/).

Upgrade Guide

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