From fbf697aed579067925e2747222099357065b87fa Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 2 Oct 2026 17:28:46 -0600 Subject: [PATCH 1/4] Per #584, move the link check into the Documentation workflow, remove linkcheck.yml, and update Sphinx to match METplus - Run dtcenter/metplus-action-linkcheck@v1 as a "Check links" step of documentation.yaml after the docs build, with the same inputs linkcheck.yml used, as was done for MET (dtcenter/MET#3457) and METplus (dtcenter/METplus#3359). The weekly schedule is dropped. - Add a workflow_dispatch trigger so the workflow can be run manually. - Update docs/requirements.txt to the versions METplus uses: sphinx 8.2.3, sphinx-design 0.6.1, sphinx-rtd-theme 3.0.1, and sphinx-gallery 0.19.0. - Use Python 3.12 for the Documentation workflow (was 3.10), since Sphinx 8.2 requires Python 3.11 or later. Read the Docs already uses 3.12. - Stop installing unpinned sphinx, sphinx-gallery, and sphinx_rtd_theme before docs/requirements.txt. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/documentation.yaml | 12 +++++++++--- .github/workflows/linkcheck.yml | 19 ------------------- docs/requirements.txt | 8 ++++---- 3 files changed, 13 insertions(+), 26 deletions(-) delete mode 100644 .github/workflows/linkcheck.yml diff --git a/.github/workflows/documentation.yaml b/.github/workflows/documentation.yaml index 0af1c868d..ae771cba5 100644 --- a/.github/workflows/documentation.yaml +++ b/.github/workflows/documentation.yaml @@ -12,6 +12,7 @@ on: - docs/** pull_request: types: [opened, reopened, synchronize] + workflow_dispatch: jobs: documentation: @@ -21,11 +22,10 @@ jobs: - uses: actions/checkout@v6 - uses: actions/setup-python@v6 with: - python-version: '3.10' + python-version: '3.12' - name: Install dependencies run: | - python -m pip install --upgrade python-dateutil requests sphinx \ - sphinx-gallery matplotlib Pillow sphinx_rtd_theme + python -m pip install --upgrade python-dateutil requests matplotlib Pillow python -m pip install -r docs/requirements.txt - name: Build docs run: ./.github/jobs/build_documentation.sh @@ -40,3 +40,9 @@ jobs: name: documentation_warnings.log path: artifact/doc_warnings.log if-no-files-found: ignore + - name: Check links + uses: dtcenter/metplus-action-linkcheck@v1 + with: + fail-on-broken-links: 'true' + upload-artifact: 'true' + install-package: 'true' diff --git a/.github/workflows/linkcheck.yml b/.github/workflows/linkcheck.yml deleted file mode 100644 index 305c6dce6..000000000 --- a/.github/workflows/linkcheck.yml +++ /dev/null @@ -1,19 +0,0 @@ -name: Linkcheck -on: - schedule: - - cron: '0 6 * * 1' - pull_request: - paths: - - 'docs/**' - workflow_dispatch: {} - -jobs: - linkcheck: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: dtcenter/metplus-action-linkcheck@v1 - with: - fail-on-broken-links: 'true' - upload-artifact: 'true' - install-package: 'true' \ No newline at end of file diff --git a/docs/requirements.txt b/docs/requirements.txt index 5f87dce1d..742c23d2c 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,5 +1,5 @@ -sphinx-gallery==0.14.0 +sphinx-gallery==0.19.0 sphinxcontrib-bibtex==2.6.1 -sphinx==5.3.0 -sphinx-design==0.3.0 -sphinx_rtd_theme==1.3.0 +sphinx==8.2.3 +sphinx-design==0.6.1 +sphinx-rtd-theme==3.0.1 From 6f9b0091c957f416f8d818955be4e7d90f203b39 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 2 Oct 2026 17:31:47 -0600 Subject: [PATCH 2/4] Per #584, show Venita Hagerty's name in bold instead of linking to it The sites.gsl.noaa.gov author page returns 503 Service Unavailable. This section will be removed before the next release, so no replacement link is needed. This matches the same change in MET (dtcenter/MET#3457) and METplus (dtcenter/METplus#3359). Co-Authored-By: Claude Opus 5.5 --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index 87641ca98..8f1c3f281 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -22,7 +22,7 @@ whose verification libraries formed the basis of MET and whose mathematical brilliance, passion for maps, grid projections, and graphics enriched and inspired new capabilities. -To `Venita Hagerty `_, +To **Venita Hagerty**, for her pivotal expertise, support, and attention to detail that ensured the success of METdataio and METexpress. From 53b79922f784bb92c7f80328f0b5d5862aa7d83a Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 2 Oct 2026 17:31:47 -0600 Subject: [PATCH 3/4] Per #584, stop ignoring doi.org links in linkcheck and remove commented-out examples dtcenter/metplus-action-linkcheck checks DOI links with the DOI API, so a DOI whose publisher blocks automated requests still passes, and a mistyped DOI fails. Shorten the comment for bmcnoldy.rsmas.miami.edu, which is still ignored. Co-Authored-By: Claude Opus 5.5 --- docs/conf.py | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index f01bea26c..c61bb5521 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -106,16 +106,8 @@ linkcheck_workers = 8 linkcheck_ignore = [ - # add regex patterns for URLs that should be skipped, e.g.: - # r'https://dtcenter\.org/.*', # if this site blocks automated requests - # r'https://matplotlib\.org/.*', # occasionally rate-limits automated clients - # r'https://scitools\.org\.uk/cartopy/.*', # occasionally slow - r'https://doi\.org/.*', # DOI redirectors often 403 non-browser requests - # bmcnoldy.rsmas.miami.edu sends an incomplete SSL certificate chain - # (missing intermediate cert). Browsers work around this via AIA - # fetching; curl/Python do not. Confirmed 2026-07 via curl -v - # ("SSL certificate problem: unable to get local issuer certificate"). - # Re-check periodically and remove once fixed server-side. + # incomplete TLS certificate chain that browsers tolerate but Python does not, + # and often unreachable; check by hand r'https://bmcnoldy\.rsmas\.miami\.edu/.*', ] From 4097779ce1ba97d34970b60280718ed732dae3b1 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Sat, 3 Oct 2026 12:19:52 -0600 Subject: [PATCH 4/4] Per #584, replace tabs in the docs with spaces for consistent spacing Tabs in the .rst files are replaced with spaces, matching the spacing conventions used elsewhere in the docs: - Tabs used for indentation are replaced with the same number of spaces docutils already used for them (tab stops every 8 columns), so the rendered docs are unchanged. - Lines containing only whitespace are now empty, and trailing tabs are removed. - Tabs between words in a sentence, or after a directive name, are replaced with a single space. Co-Authored-By: Claude Opus 5.5 --- docs/Users_Guide/bar.rst | 2 +- docs/Users_Guide/box.rst | 2 +- docs/Users_Guide/contour.rst | 4 ++-- docs/Users_Guide/eclv.rst | 4 ++-- docs/Users_Guide/histogram.rst | 6 +++--- docs/Users_Guide/histogram_2d.rst | 4 ++-- docs/Users_Guide/installation.rst | 2 +- docs/Users_Guide/line.rst | 4 ++-- docs/Users_Guide/performance_diagram.rst | 8 ++++---- docs/Users_Guide/reliability_diagram.rst | 2 +- docs/Users_Guide/roc_diagram.rst | 2 +- docs/Users_Guide/scatter.rst | 4 ++-- docs/Users_Guide/taylor_diagram.rst | 8 ++++---- docs/Users_Guide/tcmpr_plots.rst | 2 +- docs/Users_Guide/wind_rose.rst | 8 ++++---- 15 files changed, 31 insertions(+), 31 deletions(-) diff --git a/docs/Users_Guide/bar.rst b/docs/Users_Guide/bar.rst index 4c84c8ae7..53337d006 100644 --- a/docs/Users_Guide/bar.rst +++ b/docs/Users_Guide/bar.rst @@ -197,7 +197,7 @@ To generate the above bar plot, perform the following: * Enter the following command: .. code-block:: ini - + python $METPLOTPY_BASE/metplotpy/plots/bar/bar.py $WORKING_DIR/custom_bar.yaml * A **bar.png** output file will be created in the directory that was diff --git a/docs/Users_Guide/box.rst b/docs/Users_Guide/box.rst index d70c9c13f..f3a6b5ffc 100644 --- a/docs/Users_Guide/box.rst +++ b/docs/Users_Guide/box.rst @@ -103,7 +103,7 @@ Copy this custom config file from the directory where the source code was saved to the working directory: .. code-block:: ini - + cp $METPLOTPY_BASE/test/box/custom_box.yaml $WORKING_DIR/custom_box.yaml Modify the *stat_input* setting in the diff --git a/docs/Users_Guide/contour.rst b/docs/Users_Guide/contour.rst index 4581e3378..3692cb93c 100644 --- a/docs/Users_Guide/contour.rst +++ b/docs/Users_Guide/contour.rst @@ -180,13 +180,13 @@ perform the following: For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: .. code-block:: ini - + setenv METPLOTPY_BASE $METPLOTPY_BASE Recall that *$METPLOTPY_BASE* is the directory path indicating where the METplotpy source code was saved. diff --git a/docs/Users_Guide/eclv.rst b/docs/Users_Guide/eclv.rst index 5fcebb7de..fff730170 100644 --- a/docs/Users_Guide/eclv.rst +++ b/docs/Users_Guide/eclv.rst @@ -187,13 +187,13 @@ perform the following: For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: .. code-block:: ini - + setenv METPLOTPY_BASE $METPLOTPY_BASE Recall that *$METPLOTPY_BASE* is the directory path indicating where the METplotpy source code was saved. diff --git a/docs/Users_Guide/histogram.rst b/docs/Users_Guide/histogram.rst index 2237edf8f..a0900595d 100644 --- a/docs/Users_Guide/histogram.rst +++ b/docs/Users_Guide/histogram.rst @@ -268,13 +268,13 @@ perform the following: For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: .. code-block:: ini - + setenv METPLOTPY_BASE $METPLOTPY_BASE Recall that *$METPLOTPY_BASE* is the directory path indicating where the METplotpy source code was saved. @@ -298,7 +298,7 @@ perform the following: command using the **prob_hist.yaml** file: .. code-block:: ini - + python $METPLOTPY_BASE/metplotpy/plots/histogram/prob_hist.py $WORKING_DIR/prob_hist.yaml .. image:: figure/prob_hist.png diff --git a/docs/Users_Guide/histogram_2d.rst b/docs/Users_Guide/histogram_2d.rst index 4f3d20c2e..2213e35a9 100644 --- a/docs/Users_Guide/histogram_2d.rst +++ b/docs/Users_Guide/histogram_2d.rst @@ -211,14 +211,14 @@ Perform the following: * Clone the METplotpy repository from GitHub. First, make the directory: .. code-block:: ini - + mkdir $METPLOTPY_BASE * *$METPLOTPY_BASE* is the directory where the source code is66TAW saved. Enter the following: .. code-block:: ini - + cd $METPLOTPY_BASE git clone https://github.com/dtcenter/METplotpy diff --git a/docs/Users_Guide/installation.rst b/docs/Users_Guide/installation.rst index fec8f9a15..bdbc8a08e 100644 --- a/docs/Users_Guide/installation.rst +++ b/docs/Users_Guide/installation.rst @@ -75,7 +75,7 @@ find the **setup.py** script. From the command line run: .. code-block:: ini - + pip install -e . Do NOT forget the ending period **'.'** This indicates the **setup.py** diff --git a/docs/Users_Guide/line.rst b/docs/Users_Guide/line.rst index 45549dbab..56dc444d8 100644 --- a/docs/Users_Guide/line.rst +++ b/docs/Users_Guide/line.rst @@ -103,7 +103,7 @@ Copy this custom config file from the directory where the source code was saved to the working directory: .. code-block:: ini - + cp $METPLOTPY_BASE/test/line/custom_line.yaml $WORKING_DIR/custom_line.yaml @@ -225,7 +225,7 @@ To generate the above plot using the **line_defaults.yaml** and For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: diff --git a/docs/Users_Guide/performance_diagram.rst b/docs/Users_Guide/performance_diagram.rst index fcdd85b41..9c6cfdd2d 100644 --- a/docs/Users_Guide/performance_diagram.rst +++ b/docs/Users_Guide/performance_diagram.rst @@ -188,7 +188,7 @@ a *plot_filename* in the **minimal_performance_diagram.yaml** file): Copy this file to the working directory: .. code-block:: ini - + cp $METPLOTPY_BASE/test/performance_diagram/minimal_performance_diagram.yaml $WORKING_DIR/minimal_performance_diagram.yaml Add the *stat_input* (input data) and *plot_filename* @@ -245,13 +245,13 @@ perform the following: For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: .. code-block:: ini - + setenv METPLOTPY_BASE $METPLOTPY_BASE Replacing the $METPLOTPY_BASE with the directory where the @@ -273,7 +273,7 @@ perform the following: command using the **custom_performance_diagram.yaml** file: .. code-block:: ini - + python $METPLOTPY_BASE/metplotpy/plots/performance_diagram/performance_diagram.py $WORKING_DIR/custom_performance_diagram.yaml .. image:: figure/performance_diagram_custom.png diff --git a/docs/Users_Guide/reliability_diagram.rst b/docs/Users_Guide/reliability_diagram.rst index b23bd1f50..774feb2f3 100644 --- a/docs/Users_Guide/reliability_diagram.rst +++ b/docs/Users_Guide/reliability_diagram.rst @@ -267,7 +267,7 @@ Perform the following: * Enter the following command: .. code-block:: ini - + python $METPLOTPY_BASE/metplotpy/plots/reliability_diagram/reliability.py $WORKING_DIR/custom_reliability_diagram.yaml In this example, this custom config file changes the color of the boxes. diff --git a/docs/Users_Guide/roc_diagram.rst b/docs/Users_Guide/roc_diagram.rst index a16728692..b652311ac 100644 --- a/docs/Users_Guide/roc_diagram.rst +++ b/docs/Users_Guide/roc_diagram.rst @@ -288,7 +288,7 @@ Perform the following: * Enter the following command: .. code-block:: ini - + python $METPLOTPY_BASE/metplotpy/plots/roc_diagram/roc_diagram.py $WORKING_DIR/custom_roc_diagram.yaml In this example, this custom config file changes the title and axis diff --git a/docs/Users_Guide/scatter.rst b/docs/Users_Guide/scatter.rst index b940df77d..7732e9487 100644 --- a/docs/Users_Guide/scatter.rst +++ b/docs/Users_Guide/scatter.rst @@ -123,7 +123,7 @@ Copy this custom config file from the directory where the source code was saved to the working directory: .. code-block:: ini - + cp $METPLOTPY_BASE/test/scatter/test_scatter_mpr.yaml $WORKING_DIR/custom_scatter.yaml @@ -208,7 +208,7 @@ To generate the above plot using the **scatter_defaults.yaml** and For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: diff --git a/docs/Users_Guide/taylor_diagram.rst b/docs/Users_Guide/taylor_diagram.rst index 8b29dea88..c23a0309f 100644 --- a/docs/Users_Guide/taylor_diagram.rst +++ b/docs/Users_Guide/taylor_diagram.rst @@ -184,7 +184,7 @@ a *plot_filename* in the **minimal_taylor_diagram.yaml** file): Copy this file to the working directory: .. code-block:: ini - + cp $METPLOTPY_BASE/test/taylor_diagram/minimal_taylor_diagram.yaml $WORKING_DIR/minimal_taylor_diagram.yaml If the *stat_input* and *plot_filename* settings (output file/plot path) are missing, add @@ -226,13 +226,13 @@ perform the following: For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: .. code-block:: ini - + setenv METPLOTPY_BASE $METPLOTPY_BASE Replacing the $METPLOTPY_BASE with the directory where the @@ -254,7 +254,7 @@ perform the following: command (below) using the **taylor_diagram_custom.yaml** file: .. code-block:: ini - + python $METPLOTPY_BASE/metplotpy/plots/taylor_diagram/taylor_diagram.py $WORKING_DIR/taylor_diagram_custom.yaml diff --git a/docs/Users_Guide/tcmpr_plots.rst b/docs/Users_Guide/tcmpr_plots.rst index b0091190e..52c1b5656 100644 --- a/docs/Users_Guide/tcmpr_plots.rst +++ b/docs/Users_Guide/tcmpr_plots.rst @@ -248,7 +248,7 @@ Copy this custom config file from the directory where the source code was saved to the working directory: .. code-block:: ini - + cp $METPLOTPY_BASE/test/tcmpr_plots/tcmpr_multi_plots.yaml $WORKING_DIR/tcmpr_multi_plots.yaml Set up the custom configuration file: diff --git a/docs/Users_Guide/wind_rose.rst b/docs/Users_Guide/wind_rose.rst index fd769a1d7..e9213c9ee 100644 --- a/docs/Users_Guide/wind_rose.rst +++ b/docs/Users_Guide/wind_rose.rst @@ -194,7 +194,7 @@ a *plot_filename* in the **minimal_wind_rose.yaml** file): Copy this file to the working directory: .. code-block:: ini - + cp $METPLOTPY_BASE/test/wind_rose/minimal_wind_rose.yaml $WORKING_DIR/minimal_wind_rose.yaml Add the *stat_input* (input data) and *plot_filename* @@ -249,13 +249,13 @@ perform the following: For the ksh environment: .. code-block:: ini - + export METPLOTPY_BASE=$METPLOTPY_BASE For the csh environment: .. code-block:: ini - + setenv METPLOTPY_BASE $METPLOTPY_BASE Replacing the $METPLOTPY_BASE with the directory where the @@ -277,7 +277,7 @@ perform the following: command using the **wind_rose_custom.yaml** file: .. code-block:: ini - + python $METPLOTPY_BASE/metplotpy/plots/wind_rose/wind_rose.py $WORKING_DIR/wind_rose_custom.yaml .. image:: figure/wind_rose_custom.png