Add from_hex filter (#145229)

This commit is contained in:
Petro31 2025-05-26 04:16:56 -07:00 committed by GitHub
parent 2cf09abb4c
commit 25f3ab3640
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 0 deletions

View File

@ -2572,6 +2572,11 @@ def struct_unpack(value: bytes, format_string: str, offset: int = 0) -> Any | No
return None return None
def from_hex(value: str) -> bytes:
"""Perform hex string decode."""
return bytes.fromhex(value)
def base64_encode(value: str) -> str: def base64_encode(value: str) -> str:
"""Perform base64 encode.""" """Perform base64 encode."""
return base64.b64encode(value.encode("utf-8")).decode("utf-8") return base64.b64encode(value.encode("utf-8")).decode("utf-8")
@ -3131,6 +3136,7 @@ class TemplateEnvironment(ImmutableSandboxedEnvironment):
self.filters["flatten"] = flatten self.filters["flatten"] = flatten
self.filters["float"] = forgiving_float_filter self.filters["float"] = forgiving_float_filter
self.filters["from_json"] = from_json self.filters["from_json"] = from_json
self.filters["from_hex"] = from_hex
self.filters["iif"] = iif self.filters["iif"] = iif
self.filters["int"] = forgiving_int_filter self.filters["int"] = forgiving_int_filter
self.filters["intersect"] = intersect self.filters["intersect"] = intersect

View File

@ -1632,6 +1632,14 @@ def test_ord(hass: HomeAssistant) -> None:
assert template.Template('{{ "d" | ord }}', hass).async_render() == 100 assert template.Template('{{ "d" | ord }}', hass).async_render() == 100
def test_from_hex(hass: HomeAssistant) -> None:
"""Test the fromhex filter."""
assert (
template.Template("{{ '0F010003' | from_hex }}", hass).async_render()
== b"\x0f\x01\x00\x03"
)
def test_base64_encode(hass: HomeAssistant) -> None: def test_base64_encode(hass: HomeAssistant) -> None:
"""Test the base64_encode filter.""" """Test the base64_encode filter."""
assert ( assert (