diff --git a/kwant/builder.py b/kwant/builder.py index e59bc7e20ce6cca5da43d8030198e73072492d3d..82efecf1addb69a75373b5fee7d04768d4e7cb0c 100644 --- a/kwant/builder.py +++ b/kwant/builder.py @@ -130,7 +130,7 @@ class SiteFamily(object): except AttributeError: return False - def __neq__(self, other): + def __ne__(self, other): try: return self.canonical_repr != other.canonical_repr except AttributeError: diff --git a/kwant/solvers/common.py b/kwant/solvers/common.py index e8655648ca1f9f661038d82a470056924c7aed50..5b16533c27fde4905bf5fe0433206208dabf3cb4 100644 --- a/kwant/solvers/common.py +++ b/kwant/solvers/common.py @@ -148,7 +148,7 @@ class SparseSolver(object): lhs = lhs - energy * sp.identity(lhs.shape[0], format=self.lhsformat) num_orb = lhs.shape[0] - if check_hermiticity: + if check_hermiticity and len(lhs.data): rtol = 1e-13 atol = 1e-300 tol = rtol * np.max(np.abs(lhs.data)) + atol diff --git a/kwant/solvers/sparse.py b/kwant/solvers/sparse.py index f285ef8a1130a871ec5aef83653396d477d4331f..aae1226aefedad1c6c615ba8bb9614512401414b 100644 --- a/kwant/solvers/sparse.py +++ b/kwant/solvers/sparse.py @@ -15,10 +15,17 @@ from . import common # Note: previous code would have failed if UMFPACK was provided by scikit import scipy.sparse.linalg.dsolve.linsolve as linsolve -umfpack = linsolve.umfpack -uses_umfpack = linsolve.isUmfpack # check if we are actually using UMFPACK or rather SuperLU +# TODO: remove the try (only using the except clause) once we depend on +# scipy >= 0.14.0. +try: + uses_umfpack = linsolve.isUmfpack +except AttributeError: + uses_umfpack = linsolve.useUmfpack + +if uses_umfpack: + umfpack = linsolve.umfpack if uses_umfpack: # This patches a memory leak in SciPy: diff --git a/setup.py b/setup.py index 873a0498b4fdb2e962263291a4478257c357b4ab..bbafc61961362f752261048f569e4799cece985f 100755 --- a/setup.py +++ b/setup.py @@ -18,6 +18,7 @@ TUT_GLOB = 'doc/source/tutorial/*.py' TUT_HIDDEN_PREFIX = '#HIDDEN' import sys +import re import os import glob import subprocess @@ -35,8 +36,14 @@ try: except: cython_version = () else: - cython_version = tuple( - int(n) for n in Cython.__version__.split('-')[0].split('.')) + match = re.match('([0-9.]*)(.*)', Cython.__version__) + cython_version = [int(n) for n in match.group(1).split('.')] + # Decrease version if the version string contains a suffix. + if match.group(2): + while cython_version[-1] == 0: + cython_version.pop() + cython_version[-1] -= 1 + cython_version = tuple(cython_version) try: sys.argv.remove(NO_CYTHON_OPTION)