Weekly Project News

Subscribe
Archives

Weekly GitHub Report for Matplotlib: August 11, 2025 - August 18, 2025 (12:04:04)

Weekly GitHub Report for Matplotlib

Thank you for subscribing to our weekly newsletter! Each week, we deliver a comprehensive summary of your GitHub project's latest activity right to your inbox, including an overview of your project's issues, pull requests, contributors, and commit activity.


Table of Contents

  • I. News
    • 1.1. Recent Version Releases
    • 1.2. Other Noteworthy Updates
  • II. Issues
    • 2.1. Top 5 Active Issues
    • 2.2. Top 5 Stale Issues
    • 2.3. Open Issues
    • 2.4. Closed Issues
    • 2.5. Issue Discussion Insights
  • III. Pull Requests
    • 3.1. Open Pull Requests
    • 3.2. Closed Pull Requests
    • 3.3. Pull Request Discussion Insights
  • IV. Contributors
    • 4.1. Contributors

I. News

1.1 Recent Version Releases:

The current version of this repository is v3.10.1

1.2 Version Information:

Released on February 27, 2025, this first bugfix update of the 3.10.x series addresses multiple issues including improved handling of array alpha in image interpolation, removal of md5 to support FIPS-enabled systems, fixes for pyplot.matshow and polar plot titles, and enhanced scatter plot warnings, alongside various documentation corrections.

II. Issues

2.1 Top 5 Active Issues:

We consider active issues to be issues that that have been commented on most frequently within the last week. Bot comments are omitted.

  1. [Bug]: Event handling with input in callback function: This issue describes a bug where using the input function inside a button click event callback in Matplotlib causes the figure window to close automatically after the callback finishes, preventing further interaction. The problem occurs specifically with the macosx backend, whereas switching to a different backend like tkagg allows the figure to remain open as expected.

    • The comments identify the issue as specific to the macosx backend and suggest a workaround by manually switching to another backend such as tkagg. There is speculation that the problem relates to how the input stream is handled internally, possibly involving a call to stopWithEvent(), and it is noted that the bug appeared between Matplotlib versions 3.8.4 and 3.9.3.
    • Number of comments this week: 4
  2. [MNT]: c++11 narrowing error when building for 32 bit targets: This issue addresses a C++11 narrowing error encountered when building the project for 32-bit targets, caused by the lossless narrowing of unsigned int values returned by get_height() and get_width() into ssize_t types, which is valid on 64-bit but not on 32-bit architectures. The proposed fix involves adding explicit static casts to these values to silence the compiler errors and ensure compatibility across different target architectures.

    • The single comment references a related commit from a pull request that is part of the ongoing effort to resolve this narrowing error, indicating that the fix has been integrated or is under review in the project's codebase.
    • Number of comments this week: 1
  3. [ENH]: Support using datetimes as positions argument to violin(...): This issue requests enhancement to allow the positions argument in the violin plot function to accept datetime objects, as currently passing datetimes results in a TypeError due to unsupported operations between floats and datetime types. The user provides a minimal reproducible example demonstrating the failure and highlights the need for this feature to support datetime positioning in violin plots.

    • The single comment suggests that to handle dates properly, the user might need to specify the widths parameter similarly to how it is done in bar plots, providing a code snippet as an example, but also notes uncertainty about whether the fixed offset used internally would be appropriate for datetime units.
    • Number of comments this week: 1
  4. Help with building older Matplotlib versions: This issue is about a user seeking assistance with building older versions of Matplotlib to reproduce past issues, specifically mentioning incomplete build information such as Linux version and dependency details. The user is requesting guidance on how to handle requirements for building old repository versions to effectively reproduce and investigate historical bugs.

    • The comment explains that the maintainers generally do not reproduce old issues once they are fixed and focus on current versions for open issues. The commenter asks for clarification on the purpose behind building older versions, implying limited support for this use case.
    • Number of comments this week: 1
  5. [Doc]: new contributor guidance on draft PRs: This issue addresses the placement of a paragraph in the contributor documentation that discusses opening pull requests as drafts. The reporter suggests that this paragraph is currently misplaced under a section for domain experts, whereas it should be a general note applicable to all contributors, potentially in a new section focused on obtaining early feedback.

    • The single comment agrees with the issue's observation and recommends moving the paragraph to its own section titled "Getting Feedback Early" after the contributor profiles, providing a clearer and more general explanation about using draft pull requests and the review process.
    • Number of comments this week: 1

2.2 Top 5 Stale Issues:

We consider stale issues to be issues that has had no activity within the last 30 days. The team should work together to get these issues resolved and closed as soon as possible.

  1. [Bug]: Misalignment of Labels and Incorrect Density Values in ax.hist() for Categorical Variables: This issue addresses a bug in the ax.hist() function of Matplotlib when used with categorical variables and the density=True parameter, where the density values are incorrectly computed due to the internal conversion of categories to integers and the resulting bin widths not being equal to 1. Additionally, the issue highlights a misalignment problem where the x-axis labels are not centered on the bars, compounded by a lack of clear documentation on how categories are mapped to integers, making it difficult to correctly position the labels.
  2. [ENH]: Parse "\limits" in mathtext: This issue addresses a problem in the matplotlib mathtext module where the LaTeX command "\limits" is not recognized and causes a parsing error when rendering mathematical expressions involving integrals. The user reports that including "\limits" in an integral expression results in a ValueError due to an unknown symbol, whereas the expected behavior is for the subscripts and superscripts to be displayed above and below the integral sign as intended in LaTeX.
  3. [ENH]: Fix precision displayed by LogFormatter.format_data_short: This issue addresses the lack of precision adjustment in the display of mouse cursor values for logarithmic scale formatters within the toolbar, which currently only exists for linear scale formatters. The reporter suggests implementing a similar feature for log formatters to match the cursor pointing precision, enhancing the accuracy of displayed data values.
  4. [Bug]: ax.transData does not honor data limits: This issue reports that the ax.transData transformation in Matplotlib does not automatically respect the current data limits (xlim and ylim), causing it to use outdated limits when transforming data coordinates. The user highlights that although the documentation implies data limits update automatically with new data, in practice, manual calls to methods like set_xlim or set_ylim are required to refresh these limits, leading to confusion and unexpected behavior. Since there were fewer than 5 open issues, all of the open issues have been listed above.

2.3 Open Issues

This section lists, groups, and then summarizes issues that were created within the last week in the repository.

Issues Opened This Week: 7

Summarized Issues:

  • Type Handling and Conversion Errors: Several issues highlight problems with type handling in Matplotlib, including a C++11 narrowing conversion error caused by implicit casts from unsigned to signed integers during 32-bit builds, and a TypeError raised when datetime objects are used as positions in the violin plot function. These errors stem from improper or missing type support and explicit casting, which lead to compilation failures or runtime exceptions.
  • [issues/30413, issues/30417]
  • 3D Collection and Array Handling Bugs: There is a bug in the 3D plotting API where add_collection3d with a Line3DCollection containing lines of varying lengths and autolims=True triggers a ValueError due to incorrect handling of ragged arrays, contradicting the documentation that states such usage should be supported. This indicates a mismatch between expected functionality and actual implementation in handling collections with non-uniform data lengths.
  • [issues/30418]
  • Backend Interaction and UI Behavior: The macosx backend exhibits a bug where invoking the input function inside a button click callback causes the figure window to close automatically after the callback finishes, preventing further user interaction. This behavior deviates from the expected functionality where the figure should remain open until explicitly closed by the user, impacting interactive workflows.
  • [issues/30419]
  • Build Information and Reproducibility: There is a request for detailed guidance on obtaining complete build information, including Linux version and dependency details, for older Matplotlib versions to facilitate reproducing and investigating past issues. This reflects a need for better documentation or tooling to support debugging and maintenance of legacy releases.
  • [issues/30432]
  • Documentation Organization and Clarity: Improvements are needed in the documentation structure, specifically by relocating draft pull request guidance from a domain-expert-specific section to a more general, clearly labeled section accessible to all contributors. This reorganization aims to enhance visibility and relevance of the information for a broader audience.
  • [issues/30436]
  • Font Size Documentation and Terminology: Clarification is requested in the documentation regarding relative font sizes, including providing a comprehensive list of supported values and their scaling factors, and suggesting the deprecation of ambiguous terms like smaller/larger in favor of clearer alternatives such as small/large. This would improve user understanding and consistency in font size specification.
  • [issues/30437]

2.4 Closed Issues

This section lists, groups, and then summarizes issues that were closed within the last week in the repository. This section also links the associated pull requests if applicable.

Issues Closed This Week: 3

Summarized Issues:

  • Parallel plotting and cache conflicts: This issue highlights nondeterministic failures in matplotlib when plotting multiple figures in parallel with plt.rcParams["text.usetex"] = True, caused by race conditions in the global cache directory where temporary TeX-related files are created and accessed concurrently by multiple processes. Proposed solutions include making cache file names globally unique and generating cache files atomically in process-specific temporary directories to prevent conflicts and improve reliability.
  • issues/30420
  • Documentation clarity for local development: This issue focuses on improving the clarity and visibility of local development setup instructions for first-time contributors by enhancing signposting within the contribute.rst file. The goal is to better link to existing detailed guides on environment setup, editable installs, troubleshooting, and recommended Python versions without duplicating content.
  • issues/30427
  • Unexpected re-enabling of interactive mode: This issue reports that calling matplotlib.pyplot.matshow() unexpectedly re-enables interactive mode after it has been disabled with matplotlib.interactive(False), causing figures to be displayed in Jupyter notebooks prematurely. This behavior disrupts the expected control over figure visibility until interactive mode is explicitly turned back on.
  • issues/30429

2.5 Issue Discussion Insights

This section will analyze the tone and sentiment of discussions within this project's open and closed issues that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.

Based on our analysis, there are no instances of toxic discussions in the project's open or closed issues from the past week.


III. Pull Requests

3.1 Open Pull Requests

This section provides a summary of pull requests that were opened in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.

Pull Requests Opened This Week: 5

Key Open Pull Requests

1. feat(3d): improve plot_surface shading logic: This pull request improves the plot_surface function in the 3D plotting module by setting the default shading mode to "auto," adding tests to verify the new shading behavior with various parameters, and enhancing the function's documentation.

  • URL: pull/30424
  • Merged: No
  • Associated Commits: d38ef, f360b, 3e7a7

2. Fix Line3DCollection with autolim=True for lines of different lengths: This pull request addresses an issue in Line3DCollection when autolim=True by modifying the code to separately extract coordinates for lines of different lengths instead of converting ragged arrays directly to a numpy array, thereby preventing failures.

  • URL: pull/30423
  • Merged: No
  • Associated Commits: 8c8db, eecd9

3. Backport PR #30426 on branch v3.10.x (Fix a race condition in TexManager.make_dvi.): This pull request aims to backport the fix for a race condition in the TexManager.make_dvi method from the main branch to the v3.10.x branch of the matplotlib project.

  • URL: pull/30430
  • Merged: No
  • Associated Commits: 034dd

Other Open Pull Requests

  • Contour function update: This pull request improves the contour() function by using the standard property alias machinery, enhancing consistency and maintainability. It keeps special handling for the 'color(s)' property due to the specific needs of the ContourSet constructor.
  • pull/30433
  • TexManager race condition fix: This pull request backports a fix addressing a race condition in the TexManager's make_dvi and make_png methods. It also corrects the PNG filename generation to ensure the dpi value is properly retained.
  • pull/30434

3.2 Closed Pull Requests

This section provides a summary of pull requests that were closed in the repository over the past week. The top three pull requests with the highest number of commits are highlighted as 'key' pull requests. Other pull requests are grouped based on similar characteristics for easier analysis. Up to 25 pull requests are displayed in this section, while any remaining pull requests beyond this limit are omitted for brevity.

Pull Requests Closed This Week: 9

Key Closed Pull Requests

1. DOC: update Cartopy url: This pull request updates the documentation by changing the URL for Cartopy to reflect its new location.

  • URL: pull/30414
  • Merged: Yes
  • Associated Commits: e934a

2. Backport PR #30414 on branch v3.10.x (DOC: update Cartopy url): This pull request backports the update of the Cartopy URL documentation from the main branch to the v3.10.x branch in the Matplotlib project.

  • URL: pull/30415
  • Merged: Yes
  • Associated Commits: fe90e

3. Update README.md - test edit: This pull request proposes a test edit to the README.md file intended to verify the fork, commit, and pull request workflow from the contributor's local machine to the Matplotlib repository.

  • URL: pull/30421
  • Merged: No
  • Associated Commits: b6748

Other Closed Pull Requests

  • Documentation improvements: These pull requests enhance documentation clarity by replacing explicit "default: None" with "optional" where None is used as a sentinel, and by removing outdated references in TeX source files. They also improve contributor guidance by clarifying key development and troubleshooting links in the contribute.rst file to assist first-time contributors.
  • [pull/30422, pull/30425, pull/30435]
  • TexManager and TeX source handling fixes: These pull requests fix a race condition in TexManager's make_dvi and make_png methods by using process-private temporary directories to avoid concurrent overwrites. Additionally, they update the texmanager module to use pathlib for path handling, remove outdated comments, restore correct dpi usage in PNG filename generation, and simplify path operations recognizing absolute paths.
  • [pull/30426, pull/30431]
  • Backport of HiDPI fix: This pull request backports a fix addressing HiDPI handling issues on X11 and Windows platforms in the Qt backend to the v3.10.x branch, ensuring consistent behavior across versions.
  • [pull/30428]

3.3 Pull Request Discussion Insights

This section will analyze the tone and sentiment of discussions within this project's open and closed pull requests that occurred within the past week. It aims to identify potentially heated exchanges and to maintain a constructive project environment.

Based on our analysis, there are no instances of toxic discussions in the project's open or closed pull requests from the past week.


IV. Contributors

4.1 Contributors

Active Contributors:

We consider an active contributor in this project to be any contributor who has made at least 1 commit, opened at least 1 issue, created at least 1 pull request, or made more than 2 comments in the last month.

If there are more than 10 active contributors, the list is truncated to the top 10 based on contribution metrics for better clarity.

Contributor Commits Pull Requests Issues Comments
timhoffm 15 5 2 48
QuLogic 17 3 1 25
anntzer 14 6 0 16
rcomer 2 1 1 19
tacaswell 9 1 1 11
ksunden 19 2 0 1
AndrGutierrez 16 1 0 0
dstansby 7 2 1 5
story645 0 0 0 15
doronbehar 5 2 1 5

Don't miss what's next. Subscribe to Weekly Project News:
Powered by Buttondown, the easiest way to start and grow your newsletter.