core icon indicating copy to clipboard operation
core copied to clipboard

Powerview migrate scene to string unique_id

Open kingy444 opened this issue 1 year ago • 4 comments

Proposed change

Use string for unique_id

Type of change

  • [ ] Dependency upgrade
  • [x] 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

  • This PR fixes or closes issue: fixes #https://github.com/home-assistant/core/issues/117334
  • This PR is related to issue:
  • Link to documentation pull request:

Checklist

  • [x] The code change is tested and works locally.
  • [x] Local tests pass. Your PR cannot be merged unless tests pass
  • [x] There is no commented out code in this PR.
  • [x] I have followed the development checklist
  • [x] I have followed the perfect PR recommendations
  • [x] The code has been formatted using Ruff (ruff format homeassistant tests)
  • [x] 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:

  • [x] The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • [x] New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • [x] 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:

kingy444 avatar Oct 11 '24 00:10 kingy444

Hey there @bdraco, @trullock, mind taking a look at this pull request as it has been labeled with an integration (hunterdouglas_powerview) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of hunterdouglas_powerview can trigger bot actions by commenting:

  • @home-assistant close Closes the pull request.
  • @home-assistant rename Awesome new title Renames the pull request.
  • @home-assistant reopen Reopen the pull request.
  • @home-assistant unassign hunterdouglas_powerview Removes the current integration label and assignees on the pull request, add the integration domain after the command.
  • @home-assistant add-label needs-more-information Add a label (needs-more-information, problem in dependency, problem in custom component) to the pull request.
  • @home-assistant remove-label needs-more-information Remove a label (needs-more-information, problem in dependency, problem in custom component) on the pull request.

home-assistant[bot] avatar Oct 11 '24 00:10 home-assistant[bot]

@bdraco created as draft purely as unsure if the non-string unique_id can be migrated to the new string based uniqueid

If there is no way for this not to be a breaking change - then it should be ok

kingy444 avatar Oct 11 '24 00:10 kingy444

worked out the migration process - added a migrate_entry so it only needs to execute the migration of entity names one time

kingy444 avatar Oct 11 '24 03:10 kingy444

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks :+1:

Learn more about our pull request process.

home-assistant[bot] avatar Oct 11 '24 14:10 home-assistant[bot]

@home-assistant remove-label breaking-change

kingy444 avatar Oct 21 '24 01:10 kingy444

@home-assistant add-label bugfix

kingy444 avatar Oct 21 '24 02:10 kingy444

Just got around to testing this

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 987, in async_migrate
    result = await component.async_migrate_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/hunterdouglas_powerview/__init__.py", line 141, in async_migrate_entry
    await _migrate_unique_ids(hass, entry)
  File "/usr/src/homeassistant/homeassistant/components/hunterdouglas_powerview/__init__.py", line 160, in _migrate_unique_ids
    and not reg_entry.unique_id.startswith(entry.unique_id)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: startswith first arg must be str or a tuple of str, not NoneType

It fails with the above on my production.

bdraco avatar Oct 24 '24 22:10 bdraco

Just got around to testing this

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 987, in async_migrate
    result = await component.async_migrate_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/hunterdouglas_powerview/__init__.py", line 141, in async_migrate_entry
    await _migrate_unique_ids(hass, entry)
  File "/usr/src/homeassistant/homeassistant/components/hunterdouglas_powerview/__init__.py", line 160, in _migrate_unique_ids
    and not reg_entry.unique_id.startswith(entry.unique_id)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: startswith first arg must be str or a tuple of str, not NoneType

It fails with the above on my production.

assume related to this one. Originally I couldnt commit the code without this check but it seemed ok once i made the change requested.

https://github.com/home-assistant/core/pull/128131#discussion_r1808838474

https://github.com/home-assistant/core/pull/128131/commits/f960bd75ab471e59e510c3d25bcc1cd6b89964f5

kingy444 avatar Oct 24 '24 22:10 kingy444

@bdraco whats the fix here ? - i would expect that entry.unique_id should never be None

kingy444 avatar Oct 25 '24 02:10 kingy444

Sorry, I had to step away, family emergency, will have to look tomorrow

bdraco avatar Oct 25 '24 02:10 bdraco

The unique id of the config entry it None

Thats the issue

bdraco avatar Oct 25 '24 20:10 bdraco