8000 Move target selector extractor method to common module by abmantis · Pull Request #148087 · home-assistant/core · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Move target selector extractor method to common module #148087

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: dev
Choose a base branch
from

Conversation

abmantis
Copy link
Member
@abmantis abmantis commented Jul 3, 2025

Proposed change

Since this method will also be used by trigger.py in #148086, this PR moves it to a better common location.

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

  • This PR fixes or closes issue: fixes #
  • This PR is related to issue:
  • Link to documentation pull request:
  • Link to developer documentation pull request:
  • Link to frontend pull request:

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:

Copy link
Member Author

Choose a reason for hiding this comment

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

I wasn't 100% if selector.py would be the best place for this, but the alternative would be to create a new module, which does not seem worthy.

@abmantis abmantis marked this pull request as ready for review July 3, 2025 22:25
@abmantis abmantis requested review from bdraco and a team as code owners July 3, 2025 22:25


def async_extract_referenced_entity_ids(
hass: HomeAssistant, selector_data: TargetSelectorData, expand_group: bool = True
Copy link
Member

Choose a reason for hiding this comment

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

Changing the signature of async_extract_referenced_entity_ids is a breaking change. It needs a blog post in case there are custom integrations using it.

Copy link
Member

Choose a reason for hiding this comment

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

You could leave a wrapper in service.py that sends it here, warns that its deprecated and take it out in 6 months to minimize potential breakage.

Maybe nothing outside of core is using it though so may not be needed. Would be good to do a GitHub code search and see if its used outside of core

)


def async_extract_referenced_entity_ids(
Copy link
Member
@bdraco bdraco Jul 3, 2025

Choose a reason for hiding this comment

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

Likely there are some tests that should move to tests/helpers/test_selector.py

TargetSelector,
TargetSelectorData,
async_extract_referenced_entity_ids,
)
Copy link
Member

Choose a reason for hiding this comment

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

We can probably rely on the existing deprecation system for handling most of these imports.

@arturpragacz
Copy link
Contributor

Is this actually necessary? I'm not sure how much of a better location selector.py is over service.py.

@emontnemery
Copy link
Contributor

Is this actually necessary? I'm not sure how much of a better location selector.py is over service.py.

I agree. If we do the move, we should move the shared target stuff to a new module helpers/target.py

@abmantis
Copy link
Member Author
abmantis commented Jul 4, 2025

Is this actually necessary? I'm not sure how much of a better location selector.py is over service.py.

This will also be used by trigger.py (see #148086 ) now and not just by services.

I'll move it to helpers/target.py as suggested by @emontnemery

@abmantis abmantis marked this pull request as draft July 4, 2025 10:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants
0