Widen return type of pyplot.subplot_tool to Any by karlhillx · Pull Request #31997 · matplotlib/matplotlib · GitHub
Skip to content

Widen return type of pyplot.subplot_tool to Any#31997

Open
karlhillx wants to merge 4 commits into
matplotlib:mainfrom
karlhillx:fix-subplot-tool-return-type
Open

Widen return type of pyplot.subplot_tool to Any#31997
karlhillx wants to merge 4 commits into
matplotlib:mainfrom
karlhillx:fix-subplot-tool-return-type

Conversation

@karlhillx

Copy link
Copy Markdown

Widen the return annotation of pyplot.subplot_tool and NavigationToolbar2.configure_subplots from SubplotTool | None to Any. The Qt backends return a QDialog and the toolmanager branch already returns None, so the annotations were misleading. Direction per timhoffm on #31979. Docstring updated to describe the backend-dependent return value.

Also drop the now-unused TYPE_CHECKING import of SubplotTool, and alphabetize the typing import.

Closes #31979

…re_subplots to Any

Per timhoffm on matplotlib#31979. The Qt backends return QDialog subclasses and
the toolmanager branch already returns None, so the prior annotation
was misleading. Update docstring to describe the backend-dependent
return value. Also drop the now-unused TYPE_CHECKING import of
SubplotTool and alphabetize the typing import.

Closes matplotlib#31979
Copilot AI review requested due to automatic review settings July 4, 2026 21:45
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates Matplotlib’s typing/doc surface to reflect that pyplot.subplot_tool() / NavigationToolbar2.configure_subplots() return backend-dependent objects (e.g., a SubplotTool on classic backends vs a native dialog on Qt), rather than always returning a SubplotTool.

Changes:

  • Widened the return annotation of pyplot.subplot_tool to a backend-agnostic type.
  • Widened the return annotation of NavigationToolbar2.configure_subplots in the type stubs.
  • Updated the subplot_tool docstring to describe backend-dependent return values.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
lib/matplotlib/pyplot.py Adjusts subplot_tool() return annotation and updates its docstring to describe backend-dependent returns.
lib/matplotlib/backend_bases.pyi Updates the stubbed return type of NavigationToolbar2.configure_subplots.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread lib/matplotlib/pyplot.py Outdated
Comment thread lib/matplotlib/pyplot.py Outdated
Comment thread lib/matplotlib/backend_bases.pyi
karlhillx and others added 2 commits July 4, 2026 17:51
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Comment thread lib/matplotlib/pyplot.py

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm new here, so take my comment with a grain of salt :)

The return value might still be too specific since "SubplotTool or None" doesn't include the Qt dialog case.

In the case of my work on the macosx backend, there's no way to return a "backend-native dialog", since that would be the raw NSWindowController.

Perhaps the Return type should include Any and the statement be something similar to:

Returns a ~matplotlib.widgets.SubplotTool, None for backends using the toolmanager, or an implementation-specific value.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: pyplot.subplot_tool doesn't always return a SubplotTool

3 participants