From 71601a2bde778b2dcc81099725ae83e23475a9ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Boulogne?= Date: Thu, 13 Jun 2013 13:17:57 +0200 Subject: [PATCH 1/5] fix path import viewers --- skimage/viewer/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skimage/viewer/__init__.py b/skimage/viewer/__init__.py index e3681339..5eed9589 100644 --- a/skimage/viewer/__init__.py +++ b/skimage/viewer/__init__.py @@ -1 +1 @@ -from viewers import ImageViewer, CollectionViewer +from .viewers import ImageViewer, CollectionViewer From 59085424218960bb007d3c251c55ef446008a98f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Boulogne?= Date: Thu, 13 Jun 2013 13:26:33 +0200 Subject: [PATCH 2/5] fix import urllib2 for python3 --- skimage/io/_io.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/skimage/io/_io.py b/skimage/io/_io.py index 5dfe107b..7b21b2b8 100644 --- a/skimage/io/_io.py +++ b/skimage/io/_io.py @@ -1,9 +1,13 @@ __all__ = ['Image', 'imread', 'imread_collection', 'imsave', 'imshow', 'show', 'push', 'pop'] +try: + from urllib.request import urlopen +except ImportError: + from urllib2 import urlopen + import os import re -import urllib2 import tempfile from io import BytesIO @@ -132,7 +136,7 @@ def imread(fname, as_grey=False, plugin=None, flatten=None, if is_url(fname): _, ext = os.path.splitext(fname) with tempfile.NamedTemporaryFile(delete=False, suffix=ext) as f: - u = urllib2.urlopen(fname) + u = urlopen(fname) f.write(u.read()) img = call_plugin('imread', f.name, plugin=plugin, **plugin_args) os.remove(f.name) From 7cf20736b9d420650079a0301ce3b722dd431fea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Boulogne?= Date: Thu, 13 Jun 2013 13:58:21 +0200 Subject: [PATCH 3/5] workaround for itervalues --- doc/logo/scikit_image_logo.py | 8 +++++++- skimage/io/_plugins/plugin.py | 10 +++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/doc/logo/scikit_image_logo.py b/doc/logo/scikit_image_logo.py index 014c5786..fef3a234 100644 --- a/doc/logo/scikit_image_logo.py +++ b/doc/logo/scikit_image_logo.py @@ -24,6 +24,12 @@ from skimage.filter import sobel import scipy_logo +# Python2/3 compatibility +PY2 = sys.version_info[0] == 2 +if PY2: + itervalues = lambda d: d.itervalues() +else: + itervalues = lambda d: d.values() # Utility functions # ================= @@ -49,7 +55,7 @@ def prepare_axes(ax): plt.sca(ax) ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) - for spine in ax.spines.itervalues(): + for spine in itervalues(ax.spines): spine.set_visible(False) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index 7c25fb4e..d8bb0a76 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -12,6 +12,14 @@ except ImportError: import os.path from glob import glob +# Python2/3 compatibility +import sys +PY2 = sys.version_info[0] == 2 +if PY2: + itervalues = lambda d: d.itervalues() +else: + itervalues = lambda d: d.values() + plugin_store = None plugin_provides = {} @@ -174,7 +182,7 @@ def available(loaded=False): """ active_plugins = set() - for plugin_func in plugin_store.itervalues(): + for plugin_func in itervalues(plugin_store): for plugin, func in plugin_func: active_plugins.add(plugin) From cc249baa6c97a08d541320e01a3fc8f633c5f777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Boulogne?= Date: Thu, 13 Jun 2013 14:06:23 +0200 Subject: [PATCH 4/5] fix iteritems for python3 compat --- doc/ext/docscrape.py | 11 ++++++++++- doc/ext/docscrape_sphinx.py | 11 ++++++++++- doc/ext/plot_directive.py | 10 +++++++++- skimage/viewer/plugins/base.py | 11 ++++++++++- skimage/viewer/utils/core.py | 9 ++++++++- 5 files changed, 47 insertions(+), 5 deletions(-) diff --git a/doc/ext/docscrape.py b/doc/ext/docscrape.py index ad5998cc..85e9d4a5 100644 --- a/doc/ext/docscrape.py +++ b/doc/ext/docscrape.py @@ -9,6 +9,15 @@ import pydoc from StringIO import StringIO from warnings import warn +# Python2/3 compatibility +import sys +PY2 = sys.version_info[0] == 2 +if PY2: + iteritems = lambda d: d.iteritems() +else: + iteritems = lambda d: d.items() + + class Reader(object): """A line-based string reader. @@ -369,7 +378,7 @@ class NumpyDocString(object): idx = self['index'] out = [] out += ['.. index:: %s' % idx.get('default','')] - for section, references in idx.iteritems(): + for section, references in iteritems(idx): if section == 'default': continue out += [' :%s: %s' % (section, ', '.join(references))] diff --git a/doc/ext/docscrape_sphinx.py b/doc/ext/docscrape_sphinx.py index 9f4350d4..45e73670 100644 --- a/doc/ext/docscrape_sphinx.py +++ b/doc/ext/docscrape_sphinx.py @@ -2,6 +2,15 @@ import re, inspect, textwrap, pydoc import sphinx from docscrape import NumpyDocString, FunctionDoc, ClassDoc +# Python2/3 compatibility +import sys +PY2 = sys.version_info[0] == 2 +if PY2: + iteritems = lambda d: d.iteritems() +else: + iteritems = lambda d: d.items() + + class SphinxDocString(NumpyDocString): def __init__(self, docstring, config={}): self.use_plots = config.get('use_plots', False) @@ -127,7 +136,7 @@ class SphinxDocString(NumpyDocString): return out out += ['.. index:: %s' % idx.get('default','')] - for section, references in idx.iteritems(): + for section, references in iteritems(idx): if section == 'default': continue elif section == 'refguide': diff --git a/doc/ext/plot_directive.py b/doc/ext/plot_directive.py index dc86552b..1b706f38 100644 --- a/doc/ext/plot_directive.py +++ b/doc/ext/plot_directive.py @@ -132,6 +132,14 @@ except ImportError: def format_template(template, **kw): return jinja.from_string(template, **kw) +# Python2/3 compatibility +import sys +PY2 = sys.version_info[0] == 2 +if PY2: + iteritems = lambda d: d.iteritems() +else: + iteritems = lambda d: d.items() + import matplotlib import matplotlib.cbook as cbook matplotlib.use('Agg') @@ -234,7 +242,7 @@ def mark_plot_labels(app, document): the "htmlonly" (or "latexonly") node to the actual figure node itself. """ - for name, explicit in document.nametypes.iteritems(): + for name, explicit in iteritems(document.nametypes): if not explicit: continue labelid = document.nameids[name] diff --git a/skimage/viewer/plugins/base.py b/skimage/viewer/plugins/base.py index aa6b585a..13604695 100644 --- a/skimage/viewer/plugins/base.py +++ b/skimage/viewer/plugins/base.py @@ -7,6 +7,15 @@ from ..qt.QtCore import Qt from ..utils import RequiredAttr, init_qtapp +# Python2/3 compatibility +import sys +PY2 = sys.version_info[0] == 2 +if PY2: + iteritems = lambda d: d.iteritems() +else: + iteritems = lambda d: d.items() + + class Plugin(QtGui.QDialog): """Base class for plugins that interact with an ImageViewer. @@ -153,7 +162,7 @@ class Plugin(QtGui.QDialog): return arguments = [self._get_value(a) for a in self.arguments] kwargs = dict([(name, self._get_value(a)) - for name, a in self.keyword_arguments.iteritems()]) + for name, a in iteritems(self.keyword_arguments)]) filtered = self.image_filter(*arguments, **kwargs) self.display_filtered_image(filtered) diff --git a/skimage/viewer/utils/core.py b/skimage/viewer/utils/core.py index 0b97d8c3..642e8aa7 100644 --- a/skimage/viewer/utils/core.py +++ b/skimage/viewer/utils/core.py @@ -21,6 +21,13 @@ except ImportError: from ..qt import QtGui +# Python2/3 compatibility +import sys +PY2 = sys.version_info[0] == 2 +if PY2: + iteritems = lambda d: d.iteritems() +else: + iteritems = lambda d: d.items() __all__ = ['init_qtapp', 'start_qtapp', 'RequiredAttr', 'figimage', 'LinearColormap', 'ClearColormap', 'FigureCanvas', 'new_plot'] @@ -81,7 +88,7 @@ class LinearColormap(LinearSegmentedColormap): """ def __init__(self, name, segmented_data, **kwargs): segmented_data = dict((key, [(x, y, y) for x, y in value]) - for key, value in segmented_data.iteritems()) + for key, value in iteritems(segmented_data)) LinearSegmentedColormap.__init__(self, name, segmented_data, **kwargs) From 3926f1873d91e83c7b7d6f80dfde4a4e601af5ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Boulogne?= Date: Thu, 20 Jun 2013 11:16:23 +0200 Subject: [PATCH 5/5] use items/values for python2/3 compat --- doc/ext/docscrape.py | 10 +--------- doc/ext/docscrape_sphinx.py | 10 +--------- doc/ext/plot_directive.py | 9 +-------- doc/logo/scikit_image_logo.py | 9 +-------- skimage/io/_plugins/plugin.py | 9 +-------- skimage/viewer/plugins/base.py | 11 +---------- skimage/viewer/utils/core.py | 9 +-------- 7 files changed, 7 insertions(+), 60 deletions(-) diff --git a/doc/ext/docscrape.py b/doc/ext/docscrape.py index 85e9d4a5..b90b49c8 100644 --- a/doc/ext/docscrape.py +++ b/doc/ext/docscrape.py @@ -9,14 +9,6 @@ import pydoc from StringIO import StringIO from warnings import warn -# Python2/3 compatibility -import sys -PY2 = sys.version_info[0] == 2 -if PY2: - iteritems = lambda d: d.iteritems() -else: - iteritems = lambda d: d.items() - class Reader(object): """A line-based string reader. @@ -378,7 +370,7 @@ class NumpyDocString(object): idx = self['index'] out = [] out += ['.. index:: %s' % idx.get('default','')] - for section, references in iteritems(idx): + for section, references in idx.items(): if section == 'default': continue out += [' :%s: %s' % (section, ', '.join(references))] diff --git a/doc/ext/docscrape_sphinx.py b/doc/ext/docscrape_sphinx.py index 45e73670..9e66c4be 100644 --- a/doc/ext/docscrape_sphinx.py +++ b/doc/ext/docscrape_sphinx.py @@ -2,14 +2,6 @@ import re, inspect, textwrap, pydoc import sphinx from docscrape import NumpyDocString, FunctionDoc, ClassDoc -# Python2/3 compatibility -import sys -PY2 = sys.version_info[0] == 2 -if PY2: - iteritems = lambda d: d.iteritems() -else: - iteritems = lambda d: d.items() - class SphinxDocString(NumpyDocString): def __init__(self, docstring, config={}): @@ -136,7 +128,7 @@ class SphinxDocString(NumpyDocString): return out out += ['.. index:: %s' % idx.get('default','')] - for section, references in iteritems(idx): + for section, references in idx.items(): if section == 'default': continue elif section == 'refguide': diff --git a/doc/ext/plot_directive.py b/doc/ext/plot_directive.py index 1b706f38..4a32b6f1 100644 --- a/doc/ext/plot_directive.py +++ b/doc/ext/plot_directive.py @@ -132,13 +132,6 @@ except ImportError: def format_template(template, **kw): return jinja.from_string(template, **kw) -# Python2/3 compatibility -import sys -PY2 = sys.version_info[0] == 2 -if PY2: - iteritems = lambda d: d.iteritems() -else: - iteritems = lambda d: d.items() import matplotlib import matplotlib.cbook as cbook @@ -242,7 +235,7 @@ def mark_plot_labels(app, document): the "htmlonly" (or "latexonly") node to the actual figure node itself. """ - for name, explicit in iteritems(document.nametypes): + for name, explicit in document.nametypes.items(): if not explicit: continue labelid = document.nameids[name] diff --git a/doc/logo/scikit_image_logo.py b/doc/logo/scikit_image_logo.py index fef3a234..85ba5199 100644 --- a/doc/logo/scikit_image_logo.py +++ b/doc/logo/scikit_image_logo.py @@ -24,13 +24,6 @@ from skimage.filter import sobel import scipy_logo -# Python2/3 compatibility -PY2 = sys.version_info[0] == 2 -if PY2: - itervalues = lambda d: d.itervalues() -else: - itervalues = lambda d: d.values() - # Utility functions # ================= @@ -55,7 +48,7 @@ def prepare_axes(ax): plt.sca(ax) ax.xaxis.set_visible(False) ax.yaxis.set_visible(False) - for spine in itervalues(ax.spines): + for spine in ax.spines.values(): spine.set_visible(False) diff --git a/skimage/io/_plugins/plugin.py b/skimage/io/_plugins/plugin.py index d8bb0a76..5e04f320 100644 --- a/skimage/io/_plugins/plugin.py +++ b/skimage/io/_plugins/plugin.py @@ -12,13 +12,6 @@ except ImportError: import os.path from glob import glob -# Python2/3 compatibility -import sys -PY2 = sys.version_info[0] == 2 -if PY2: - itervalues = lambda d: d.itervalues() -else: - itervalues = lambda d: d.values() plugin_store = None @@ -182,7 +175,7 @@ def available(loaded=False): """ active_plugins = set() - for plugin_func in itervalues(plugin_store): + for plugin_func in plugin_store.values(): for plugin, func in plugin_func: active_plugins.add(plugin) diff --git a/skimage/viewer/plugins/base.py b/skimage/viewer/plugins/base.py index 13604695..2d8c7175 100644 --- a/skimage/viewer/plugins/base.py +++ b/skimage/viewer/plugins/base.py @@ -7,15 +7,6 @@ from ..qt.QtCore import Qt from ..utils import RequiredAttr, init_qtapp -# Python2/3 compatibility -import sys -PY2 = sys.version_info[0] == 2 -if PY2: - iteritems = lambda d: d.iteritems() -else: - iteritems = lambda d: d.items() - - class Plugin(QtGui.QDialog): """Base class for plugins that interact with an ImageViewer. @@ -162,7 +153,7 @@ class Plugin(QtGui.QDialog): return arguments = [self._get_value(a) for a in self.arguments] kwargs = dict([(name, self._get_value(a)) - for name, a in iteritems(self.keyword_arguments)]) + for name, a in self.keyword_arguments.items()]) filtered = self.image_filter(*arguments, **kwargs) self.display_filtered_image(filtered) diff --git a/skimage/viewer/utils/core.py b/skimage/viewer/utils/core.py index 642e8aa7..e4985a9e 100644 --- a/skimage/viewer/utils/core.py +++ b/skimage/viewer/utils/core.py @@ -21,13 +21,6 @@ except ImportError: from ..qt import QtGui -# Python2/3 compatibility -import sys -PY2 = sys.version_info[0] == 2 -if PY2: - iteritems = lambda d: d.iteritems() -else: - iteritems = lambda d: d.items() __all__ = ['init_qtapp', 'start_qtapp', 'RequiredAttr', 'figimage', 'LinearColormap', 'ClearColormap', 'FigureCanvas', 'new_plot'] @@ -88,7 +81,7 @@ class LinearColormap(LinearSegmentedColormap): """ def __init__(self, name, segmented_data, **kwargs): segmented_data = dict((key, [(x, y, y) for x, y in value]) - for key, value in iteritems(segmented_data)) + for key, value in segmented_data.items()) LinearSegmentedColormap.__init__(self, name, segmented_data, **kwargs)