From b77f3f44c4b15fbe2965b206bf74021377a8876a Mon Sep 17 00:00:00 2001
From: Vivien Maisonneuve <v.maisonneuve@gmail.com>
Date: Tue, 9 Sep 2014 10:59:10 +0200
Subject: [PATCH] LinExpr() accepts rational numbers

---
 linpy/polyhedra.py | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/linpy/polyhedra.py b/linpy/polyhedra.py
index 1ccbe9c..ead9b83 100644
--- a/linpy/polyhedra.py
+++ b/linpy/polyhedra.py
@@ -94,15 +94,23 @@ class Polyhedron(Domain):
         sc_equalities = []
         if equalities is not None:
             for equality in equalities:
-                if not isinstance(equality, LinExpr):
-                    raise TypeError('equalities must be linear expressions')
-                sc_equalities.append(equality.scaleint())
+                if isinstance(equality, LinExpr):
+                    sc_equalities.append(equality.scaleint())
+                elif isinstance(equality, numbers.Rational):
+                    sc_equalities.append(Rational(equality).scaleint())
+                else:
+                    raise TypeError('equalities must be linear expressions '
+                        'or rational numbers')
         sc_inequalities = []
         if inequalities is not None:
             for inequality in inequalities:
-                if not isinstance(inequality, LinExpr):
-                    raise TypeError('inequalities must be linear expressions')
-                sc_inequalities.append(inequality.scaleint())
+                if isinstance(inequality, LinExpr):
+                    sc_inequalities.append(inequality.scaleint())
+                elif isinstance(inequality, numbers.Rational):
+                    sc_inequalities.append(Rational(inequality).scaleint())
+                else:
+                    raise TypeError('inequalities must be linear expressions '
+                        'or rational numbers')
         symbols = cls._xsymbols(sc_equalities + sc_inequalities)
         islbset = cls._toislbasicset(sc_equalities, sc_inequalities, symbols)
         return cls._fromislbasicset(islbset, symbols)
-- 
2.20.1