From 9d1907a21178ff841a77da7098ade16af9db544f Mon Sep 17 00:00:00 2001 From: Stefan van der Walt Date: Fri, 28 Jun 2013 17:16:13 -0500 Subject: [PATCH] Fix im_class access in Python 3. --- skimage/_shared/utils.py | 8 ++++++++ skimage/transform/_geometric.py | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/skimage/_shared/utils.py b/skimage/_shared/utils.py index fb9376ab..8ba67ec5 100644 --- a/skimage/_shared/utils.py +++ b/skimage/_shared/utils.py @@ -1,5 +1,6 @@ import warnings import functools +import sys from . import six @@ -54,3 +55,10 @@ class deprecated(object): wrapped.__doc__ = doc + '\n\n ' + wrapped.__doc__ return wrapped + + +def get_bound_method_class(m): + """Return the class for a bound method. + + """ + return m.im_class if sys.version < '3' else m.__self__.__class__ diff --git a/skimage/transform/_geometric.py b/skimage/transform/_geometric.py index 58109224..f4920f46 100644 --- a/skimage/transform/_geometric.py +++ b/skimage/transform/_geometric.py @@ -4,6 +4,7 @@ from scipy import ndimage, spatial from skimage.util import img_as_float from ._warps_cy import _warp_fast +from skimage._shared.utils import get_bound_method_class class GeometricTransform(object): """Perform geometric transformations on a set of coordinates. @@ -1009,8 +1010,8 @@ def warp(image, inverse_map=None, map_args={}, output_shape=None, order=1, if inverse_map in HOMOGRAPHY_TRANSFORMS: matrix = inverse_map._matrix elif hasattr(inverse_map, '__name__') \ - and inverse_map.__name__ == 'inverse' \ - and inverse_map.im_class in HOMOGRAPHY_TRANSFORMS: + and inverse_map.__name__ == 'inverse' \ + and get_bound_method_class(inverse_map) in HOMOGRAPHY_TRANSFORMS: matrix = np.linalg.inv(inverse_map.im_self._matrix) if matrix is not None: # transform all bands