Skip to content

Commit

Permalink
Merge pull request #6713 from esphome/bump-2024.5.0b3
Browse files Browse the repository at this point in the history
2024.5.0b3
  • Loading branch information
jesserockz committed May 9, 2024
2 parents 0883f0e + 8ae8cd1 commit 448b4f5
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 11 deletions.
8 changes: 7 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,16 @@ jobs:
suffix: lint
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
uses: actions/upload-artifact@v4.3.3
with:
name: digests-${{ matrix.platform }}
name: digests-${{ steps.sanitize.outputs.name }}
path: /tmp/digests
retention-days: 1

Expand Down
40 changes: 31 additions & 9 deletions esphome/components/color/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,41 @@


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:
raise cv.Invalid("Color must have six digits")
raise cv.Invalid("Hex color must have six digits")
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:
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.Required(CONF_ID): cv.declare_id(ColorStruct),
Expand All @@ -34,14 +60,10 @@ def hex_color(value):
cv.Exclusive(CONF_BLUE_INT, "blue"): cv.uint8_t,
cv.Exclusive(CONF_WHITE, "white"): cv.percentage,
cv.Exclusive(CONF_WHITE_INT, "white"): cv.uint8_t,
cv.Optional(CONF_HEX): hex_color,
}
).extend(cv.COMPONENT_SCHEMA),
cv.Schema(
{
cv.Required(CONF_ID): cv.declare_id(ColorStruct),
cv.Required(CONF_HEX): hex_color,
}
).extend(cv.COMPONENT_SCHEMA),
validate_color,
)


Expand Down
2 changes: 1 addition & 1 deletion esphome/const.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
"""Constants used by esphome."""

__version__ = "2024.5.0b2"
__version__ = "2024.5.0b3"

ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
VALID_SUBSTITUTIONS_CHARACTERS = (
Expand Down
2 changes: 2 additions & 0 deletions esphome/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,8 @@ def resolve(self, registered_ids):

if self.id is None:
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 == "_")
used = set(registered_ids) | set(RESERVED_IDS) | CORE.loaded_integrations
self.id = ensure_unique_string(name, used)
Expand Down
9 changes: 9 additions & 0 deletions tests/components/color/common.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,12 @@ color:
blue: 100%
- id: kbx_green
hex: "3DEC55"
- id: kbx_green_1
hex: 3DEC55
- id: cps_red
hex: 800000
- id: cps_green
hex: 008000
- id: cps_blue
hex: 000080

0 comments on commit 448b4f5

Please sign in to comment.