Coverage for gpkit/constraints/single_equation.py: 95%
22 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 15:30 -0500
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 15:30 -0500
1"Implements SingleEquationConstraint"
2from operator import le, ge, eq
3from ..small_scripts import try_str_without
4from ..repr_conventions import ReprMixin, UNICODE_EXPONENTS
7class SingleEquationConstraint(ReprMixin):
8 "Constraint expressible in a single equation."
9 latex_opers = {"<=": "\\leq", ">=": "\\geq", "=": "="}
10 unicode_opers = {"<=": "≤", ">=": "≥", "=": "="}
11 func_opers = {"<=": le, ">=": ge, "=": eq}
13 def __init__(self, left, oper, right):
14 self.left, self.oper, self.right = left, oper, right
16 def str_without(self, excluded=("units")):
17 "String representation without attributes in excluded list"
18 leftstr = try_str_without(self.left, excluded)
19 rightstr = try_str_without(self.right, excluded)
20 rlines = rightstr.split("\n")
21 if len(rlines) > 1:
22 indent = len("%s %s " % (leftstr.split("\n")[-1], self.oper))
23 rightstr = ("\n" + " "*indent).join(rlines)
24 if UNICODE_EXPONENTS:
25 oper = self.unicode_opers[self.oper]
26 else:
27 oper = self.oper
28 return "%s %s %s" % (leftstr, oper, rightstr)
30 def latex(self, excluded=("units")):
31 "Latex representation without attributes in excluded list"
32 return ("%s %s %s" % (
33 try_str_without(self.left, excluded, latex=True),
34 self.latex_opers[self.oper],
35 try_str_without(self.right, excluded, latex=True)))