From 7247b1c84e75a8e32d3c33d599f2c186c3af8310 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 4 May 2021 00:46:19 -0400 Subject: [PATCH 1/5] ci: Bump Ubuntu to 18.04 LTS. Ubuntu 16.04 LTS went EOL at the end of April 2021. --- .github/workflows/tests.yml | 16 ++++++---------- azure-pipelines.yml | 6 +++--- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index eb5530661584..34ff72f30e16 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -22,18 +22,18 @@ jobs: matrix: include: - name-suffix: "(Minimum Versions)" - os: ubuntu-16.04 + os: ubuntu-18.04 python-version: 3.7 extra-requirements: '-c requirements/testing/minver.txt' pyqt5-ver: '==5.8 sip==4.19.7' # oldest versions with a Py3.7 wheel. delete-font-cache: true XVFB_RUN: xvfb-run -a - - os: ubuntu-16.04 + - os: ubuntu-18.04 python-version: 3.7 extra-requirements: '-r requirements/testing/extra.txt' XVFB_RUN: xvfb-run -a CFLAGS: "-fno-lto" # Ensure that disabling LTO works. - - os: ubuntu-16.04 + - os: ubuntu-18.04 python-version: 3.8 extra-requirements: '-r requirements/testing/extra.txt' XVFB_RUN: xvfb-run -a @@ -156,12 +156,8 @@ jobs: # libraries cannot be loaded at runtime, so an actual import is a # better check). if [[ "${{ runner.os }}" != 'macOS' ]]; then - # PyGObject, pycairo, and cariocffi do not install on OSX 10.12; - # pycairo 1.20+ requires a new version of Cairo, unavailable on - # Ubuntu 16.04, so PyGObject must be installed without build - # isolation in order to pick up the lower pre-installed version. - python -m pip install --upgrade 'pycairo<1.20.0' 'cairocffi>=0.8' && - python -m pip install --upgrade --no-build-isolation PyGObject && + # PyGObject, pycairo, and cariocffi do not install on OSX 10.12. + python -m pip install --upgrade pycairo 'cairocffi>=0.8' PyGObject && python -c 'import gi; gi.require_version("Gtk", "3.0"); from gi.repository import Gtk' && echo 'PyGObject is available' || echo 'PyGObject is not available' @@ -180,7 +176,7 @@ jobs: echo 'PySide2 is not available' fi python -m pip install --upgrade \ - -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-16.04 \ + -f https://extras.wxpython.org/wxPython4/extras/linux/gtk3/ubuntu-18.04 \ wxPython && python -c 'import wx' && echo 'wxPython is available' || diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2ff87d0c71da..2c25a7786288 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -6,13 +6,13 @@ strategy: matrix: Linux_py37: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.7' Linux_py38: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.8' Linux_py39: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' python.version: '3.9' macOS_py37: vmImage: 'macOS-10.15' From 87a9b4f6e9c684566a2f6a84e17abcdc9e32eb69 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 4 May 2021 01:15:49 -0400 Subject: [PATCH 2/5] Update mixedmode test result. Presumably some external dependency has changed the result, likely Ghostscript. This has been broken on Fedora for some time, but we never updated it because CI was on Ubuntu 16.04. --- .../test_backend_pgf/pgf_mixedmode.pdf | Bin 10967 -> 9822 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_mixedmode.pdf b/lib/matplotlib/tests/baseline_images/test_backend_pgf/pgf_mixedmode.pdf index fdbb20349c42f67ed7c36d2c51ab80ddf9219019..fd7cf7a5c0d1849f2588809771c179c101a99a00 100644 GIT binary patch literal 9822 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 M?)>@7+Uj)w1yE&cQ2+n{ From ea09d95626d2b4836d92965b6269f1210a60d773 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 4 May 2021 19:37:10 -0400 Subject: [PATCH 3/5] TST: Ignore Producer key mismatches in PGF metadata. Some LaTeX engines ignore the setting of this key in hyperref, but otherwise obey the request metadata. This is likely still okay, but leave a note in the docs as well. --- lib/matplotlib/backends/backend_pgf.py | 3 +++ lib/matplotlib/tests/test_backend_pgf.py | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/backends/backend_pgf.py b/lib/matplotlib/backends/backend_pgf.py index 9738d07457fc..1a647d37153f 100644 --- a/lib/matplotlib/backends/backend_pgf.py +++ b/lib/matplotlib/backends/backend_pgf.py @@ -948,6 +948,9 @@ def __init__(self, filename, *, keep_empty=True, metadata=None): 'Creator', 'Producer', 'CreationDate', 'ModDate', and 'Trapped'. Values have been predefined for 'Creator', 'Producer' and 'CreationDate'. They can be removed by setting them to `None`. + + Note that some versions of LaTeX engines may ignore the 'Producer' + key and set it to themselves. """ self._output_name = filename self._n_figures = 0 diff --git a/lib/matplotlib/tests/test_backend_pgf.py b/lib/matplotlib/tests/test_backend_pgf.py index 75f50ecbf0d9..040b2e714655 100644 --- a/lib/matplotlib/tests/test_backend_pgf.py +++ b/lib/matplotlib/tests/test_backend_pgf.py @@ -257,13 +257,17 @@ def test_pdf_pages_metadata_check(monkeypatch, system): if '/PTEX.Fullbanner' in info: del info['/PTEX.Fullbanner'] + # Some LaTeX engines ignore this setting, and state themselves as producer. + producer = info.pop('/Producer') + assert producer == f'Matplotlib pgf backend v{mpl.__version__}' or ( + system == 'lualatex' and 'LuaTeX' in producer) + assert info == { '/Author': 'me', '/CreationDate': 'D:19700101000000Z', '/Creator': f'Matplotlib v{mpl.__version__}, https://matplotlib.org', '/Keywords': 'test,pdf,multipage', '/ModDate': 'D:19680801000000Z', - '/Producer': f'Matplotlib pgf backend v{mpl.__version__}', '/Subject': 'Test page', '/Title': 'Multipage PDF with pgf', '/Trapped': '/True', From bb52af03ccbe8e606e2b2e3769590c726279c8a6 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Tue, 4 May 2021 19:47:26 -0400 Subject: [PATCH 4/5] ci: Upload result images if tests fail. --- .github/workflows/tests.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 34ff72f30e16..ed4e6219f2c6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -222,3 +222,9 @@ jobs: if: ${{ runner.os != 'macOS' }} - name: Upload code coverage uses: codecov/codecov-action@v1 + + - uses: actions/upload-artifact@v2 + if: failure() + with: + name: "${{ matrix.python-version }} ${{ matrix.os }} ${{ matrix.name-suffix }} result images" + path: ./result_images From ab053fdecaf095e692f5190f5c7fcd0693eb1bc8 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 5 May 2021 04:38:25 -0400 Subject: [PATCH 5/5] ci: Invalidate Matplotlib caches on test runners. These store files that were created with older versions of system dependencies, so need to be regenerated. --- .github/workflows/tests.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ed4e6219f2c6..ae5807d20879 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -128,10 +128,10 @@ jobs: ~/.cache/matplotlib !~/.cache/matplotlib/tex.cache !~/.cache/matplotlib/test_cache - key: ${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-${{ github.sha }} + key: 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}-${{ github.sha }} restore-keys: | - ${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}- - ${{ runner.os }}-py${{ matrix.python-version }}-mpl- + 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl-${{ github.ref }}- + 1-${{ runner.os }}-py${{ matrix.python-version }}-mpl- - name: Install Python dependencies run: |