[update] Move to use `update_schema(..) instead of UPDATE_SCHEMA` (#8726)

This commit is contained in:
Jesse Hills 2025-05-09 18:22:43 +12:00 committed by GitHub
parent b3400a1308
commit 8a90ce882a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 9 deletions

View File

@ -16,14 +16,17 @@ HttpRequestUpdate = http_request_ns.class_(
CONF_OTA_ID = "ota_id" CONF_OTA_ID = "ota_id"
CONFIG_SCHEMA = update.UPDATE_SCHEMA.extend( CONFIG_SCHEMA = (
{ update.update_schema(HttpRequestUpdate)
cv.GenerateID(): cv.declare_id(HttpRequestUpdate), .extend(
cv.GenerateID(CONF_OTA_ID): cv.use_id(OtaHttpRequestComponent), {
cv.GenerateID(CONF_HTTP_REQUEST_ID): cv.use_id(HttpRequestComponent), cv.GenerateID(CONF_OTA_ID): cv.use_id(OtaHttpRequestComponent),
cv.Required(CONF_SOURCE): cv.url, cv.GenerateID(CONF_HTTP_REQUEST_ID): cv.use_id(HttpRequestComponent),
} cv.Required(CONF_SOURCE): cv.url,
).extend(cv.polling_component_schema("6h")) }
)
.extend(cv.polling_component_schema("6h"))
)
async def to_code(config): async def to_code(config):

View File

@ -6,6 +6,7 @@ from esphome.const import (
CONF_DEVICE_CLASS, CONF_DEVICE_CLASS,
CONF_ENTITY_CATEGORY, CONF_ENTITY_CATEGORY,
CONF_FORCE_UPDATE, CONF_FORCE_UPDATE,
CONF_ICON,
CONF_ID, CONF_ID,
CONF_MQTT_ID, CONF_MQTT_ID,
CONF_WEB_SERVER, CONF_WEB_SERVER,
@ -14,6 +15,7 @@ from esphome.const import (
ENTITY_CATEGORY_CONFIG, ENTITY_CATEGORY_CONFIG,
) )
from esphome.core import CORE, coroutine_with_priority from esphome.core import CORE, coroutine_with_priority
from esphome.cpp_generator import MockObjClass
from esphome.cpp_helpers import setup_entity from esphome.cpp_helpers import setup_entity
CODEOWNERS = ["@jesserockz"] CODEOWNERS = ["@jesserockz"]
@ -38,7 +40,7 @@ DEVICE_CLASSES = [
CONF_ON_UPDATE_AVAILABLE = "on_update_available" CONF_ON_UPDATE_AVAILABLE = "on_update_available"
UPDATE_SCHEMA = ( _UPDATE_SCHEMA = (
cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA) cv.ENTITY_BASE_SCHEMA.extend(web_server.WEBSERVER_SORTING_SCHEMA)
.extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA) .extend(cv.MQTT_COMMAND_COMPONENT_SCHEMA)
.extend( .extend(
@ -56,6 +58,29 @@ UPDATE_SCHEMA = (
) )
def update_schema(
class_: MockObjClass = cv.UNDEFINED,
*,
icon: str = cv.UNDEFINED,
device_class: str = cv.UNDEFINED,
entity_category: str = cv.UNDEFINED,
) -> cv.Schema:
schema = {}
if class_ is not cv.UNDEFINED:
schema[cv.GenerateID()] = cv.declare_id(class_)
for key, default, validator in [
(CONF_ICON, icon, cv.icon),
(CONF_DEVICE_CLASS, device_class, cv.one_of(*DEVICE_CLASSES, lower=True)),
(CONF_ENTITY_CATEGORY, entity_category, cv.entity_category),
]:
if default is not cv.UNDEFINED:
schema[cv.Optional(key, default=default)] = validator
return _UPDATE_SCHEMA.extend(schema)
async def setup_update_core_(var, config): async def setup_update_core_(var, config):
await setup_entity(var, config) await setup_entity(var, config)