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:
@@ -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):
|
||||
|
Reference in New Issue
Block a user