From 6eb49991a4b4c062fc937a431ab5ec702291d37d Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Thu, 3 Oct 2024 17:53:55 -0500 Subject: [PATCH] Add pylint rule for cached_property (#127482) --- homeassistant/backports/functools.py | 1 + pylint/plugins/hass_imports.py | 11 +++++++---- tests/test_backports.py | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/homeassistant/backports/functools.py b/homeassistant/backports/functools.py index bad4236f9c8fe2..1b032c659663c1 100644 --- a/homeassistant/backports/functools.py +++ b/homeassistant/backports/functools.py @@ -9,6 +9,7 @@ from __future__ import annotations +# pylint: disable-next=hass-deprecated-import from functools import cached_property as _cached_property, partial from homeassistant.helpers.deprecation import ( diff --git a/pylint/plugins/hass_imports.py b/pylint/plugins/hass_imports.py index eacabc5b700a67..c6a869dd7fcfa6 100644 --- a/pylint/plugins/hass_imports.py +++ b/pylint/plugins/hass_imports.py @@ -19,6 +19,12 @@ class ObsoleteImportMatch: _OBSOLETE_IMPORT: dict[str, list[ObsoleteImportMatch]] = { + "functools": [ + ObsoleteImportMatch( + reason="replaced by propcache.cached_property", + constant=re.compile(r"^cached_property$"), + ), + ], "homeassistant.backports.enum": [ ObsoleteImportMatch( reason="We can now use the Python 3.11 provided enum.StrEnum instead", @@ -27,10 +33,7 @@ class ObsoleteImportMatch: ], "homeassistant.backports.functools": [ ObsoleteImportMatch( - reason=( - "We can now use the Python 3.12 provided " - "functools.cached_property instead" - ), + reason="replaced by propcache.cached_property", constant=re.compile(r"^cached_property$"), ), ], diff --git a/tests/test_backports.py b/tests/test_backports.py index 4df0a9e3f573f2..af485abbc36d54 100644 --- a/tests/test_backports.py +++ b/tests/test_backports.py @@ -3,7 +3,7 @@ from __future__ import annotations from enum import StrEnum -from functools import cached_property +from functools import cached_property # pylint: disable=hass-deprecated-import from types import ModuleType from typing import Any