Deprecate fromarray mode argument (#9018)

This commit is contained in:
Hugo van Kemenade 2025-06-25 10:44:39 +01:00 committed by GitHub
commit c704f43288
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 20 additions and 3 deletions

View File

@ -101,7 +101,8 @@ def test_fromarray_strides_without_tobytes() -> None:
with pytest.raises(ValueError):
wrapped = Wrapper({"shape": (1, 1), "strides": (1, 1)})
Image.fromarray(wrapped, "L")
with pytest.warns(DeprecationWarning):
Image.fromarray(wrapped, "L")
def test_fromarray_palette() -> None:
@ -110,7 +111,8 @@ def test_fromarray_palette() -> None:
a = numpy.array(i)
# Act
out = Image.fromarray(a, "P")
with pytest.warns(DeprecationWarning):
out = Image.fromarray(a, "P")
# Assert that the Python and C palettes match
assert out.palette is not None

View File

@ -193,6 +193,14 @@ Image.Image.get_child_images()
method uses an image's file pointer, and so child images could only be retrieved from
an :py:class:`PIL.ImageFile.ImageFile` instance.
Image.fromarray mode parameter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. deprecated:: 11.3.0
The ``mode`` parameter in :py:meth:`~PIL.Image.fromarray()` has been deprecated. The
mode can be automatically determined from the object's shape and type instead.
Saving I mode images as PNG
^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -23,6 +23,12 @@ TODO
Deprecations
============
Image.fromarray mode parameter
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The ``mode`` parameter in :py:meth:`~PIL.Image.fromarray()` has been deprecated. The
mode can be automatically determined from the object's shape and type instead.
Saving I mode images as PNG
^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@ -3272,7 +3272,7 @@ def fromarray(obj: SupportsArrayInterface, mode: str | None = None) -> Image:
:param obj: Object with array interface
:param mode: Optional mode to use when reading ``obj``. Will be determined from
type if ``None``.
type if ``None``. Deprecated.
This will not be used to convert the data after reading, but will be used to
change how the data is read::
@ -3307,6 +3307,7 @@ def fromarray(obj: SupportsArrayInterface, mode: str | None = None) -> Image:
msg = f"Cannot handle this data type: {typekey_shape}, {typestr}"
raise TypeError(msg) from e
else:
deprecate("'mode' parameter", 13)
rawmode = mode
if mode in ["1", "L", "I", "P", "F"]:
ndmax = 2