Google Summer of Code 2020 is completed. Hurray!! This post discusses about the progress so far in the three months of the coding period from 1 June to 24 August 2020 regarding the project
Baseline Images Problem under
matplotlib organisation under the umbrella of
This project helps with the difficulty in adding/modifying tests which require a baseline image. Baseline images are problematic because
- Baseline images cause the repo size to grow rather quickly.
- Baseline images force matplotlib contributors to pin to a somewhat old version of FreeType because nearly every release of FreeType causes tiny rasterization changes that would entail regenerating all baseline images (and thus cause even more repo size growth).
So, the idea is to not store the baseline images in the repository, instead to create them from the existing tests.
Creation of the matplotlib_baseline_images package
We had created the
matplotlib_baseline_images package. This package is involved in the sub-wheels directory so that more packages can be added in the same directory, if needed in future. The
matplotlib_baseline_images package contain baseline images for both
The package can be installed by using
python3 -mpip install matplotlib_baseline_images.
Creation of the matplotlib baseline image generation flag
We successfully created the
generate_missing command line flag for baseline image generation for
mpl_toolkits in the previous months. It was generating the
matplotlib and the
mpl_toolkits baseline images initially. Now, we have also modified the existing flow to generate any missing baseline images, which would be fetched from the
master branch on doing
git pull or
git checkout -b feature_branch.
Now, the image generation on the time of fresh install of matplotlib and the generation of missing baseline images works with the
python3 -pytest lib/matplotlib matplotlib_baseline_image_generation for the
lib/matplotlib folder and
python3 -pytest lib/mpl_toolkits matplotlib_baseline_image_generation for the
We have written documentation explaining the following scenarios:
- How to generate the baseline images on a fresh install of matplotlib?
- How to generate the missing baseline images on fetching changes from master?
- How to install the
matplotlib_baseline_images_packageto be used for testing by the developer?
- How to intentionally change an image?
Links to the work done
- Thomas A Caswell
- Antony Lee
I am grateful to be part of such a great community. Project is really interesting and challenging :)
Thanks Thomas, Antony and Hannah for helping me to complete this project.