From 48857e404d1923944e68758a8f698c98bea42474 Mon Sep 17 00:00:00 2001
From: Alexandru Fikl <alexfikl@gmail.com>
Date: Thu, 4 Feb 2021 20:44:27 -0600
Subject: [PATCH] remove all usage of six

---
 pymbolic/algorithm.py                  |  3 +--
 pymbolic/compiler.py                   |  3 ++-
 pymbolic/cse.py                        |  2 --
 pymbolic/geometric_algebra/__init__.py |  2 --
 pymbolic/geometric_algebra/mapper.py   |  2 --
 pymbolic/imperative/statement.py       |  6 ++----
 pymbolic/imperative/utils.py           |  3 ---
 pymbolic/interop/maxima.py             |  3 +--
 pymbolic/mapper/__init__.py            |  4 +---
 pymbolic/mapper/coefficient.py         |  3 ---
 pymbolic/mapper/collector.py           |  2 --
 pymbolic/mapper/constant_folder.py     |  9 +++++----
 pymbolic/mapper/evaluator.py           |  2 +-
 pymbolic/mapper/unifier.py             |  2 --
 pymbolic/parser.py                     |  2 +-
 pymbolic/polynomial.py                 | 26 ++------------------------
 pymbolic/primitives.py                 |  6 +-----
 pymbolic/rational.py                   |  2 +-
 pymbolic/traits.py                     |  4 +---
 19 files changed, 19 insertions(+), 67 deletions(-)

diff --git a/pymbolic/algorithm.py b/pymbolic/algorithm.py
index e27532d..a77b383 100644
--- a/pymbolic/algorithm.py
+++ b/pymbolic/algorithm.py
@@ -20,8 +20,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-import six
-from six.moves import reduce
 import cmath
 from pytools import memoize
 
@@ -97,6 +95,7 @@ def gcd_many(*args):
     elif len(args) == 1:
         return args[0]
     else:
+        from functools import reduce
         return reduce(gcd, args)
 
 
diff --git a/pymbolic/compiler.py b/pymbolic/compiler.py
index f1be217..f553c0d 100644
--- a/pymbolic/compiler.py
+++ b/pymbolic/compiler.py
@@ -22,7 +22,8 @@ THE SOFTWARE.
 
 import math
 import pymbolic
-from pymbolic.mapper.stringifier import (StringifyMapper, PREC_NONE,
+from pymbolic.mapper.stringifier import (
+        StringifyMapper, PREC_NONE,
         PREC_SUM, PREC_POWER)
 
 
diff --git a/pymbolic/cse.py b/pymbolic/cse.py
index 3e0bce4..10f6869 100644
--- a/pymbolic/cse.py
+++ b/pymbolic/cse.py
@@ -1,5 +1,3 @@
-import six
-
 __copyright__ = "Copyright (C) 2009-2013 Andreas Kloeckner"
 
 __license__ = """
diff --git a/pymbolic/geometric_algebra/__init__.py b/pymbolic/geometric_algebra/__init__.py
index d6cfb3f..32a3cdc 100644
--- a/pymbolic/geometric_algebra/__init__.py
+++ b/pymbolic/geometric_algebra/__init__.py
@@ -20,8 +20,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-import six
-
 from pytools import memoize, memoize_method
 import numpy as np
 
diff --git a/pymbolic/geometric_algebra/mapper.py b/pymbolic/geometric_algebra/mapper.py
index 3eb3f32..9443de2 100644
--- a/pymbolic/geometric_algebra/mapper.py
+++ b/pymbolic/geometric_algebra/mapper.py
@@ -99,11 +99,9 @@ class StringifyMapper(StringifyMapperBase):
     AXES = {0: "x", 1: "y", 2: "z"}
 
     def map_nabla(self, expr, enclosing_prec):
-        import sys
         return "∇[%s]" % expr.nabla_id
 
     def map_nabla_component(self, expr, enclosing_prec):
-        import sys
         return "∇{}[{}]".format(
                 self.AXES.get(expr.ambient_axis, expr.ambient_axis),
                 expr.nabla_id)
diff --git a/pymbolic/imperative/statement.py b/pymbolic/imperative/statement.py
index 6ef4a6a..176180c 100644
--- a/pymbolic/imperative/statement.py
+++ b/pymbolic/imperative/statement.py
@@ -22,9 +22,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-
-import six
-
+from sys import intern
 from pytools import RecordWithoutPickling
 
 
@@ -49,7 +47,7 @@ class Statement(RecordWithoutPickling):
     def __init__(self, **kwargs):
         id = kwargs.pop("id", None)
         if id is not None:
-            id = six.moves.intern(id)
+            id = intern(id)
 
         depends_on = frozenset(kwargs.pop("depends_on", []))
         super().__init__(
diff --git a/pymbolic/imperative/utils.py b/pymbolic/imperative/utils.py
index 18cbfef..fd34f4b 100644
--- a/pymbolic/imperative/utils.py
+++ b/pymbolic/imperative/utils.py
@@ -23,10 +23,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-
-import six
 import logging
-
 logger = logging.getLogger(__name__)
 
 
diff --git a/pymbolic/interop/maxima.py b/pymbolic/interop/maxima.py
index f5e892a..12ac92d 100644
--- a/pymbolic/interop/maxima.py
+++ b/pymbolic/interop/maxima.py
@@ -34,12 +34,11 @@ __doc__ = """
 # Inspired by similar code in Sage at:
 # http://trac.sagemath.org/sage_trac/browser/sage/interfaces/maxima.py
 
-import six
-from six.moves import intern
 import re
 import pytools
 import numpy as np
 
+from sys import intern
 from pymbolic.mapper.stringifier import StringifyMapper
 from pymbolic.parser import Parser as ParserBase, FinalizedTuple
 
diff --git a/pymbolic/mapper/__init__.py b/pymbolic/mapper/__init__.py
index ba992e7..a9f54c6 100644
--- a/pymbolic/mapper/__init__.py
+++ b/pymbolic/mapper/__init__.py
@@ -1,6 +1,3 @@
-import six
-from functools import reduce
-
 __copyright__ = "Copyright (C) 2009-2013 Andreas Kloeckner"
 
 __license__ = """
@@ -336,6 +333,7 @@ class Collector(CombineMapper):
 
     def combine(self, values):
         import operator
+        from functools import reduce
         return reduce(operator.or_, values, set())
 
     def map_constant(self, expr):
diff --git a/pymbolic/mapper/coefficient.py b/pymbolic/mapper/coefficient.py
index 32c9f38..73276ed 100644
--- a/pymbolic/mapper/coefficient.py
+++ b/pymbolic/mapper/coefficient.py
@@ -1,5 +1,3 @@
-import six
-
 __copyright__ = "Copyright (C) 2013 Andreas Kloeckner"
 
 __license__ = """
@@ -22,7 +20,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-
 from pymbolic.mapper import Mapper
 
 
diff --git a/pymbolic/mapper/collector.py b/pymbolic/mapper/collector.py
index f73c537..85cb3c6 100644
--- a/pymbolic/mapper/collector.py
+++ b/pymbolic/mapper/collector.py
@@ -1,5 +1,3 @@
-import six
-
 __copyright__ = "Copyright (C) 2009-2013 Andreas Kloeckner"
 
 __license__ = """
diff --git a/pymbolic/mapper/constant_folder.py b/pymbolic/mapper/constant_folder.py
index 5799efa..724c770 100644
--- a/pymbolic/mapper/constant_folder.py
+++ b/pymbolic/mapper/constant_folder.py
@@ -20,10 +20,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from six.moves import reduce
-from pymbolic.mapper import \
-        IdentityMapper, \
-        CSECachingMapperMixin
+from pymbolic.mapper import (
+        IdentityMapper,
+        CSECachingMapperMixin,
+        )
 
 
 class ConstantFoldingMapperBase:
@@ -60,6 +60,7 @@ class ConstantFoldingMapperBase:
                     nonconstants.append(child)
 
         if constants:
+            from functools import reduce
             constant = reduce(op, constants)
             return constructor(tuple([constant]+nonconstants))
         else:
diff --git a/pymbolic/mapper/evaluator.py b/pymbolic/mapper/evaluator.py
index 6b54ea7..889bc90 100644
--- a/pymbolic/mapper/evaluator.py
+++ b/pymbolic/mapper/evaluator.py
@@ -23,7 +23,7 @@ THE SOFTWARE.
 
 from pymbolic.mapper import RecursiveMapper, CSECachingMapperMixin
 import operator as op
-from six.moves import reduce
+from functools import reduce
 
 
 class UnknownVariableError(Exception):
diff --git a/pymbolic/mapper/unifier.py b/pymbolic/mapper/unifier.py
index eca76b4..cfaa071 100644
--- a/pymbolic/mapper/unifier.py
+++ b/pymbolic/mapper/unifier.py
@@ -1,5 +1,3 @@
-import six
-
 __copyright__ = "Copyright (C) 2009-2013 Andreas Kloeckner"
 
 __license__ = """
diff --git a/pymbolic/parser.py b/pymbolic/parser.py
index ea9f580..b846193 100644
--- a/pymbolic/parser.py
+++ b/pymbolic/parser.py
@@ -21,7 +21,7 @@ THE SOFTWARE.
 """
 
 import pytools.lex
-from six.moves import intern
+from sys import intern
 
 _imaginary = intern("imaginary")
 _float = intern("float")
diff --git a/pymbolic/polynomial.py b/pymbolic/polynomial.py
index f4b83dd..774f2fb 100644
--- a/pymbolic/polynomial.py
+++ b/pymbolic/polynomial.py
@@ -1,5 +1,3 @@
-from six.moves import intern
-
 __copyright__ = "Copyright (C) 2009-2013 Andreas Kloeckner"
 
 __license__ = """
@@ -22,14 +20,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
+from sys import intern
+
 import pymbolic
 from pymbolic.primitives import Expression
 import pymbolic.algorithm as algorithm
 from pymbolic.traits import traits, EuclideanRingTraits, FieldTraits
 
 
-
-
 def _sort_uniq(data):
     def sortkey(xxx_todo_changeme): (exp, coeff) = xxx_todo_changeme; return exp
     data.sort(key=sortkey)
@@ -51,15 +49,11 @@ def _sort_uniq(data):
     return uniq_result
 
 
-
-
 def _get_dependencies(expr):
     from pymbolic.mapper.dependency import DependencyMapper
     return DependencyMapper()(expr)
 
 
-
-
 class LexicalMonomialOrder:
     def __call__(self, a, b):
         from pymbolic.primitives import Variable
@@ -74,9 +68,6 @@ class LexicalMonomialOrder:
         return "LexicalMonomialOrder()"
 
 
-
-
-
 class Polynomial(Expression):
     def __init__(self, base, data=None, unit=1, var_less=LexicalMonomialOrder()):
         self.Base = base
@@ -299,8 +290,6 @@ class Polynomial(Expression):
         return 0
 
 
-
-
 def differentiate(poly):
     return Polynomial(
         poly.base,
@@ -309,7 +298,6 @@ def differentiate(poly):
               if not exp == 0))
 
 
-
 def integrate(poly):
     return Polynomial(
         poly.base,
@@ -317,8 +305,6 @@ def integrate(poly):
               for exp, coeff in poly.data))
 
 
-
-
 def integrate_definite(poly, a, b):
     antideriv = integrate(poly)
     a_bound = pymbolic.substitute(antideriv, {poly.base: a})
@@ -328,21 +314,15 @@ def integrate_definite(poly, a, b):
     return Sum((b_bound, -a_bound))
 
 
-
-
 def leading_coefficient(poly):
     return poly.data[-1][1]
 
 
-
-
 def general_polynomial(base, coefflist, degree):
     return Polynomial(base,
             ((i, coefflist[i]) for i in range(degree+1)))
 
 
-
-
 class PolynomialTraits(EuclideanRingTraits):
     @staticmethod
     def norm(x):
@@ -354,8 +334,6 @@ class PolynomialTraits(EuclideanRingTraits):
         return traits(lc).get_unit(lc)
 
 
-
-
 if __name__ == "__main__":
     x = Polynomial(pymbolic.var("x"))
     y = Polynomial(pymbolic.var("y"))
diff --git a/pymbolic/primitives.py b/pymbolic/primitives.py
index f1f3d7c..5239383 100644
--- a/pymbolic/primitives.py
+++ b/pymbolic/primitives.py
@@ -20,10 +20,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
+from sys import intern
 import pymbolic.traits as traits
 
-import six
-from six.moves import intern
 
 __doc__ = """
 Expression base class
@@ -1596,9 +1595,6 @@ def quotient(numerator, denominator):
 global VALID_CONSTANT_CLASSES
 global VALID_OPERANDS
 VALID_CONSTANT_CLASSES = (int, float, complex)
-if six.PY2:
-    VALID_CONSTANT_CLASSES += (long,)  # noqa pylint:disable=undefined-variable
-
 VALID_OPERANDS = (Expression,)
 
 try:
diff --git a/pymbolic/rational.py b/pymbolic/rational.py
index 90d1b30..b150a54 100644
--- a/pymbolic/rational.py
+++ b/pymbolic/rational.py
@@ -20,7 +20,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
-from six.moves import intern
+from sys import intern
 import pymbolic.primitives as primitives
 import pymbolic.traits as traits
 
diff --git a/pymbolic/traits.py b/pymbolic/traits.py
index c9e7e5b..4e47628 100644
--- a/pymbolic/traits.py
+++ b/pymbolic/traits.py
@@ -1,6 +1,3 @@
-import six
-from functools import reduce
-
 __copyright__ = "Copyright (C) 2009-2013 Andreas Kloeckner"
 
 __license__ = """
@@ -23,6 +20,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 """
 
+from functools import reduce
 from . import algorithm
 
 
-- 
GitLab