Implementation of Symbol.sortkey()
authorVivien Maisonneuve <v.maisonneuve@gmail.com>
Wed, 2 Jul 2014 21:22:57 +0000 (23:22 +0200)
committerVivien Maisonneuve <v.maisonneuve@gmail.com>
Wed, 2 Jul 2014 21:22:57 +0000 (23:22 +0200)
pypol/domains.py
pypol/linexprs.py

index 74351fc..224ac5f 100644 (file)
@@ -5,7 +5,7 @@ import re
 from . import islhelper
 
 from .islhelper import mainctx, libisl, isl_set_basic_sets
-from .linexprs import Expression
+from .linexprs import Expression, Symbol
 
 
 __all__ = [
@@ -50,7 +50,7 @@ class Domain:
         symbols = set()
         for item in iterator:
             symbols.update(item.symbols)
-        return tuple(sorted(symbols, key=lambda symbol: symbol.name))
+        return tuple(sorted(symbols, key=Symbol.sortkey))
 
     @property
     def polyhedra(self):
index 9a1ed64..73c6b0e 100644 (file)
@@ -61,7 +61,7 @@ class Expression:
         self = object().__new__(cls)
         self._coefficients = OrderedDict()
         for symbol, coefficient in sorted(coefficients,
-                key=lambda item: item[0].name):
+                key=lambda item: item[0].sortkey()):
             if isinstance(coefficient, Rational):
                 coefficient = coefficient.constant
             if not isinstance(coefficient, numbers.Rational):
@@ -380,6 +380,9 @@ class Symbol(Expression):
     def dimension(self):
         return 1
 
+    def sortkey(self):
+        return self.name,
+
     def issymbol(self):
         return True