More robust implementation of isl_version
[linpy.git] / linpy / linexprs.py
index c100698..d2554a0 100644 (file)
@@ -339,7 +339,7 @@ class LinExpr:
         Create an expression from a string. Raise SyntaxError if the string is
         not properly formatted.
         """
         Create an expression from a string. Raise SyntaxError if the string is
         not properly formatted.
         """
-        # add implicit multiplication operators, e.g. '5x' -> '5*x'
+        # Add implicit multiplication operators, e.g. '5x' -> '5*x'.
         string = LinExpr._RE_NUM_VAR.sub(r'\1*\2', string)
         tree = ast.parse(string, 'eval')
         expr = cls._fromast(tree)
         string = LinExpr._RE_NUM_VAR.sub(r'\1*\2', string)
         tree = ast.parse(string, 'eval')
         expr = cls._fromast(tree)
@@ -416,7 +416,8 @@ class LinExpr:
             if symbol == sympy.S.One:
                 constant = coefficient
             elif isinstance(symbol, sympy.Dummy):
             if symbol == sympy.S.One:
                 constant = coefficient
             elif isinstance(symbol, sympy.Dummy):
-                # we cannot properly convert dummy symbols
+                # We cannot properly convert dummy symbols with respect to
+                # symbol equalities.
                 raise TypeError('cannot convert dummy symbols')
             elif isinstance(symbol, sympy.Symbol):
                 symbol = Symbol(symbol.name)
                 raise TypeError('cannot convert dummy symbols')
             elif isinstance(symbol, sympy.Symbol):
                 symbol = Symbol(symbol.name)
@@ -477,6 +478,8 @@ class Symbol(LinExpr):
 
     @property
     def _coefficients(self):
 
     @property
     def _coefficients(self):
+        # This is not implemented as an attribute, because __hash__ is not
+        # callable in __new__ in class Dummy.
         return {self: Fraction(1)}
 
     @property
         return {self: Fraction(1)}
 
     @property