Merge pull request #6713 from esphome/bump-2024.5.0b3

2024.5.0b3
This commit is contained in:
Jesse Hills 2024-05-09 23:04:30 +12:00 committed by GitHub
commit 448b4f5cb6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 50 additions and 11 deletions

View file

@ -132,10 +132,16 @@ jobs:
suffix: lint suffix: lint
version: ${{ needs.init.outputs.tag }} version: ${{ needs.init.outputs.tag }}
- name: Sanitize platform name
id: sanitize
run: |
echo "${{ matrix.platform }}" | sed 's|/|-|g' > /tmp/platform
echo name=$(cat /tmp/platform) >> $GITHUB_OUTPUT
- name: Upload digests - name: Upload digests
uses: actions/upload-artifact@v4.3.3 uses: actions/upload-artifact@v4.3.3
with: with:
name: digests-${{ matrix.platform }} name: digests-${{ steps.sanitize.outputs.name }}
path: /tmp/digests path: /tmp/digests
retention-days: 1 retention-days: 1

View file

@ -14,15 +14,41 @@ CONF_HEX = "hex"
def hex_color(value): def hex_color(value):
if isinstance(value, int):
value = str(value)
if not isinstance(value, str):
raise cv.Invalid("Invalid value for hex color")
if len(value) != 6: if len(value) != 6:
raise cv.Invalid("Color must have six digits") raise cv.Invalid("Hex color must have six digits")
try: try:
return (int(value[0:2], 16), int(value[2:4], 16), int(value[4:6], 16)) return int(value[0:2], 16), int(value[2:4], 16), int(value[4:6], 16)
except ValueError as exc: except ValueError as exc:
raise cv.Invalid("Color must be hexadecimal") from exc raise cv.Invalid("Color must be hexadecimal") from exc
CONFIG_SCHEMA = cv.Any( components = {
CONF_RED,
CONF_RED_INT,
CONF_GREEN,
CONF_GREEN_INT,
CONF_BLUE,
CONF_BLUE_INT,
CONF_WHITE,
CONF_WHITE_INT,
}
def validate_color(config):
has_components = set(config) & components
has_hex = CONF_HEX in config
if has_hex and has_components:
raise cv.Invalid("Hex color value may not be combined with component values")
if not has_hex and not has_components:
raise cv.Invalid("Must provide at least one color option")
return config
CONFIG_SCHEMA = cv.All(
cv.Schema( cv.Schema(
{ {
cv.Required(CONF_ID): cv.declare_id(ColorStruct), cv.Required(CONF_ID): cv.declare_id(ColorStruct),
@ -34,14 +60,10 @@ CONFIG_SCHEMA = cv.Any(
cv.Exclusive(CONF_BLUE_INT, "blue"): cv.uint8_t, cv.Exclusive(CONF_BLUE_INT, "blue"): cv.uint8_t,
cv.Exclusive(CONF_WHITE, "white"): cv.percentage, cv.Exclusive(CONF_WHITE, "white"): cv.percentage,
cv.Exclusive(CONF_WHITE_INT, "white"): cv.uint8_t, cv.Exclusive(CONF_WHITE_INT, "white"): cv.uint8_t,
cv.Optional(CONF_HEX): hex_color,
} }
).extend(cv.COMPONENT_SCHEMA), ).extend(cv.COMPONENT_SCHEMA),
cv.Schema( validate_color,
{
cv.Required(CONF_ID): cv.declare_id(ColorStruct),
cv.Required(CONF_HEX): hex_color,
}
).extend(cv.COMPONENT_SCHEMA),
) )

View file

@ -1,6 +1,6 @@
"""Constants used by esphome.""" """Constants used by esphome."""
__version__ = "2024.5.0b2" __version__ = "2024.5.0b3"
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_" ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
VALID_SUBSTITUTIONS_CHARACTERS = ( VALID_SUBSTITUTIONS_CHARACTERS = (

View file

@ -340,6 +340,8 @@ class ID:
if self.id is None: if self.id is None:
base = str(self.type).replace("::", "_").lower() base = str(self.type).replace("::", "_").lower()
if base == self.type:
base = base + "_id"
name = "".join(c for c in base if c.isalnum() or c == "_") name = "".join(c for c in base if c.isalnum() or c == "_")
used = set(registered_ids) | set(RESERVED_IDS) | CORE.loaded_integrations used = set(registered_ids) | set(RESERVED_IDS) | CORE.loaded_integrations
self.id = ensure_unique_string(name, used) self.id = ensure_unique_string(name, used)

View file

@ -9,3 +9,12 @@ color:
blue: 100% blue: 100%
- id: kbx_green - id: kbx_green
hex: "3DEC55" hex: "3DEC55"
- id: kbx_green_1
hex: 3DEC55
- id: cps_red
hex: 800000
- id: cps_green
hex: 008000
- id: cps_blue
hex: 000080