1
0
mirror of https://github.com/esphome/esphome.git synced 2025-03-15 15:18:16 +00:00

move splitdefault

This commit is contained in:
Tomasz Duda 2025-02-24 19:35:41 +01:00
parent 35259fb4dc
commit b1a1a6788e
2 changed files with 47 additions and 42 deletions

View File

@ -1,10 +1,9 @@
import re import re
import voluptuous as vol
from esphome import automation from esphome import automation
from esphome.automation import LambdaAction from esphome.automation import LambdaAction
import esphome.codegen as cg import esphome.codegen as cg
from esphome.components import zephyr
from esphome.components.esp32 import add_idf_sdkconfig_option, get_esp32_variant from esphome.components.esp32 import add_idf_sdkconfig_option, get_esp32_variant
from esphome.components.esp32.const import ( from esphome.components.esp32.const import (
VARIANT_ESP32, VARIANT_ESP32,
@ -185,44 +184,6 @@ LoggerMessageTrigger = logger_ns.class_(
) )
def _get_default_key(*args):
return ["_".join([CORE.target_platform] + list(args))]
# https://github.com/esphome/esphome/pull/7715
class _SplitDefault(cv.Optional):
"""Mark this key to have a split default for ESP8266/ESP32."""
def __init__(self, key, **kwargs):
super().__init__(key)
self._defaults = {}
for platform_key, value in kwargs.items():
self._defaults[platform_key] = vol.default_factory(value)
@property
def default(self):
keys = []
if CORE.is_esp32:
variant = get_esp32_variant().replace(VARIANT_ESP32, "").lower()
framework = CORE.target_framework.replace("esp-", "")
if variant:
keys += _get_default_key(variant, framework)
keys += _get_default_key(variant)
keys += _get_default_key(framework)
keys += _get_default_key()
for key in keys:
if self._defaults.get(key) is not None:
return self._defaults[key]
return vol.default_factory(vol.UNDEFINED)
@default.setter
def default(self, value):
# Ignore default set from vol.Optional
pass
PLATFORM_NRF52 = "nrf52" PLATFORM_NRF52 = "nrf52"
CONF_ESP8266_STORE_LOG_STRINGS_IN_FLASH = "esp8266_store_log_strings_in_flash" CONF_ESP8266_STORE_LOG_STRINGS_IN_FLASH = "esp8266_store_log_strings_in_flash"
CONFIG_SCHEMA = cv.All( CONFIG_SCHEMA = cv.All(
@ -233,7 +194,7 @@ CONFIG_SCHEMA = cv.All(
cv.Optional(CONF_TX_BUFFER_SIZE, default=512): cv.validate_bytes, cv.Optional(CONF_TX_BUFFER_SIZE, default=512): cv.validate_bytes,
cv.Optional(CONF_DEASSERT_RTS_DTR, default=False): cv.boolean, cv.Optional(CONF_DEASSERT_RTS_DTR, default=False): cv.boolean,
# https://github.com/esphome/esphome/pull/7715 # https://github.com/esphome/esphome/pull/7715
_SplitDefault( zephyr.SplitDefault(
CONF_HARDWARE_UART, CONF_HARDWARE_UART,
esp8266=UART0, esp8266=UART0,
esp32=UART0, esp32=UART0,
@ -275,7 +236,7 @@ CONFIG_SCHEMA = cv.All(
} }
), ),
# https://github.com/esphome/esphome/pull/7715 # https://github.com/esphome/esphome/pull/7715
_SplitDefault( zephyr.SplitDefault(
CONF_ESP8266_STORE_LOG_STRINGS_IN_FLASH, esp8266=True CONF_ESP8266_STORE_LOG_STRINGS_IN_FLASH, esp8266=True
): cv.All(cv.only_on_esp8266, cv.boolean), ): cv.All(cv.only_on_esp8266, cv.boolean),
} }

View File

@ -1,7 +1,10 @@
import os import os
from typing import Union from typing import Union
import voluptuous as vol
import esphome.codegen as cg import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.const import CONF_BOARD, KEY_NAME from esphome.const import CONF_BOARD, KEY_NAME
from esphome.core import CORE from esphome.core import CORE
from esphome.helpers import copy_file_if_changed, write_file_if_changed from esphome.helpers import copy_file_if_changed, write_file_if_changed
@ -178,3 +181,44 @@ def copy_files():
file[KEY_PATH], file[KEY_PATH],
CORE.relative_build_path(file[KEY_NAME]), CORE.relative_build_path(file[KEY_NAME]),
) )
def _get_default_key(*args):
return ["_".join([CORE.target_platform] + list(args))]
# https://github.com/esphome/esphome/pull/7715
class SplitDefault(cv.Optional):
"""Mark this key to have a split default for ESP8266/ESP32."""
def __init__(self, key, **kwargs):
super().__init__(key)
self._defaults = {}
for platform_key, value in kwargs.items():
self._defaults[platform_key] = vol.default_factory(value)
@property
def default(self):
keys = []
if CORE.is_esp32:
from esphome.components.esp32 import get_esp32_variant
from esphome.components.esp32.const import VARIANT_ESP32
variant = get_esp32_variant().replace(VARIANT_ESP32, "").lower()
framework = CORE.target_framework.replace("esp-", "")
if variant:
keys += _get_default_key(variant, framework)
keys += _get_default_key(variant)
keys += _get_default_key(framework)
keys += _get_default_key()
for key in keys:
if self._defaults.get(key) is not None:
return self._defaults[key]
return vol.default_factory(vol.UNDEFINED)
@default.setter
def default(self, value):
# Ignore default set from vol.Optional
pass