From bf67b92f338d3b07281a5eda2c0e58d753cefb8e Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Mon, 4 Dec 2017 17:32:18 -0800 Subject: [PATCH 1/2] Cleanup imports. --- doc/api/api_changes/2017-12-06-imports-AL.rst | 6 +++ lib/matplotlib/afm.py | 1 - lib/matplotlib/animation.py | 30 +++++++------- lib/matplotlib/axes/_subplots.py | 3 -- lib/matplotlib/backend_bases.py | 20 +++------- lib/matplotlib/backends/backend_agg.py | 1 - lib/matplotlib/backends/backend_cairo.py | 4 +- lib/matplotlib/backends/backend_gdk.py | 4 -- lib/matplotlib/backends/backend_gtk3.py | 9 ++--- lib/matplotlib/backends/backend_gtk3agg.py | 1 - lib/matplotlib/backends/backend_gtk3cairo.py | 1 - lib/matplotlib/backends/backend_gtkagg.py | 3 -- lib/matplotlib/backends/backend_macosx.py | 2 +- lib/matplotlib/backends/backend_nbagg.py | 24 ++++-------- lib/matplotlib/backends/backend_pdf.py | 17 ++++---- lib/matplotlib/backends/backend_pgf.py | 18 ++++----- lib/matplotlib/backends/backend_ps.py | 1 - lib/matplotlib/backends/backend_svg.py | 25 ++++++------ lib/matplotlib/backends/backend_template.py | 6 +-- lib/matplotlib/backends/backend_tkagg.py | 17 +++----- lib/matplotlib/backends/backend_webagg.py | 5 +-- .../backends/backend_webagg_core.py | 4 +- lib/matplotlib/backends/backend_wx.py | 2 - lib/matplotlib/backends/backend_wxagg.py | 13 +++---- .../backends/qt_editor/formsubplottool.py | 2 +- lib/matplotlib/backends/tkagg.py | 1 - lib/matplotlib/cbook/deprecation.py | 4 +- lib/matplotlib/cm.py | 1 - lib/matplotlib/dviread.py | 9 ++--- lib/matplotlib/font_manager.py | 3 -- lib/matplotlib/fontconfig_pattern.py | 1 - lib/matplotlib/gridspec.py | 6 +-- lib/matplotlib/lines.py | 1 - lib/matplotlib/mathtext.py | 38 ++++++++---------- lib/matplotlib/projections/geo.py | 11 ++---- lib/matplotlib/projections/polar.py | 1 - lib/matplotlib/pylab.py | 2 +- lib/matplotlib/pyplot.py | 1 - lib/matplotlib/quiver.py | 4 +- lib/matplotlib/scale.py | 14 +++---- lib/matplotlib/sphinxext/only_directives.py | 2 +- .../sphinxext/tests/test_tinypages.py | 1 - lib/matplotlib/spines.py | 3 -- lib/matplotlib/style/core.py | 1 - lib/matplotlib/testing/__init__.py | 8 +--- lib/matplotlib/testing/_nose/decorators.py | 2 - .../testing/jpl_units/UnitDblConverter.py | 1 - lib/matplotlib/text.py | 39 +++++++------------ lib/matplotlib/tight_bbox.py | 1 - lib/matplotlib/type1font.py | 5 +-- lib/mpl_toolkits/axes_grid1/axes_grid.py | 3 -- lib/mpl_toolkits/axes_grid1/mpl_axes.py | 2 - lib/mpl_toolkits/axes_grid1/parasite_axes.py | 18 ++------- lib/mpl_toolkits/axisartist/axis_artist.py | 8 ++-- lib/mpl_toolkits/axisartist/axislines.py | 24 +++--------- lib/mpl_toolkits/axisartist/floating_axes.py | 17 ++++---- lib/mpl_toolkits/axisartist/grid_finder.py | 1 - lib/mpl_toolkits/mplot3d/art3d.py | 14 +++---- 58 files changed, 160 insertions(+), 306 deletions(-) create mode 100644 doc/api/api_changes/2017-12-06-imports-AL.rst diff --git a/doc/api/api_changes/2017-12-06-imports-AL.rst b/doc/api/api_changes/2017-12-06-imports-AL.rst new file mode 100644 index 000000000000..64f472c48b6f --- /dev/null +++ b/doc/api/api_changes/2017-12-06-imports-AL.rst @@ -0,0 +1,6 @@ +Removal of unused imports +````````````````````````` +Many unused imports were removed from the codebase. As a result, +trying to import certain classes or functions from the "wrong" module +(e.g. `~.Figure` from :mod:`matplotlib.backends.backend_agg` instead of +:mod:`matplotlib.figure`) will now raise an `ImportError`. diff --git a/lib/matplotlib/afm.py b/lib/matplotlib/afm.py index 49a85c20af5e..5a2cffbfbb7b 100644 --- a/lib/matplotlib/afm.py +++ b/lib/matplotlib/afm.py @@ -41,7 +41,6 @@ from six.moves import map import sys -import os import re from ._mathtext_data import uni2type1 diff --git a/lib/matplotlib/animation.py b/lib/matplotlib/animation.py index 30bfd37ea4fc..9d4bb794cee1 100644 --- a/lib/matplotlib/animation.py +++ b/lib/matplotlib/animation.py @@ -23,33 +23,31 @@ import six from six.moves import xrange, zip -import numpy as np +import abc +import contextlib +import itertools +import logging import os import platform import sys -import itertools -try: - # python3 - from base64 import encodebytes -except ImportError: - # python2 - from base64 import encodestring as encodebytes -import abc -import contextlib import tempfile import uuid -import warnings -import logging + +import numpy as np from matplotlib._animation_data import (DISPLAY_TEMPLATE, INCLUDED_FRAMES, JS_INCLUDE) from matplotlib.cbook import iterable, deprecated from matplotlib.compat import subprocess from matplotlib import rcParams, rcParamsDefault, rc_context -if sys.version_info < (3, 0): - from cStringIO import StringIO as InMemory + +if six.PY2: + from base64 import encodestring as encodebytes + from cStringIO import StringIO as BytesIO else: - from io import BytesIO as InMemory + from base64 import encodebytes + from io import BytesIO + _log = logging.getLogger(__name__) @@ -875,7 +873,7 @@ def grab_frame(self, **savefig_kwargs): if self._hit_limit: return suffix = '.' + self.frame_format - f = InMemory() + f = BytesIO() self.fig.savefig(f, format=self.frame_format, dpi=self.dpi, **savefig_kwargs) imgdata64 = encodebytes(f.getvalue()).decode('ascii') diff --git a/lib/matplotlib/axes/_subplots.py b/lib/matplotlib/axes/_subplots.py index 90d55d21cc4c..10979bfd2c2f 100644 --- a/lib/matplotlib/axes/_subplots.py +++ b/lib/matplotlib/axes/_subplots.py @@ -9,9 +9,6 @@ import matplotlib.artist as martist from matplotlib.axes._axes import Axes -import warnings -from matplotlib.cbook import mplDeprecation - class SubplotBase(object): """ diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 2c40fdafbc86..5fcb52805ea1 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -49,23 +49,13 @@ from weakref import WeakKeyDictionary import numpy as np -import matplotlib.cbook as cbook -import matplotlib.colors as colors -import matplotlib.transforms as transforms -import matplotlib.widgets as widgets -from matplotlib import rcParams -from matplotlib import is_interactive -from matplotlib import get_backend -from matplotlib import lines -from matplotlib._pylab_helpers import Gcf +from matplotlib import ( + backend_tools as tools, cbook, colors, textpath, tight_bbox, transforms, + widgets, get_backend, is_interactive, rcParams) +from matplotlib._pylab_helpers import Gcf from matplotlib.transforms import Bbox, TransformedBbox, Affine2D - -import matplotlib.tight_bbox as tight_bbox -import matplotlib.textpath as textpath from matplotlib.path import Path -from matplotlib.cbook import warn_deprecated -import matplotlib.backend_tools as tools try: from PIL import Image @@ -2384,7 +2374,7 @@ def on_press(event): """ if s == 'idle_event': - warn_deprecated(1.5, + cbook.warn_deprecated(1.5, "idle_event is only implemented for the wx backend, and will " "be removed in matplotlib 2.1. Use the animations module " "instead.") diff --git a/lib/matplotlib/backends/backend_agg.py b/lib/matplotlib/backends/backend_agg.py index 50a2c9d9a4d3..a740336f80c7 100644 --- a/lib/matplotlib/backends/backend_agg.py +++ b/lib/matplotlib/backends/backend_agg.py @@ -31,7 +31,6 @@ from matplotlib import cbook, rcParams, __version__ from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, RendererBase, cursors) -from matplotlib.figure import Figure from matplotlib.font_manager import findfont, get_font from matplotlib.ft2font import (LOAD_FORCE_AUTOHINT, LOAD_NO_HINTING, LOAD_DEFAULT, LOAD_NO_AUTOHINT) diff --git a/lib/matplotlib/backends/backend_cairo.py b/lib/matplotlib/backends/backend_cairo.py index 895a8dea72ed..3e8e977ab608 100644 --- a/lib/matplotlib/backends/backend_cairo.py +++ b/lib/matplotlib/backends/backend_cairo.py @@ -24,7 +24,6 @@ import six import gzip -import os import sys import warnings @@ -54,10 +53,9 @@ from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, RendererBase) -from matplotlib.figure import Figure from matplotlib.mathtext import MathTextParser from matplotlib.path import Path -from matplotlib.transforms import Bbox, Affine2D +from matplotlib.transforms import Affine2D from matplotlib.font_manager import ttfFontProperty diff --git a/lib/matplotlib/backends/backend_gdk.py b/lib/matplotlib/backends/backend_gdk.py index 0937eb780112..ced57a881a3b 100644 --- a/lib/matplotlib/backends/backend_gdk.py +++ b/lib/matplotlib/backends/backend_gdk.py @@ -3,9 +3,6 @@ import six -import math -import os -import sys import warnings import gobject @@ -27,7 +24,6 @@ _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, RendererBase) from matplotlib.cbook import warn_deprecated -from matplotlib.figure import Figure from matplotlib.mathtext import MathTextParser from matplotlib.transforms import Affine2D from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array diff --git a/lib/matplotlib/backends/backend_gtk3.py b/lib/matplotlib/backends/backend_gtk3.py index 606b01977cdd..070056c090e1 100644 --- a/lib/matplotlib/backends/backend_gtk3.py +++ b/lib/matplotlib/backends/backend_gtk3.py @@ -8,15 +8,12 @@ import sys import matplotlib -from matplotlib import ( - backend_tools, cbook, colors as mcolors, lines, rcParams) +from matplotlib import backend_tools, rcParams from matplotlib._pylab_helpers import Gcf from matplotlib.backend_bases import ( - _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, - NavigationToolbar2, RendererBase, StatusbarBase, TimerBase, - ToolContainerBase, cursors) + _Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2, + StatusbarBase, TimerBase, ToolContainerBase, cursors) from matplotlib.backend_managers import ToolManager -from matplotlib.cbook import is_writable_file_like from matplotlib.figure import Figure from matplotlib.widgets import SubplotTool from ._gtk3_compat import GLib, GObject, Gtk, Gdk diff --git a/lib/matplotlib/backends/backend_gtk3agg.py b/lib/matplotlib/backends/backend_gtk3agg.py index 5d175ec7eccc..53c625b8a50f 100644 --- a/lib/matplotlib/backends/backend_gtk3agg.py +++ b/lib/matplotlib/backends/backend_gtk3agg.py @@ -9,7 +9,6 @@ from . import backend_agg, backend_gtk3 from .backend_cairo import cairo, HAS_CAIRO_CFFI from .backend_gtk3 import _BackendGTK3 -from matplotlib.figure import Figure from matplotlib import transforms if six.PY3 and not HAS_CAIRO_CFFI: diff --git a/lib/matplotlib/backends/backend_gtk3cairo.py b/lib/matplotlib/backends/backend_gtk3cairo.py index f27d38ecdb26..b0e4127605e2 100644 --- a/lib/matplotlib/backends/backend_gtk3cairo.py +++ b/lib/matplotlib/backends/backend_gtk3cairo.py @@ -7,7 +7,6 @@ from .backend_cairo import cairo, HAS_CAIRO_CFFI from .backend_gtk3 import _BackendGTK3 from matplotlib.backend_bases import cursors -from matplotlib.figure import Figure class RendererGTK3Cairo(backend_cairo.RendererCairo): diff --git a/lib/matplotlib/backends/backend_gtkagg.py b/lib/matplotlib/backends/backend_gtkagg.py index 1de53c84f382..f513bf70bb19 100644 --- a/lib/matplotlib/backends/backend_gtkagg.py +++ b/lib/matplotlib/backends/backend_gtkagg.py @@ -6,10 +6,7 @@ import six -import os - import matplotlib -from matplotlib.figure import Figure from matplotlib.backends.backend_agg import FigureCanvasAgg from matplotlib.backends.backend_gtk import ( gtk, _BackendGTK, FigureCanvasGTK, FigureManagerGTK, NavigationToolbar2GTK, diff --git a/lib/matplotlib/backends/backend_macosx.py b/lib/matplotlib/backends/backend_macosx.py index de403f79ce76..20ec3a909b3d 100644 --- a/lib/matplotlib/backends/backend_macosx.py +++ b/lib/matplotlib/backends/backend_macosx.py @@ -16,7 +16,7 @@ import matplotlib from matplotlib.backends import _macosx -from .backend_agg import RendererAgg, FigureCanvasAgg +from .backend_agg import FigureCanvasAgg ######################################################################## diff --git a/lib/matplotlib/backends/backend_nbagg.py b/lib/matplotlib/backends/backend_nbagg.py index 408a6284e130..12c1064d1dec 100644 --- a/lib/matplotlib/backends/backend_nbagg.py +++ b/lib/matplotlib/backends/backend_nbagg.py @@ -3,15 +3,13 @@ # lib/matplotlib/backends/web_backend/nbagg_uat.ipynb to help verify # that changes made maintain expected behaviour. -import datetime +import six + from base64 import b64encode -import json import io +import json import os -import six -from uuid import uuid4 as uuid - -import tornado.ioloop +import uuid from IPython.display import display, Javascript, HTML try: @@ -23,19 +21,11 @@ from matplotlib import rcParams, is_interactive from matplotlib._pylab_helpers import Gcf +from matplotlib.backend_bases import ( + _Backend, FigureCanvasBase, NavigationToolbar2) from matplotlib.backends.backend_webagg_core import ( FigureCanvasWebAggCore, FigureManagerWebAgg, NavigationToolbar2WebAgg, TimerTornado) -from matplotlib.backend_bases import ( - _Backend, FigureCanvasBase, NavigationToolbar2) -from matplotlib.figure import Figure -from matplotlib import is_interactive -from matplotlib.backends.backend_webagg_core import (FigureManagerWebAgg, - FigureCanvasWebAggCore, - NavigationToolbar2WebAgg, - TimerTornado) -from matplotlib.backend_bases import (ShowBase, NavigationToolbar2, - FigureCanvasBase) def connection_info(): @@ -174,7 +164,7 @@ class CommSocket(object): def __init__(self, manager): self.supports_binary = None self.manager = manager - self.uuid = str(uuid()) + self.uuid = str(uuid.uuid4()) # Publish an output area with a unique ID. The javascript can then # hook into this area. display(HTML("
" % self.uuid)) diff --git a/lib/matplotlib/backends/backend_pdf.py b/lib/matplotlib/backends/backend_pdf.py index f84b3d539afd..f9783943da4c 100644 --- a/lib/matplotlib/backends/backend_pdf.py +++ b/lib/matplotlib/backends/backend_pdf.py @@ -8,28 +8,25 @@ unicode_literals) import six +from six import unichr import codecs +import collections +from datetime import datetime +from functools import total_ordering +from io import BytesIO +import logging +from math import ceil, cos, floor, pi, sin import os import re import struct import sys import time import warnings -import logging import zlib -import collections -from io import BytesIO -from functools import total_ordering import numpy as np -from six import unichr - - -from datetime import datetime, tzinfo, timedelta -from math import ceil, cos, floor, pi, sin -import matplotlib from matplotlib import __version__, rcParams from matplotlib._pylab_helpers import Gcf from matplotlib.backend_bases import ( diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index e75c08f8bd74..6e3c6914b738 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -3,32 +3,28 @@ import six +import atexit +import codecs +import errno import math import os -import sys -import errno import re import shutil +import sys import tempfile -import codecs -import atexit -import weakref import warnings - -import numpy as np +import weakref import matplotlib as mpl +from matplotlib import _png, rcParams from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, RendererBase) from matplotlib.backends.backend_mixed import MixedModeRenderer -from matplotlib.figure import Figure -from matplotlib.text import Text -from matplotlib.path import Path -from matplotlib import _png, rcParams from matplotlib.cbook import is_writable_file_like from matplotlib.compat import subprocess from matplotlib.compat.subprocess import check_output +from matplotlib.path import Path ############################################################################### diff --git a/lib/matplotlib/backends/backend_ps.py b/lib/matplotlib/backends/backend_ps.py index d160ea5cd6f8..a86b39abafd8 100644 --- a/lib/matplotlib/backends/backend_ps.py +++ b/lib/matplotlib/backends/backend_ps.py @@ -22,7 +22,6 @@ from matplotlib.cbook import (get_realpath_and_stat, is_writable_file_like, maxdict, file_requires_unicode) from matplotlib.compat.subprocess import subprocess -from matplotlib.figure import Figure from matplotlib.font_manager import findfont, is_opentype_cff_font, get_font from matplotlib.ft2font import KERNING_DEFAULT, LOAD_NO_HINTING diff --git a/lib/matplotlib/backends/backend_svg.py b/lib/matplotlib/backends/backend_svg.py index bf09351655a0..1d4e12925bd5 100644 --- a/lib/matplotlib/backends/backend_svg.py +++ b/lib/matplotlib/backends/backend_svg.py @@ -7,32 +7,31 @@ from six import unichr from six.moves import xrange -import os, base64, tempfile, gzip, io, sys, codecs, re - -import numpy as np +import base64 +import codecs +import gzip +import hashlib +import io import logging - -from hashlib import md5 +import re import uuid +import numpy as np + from matplotlib import __version__, rcParams from matplotlib.backend_bases import ( - _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, - RendererBase) + _Backend, FigureCanvasBase, FigureManagerBase, RendererBase) from matplotlib.backends.backend_mixed import MixedModeRenderer from matplotlib.cbook import is_writable_file_like from matplotlib.colors import rgb2hex -from matplotlib.figure import Figure -from matplotlib.font_manager import findfont, FontProperties, get_font -from matplotlib.ft2font import KERNING_DEFAULT, LOAD_NO_HINTING +from matplotlib.font_manager import findfont, get_font +from matplotlib.ft2font import LOAD_NO_HINTING from matplotlib.mathtext import MathTextParser from matplotlib.path import Path from matplotlib import _path from matplotlib.transforms import Affine2D, Affine2DBase from matplotlib import _png -from xml.sax.saxutils import escape as escape_xml_text - _log = logging.getLogger(__name__) backend_version = __version__ @@ -325,7 +324,7 @@ def _make_id(self, type, content): if six.PY3: content = content.encode('utf8') salt = salt.encode('utf8') - m = md5() + m = hashlib.md5() m.update(salt) m.update(content) return '%s%s' % (type, m.hexdigest()[:10]) diff --git a/lib/matplotlib/backends/backend_template.py b/lib/matplotlib/backends/backend_template.py index 771b0be045de..c4c9482f52be 100644 --- a/lib/matplotlib/backends/backend_template.py +++ b/lib/matplotlib/backends/backend_template.py @@ -67,12 +67,10 @@ import six -import matplotlib from matplotlib._pylab_helpers import Gcf -from matplotlib.backend_bases import RendererBase, GraphicsContextBase,\ - FigureManagerBase, FigureCanvasBase +from matplotlib.backend_bases import ( + FigureCanvasBase, FigureManagerBase, GraphicsContextBase, RendererBase) from matplotlib.figure import Figure -from matplotlib.transforms import Bbox class RendererTemplate(RendererBase): diff --git a/lib/matplotlib/backends/backend_tkagg.py b/lib/matplotlib/backends/backend_tkagg.py index bf53a1bc222a..fc2f4291be6a 100644 --- a/lib/matplotlib/backends/backend_tkagg.py +++ b/lib/matplotlib/backends/backend_tkagg.py @@ -4,11 +4,10 @@ import six from six.moves import tkinter as Tk -from six.moves import tkinter_filedialog as FileDialog -import os, sys, math -import os.path import logging +import os.path +import sys # Paint image to Tk photo blitter extension import matplotlib.backends.tkagg as tkagg @@ -17,24 +16,18 @@ import matplotlib.backends.windowing as windowing import matplotlib +from matplotlib import backend_tools, rcParams from matplotlib.backend_bases import ( - _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, - NavigationToolbar2, RendererBase, StatusbarBase, TimerBase, - ToolContainerBase, cursors) + _Backend, FigureCanvasBase, FigureManagerBase, NavigationToolbar2, + StatusbarBase, TimerBase, ToolContainerBase, cursors) from matplotlib.backend_managers import ToolManager -from matplotlib import backend_tools from matplotlib._pylab_helpers import Gcf - from matplotlib.figure import Figure - from matplotlib.widgets import SubplotTool -import matplotlib.cbook as cbook _log = logging.getLogger(__name__) -rcParams = matplotlib.rcParams - backend_version = Tk.TkVersion # the true dots per inch on the screen; should be display dependent diff --git a/lib/matplotlib/backends/backend_webagg.py b/lib/matplotlib/backends/backend_webagg.py index 007552d85040..c917a162ab19 100644 --- a/lib/matplotlib/backends/backend_webagg.py +++ b/lib/matplotlib/backends/backend_webagg.py @@ -15,6 +15,7 @@ import six +from contextlib import contextmanager import errno import json import os @@ -23,7 +24,6 @@ import signal import socket import threading -from contextlib import contextmanager try: import tornado @@ -34,11 +34,8 @@ import tornado.ioloop import tornado.websocket -import matplotlib from matplotlib import rcParams -from matplotlib import backend_bases from matplotlib.backend_bases import _Backend -from matplotlib.figure import Figure from matplotlib._pylab_helpers import Gcf from . import backend_webagg_core as core from .backend_webagg_core import TimerTornado diff --git a/lib/matplotlib/backends/backend_webagg_core.py b/lib/matplotlib/backends/backend_webagg_core.py index bbe491f37665..e75014b1e632 100644 --- a/lib/matplotlib/backends/backend_webagg_core.py +++ b/lib/matplotlib/backends/backend_webagg_core.py @@ -15,19 +15,17 @@ import six +import datetime import io import json import os -import time import warnings import numpy as np import tornado -import datetime from matplotlib.backends import backend_agg from matplotlib.backend_bases import _Backend -from matplotlib.figure import Figure from matplotlib import backend_bases from matplotlib import _png diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index 7be2117f483e..7d108f819b4a 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -25,8 +25,6 @@ import weakref import warnings -import numpy as np - import matplotlib from matplotlib.backend_bases import ( _Backend, FigureCanvasBase, FigureManagerBase, GraphicsContextBase, diff --git a/lib/matplotlib/backends/backend_wxagg.py b/lib/matplotlib/backends/backend_wxagg.py index 368115e27646..8383f50cde89 100644 --- a/lib/matplotlib/backends/backend_wxagg.py +++ b/lib/matplotlib/backends/backend_wxagg.py @@ -3,17 +3,14 @@ import six -import matplotlib -from matplotlib.figure import Figure - -from .backend_agg import FigureCanvasAgg +import wx +import matplotlib from . import wx_compat as wxc from . import backend_wx -from .backend_wx import (_BackendWx, FigureManagerWx, FigureCanvasWx, - FigureFrameWx, DEBUG_MSG, NavigationToolbar2Wx, Toolbar) - -import wx +from .backend_agg import FigureCanvasAgg +from .backend_wx import ( + _BackendWx, FigureCanvasWx, FigureFrameWx, NavigationToolbar2Wx, DEBUG_MSG) class FigureFrameWxAgg(FigureFrameWx): diff --git a/lib/matplotlib/backends/qt_editor/formsubplottool.py b/lib/matplotlib/backends/qt_editor/formsubplottool.py index 4bce2824707f..4906af588a7a 100644 --- a/lib/matplotlib/backends/qt_editor/formsubplottool.py +++ b/lib/matplotlib/backends/qt_editor/formsubplottool.py @@ -1,4 +1,4 @@ -from matplotlib.backends.qt_compat import QtCore, QtGui, QtWidgets +from matplotlib.backends.qt_compat import QtWidgets class UiSubplotTool(QtWidgets.QDialog): diff --git a/lib/matplotlib/backends/tkagg.py b/lib/matplotlib/backends/tkagg.py index 979bc3cc24fa..060f4726c060 100644 --- a/lib/matplotlib/backends/tkagg.py +++ b/lib/matplotlib/backends/tkagg.py @@ -32,7 +32,6 @@ def blit(photoimage, aggimage, bbox=None, colormode=1): raise def test(aggimage): - import time r = Tk.Tk() c = Tk.Canvas(r, width=aggimage.width, height=aggimage.height) c.pack() diff --git a/lib/matplotlib/cbook/deprecation.py b/lib/matplotlib/cbook/deprecation.py index 851d53d69033..ca7ae333f272 100644 --- a/lib/matplotlib/cbook/deprecation.py +++ b/lib/matplotlib/cbook/deprecation.py @@ -1,5 +1,6 @@ -import warnings import functools +import textwrap +import warnings class MatplotlibDeprecationWarning(UserWarning): @@ -161,7 +162,6 @@ def the_function_to_deprecate(): def deprecate(obj, message=message, name=name, alternative=alternative, pending=pending, addendum=addendum): - import textwrap if not name: name = obj.__name__ diff --git a/lib/matplotlib/cm.py b/lib/matplotlib/cm.py index 03a121e49549..e26f31a3d585 100644 --- a/lib/matplotlib/cm.py +++ b/lib/matplotlib/cm.py @@ -9,7 +9,6 @@ import six -import os import numpy as np from numpy import ma import matplotlib as mpl diff --git a/lib/matplotlib/dviread.py b/lib/matplotlib/dviread.py index 4bc254c79f3c..9553beaaedd8 100644 --- a/lib/matplotlib/dviread.py +++ b/lib/matplotlib/dviread.py @@ -23,20 +23,17 @@ from six.moves import xrange from collections import namedtuple -import errno from functools import partial, wraps import logging import numpy as np +import os import re import struct import sys import textwrap -import os -import matplotlib -import matplotlib.cbook as mpl_cbook +from matplotlib import cbook, rcParams from matplotlib.compat import subprocess -from matplotlib import rcParams try: from functools import lru_cache @@ -65,7 +62,7 @@ def ord(x): # just stops reading) # finale: the finale (unimplemented in our current implementation) -_dvistate = mpl_cbook.Bunch(pre=0, outer=1, inpage=2, post_post=3, finale=4) +_dvistate = cbook.Bunch(pre=0, outer=1, inpage=2, post_post=3, finale=4) # The marks on a page consist of text and boxes. A page also has dimensions. Page = namedtuple('Page', 'text boxes height width descent') diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py index 67d2a4f8bb1d..8290388a1dab 100644 --- a/lib/matplotlib/font_manager.py +++ b/lib/matplotlib/font_manager.py @@ -22,7 +22,6 @@ from __future__ import absolute_import, division, print_function import six -from six.moves import cPickle as pickle """ KNOWN ISSUES @@ -53,7 +52,6 @@ import warnings import logging -import matplotlib from matplotlib import afm, cbook, ft2font, rcParams, get_cachedir from matplotlib.compat import subprocess from matplotlib.fontconfig_pattern import ( @@ -1375,7 +1373,6 @@ def get_font(filename, hinting_factor=None): # The experimental fontconfig-based backend. if USE_FONTCONFIG and sys.platform != 'win32': - import re def fc_match(pattern, fontext): fontexts = get_fontext_synonyms(fontext) diff --git a/lib/matplotlib/fontconfig_pattern.py b/lib/matplotlib/fontconfig_pattern.py index d7513eae48f3..d1eda70d8ef4 100644 --- a/lib/matplotlib/fontconfig_pattern.py +++ b/lib/matplotlib/fontconfig_pattern.py @@ -22,7 +22,6 @@ import six import re -import sys from pyparsing import (Literal, ZeroOrMore, Optional, Regex, StringEnd, ParseException, Suppress) diff --git a/lib/matplotlib/gridspec.py b/lib/matplotlib/gridspec.py index cd9d6ebbf5e3..f9b7056ccc42 100644 --- a/lib/matplotlib/gridspec.py +++ b/lib/matplotlib/gridspec.py @@ -18,17 +18,15 @@ unicode_literals) import six -from six.moves import zip import copy import warnings -import matplotlib +import numpy as np + from matplotlib import rcParams import matplotlib.transforms as mtransforms -import numpy as np - class GridSpecBase(object): """ diff --git a/lib/matplotlib/lines.py b/lib/matplotlib/lines.py index 043b3a5b7cd0..326644652aca 100644 --- a/lib/matplotlib/lines.py +++ b/lib/matplotlib/lines.py @@ -24,7 +24,6 @@ # Imported here for backward compatibility, even though they don't # really belong. -from numpy import ma from . import _path from .markers import ( CARETLEFT, CARETRIGHT, CARETUP, CARETDOWN, diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index e49865321fda..a1353235e529 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -18,9 +18,9 @@ unicode_literals) import six - -import os, sys from six import unichr + +import os from math import ceil import unicodedata from warnings import warn @@ -30,29 +30,23 @@ except ImportError: # Py2 from backports.functools_lru_cache import lru_cache -from numpy import inf, isinf import numpy as np -import pyparsing -from pyparsing import (Combine, Group, Optional, Forward, - Literal, OneOrMore, ZeroOrMore, ParseException, Empty, - ParseResults, Suppress, oneOf, StringEnd, ParseFatalException, - FollowedBy, Regex, ParserElement, QuotedString, ParseBaseException) +from pyparsing import ( + Combine, Empty, FollowedBy, Forward, Group, Literal, oneOf, OneOrMore, + Optional, ParseBaseException, ParseFatalException, ParserElement, + QuotedString, Regex, StringEnd, Suppress, ZeroOrMore) ParserElement.enablePackrat() +from matplotlib import _png, colors as mcolors, get_data_path, rcParams from matplotlib.afm import AFM from matplotlib.cbook import Bunch, get_realpath_and_stat -from matplotlib.ft2font import (FT2Image, KERNING_DEFAULT, LOAD_FORCE_AUTOHINT, - LOAD_NO_HINTING) +from matplotlib.ft2font import FT2Image, KERNING_DEFAULT, LOAD_NO_HINTING from matplotlib.font_manager import findfont, FontProperties, get_font from matplotlib._mathtext_data import (latex_to_bakoma, latex_to_standard, tex2uni, latex_to_cmex, stix_virtual_fonts) -from matplotlib import get_data_path, rcParams - -import matplotlib.colors as mcolors -import matplotlib._png as _png #################### @@ -1691,7 +1685,7 @@ def hpack(self, w=0., m='additional'): d = max(d, p.depth) elif isinstance(p, Box): x += p.width - if not isinf(p.height) and not isinf(p.depth): + if not np.isinf(p.height) and not np.isinf(p.depth): s = getattr(p, 'shift_amount', 0.) h = max(h, p.height - s) d = max(d, p.depth + s) @@ -1728,7 +1722,7 @@ def __init__(self, elements, h=0., m='additional'): List.__init__(self, elements) self.vpack() - def vpack(self, h=0., m='additional', l=float(inf)): + def vpack(self, h=0., m='additional', l=np.inf): """ The main duty of :meth:`vpack` is to compute the dimensions of the resulting boxes, and to adjust the glue if one of those @@ -1755,7 +1749,7 @@ def vpack(self, h=0., m='additional', l=float(inf)): if isinstance(p, Box): x += d + p.height d = p.depth - if not isinf(p.width): + if not np.isinf(p.width): s = getattr(p, 'shift_amount', 0.) w = max(w, p.width + s) elif isinstance(p, Glue): @@ -1820,7 +1814,7 @@ def __init__(self, state, thickness=None): thickness = state.font_output.get_underline_thickness( state.font, state.fontsize, state.dpi) height = depth = thickness * 0.5 - Rule.__init__(self, inf, height, depth, state) + Rule.__init__(self, np.inf, height, depth, state) class Vrule(Rule): """ @@ -1829,7 +1823,7 @@ class Vrule(Rule): def __init__(self, state): thickness = state.font_output.get_underline_thickness( state.font, state.fontsize, state.dpi) - Rule.__init__(self, thickness, inf, inf, state) + Rule.__init__(self, thickness, np.inf, np.inf, state) class Glue(Node): """ @@ -2114,9 +2108,9 @@ def hlist_out(self, box): rule_height = p.height rule_depth = p.depth rule_width = p.width - if isinf(rule_height): + if np.isinf(rule_height): rule_height = box.height - if isinf(rule_depth): + if np.isinf(rule_depth): rule_depth = box.depth if rule_height > 0 and rule_width > 0: self.cur_v = baseline + rule_depth @@ -2174,7 +2168,7 @@ def vlist_out(self, box): rule_height = p.height rule_depth = p.depth rule_width = p.width - if isinf(rule_width): + if np.isinf(rule_width): rule_width = box.width rule_height += rule_depth if rule_height > 0 and rule_depth > 0: diff --git a/lib/matplotlib/projections/geo.py b/lib/matplotlib/projections/geo.py index cb2c581fb5fe..27a6b1068fa0 100644 --- a/lib/matplotlib/projections/geo.py +++ b/lib/matplotlib/projections/geo.py @@ -3,20 +3,17 @@ import six -import math - import numpy as np -import numpy.ma as ma import matplotlib -rcParams = matplotlib.rcParams +from matplotlib import rcParams from matplotlib.axes import Axes -from matplotlib import cbook +import matplotlib.axis as maxis from matplotlib.patches import Circle from matplotlib.path import Path import matplotlib.spines as mspines -import matplotlib.axis as maxis -from matplotlib.ticker import Formatter, Locator, NullLocator, FixedLocator, NullFormatter +from matplotlib.ticker import ( + Formatter, NullLocator, FixedLocator, NullFormatter) from matplotlib.transforms import Affine2D, BboxTransformTo, Transform diff --git a/lib/matplotlib/projections/polar.py b/lib/matplotlib/projections/polar.py index fe9f3e536171..532be710c58e 100644 --- a/lib/matplotlib/projections/polar.py +++ b/lib/matplotlib/projections/polar.py @@ -7,7 +7,6 @@ import numpy as np -import matplotlib.artist as martist from matplotlib.axes import Axes import matplotlib.axis as maxis from matplotlib import cbook diff --git a/lib/matplotlib/pylab.py b/lib/matplotlib/pylab.py index 9c13db58f69d..67bb7fa1f1c6 100644 --- a/lib/matplotlib/pylab.py +++ b/lib/matplotlib/pylab.py @@ -217,7 +217,7 @@ import six -import sys, warnings +import warnings from matplotlib.cbook import ( flatten, exception_to_str, silent_list, iterable, dedent) diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index 2fa3417f2241..6a17c3b7711b 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -24,7 +24,6 @@ import sys import time -import types import warnings from cycler import cycler diff --git a/lib/matplotlib/quiver.py b/lib/matplotlib/quiver.py index dd628f7e7a2f..2f5e8e6ab3ee 100644 --- a/lib/matplotlib/quiver.py +++ b/lib/matplotlib/quiver.py @@ -18,6 +18,8 @@ unicode_literals) import six + +import math import weakref import numpy as np @@ -29,10 +31,8 @@ from matplotlib.artist import allow_rasterization from matplotlib import docstring import matplotlib.font_manager as font_manager -import matplotlib.cbook as cbook from matplotlib.cbook import delete_masked_points from matplotlib.patches import CirclePolygon -import math _quiver_doc = """ diff --git a/lib/matplotlib/scale.py b/lib/matplotlib/scale.py index 459c1c0326c5..1fb0b00edd53 100644 --- a/lib/matplotlib/scale.py +++ b/lib/matplotlib/scale.py @@ -6,13 +6,11 @@ import numpy as np from numpy import ma -from matplotlib.cbook import dedent -from matplotlib.ticker import (NullFormatter, ScalarFormatter, - LogFormatterSciNotation, LogitFormatter) -from matplotlib.ticker import (NullLocator, LogLocator, AutoLocator, - SymmetricalLogLocator, LogitLocator) +from matplotlib import cbook, docstring +from matplotlib.ticker import ( + NullFormatter, ScalarFormatter, LogFormatterSciNotation, LogitFormatter, + NullLocator, LogLocator, AutoLocator, SymmetricalLogLocator, LogitLocator) from matplotlib.transforms import Transform, IdentityTransform -from matplotlib import docstring class ScaleBase(object): @@ -551,7 +549,7 @@ def scale_factory(scale, axis, **kwargs): raise ValueError("Unknown scale type '%s'" % scale) return _scale_mapping[scale](axis, **kwargs) -scale_factory.__doc__ = dedent(scale_factory.__doc__) % \ +scale_factory.__doc__ = cbook.dedent(scale_factory.__doc__) % \ {'names': " | ".join(get_scale_names())} @@ -573,7 +571,7 @@ def get_scale_docs(): scale_class = _scale_mapping[name] docs.append(" '%s'" % name) docs.append("") - class_docs = dedent(scale_class.__init__.__doc__) + class_docs = cbook.dedent(scale_class.__init__.__doc__) class_docs = "".join([" %s\n" % x for x in class_docs.split("\n")]) docs.append(class_docs) diff --git a/lib/matplotlib/sphinxext/only_directives.py b/lib/matplotlib/sphinxext/only_directives.py index 18205cc7de71..0a5ed70f800e 100644 --- a/lib/matplotlib/sphinxext/only_directives.py +++ b/lib/matplotlib/sphinxext/only_directives.py @@ -9,7 +9,7 @@ import six from docutils.nodes import Body, Element -from docutils.parsers.rst import directives + class only_base(Body, Element): def dont_traverse(self, *args, **kwargs): diff --git a/lib/matplotlib/sphinxext/tests/test_tinypages.py b/lib/matplotlib/sphinxext/tests/test_tinypages.py index 89610e95edaa..748a3f381900 100644 --- a/lib/matplotlib/sphinxext/tests/test_tinypages.py +++ b/lib/matplotlib/sphinxext/tests/test_tinypages.py @@ -2,7 +2,6 @@ import filecmp from os.path import join as pjoin, dirname, isdir -import shutil from subprocess import call, Popen, PIPE import sys diff --git a/lib/matplotlib/spines.py b/lib/matplotlib/spines.py index d8f98fa13c0f..5f4f798cfef8 100644 --- a/lib/matplotlib/spines.py +++ b/lib/matplotlib/spines.py @@ -5,14 +5,11 @@ import matplotlib -import matplotlib.artist as martist from matplotlib.artist import allow_rasterization from matplotlib import docstring import matplotlib.transforms as mtransforms -import matplotlib.lines as mlines import matplotlib.patches as mpatches import matplotlib.path as mpath -import matplotlib.cbook as cbook import numpy as np import warnings diff --git a/lib/matplotlib/style/core.py b/lib/matplotlib/style/core.py index bd35f902eab2..49467c4c9553 100644 --- a/lib/matplotlib/style/core.py +++ b/lib/matplotlib/style/core.py @@ -20,7 +20,6 @@ import warnings import matplotlib as mpl -from matplotlib import cbook from matplotlib import rc_params_from_file, rcParamsDefault diff --git a/lib/matplotlib/testing/__init__.py b/lib/matplotlib/testing/__init__.py index cafbbc667bab..36a7403698f2 100644 --- a/lib/matplotlib/testing/__init__.py +++ b/lib/matplotlib/testing/__init__.py @@ -2,18 +2,15 @@ unicode_literals) import functools -import inspect import warnings -from contextlib import contextmanager import matplotlib -from matplotlib.cbook import iterable -from matplotlib import rcParams, rcdefaults, use +from matplotlib import cbook, rcParams, rcdefaults, use def _is_list_like(obj): """Returns whether the obj is iterable and not a string""" - return not isinstance(obj, six.string_types) and iterable(obj) + return not isinstance(obj, six.string_types) and cbook.iterable(obj) def is_called_from_pytest(): @@ -42,7 +39,6 @@ def setup(): # The baseline images are created in this locale, so we should use # it during all of the tests. import locale - import warnings from matplotlib.backends import backend_agg, backend_pdf, backend_svg try: diff --git a/lib/matplotlib/testing/_nose/decorators.py b/lib/matplotlib/testing/_nose/decorators.py index e6e2eb4dc847..1f0807df2004 100644 --- a/lib/matplotlib/testing/_nose/decorators.py +++ b/lib/matplotlib/testing/_nose/decorators.py @@ -1,9 +1,7 @@ from __future__ import (absolute_import, division, print_function, unicode_literals) -import os import six -import sys from .. import _copy_metadata from . import knownfail from .exceptions import KnownFailureDidNotFailTest diff --git a/lib/matplotlib/testing/jpl_units/UnitDblConverter.py b/lib/matplotlib/testing/jpl_units/UnitDblConverter.py index 73bda0bb7f5b..fb85a1a8e218 100644 --- a/lib/matplotlib/testing/jpl_units/UnitDblConverter.py +++ b/lib/matplotlib/testing/jpl_units/UnitDblConverter.py @@ -17,7 +17,6 @@ import numpy as np import matplotlib.units as units -import matplotlib.ticker as ticker import matplotlib.projections.polar as polar from matplotlib.cbook import iterable # diff --git a/lib/matplotlib/text.py b/lib/matplotlib/text.py index 84d7f1242155..0d521b40b870 100644 --- a/lib/matplotlib/text.py +++ b/lib/matplotlib/text.py @@ -6,32 +6,23 @@ import six from six.moves import zip +import contextlib +import logging import math import warnings -import logging import weakref -import contextlib - import numpy as np -from matplotlib import cbook -from matplotlib import rcParams -import matplotlib.artist as artist -from matplotlib.artist import Artist -from matplotlib.cbook import maxdict -from matplotlib import docstring +from matplotlib import artist, cbook, docstring, rcParams +from matplotlib.artist import Artist, allow_rasterization from matplotlib.font_manager import FontProperties -from matplotlib.patches import FancyBboxPatch -from matplotlib.patches import FancyArrowPatch, Rectangle -import matplotlib.transforms as mtransforms -from matplotlib.transforms import Affine2D, Bbox, Transform -from matplotlib.transforms import BboxBase, BboxTransformTo from matplotlib.lines import Line2D -from matplotlib.path import Path -from matplotlib.artist import allow_rasterization +from matplotlib.patches import FancyArrowPatch, FancyBboxPatch, Rectangle +from matplotlib.textpath import TextPath # Unused, but imported by others. +from matplotlib.transforms import ( + Affine2D, Bbox, BboxBase, BboxTransformTo, IdentityTransform, Transform) -from matplotlib.textpath import TextPath _log = logging.getLogger(__name__) @@ -101,7 +92,7 @@ def _get_textbox(text, renderer): projected_ys = [] theta = np.deg2rad(text.get_rotation()) - tr = mtransforms.Affine2D().rotate(-theta) + tr = Affine2D().rotate(-theta) _, parts, d = text._get_layout(renderer) @@ -118,7 +109,7 @@ def _get_textbox(text, renderer): xt_box, yt_box = min(projected_xs), min(projected_ys) w_box, h_box = max(projected_xs) - xt_box, max(projected_ys) - yt_box - tr = mtransforms.Affine2D().rotate(theta) + tr = Affine2D().rotate(theta) x_box, y_box = tr.transform_point((xt_box, yt_box)) @@ -130,7 +121,7 @@ class Text(Artist): Handle storing and drawing of text in window or data coordinates. """ zorder = 3 - _cached = maxdict(50) + _cached = cbook.maxdict(50) def __repr__(self): return "Text(%g,%g,%s)" % (self._x, self._y, repr(self._text)) @@ -474,7 +465,7 @@ def set_bbox(self, rectprops): 1., 1., boxstyle=boxstyle, bbox_transmuter=bbox_transmuter, - transform=mtransforms.IdentityTransform(), + transform=IdentityTransform(), **props) else: self._bbox_patch = None @@ -509,7 +500,7 @@ def update_bbox_position_size(self, renderer): x_box, y_box, w_box, h_box = _get_textbox(self, renderer) self._bbox_patch.set_bounds(0., 0., w_box, h_box) theta = np.deg2rad(self.get_rotation()) - tr = mtransforms.Affine2D().rotate(theta) + tr = Affine2D().rotate(theta) tr = tr.translate(posx + x_box, posy + y_box) self._bbox_patch.set_transform(tr) fontsize_in_pixel = renderer.points_to_pixels(self.get_size()) @@ -524,7 +515,7 @@ def _draw_bbox(self, renderer, posx, posy): x_box, y_box, w_box, h_box = _get_textbox(self, renderer) self._bbox_patch.set_bounds(0., 0., w_box, h_box) theta = np.deg2rad(self.get_rotation()) - tr = mtransforms.Affine2D().rotate(theta) + tr = Affine2D().rotate(theta) tr = tr.translate(posx + x_box, posy + y_box) self._bbox_patch.set_transform(tr) fontsize_in_pixel = renderer.points_to_pixels(self.get_size()) @@ -2280,7 +2271,7 @@ def _update_position_xytext(self, renderer, xy_pixel): width=w, height=h, ) - r.set_transform(mtransforms.IdentityTransform()) + r.set_transform(IdentityTransform()) r.set_clip_on(False) self.arrow_patch.set_patchA(r) diff --git a/lib/matplotlib/tight_bbox.py b/lib/matplotlib/tight_bbox.py index 69ff23abf426..7bffb3531297 100644 --- a/lib/matplotlib/tight_bbox.py +++ b/lib/matplotlib/tight_bbox.py @@ -7,7 +7,6 @@ import six -import warnings from matplotlib.transforms import Bbox, TransformedBbox, Affine2D diff --git a/lib/matplotlib/type1font.py b/lib/matplotlib/type1font.py index b161b53ee8c8..a971a336f05a 100644 --- a/lib/matplotlib/type1font.py +++ b/lib/matplotlib/type1font.py @@ -26,15 +26,14 @@ unicode_literals) import six -from six import unichr import binascii import io import itertools -import numpy as np import re import struct -import sys + +import numpy as np if six.PY3: def ord(x): diff --git a/lib/mpl_toolkits/axes_grid1/axes_grid.py b/lib/mpl_toolkits/axes_grid1/axes_grid.py index f63daa73fa1f..24e45cac15a6 100644 --- a/lib/mpl_toolkits/axes_grid1/axes_grid.py +++ b/lib/mpl_toolkits/axes_grid1/axes_grid.py @@ -3,11 +3,8 @@ import six -import matplotlib as mpl import matplotlib.axes as maxes import matplotlib.cbook as cbook -import matplotlib.lines as mlines -import matplotlib.patches as mpatches import matplotlib.ticker as ticker from matplotlib.gridspec import SubplotSpec diff --git a/lib/mpl_toolkits/axes_grid1/mpl_axes.py b/lib/mpl_toolkits/axes_grid1/mpl_axes.py index 3350278508df..9e1b775e6998 100644 --- a/lib/mpl_toolkits/axes_grid1/mpl_axes.py +++ b/lib/mpl_toolkits/axes_grid1/mpl_axes.py @@ -3,8 +3,6 @@ import six -import warnings - import matplotlib.axes as maxes from matplotlib.artist import Artist from matplotlib.axis import XAxis, YAxis diff --git a/lib/mpl_toolkits/axes_grid1/parasite_axes.py b/lib/mpl_toolkits/axes_grid1/parasite_axes.py index 5d347af1da4c..f8b7add3b6f2 100644 --- a/lib/mpl_toolkits/axes_grid1/parasite_axes.py +++ b/lib/mpl_toolkits/axes_grid1/parasite_axes.py @@ -3,25 +3,15 @@ import six -import warnings - -import matplotlib -rcParams = matplotlib.rcParams -import matplotlib.artist as martist -import matplotlib.transforms as mtransforms -import matplotlib.collections as mcoll -import matplotlib.legend as mlegend - +from matplotlib import ( + artist as martist, collections as mcoll, transforms as mtransforms, + rcParams) from matplotlib.axes import subplot_class_factory -from .mpl_axes import Axes - from matplotlib.transforms import Bbox +from .mpl_axes import Axes import numpy as np -import matplotlib.cbook as cbook -is_string_like = cbook.is_string_like - class ParasiteAxesBase(object): diff --git a/lib/mpl_toolkits/axisartist/axis_artist.py b/lib/mpl_toolkits/axisartist/axis_artist.py index 7c88fc07c3ba..a90535652336 100644 --- a/lib/mpl_toolkits/axisartist/axis_artist.py +++ b/lib/mpl_toolkits/axisartist/axis_artist.py @@ -89,18 +89,16 @@ import six # FIXME : +# angles are given in data coordinate - need to convert it to canvas coordinate -# * : angles are given in data coordinate - need to convert it to canvas coordinate - -import matplotlib.axes as maxes import matplotlib.artist as martist import matplotlib.text as mtext import matplotlib.font_manager as font_manager from matplotlib.path import Path -from matplotlib.transforms import Affine2D, ScaledTranslation, \ - IdentityTransform, TransformedPath, Bbox +from matplotlib.transforms import ( + Affine2D, Bbox, IdentityTransform, ScaledTranslation, TransformedPath) from matplotlib.collections import LineCollection from matplotlib import rcParams diff --git a/lib/mpl_toolkits/axisartist/axislines.py b/lib/mpl_toolkits/axisartist/axislines.py index ca735b94bdf2..3c4e47ea53dc 100644 --- a/lib/mpl_toolkits/axisartist/axislines.py +++ b/lib/mpl_toolkits/axisartist/axislines.py @@ -46,31 +46,19 @@ import six -import matplotlib.axes as maxes -import matplotlib.artist as martist -import matplotlib.text as mtext -import matplotlib.font_manager as font_manager - -from matplotlib.path import Path -from matplotlib.transforms import Affine2D, ScaledTranslation, \ - IdentityTransform, TransformedPath, Bbox -from matplotlib.collections import LineCollection - -from matplotlib import rcParams - -from matplotlib.artist import allow_rasterization - import warnings import numpy as np - -import matplotlib.lines as mlines +from matplotlib import rcParams +import matplotlib.artist as martist +import matplotlib.axes as maxes +from matplotlib.path import Path +from matplotlib.transforms import Bbox from .axisline_style import AxislineStyle - - from .axis_artist import AxisArtist, GridlinesCollection + class AxisArtistHelper(object): """ AxisArtistHelper should define diff --git a/lib/mpl_toolkits/axisartist/floating_axes.py b/lib/mpl_toolkits/axisartist/floating_axes.py index 38332b3d46ee..48d1260d3ce2 100644 --- a/lib/mpl_toolkits/axisartist/floating_axes.py +++ b/lib/mpl_toolkits/axisartist/floating_axes.py @@ -8,25 +8,22 @@ from six.moves import zip # TODO : +# see if tick_iterator method can be simplified by reusing the parent method. -# *. see if tick_iterator method can be simplified by reusing the parent method. - -from itertools import chain -from .grid_finder import GridFinder - -from .axislines import AxisArtistHelper, GridHelperBase -from .axis_artist import AxisArtist -from matplotlib.transforms import Affine2D, IdentityTransform import numpy as np - +from matplotlib.transforms import Affine2D, IdentityTransform from . import grid_helper_curvelinear +from .axislines import AxisArtistHelper, GridHelperBase +from .axis_artist import AxisArtist +from .grid_finder import GridFinder + class FloatingAxisArtistHelper(grid_helper_curvelinear.FloatingAxisArtistHelper): pass -class FixedAxisArtistHelper(grid_helper_curvelinear.FloatingAxisArtistHelper): +class FixedAxisArtistHelper(grid_helper_curvelinear.FloatingAxisArtistHelper): def __init__(self, grid_helper, side, nth_coord_ticks=None): """ diff --git a/lib/mpl_toolkits/axisartist/grid_finder.py b/lib/mpl_toolkits/axisartist/grid_finder.py index 93c7e69214c9..d41841ff6b9e 100644 --- a/lib/mpl_toolkits/axisartist/grid_finder.py +++ b/lib/mpl_toolkits/axisartist/grid_finder.py @@ -4,7 +4,6 @@ import six import numpy as np -import matplotlib.cbook as mcbook from matplotlib.transforms import Bbox from . import clip_path clip_line_to_rect = clip_path.clip_line_to_rect diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index e183e7405fd1..19d3ed9e14e8 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -12,20 +12,18 @@ import six from six.moves import zip +import math + +import numpy as np + from matplotlib import ( artist, cbook, colors as mcolors, lines, text as mtext, path as mpath) from matplotlib.cbook import _backports from matplotlib.collections import ( Collection, LineCollection, PolyCollection, PatchCollection, PathCollection) -from matplotlib.cm import ScalarMappable -from matplotlib.patches import Patch from matplotlib.colors import Normalize -from matplotlib.cbook import iterable - -import warnings -import numpy as np -import math +from matplotlib.patches import Patch from . import proj3d @@ -54,7 +52,7 @@ def get_dir_vector(zdir): return np.array((0, 0, 1)) elif zdir is None: return np.array((0, 0, 0)) - elif iterable(zdir) and len(zdir) == 3: + elif cbook.iterable(zdir) and len(zdir) == 3: return zdir else: raise ValueError("'x', 'y', 'z', None or vector of length 3 expected") From 23bd9dfa773948ebd8992125c0641728e34eb06b Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Wed, 27 Dec 2017 22:48:42 -0800 Subject: [PATCH 2/2] And some more. --- lib/matplotlib/cbook/__init__.py | 23 ++++++++++------------- lib/matplotlib/collections.py | 25 ++++++++----------------- lib/matplotlib/patches.py | 28 ++++++++++------------------ lib/matplotlib/text.py | 18 +++++++++--------- 4 files changed, 37 insertions(+), 57 deletions(-) diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py index eb2bdfad4de7..18f8acc15e0d 100644 --- a/lib/matplotlib/cbook/__init__.py +++ b/lib/matplotlib/cbook/__init__.py @@ -29,26 +29,25 @@ import types import warnings from weakref import ref, WeakKeyDictionary -from .deprecation import deprecated, warn_deprecated -from .deprecation import mplDeprecation, MatplotlibDeprecationWarning import numpy as np +import matplotlib +from .deprecation import deprecated, warn_deprecated +from .deprecation import mplDeprecation, MatplotlibDeprecationWarning -# On some systems, locale.getpreferredencoding returns None, -# which can break unicode; and the sage project reports that -# some systems have incorrect locale specifications, e.g., -# an encoding instead of a valid locale name. Another -# pathological case that has been reported is an empty string. - -# On some systems, getpreferredencoding sets the locale, which has -# side effects. Passing False eliminates those side effects. def unicode_safe(s): - import matplotlib if isinstance(s, bytes): try: + # On some systems, locale.getpreferredencoding returns None, + # which can break unicode; and the sage project reports that + # some systems have incorrect locale specifications, e.g., + # an encoding instead of a valid locale name. Another + # pathological case that has been reported is an empty string. + # On some systems, getpreferredencoding sets the locale, which has + # side effects. Passing False eliminates those side effects. preferredencoding = locale.getpreferredencoding( matplotlib.rcParams['axes.formatter.use_locale']).strip() if not preferredencoding: @@ -644,8 +643,6 @@ def get_sample_data(fname, asfileobj=True): If the filename ends in .gz, the file is implicitly ungzipped. """ - import matplotlib - if matplotlib.rcParams['examples.directory']: root = matplotlib.rcParams['examples.directory'] else: diff --git a/lib/matplotlib/collections.py b/lib/matplotlib/collections.py index 4e2aa1926bd9..4e15176e060a 100644 --- a/lib/matplotlib/collections.py +++ b/lib/matplotlib/collections.py @@ -23,17 +23,8 @@ import numpy as np import matplotlib as mpl -import matplotlib.cbook as cbook -import matplotlib.colors as mcolors -import matplotlib.cm as cm -from matplotlib import docstring -import matplotlib.transforms as transforms -import matplotlib.artist as artist -from matplotlib.artist import allow_rasterization -import matplotlib.path as mpath -from matplotlib import _path -import matplotlib.mlab as mlab -import matplotlib.lines as mlines +from . import (_path, artist, cbook, cm, colors as mcolors, docstring, + lines as mlines, mlab, path as mpath, transforms) CIRCLE_AREA_FACTOR = 1.0 / np.sqrt(np.pi) @@ -264,7 +255,7 @@ def _prepare_points(self): return transform, transOffset, offsets, paths - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): if not self.get_visible(): return @@ -917,7 +908,7 @@ def set_sizes(self, sizes, dpi=72.0): self._transforms[:, 2, 2] = 1.0 self.stale = True - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): self.set_sizes(self._sizes, self.figure.dpi) Collection.draw(self, renderer) @@ -1118,7 +1109,7 @@ def get_numsides(self): def get_rotation(self): return self._rotation - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): self.set_sizes(self._sizes, self.figure.dpi) self._transforms = [ @@ -1691,7 +1682,7 @@ def _set_transforms(self): m[:2, 2:] = 0 self.set_transform(_affine(m)) - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): self._set_transforms() Collection.draw(self, renderer) @@ -1797,7 +1788,7 @@ def convert_mesh_to_paths(tri): tri.y[triangles][..., np.newaxis]), axis=2) return [Path(x) for x in verts] - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): if not self.get_visible(): return @@ -1949,7 +1940,7 @@ def convert_mesh_to_triangles(self, meshWidth, meshHeight, coordinates): return triangles, colors - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): if not self.get_visible(): return diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index c6390a371c89..71210acd1f3e 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -5,27 +5,19 @@ import six from six.moves import map, zip -import warnings import math +import warnings -import matplotlib as mpl import numpy as np -import matplotlib.cbook as cbook -import matplotlib.artist as artist -from matplotlib.artist import allow_rasterization -import matplotlib.colors as colors -from matplotlib import docstring -import matplotlib.transforms as transforms -from matplotlib.path import Path -import matplotlib.lines as mlines - -from matplotlib.bezier import split_bezier_intersecting_with_closedpath -from matplotlib.bezier import get_intersection, inside_circle, get_parallels -from matplotlib.bezier import make_wedged_bezier2 -from matplotlib.bezier import split_path_inout, get_cos_sin -from matplotlib.bezier import make_path_regular, concatenate_paths +import matplotlib as mpl +from . import artist, cbook, colors, docstring, lines as mlines, transforms +from .bezier import ( + concatenate_paths, get_cos_sin, get_intersection, get_parallels, + inside_circle, make_path_regular, make_wedged_bezier2, + split_bezier_intersecting_with_closedpath, split_path_inout) +from .path import Path _patch_alias_map = { 'antialiased': ['aa'], @@ -490,7 +482,7 @@ def get_hatch(self): 'Return the current hatching pattern' return self._hatch - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): 'Draw the :class:`Patch` to the given *renderer*.' if not self.get_visible(): @@ -1579,7 +1571,7 @@ def __init__(self, xy, width, height, angle=0.0, self.theta1 = theta1 self.theta2 = theta2 - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): """ Ellipses are normally drawn using an approximation that uses diff --git a/lib/matplotlib/text.py b/lib/matplotlib/text.py index 0d521b40b870..090073f2abb7 100644 --- a/lib/matplotlib/text.py +++ b/lib/matplotlib/text.py @@ -14,13 +14,13 @@ import numpy as np -from matplotlib import artist, cbook, docstring, rcParams -from matplotlib.artist import Artist, allow_rasterization -from matplotlib.font_manager import FontProperties -from matplotlib.lines import Line2D -from matplotlib.patches import FancyArrowPatch, FancyBboxPatch, Rectangle -from matplotlib.textpath import TextPath # Unused, but imported by others. -from matplotlib.transforms import ( +from . import artist, cbook, docstring, rcParams +from .artist import Artist +from .font_manager import FontProperties +from .lines import Line2D +from .patches import FancyArrowPatch, FancyBboxPatch, Rectangle +from .textpath import TextPath # Unused, but imported by others. +from .transforms import ( Affine2D, Bbox, BboxBase, BboxTransformTo, IdentityTransform, Transform) @@ -690,7 +690,7 @@ def _get_wrapped_text(self): return wrapped_str + line - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): """ Draws the :class:`Text` object to the given *renderer*. @@ -2276,7 +2276,7 @@ def _update_position_xytext(self, renderer, xy_pixel): self.arrow_patch.set_patchA(r) - @allow_rasterization + @artist.allow_rasterization def draw(self, renderer): """ Draw the :class:`Annotation` object to the given *renderer*.