From 897549be1a0da4963c009a6772c9a3dce2374563 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 10 Aug 2023 17:50:48 -0400 Subject: [PATCH] Import PIL.Image explicitly over PIL We seem to use `PIL.Image.*` pretty often while only importing `PIL`. This mostly works, but seems to be by fluke depending on what may or may not have imported `PIL.Image`. For example, if you have a file that just does `import matplotlib.widgets` (which itself imports only `PIL`), then `mypy` will crash due to incomplete `PIL`. --- lib/matplotlib/axes/_axes.pyi | 2 +- lib/matplotlib/backends/backend_wx.py | 2 +- lib/matplotlib/image.py | 1 + lib/matplotlib/image.pyi | 2 +- lib/matplotlib/pyplot.py | 2 +- lib/matplotlib/widgets.pyi | 2 +- 6 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/axes/_axes.pyi b/lib/matplotlib/axes/_axes.pyi index bdd29684925d..30c0622b89f5 100644 --- a/lib/matplotlib/axes/_axes.pyi +++ b/lib/matplotlib/axes/_axes.pyi @@ -30,7 +30,7 @@ import matplotlib.stackplot as mstack import matplotlib.streamplot as mstream import datetime -import PIL +import PIL.Image from collections.abc import Callable, Sequence from typing import Any, Literal, overload import numpy as np diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index a2952557edce..218be8947695 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -15,7 +15,7 @@ import weakref import numpy as np -import PIL +import PIL.Image import matplotlib as mpl from matplotlib.backend_bases import ( diff --git a/lib/matplotlib/image.py b/lib/matplotlib/image.py index 55126c9c0f38..757f0ba3476e 100644 --- a/lib/matplotlib/image.py +++ b/lib/matplotlib/image.py @@ -10,6 +10,7 @@ import warnings import numpy as np +import PIL.Image import PIL.PngImagePlugin import matplotlib as mpl diff --git a/lib/matplotlib/image.pyi b/lib/matplotlib/image.pyi index d39490457eae..426e34ec83c9 100644 --- a/lib/matplotlib/image.pyi +++ b/lib/matplotlib/image.pyi @@ -5,7 +5,7 @@ from typing import Any, BinaryIO, Literal import numpy as np from numpy.typing import ArrayLike, NDArray -import PIL # type: ignore +import PIL.Image import matplotlib.artist as martist from matplotlib.axes import Axes diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index 11a998334b6e..415d5c042241 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -88,7 +88,7 @@ from typing import Any, BinaryIO, Literal, TypeVar from typing_extensions import ParamSpec - import PIL + import PIL.Image from numpy.typing import ArrayLike from matplotlib.axis import Tick diff --git a/lib/matplotlib/widgets.pyi b/lib/matplotlib/widgets.pyi index 8af25957e9d1..00c2d0da8a7e 100644 --- a/lib/matplotlib/widgets.pyi +++ b/lib/matplotlib/widgets.pyi @@ -7,7 +7,7 @@ from .lines import Line2D from .patches import Circle, Polygon, Rectangle from .text import Text -import PIL +import PIL.Image from collections.abc import Callable, Collection, Iterable, Sequence from typing import Any, Literal