Skip to content

Conversation

@emontnemery
Copy link
Contributor

Proposed change

Make _EventDeviceRegistryUpdatedData_Remove Events JSON serializable

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.

To help with the load of incoming pull requests:

@emontnemery emontnemery added this to the 2025.8.0 milestone Jul 31, 2025
Copilot AI review requested due to automatic review settings July 31, 2025 09:35
@emontnemery emontnemery requested a review from a team as a code owner July 31, 2025 09:35
@home-assistant home-assistant bot added bugfix cla-signed core small-pr PRs with less than 30 lines. labels Jul 31, 2025
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR makes the _EventDeviceRegistryUpdatedData_Remove event data JSON serializable by changing the device field from a DeviceEntry object to a dictionary representation. This addresses serialization issues when device removal events are fired.

Key changes:

  • Updated the device field type annotation from DeviceEntry to dict[str, Any] in the TypedDict
  • Modified the event firing code to use device.dict_repr instead of the raw device object
  • Updated all test assertions to expect the dictionary representation

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
homeassistant/helpers/device_registry.py Updated TypedDict definition and event firing to use device dictionary representation
homeassistant/helpers/entity_registry.py Updated event handler to work with dictionary representation instead of DeviceEntry object
tests/helpers/test_device_registry.py Updated test assertions to expect device.dict_repr in event data
Comments suppressed due to low confidence (1)

homeassistant/helpers/entity_registry.py:1106

  • [nitpick] The variable name removed_device_dict is verbose and inconsistent with the original removed_device. Consider renaming to removed_device to maintain consistency while clearly indicating it's now a dictionary through the type annotation.
            removed_device_dict = event.data["device"]

@MartinHjelmare MartinHjelmare merged commit 3d744f0 into dev Jul 31, 2025
48 checks passed
@MartinHjelmare MartinHjelmare deleted the fix_device_removed_event branch July 31, 2025 10:35
@github-actions github-actions bot locked and limited conversation to collaborators Aug 1, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Type is not JSON serializable in DeviceEntry

4 participants