Repository navigation
Update pgf baseline image for TeX Live 2025 - #32504
axel-j-larsson wants to merge 2 commits into
Conversation
|
Thank you for opening your first PR into Matplotlib! If you have not heard from us in a week or so, please leave a new comment below and that should bring it to our attention. Most of our reviewers are volunteers and sometimes things fall through the cracks. We also ask that you please finish addressing any review comments on this PR and wait for it to be merged (or closed) before opening a new one, as it can be a valuable learning experience to go through the review process. You can also join us on discourse chat for real-time discussion. For details on testing, writing docs, and our review process, please see the developer guide. We strive to be a welcoming and open project. Please follow our Code of Conduct. |
|
Hi @iccir, just checking back to see if there were any plans on changing the CI to use TeX Live 2025. If not, would it perhaps be a good idea to instead specify which version of it that is expected in the docs? |
|
I'm honestly not sure, as this isn't my area of expertise. My instinct would be to pick the TeX Live version with the most users and then xfail the tests on other configurations. Ultimately, all tests either need to pass or be expected to fail. |
1359e47 to
180b65c
Compare
| '\\usepackage{sfmath}')}] | ||
| tol = [0, 13.2] if _old_gs_version else [0, 0] | ||
| for i, rc_set in enumerate(rc_sets): | ||
| if i == 1 and mpl._get_executable_info('pdflatex').version > Version('1.40.26'): |
There was a problem hiding this comment.
I think this should be parse_version to match existing code.
There was a problem hiding this comment.
Additionally, can mpl._get_executable_info('pdflatex') return None for info?
There was a problem hiding this comment.
As far as I can tell, pdflatex has used the same versioning format since mid 2005, so as long as a version that isn't older than that is used it shouldn't return None.
| f"version supported by Matplotlib is 3.0") | ||
| return info | ||
| elif name == "pdflatex": | ||
| return impl(["pdflatex", "-v"], r"pdfTeX .*-(\d+\.\d+\.\d+)") |
There was a problem hiding this comment.
Is there any danger of -v failing on old pdflatex? See other review comment about returning None.
There was a problem hiding this comment.
Using -version instead might be better, as I believe it has been supported for longer.
|
I did some revisions based on your feedback. Although the codecov check is failing (and for some reason I cannot access the line-by-line analysis of it either) and I am unsure whether something needs to be done in regards to that (and if so what). |
|
Hi again @iccir, just checking back in case you missed my previous update. Thanks |
| for i, rc_set in enumerate(rc_sets): | ||
| if (i == 1 and | ||
| mpl._get_executable_info('pdflatex').version > parse_version('1.40.26')): | ||
| pytest.xfail(reason="This test currently requires a pdfTeX " |
There was a problem hiding this comment.
Checking i == 1 seems fragile. Could we check the value of pgf.texsystem instead?
I'm a bit confused, however - why are we checking for 1.40.26 or earlier and not requiring a newer version of TeX Live? If TeX Live 2025 is more widely used, I think that we should have tests / images that pass on it and then xfail on older versions.
PR summary
Fixes issue #29790. Also relates to PR #32478 .

With TeX Live 2025,
test_backend_pgf.pywas failing due topgf_rcupdate2, where a single character had changed location by a pixel:I investigated it and the PGF files generated by
pgf_backend.pywere identical between TeX Live versions. After manually regenerating the PDFs from the same PGF file with both TeX Live 2025 and 2024, I found that their contents differed slightly in regards to object positioning. After additionally manually rasterizing the output with ghostscript (as done in the test), the same one-pixel difference appeared in both the files created by Matplotlib and the ones generated and rasterized manually.It appears that the difference is instead caused by updates in PDFTeX's rendering engine, and would as such not be anything directly caused by a bug in Matplotlib. As such, I determined the most suitable fix would be to update the baseline image. I have also checked the new baseline with TeX Live 2026, and it still passes there.
However, the new baseline does instead fail for TeX Live 2024 (and presumably earlier versions as well). As such, the suitability of this PR depends on what which TeX Live version to support, and in extension which Ubuntu version to support (see #32478).
AI Disclosure
AI was used to help investigate the image difference and generate new PDFs directly with pdfLaTeX. However, the new baseline test results have been verified and reviewed manually.
PR quality check