Title: [Bug]: DeprecationWarning from Pillow 11.3.0 about 'mode' parameter of PIL.Image.fromarray() · Issue #30249 · matplotlib/matplotlib · GitHub
Open Graph Title: [Bug]: DeprecationWarning from Pillow 11.3.0 about 'mode' parameter of PIL.Image.fromarray() · Issue #30249 · matplotlib/matplotlib
X Title: [Bug]: DeprecationWarning from Pillow 11.3.0 about 'mode' parameter of PIL.Image.fromarray() · Issue #30249 · matplotlib/matplotlib
Description: Bug summary Pillow 11.3.0 has deprecated the 'mode' parameter for PIL.Image.fromarray(). The DeprecationWarning causes Azure DevOps builds using matplotlib's plt.figure() to fail when PYTHONWARNINGS=error Code for reproduction This stack...
Open Graph Description: Bug summary Pillow 11.3.0 has deprecated the 'mode' parameter for PIL.Image.fromarray(). The DeprecationWarning causes Azure DevOps builds using matplotlib's plt.figure() to fail when PYTHONWARNING...
X Description: Bug summary Pillow 11.3.0 has deprecated the 'mode' parameter for PIL.Image.fromarray(). The DeprecationWarning causes Azure DevOps builds using matplotlib's plt.figure() to fail when P...
Opengraph URL: https://github.com/matplotlib/matplotlib/issues/30249
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Bug]: DeprecationWarning from Pillow 11.3.0 about 'mode' parameter of PIL.Image.fromarray()","articleBody":"### Bug summary\n\nPillow 11.3.0 has [deprecated](https://pillow.readthedocs.io/en/stable/deprecations.html#image-fromarray-mode-parameter) the 'mode' parameter for [PIL.Image.fromarray()](https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.fromarray). The DeprecationWarning causes Azure DevOps builds using matplotlib's plt.figure() to fail when `PYTHONWARNINGS=error`\n\n### Code for reproduction\nThis stacktrace is from an Azure DevOps Microsoft-hosted Windows agent ('windows-2019' VM image) using Python 3.9.13:\n\n```Python\nTraceback (most recent call last):\n\u003cour code deleted\u003e\n self._fig = plt.figure(figsize=(9, 6))\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\pyplot.py\", line 1027, in figure\n manager = new_figure_manager(\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\pyplot.py\", line 550, in new_figure_manager\n return _get_backend_mod().new_figure_manager(*args, **kwargs)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backend_bases.py\", line 3507, in new_figure_manager\n return cls.new_figure_manager_given_figure(num, fig)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backend_bases.py\", line 3512, in new_figure_manager_given_figure\n return cls.FigureCanvas.new_manager(figure, num)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backend_bases.py\", line 1797, in new_manager\n return cls.manager_class.create_with_canvas(cls, figure, num)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backends\\_backend_tk.py\", line 504, in create_with_canvas\n manager = cls(canvas, num, window)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backends\\_backend_tk.py\", line 457, in __init__\n super().__init__(canvas, num)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backend_bases.py\", line 2665, in __init__\n tools.add_tools_to_container(self.toolbar)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backend_tools.py\", line 1007, in add_tools_to_container\n container.add_tool(tool, group, position)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backend_bases.py\", line 3323, in add_tool\n self.add_toolitem(tool.name, group, position,\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backends\\_backend_tk.py\", line 980, in add_toolitem\n button = NavigationToolbar2Tk._Button(frame, name, image_file, toggle,\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backends\\_backend_tk.py\", line 825, in _Button\n NavigationToolbar2Tk._set_image_for_button(self, b)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backends\\_backend_tk.py\", line 767, in _set_image_for_button\n im_alt = _recolor_icon(im, foreground)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\matplotlib\\backends\\_backend_tk.py\", line 754, in _recolor_icon\n return Image.fromarray(image_data, mode=\"RGBA\")\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\PIL\\Image.py\", line 3314, in fromarray\n deprecate(\"'mode' parameter\", 13)\n File \"C:\\hostedtoolcache\\windows\\Python\\3.9.13\\x64\\lib\\site-packages\\PIL\\_deprecate.py\", line 68, in deprecate\n warnings.warn(\nDeprecationWarning: 'mode' parameter is deprecated and will be removed in Pillow 13 (2026-10-15)\n```\nSimilar failures occur in Linux and Windows on Pythons 3.9 and 3.12.\n\n### Actual outcome\n\n`DeprecationWarning: 'mode' parameter is deprecated and will be removed in Pillow 13 (2026-10-15)`\n\n### Expected outcome\n\nNo deprecation warning.\n\n### Additional information\n\nOur DevOps pipelines started breaking with this on 2 July when pillow (installed via pip) upgraded from 11.2.1 to 11.3.0.\n\n### Operating system\n\nWindows\n\n### Matplotlib Version\n\n3.9.4\n\n### Matplotlib Backend\n\nNot sure, TkAgg?\n\n### Python version\n\n3.9.13\n\n### Jupyter version\n\nN/A\n\n### Installation\n\npip","author":{"url":"https://github.com/cacti77","@type":"Person","name":"cacti77"},"datePublished":"2025-07-02T12:22:43.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":7},"url":"https://github.com/30249/matplotlib/issues/30249"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:12708d34-20b6-8222-12a9-0b175a0f9a75 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | C284:15C463:17FE5:1D568:6A52E0A8 |
| html-safe-nonce | 2649beb8f121bb9cd5ddbb1ec67ae5dd0d6e69b277a7008e56baeb76d2003d4a |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMjg0OjE1QzQ2MzoxN0ZFNToxRDU2ODo2QTUyRTBBOCIsInZpc2l0b3JfaWQiOiI4Nzk1NTUxMTc1NzE2ODgwOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | f707df1b2c63585b464dbb88aa58f5c0bd96b550fef32b4e559f10108d5c7d69 |
| hovercard-subject-tag | issue:3195728138 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/matplotlib/matplotlib/30249/issue_layout |
| twitter:image | https://opengraph.githubassets.com/35964ec6759d7df237dabc6840cefc880714dc649d2d24672d0a2340dae03b37/matplotlib/matplotlib/issues/30249 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/35964ec6759d7df237dabc6840cefc880714dc649d2d24672d0a2340dae03b37/matplotlib/matplotlib/issues/30249 |
| og:image:alt | Bug summary Pillow 11.3.0 has deprecated the 'mode' parameter for PIL.Image.fromarray(). The DeprecationWarning causes Azure DevOps builds using matplotlib's plt.figure() to fail when PYTHONWARNING... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | cacti77 |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/matplotlib/matplotlib git https://github.com/matplotlib/matplotlib.git |
| octolytics-dimension-user_id | 215947 |
| octolytics-dimension-user_login | matplotlib |
| octolytics-dimension-repository_id | 1385122 |
| octolytics-dimension-repository_nwo | matplotlib/matplotlib |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1385122 |
| octolytics-dimension-repository_network_root_nwo | matplotlib/matplotlib |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width