1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-02 19:32:19 +01:00

Fix: Pin flags code generation returning FLAG_NONE (#2377)

Co-authored-by: Otto winter <otto@otto-winter.com>
This commit is contained in:
Paul Monigatti
2021-09-23 21:19:17 +12:00
committed by GitHub
parent ea6a7a22ff
commit 17dcba8f8a
2 changed files with 18 additions and 1 deletions

View File

@@ -310,6 +310,19 @@ class FloatLiteral(Literal):
return f"{self.f}f"
class BinOpExpression(Expression):
__slots__ = ("op", "lhs", "rhs")
def __init__(self, op: str, lhs: SafeExpType, rhs: SafeExpType):
# Remove every None on end
self.op = op
self.lhs = safe_exp(lhs)
self.rhs = safe_exp(rhs)
def __str__(self):
return f"{self.lhs} {self.op} {self.rhs}"
def safe_exp(obj: SafeExpType) -> Expression:
"""Try to convert obj to an expression by automatically converting native python types to
expressions/literals.
@@ -756,6 +769,10 @@ class MockObj(Expression):
next_op = "->"
return MockObj(f"{self.base}[{item}]", next_op)
def __or__(self, other: SafeExpType) -> "MockObj":
op = BinOpExpression("|", self, other)
return MockObj(op)
class MockObjEnum(MockObj):
def __init__(self, *args, **kwargs):