From ad0cc7b58c047cb633939b20f729738b8230855e Mon Sep 17 00:00:00 2001
From: Martin Reinecke <martin@mpa-garching.mpg.de>
Date: Wed, 16 Jan 2019 13:51:54 +0100
Subject: [PATCH] fix metaclasses

---
 nifty5/domains/domain.py                     | 4 ++--
 nifty5/minimization/energy.py                | 4 ++--
 nifty5/minimization/iteration_controllers.py | 4 ++--
 nifty5/minimization/line_search.py           | 4 ++--
 nifty5/minimization/minimizer.py             | 4 ++--
 nifty5/operators/operator.py                 | 4 ++--
 nifty5/utilities.py                          | 7 +------
 7 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/nifty5/domains/domain.py b/nifty5/domains/domain.py
index b635ae1ad..de8808971 100644
--- a/nifty5/domains/domain.py
+++ b/nifty5/domains/domain.py
@@ -16,10 +16,10 @@
 # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.
 
 from functools import reduce
-from ..utilities import NiftyMetaBase
+from ..utilities import NiftyMeta
 
 
-class Domain(NiftyMetaBase()):
+class Domain(metaclass=NiftyMeta):
     """The abstract class repesenting a (structured or unstructured) domain.
     """
     def __repr__(self):
diff --git a/nifty5/minimization/energy.py b/nifty5/minimization/energy.py
index 3eaa94ef4..3d42c13af 100644
--- a/nifty5/minimization/energy.py
+++ b/nifty5/minimization/energy.py
@@ -15,10 +15,10 @@
 #
 # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.
 
-from ..utilities import NiftyMetaBase
+from ..utilities import NiftyMeta
 
 
-class Energy(NiftyMetaBase()):
+class Energy(metaclass=NiftyMeta):
     """Provides the functional used by minimization schemes.
 
     The Energy object is an implementation of a scalar function including its
diff --git a/nifty5/minimization/iteration_controllers.py b/nifty5/minimization/iteration_controllers.py
index 467e4a5d6..e27201e85 100644
--- a/nifty5/minimization/iteration_controllers.py
+++ b/nifty5/minimization/iteration_controllers.py
@@ -16,11 +16,11 @@
 # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.
 
 from ..logger import logger
-from ..utilities import NiftyMetaBase
+from ..utilities import NiftyMeta
 import numpy as np
 
 
-class IterationController(NiftyMetaBase()):
+class IterationController(metaclass=NiftyMeta):
     """The abstract base class for all iteration controllers.
     An iteration controller is an object that monitors the progress of a
     minimization iteration. At the begin of the minimization, its start()
diff --git a/nifty5/minimization/line_search.py b/nifty5/minimization/line_search.py
index fac417045..89a771b93 100644
--- a/nifty5/minimization/line_search.py
+++ b/nifty5/minimization/line_search.py
@@ -15,7 +15,7 @@
 #
 # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.
 
-from ..utilities import NiftyMetaBase
+from ..utilities import NiftyMeta
 from ..logger import logger
 import numpy as np
 
@@ -103,7 +103,7 @@ class LineEnergy(object):
         return res.real
 
 
-class LineSearch(NiftyMetaBase()):
+class LineSearch(metaclass=NiftyMeta):
     """Class for finding a step size that satisfies the strong Wolfe
     conditions.
 
diff --git a/nifty5/minimization/minimizer.py b/nifty5/minimization/minimizer.py
index 17ea9f79f..eb8199c80 100644
--- a/nifty5/minimization/minimizer.py
+++ b/nifty5/minimization/minimizer.py
@@ -15,10 +15,10 @@
 #
 # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.
 
-from ..utilities import NiftyMetaBase
+from ..utilities import NiftyMeta
 
 
-class Minimizer(NiftyMetaBase()):
+class Minimizer(metaclass=NiftyMeta):
     """A base class used by all minimizers."""
 
     # MR FIXME: the docstring is partially ignored by Sphinx. Why?
diff --git a/nifty5/operators/operator.py b/nifty5/operators/operator.py
index 3b2c8a102..3c1552a41 100644
--- a/nifty5/operators/operator.py
+++ b/nifty5/operators/operator.py
@@ -16,10 +16,10 @@
 # NIFTy is being developed at the Max-Planck-Institut fuer Astrophysik.
 
 import numpy as np
-from ..utilities import NiftyMetaBase, indent
+from ..utilities import NiftyMeta, indent
 
 
-class Operator(NiftyMetaBase()):
+class Operator(metaclass=NiftyMeta):
     """Transforms values defined on one domain into values defined on another
     domain, and can also provide the Jacobian.
     """
diff --git a/nifty5/utilities.py b/nifty5/utilities.py
index 15e32f45d..899f9989b 100644
--- a/nifty5/utilities.py
+++ b/nifty5/utilities.py
@@ -20,10 +20,9 @@ from itertools import product
 from functools import reduce
 
 import numpy as np
-from future.utils import with_metaclass
 
 __all__ = ["get_slice_list", "safe_cast", "parse_spaces", "infer_space",
-           "memo", "NiftyMetaBase", "my_sum", "my_lincomb_simple",
+           "memo", "NiftyMeta", "my_sum", "my_lincomb_simple",
            "my_lincomb", "indent",
            "my_product", "frozendict", "special_add_at", "iscomplextype"]
 
@@ -178,10 +177,6 @@ class NiftyMeta(_DocStringInheritor):
     pass
 
 
-def NiftyMetaBase():
-    return with_metaclass(NiftyMeta, type('NewBase', (object,), {}))
-
-
 class frozendict(collections.abc.Mapping):
     """
     An immutable wrapper around dictionaries that implements the complete
-- 
GitLab