Skip to content

Feature #584 linkcheck - #587

Merged
JohnHalleyGotway merged 8 commits into
developfrom
feature_584_linkcheck
Oct 14, 2026
Merged

JohnHalleyGotway merged 8 commits into
developfrom
feature_584_linkcheck

Conversation

@JohnHalleyGotway

@JohnHalleyGotway JohnHalleyGotway commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Closes #584

Summary

Moves the link check into the existing Documentation workflow and updates Sphinx to the versions METplus uses, as was done for MET (dtcenter/MET#3457) and METplus (dtcenter/METplus#3359). The broken links themselves were resolved in #585. With these changes, the Documentation workflow builds the docs with no warnings and all checked links pass.

Changes

Link Check Moved Into the Documentation Workflow

  • .github/workflows/documentation.yaml now runs dtcenter/metplus-action-linkcheck@v1 (v1.6.0) as a Check links step after the docs build, with the same inputs linkcheck.yml used. The weekly schedule is dropped.
  • A workflow_dispatch trigger is added so the workflow can be run manually.
  • .github/workflows/linkcheck.yml is removed.

Sphinx Updated to Match METplus

Package Before After
sphinx 5.3.0 8.2.3
sphinx-design 0.3.0 0.6.1
sphinx-rtd-theme 1.3.0 3.0.1
sphinx-gallery 0.14.0 0.19.0
sphinxcontrib-bibtex 2.6.1 2.6.1 (unchanged; compatible with Sphinx 8)
  • Sphinx 8.2 requires Python 3.11 or later, so the Documentation workflow now uses Python 3.12 (was 3.10). Read the Docs already used 3.12.
  • The workflow no longer installs unpinned sphinx, sphinx-gallery, and sphinx_rtd_theme before docs/requirements.txt.

Links

  • Venita Hagerty (index.rst): https://sites.gsl.noaa.gov/authors/365 returns 503 Service Unavailable. Her name is now shown in bold with no link, as in MET and METplus, since this section will be removed before the next release. (v1.6.0 of the link checker re-checks 503 responses, which Sphinx reports as ignored.)
  • linkcheck_ignore in docs/conf.py is reduced to one pattern:
    • Removed https://doi\.org/.*: the link checker checks DOI links with the DOI API, so DOIs whose publishers block automated requests (e.g. Wiley) still pass, and a mistyped DOI fails.
    • Kept https://bmcnoldy\.rsmas\.miami\.edu/.* (incomplete TLS certificate chain, and often unreachable), with a shorter comment.
    • Removed the commented-out example patterns.

Consistent Spacing

Tabs in the .rst files (31 line(s) in 15 file(s), 4097779) are replaced with spaces, for consistent spacing that matches the formatting 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 continuation lines and code blocks still line up.
  • 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.

These are whitespace-only changes (git diff -w is empty), and the rendered docs are unchanged. Each changed line was checked to give docutils the same input as before (docutils expands tabs to 8-column tab stops and strips trailing whitespace when it reads a file), and the Documentation workflow builds the docs with no warnings.

Pull Request Template Updated

.github/pull_request_template.md is updated to prompt for a summary of each pull request and to make the template consistent across the METplus repositories. Since linkcheck PRs are open in 8 METplus repositories at once, they are used to make the same template changes everywhere (see also dtcenter/METplus#3359, dtcenter/MET#3457, dtcenter/METcalcpy#478, dtcenter/METdataio#432, dtcenter/METviewer#676, dtcenter/METexpress#199, dtcenter/METplus-Training#73). In this repository, the template changes:

  • Adds a Change Summary section at the top, prompting the submitter to describe the changes proposed by the pull request. The template had no place for this before.
  • Replaces the per-repository METplotpy-X.Y.Z Development project with METplus-X.Y Development, the single coordinated development project used for each release since METplus 6.1 (e.g. METplus-13.0 Development). The line now says and/or, since a change can be selected for both projects.
  • Adds </br> after the SonarQube "please describe" prompt, to match the other prompts.
  • Links the METplus Components Python Requirements table on /en/latest/ instead of /en/develop/, like the template's other documentation links.

Pull Request Testing

  • Describe testing already performed for these changes:

    The Documentation workflow passed on this branch (run 37078013741): the docs build with no warnings, and all 74 checked links passed (including 4 DOIs checked with the DOI API), with 1 ignored (bmcnoldy.rsmas.miami.edu). The docs were also built and link checked locally with Sphinx 8.2.3 on Python 3.12, with no warnings. "Python 3.12 tests" also passed.

  • Recommend testing for the reviewer(s) to perform, including the location of input datasets, and any additional instructions:

    Review the Linkcheck Results in the Documentation job summary for this PR.

  • Do these changes include sufficient documentation updates, ensuring that no errors or warnings exist in the build of the documentation? [Yes]

  • Do these changes include sufficient testing updates? [Yes]

  • Will this PR result in changes to the test suite? [No]

    If yes, describe the new output and/or changes to the existing output:

  • Do these changes introduce new SonarQube findings? [No]

    If yes, please describe:

  • Please complete this pull request review by [Fill in date].

Pull Request Checklist

See the METplus Workflow for details.

  • Add any new Python packages to the METplus Components Python Requirements table.
  • Review the source issue metadata (required labels, projects, and milestone).
  • Complete the PR definition above.
  • Ensure the PR title matches the feature or bugfix branch name.
  • Define the PR metadata, as permissions allow.
    Select: Reviewer(s) and Development issue
    Select: Milestone as the version that will include these changes
    Select: Coordinated METplus-X.Y Support project for bugfix releases or METplotpy-X.Y.Z Development project for official releases
  • After submitting the PR, select the ⚙️ icon in the Development section of the right hand sidebar. Search for the issue that this PR will close and select it, if it is not already selected.
  • After the PR is approved, merge your changes. If permissions do not allow this, request that the reviewer do the merge.
  • Close the linked issue and delete your feature or bugfix branch from GitHub.

🤖 Generated with Claude Code

JohnHalleyGotway and others added 3 commits October 2, 2026 17:28
… 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 <noreply@anthropic.com>
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 <noreply@anthropic.com>
…ed-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 <noreply@anthropic.com>
@JohnHalleyGotway JohnHalleyGotway added this to the METplotpy-13.0.0 milestone Oct 2, 2026
@JohnHalleyGotway JohnHalleyGotway self-assigned this Oct 2, 2026
@JohnHalleyGotway JohnHalleyGotway linked an issue Oct 3, 2026 that may be closed by this pull request
8 of 23 tasks
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 <noreply@anthropic.com>
@JohnHalleyGotway JohnHalleyGotway mentioned this pull request Oct 3, 2026
9 of 15 tasks
@JohnHalleyGotway

JohnHalleyGotway commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor Author

Link changes in this PR

This PR corrects 1 link:

  • 1 removed, listed below.

Most of the broken links listed in #584 were already fixed in #585 (merged on 2026-07-30), so this table shows only the links changed by this PR.

The table compares develop with this branch. Each line number links to that line, in its file, at this PR's current commit (4097779ce). Changes that only reformat a link without changing its target, such as wrapping a bare URL in RST link syntax, are not listed. The displayed URLs contain invisible line-break hints, so click a link (or copy the link address) rather than copying its text.

Line(s) URL
25 Old URL https:/​/​sites.​gsl.​noaa.​gov/​authors/​365
New URL (link removed; Venita Hagerty's name is shown in bold instead)

🤖 Generated with Claude Code

@JohnHalleyGotway

Copy link
Copy Markdown
Contributor Author

@jprestop there no actual link updates for METplotpy.

Marking this PR as ready for your review.

@JohnHalleyGotway
JohnHalleyGotway marked this pull request as ready for review October 5, 2026 20:04
JohnHalleyGotway and others added 3 commits October 13, 2026 11:17
… template.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s repositories.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed METplus-X.Y Development project and use consistent documentation links.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…equest template.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@jprestop jprestop left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything looks good to me. Thank you for your work on this task @JohnHalleyGotway. I approve.

JohnHalleyGotway added a commit to dtcenter/METexpress that referenced this pull request Oct 14, 2026
Closes #192

## Summary ##

Moves the link check into the existing **Documentation** workflow and
updates the Sphinx versions to match METplus, the same changes made for
MET (dtcenter/MET#3457) and METplus (dtcenter/METplus#3359). Most of the
links listed in #192 were already fixed in #194. With these changes, the
Documentation workflow builds the docs with no warnings and **all
checked links pass, with none ignored**.

## Changes ##

### Link Check Moved Into the Documentation Workflow ###
- `.github/workflows/documentation.yml` now runs
[`dtcenter/metplus-action-linkcheck@v1`](https://github.com/dtcenter/metplus-action-linkcheck)
(v1.6.0) as a **Check links** step after the docs build without
warnings, with the same inputs `linkcheck.yml` used.
- A `workflow_dispatch` trigger is added so the check can still be run
manually. The weekly schedule is dropped, as in MET and METplus.
- `.github/workflows/linkcheck.yml` is removed.

### Sphinx Updated to Match METplus ###

| Package | Before | After |
|---|---|---|
| `sphinx` | 5.3.0 | 8.2.3 |
| `sphinx-design` | 0.3.0 | 0.6.1 |
| `sphinx-rtd-theme` | 1.3.0 | 3.0.1 |
| `sphinx-gallery` | 0.14.0 | 0.19.0 |
| `sphinxcontrib-bibtex` | 2.6.1 | 2.6.1 (unchanged; compatible with
Sphinx 8) |

- Sphinx 8.2 requires Python 3.11 or later, so the Documentation
workflow now uses Python 3.12 (was 3.8), and so does Read the Docs
(`.readthedocs.yaml`, was 3.10).
- The Documentation workflow no longer installs unpinned `sphinx`,
`sphinx-gallery`, and `sphinx_rtd_theme` before `docs/requirements.txt`.

### Links ###
- **Venita Hagerty** (`index.rst`): the `sites.gsl.noaa.gov` author page
returns `503 Service Unavailable`. Her name is now shown in bold with no
link, as in MET and METplus, since this section will be removed before
the next release.
- **`linkcheck_ignore` is now empty.** `https://www.noaa.gov/` was
ignored because it returned `403` to Sphinx 5, but it responds to the
link checker with Sphinx 8, including on GitHub Actions runners.

### Consistent Spacing ###

Tabs in the `.rst` files (26 line(s) in 5 file(s), 35bac3a) are
replaced with spaces, for consistent spacing that matches the formatting
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
continuation lines and code blocks still line up.
- 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.

These are whitespace-only changes (`git diff -w` is empty), and the
rendered docs are unchanged. The HTML was built before and after this
change, and every page has identical content, with no warnings.

### Pull Request Template Updated ###

`.github/pull_request_template.md` is updated to prompt for a summary of
each pull request and to make the template consistent across the METplus
repositories. Since linkcheck PRs are open in 8 METplus repositories at
once, they are used to make the same template changes everywhere (see
also dtcenter/METplus#3359, dtcenter/MET#3457, dtcenter/METplotpy#587,
dtcenter/METcalcpy#478, dtcenter/METdataio#432, dtcenter/METviewer#676,
dtcenter/METplus-Training#73). In this repository, the template changes:

- Adds a **Change Summary** section at the top, prompting the submitter
to describe the changes proposed by the pull request. The template had
no place for this before.
- Replaces the per-repository **METexpress-X.Y.Z Development** project
with **METplus-X.Y Development**, the single coordinated development
project used for each release since METplus 6.1 (e.g. **METplus-13.0
Development**). The line now says **and/or**, since a change can be
selected for both projects.
- Adds the question about new SonarQube findings, which the other
repositories already ask.

## Pull Request Testing ##

- [x] Describe testing already performed for these changes:</br>
The Documentation workflow passed on this branch ([run
37077946094](https://github.com/dtcenter/METexpress/actions/runs/37077946094)):
the docs build with no warnings, and **all 24 checked links passed**,
with none failing or ignored. A local build with Sphinx 8.2.3 in
nitpicky mode (`-n`, as in `docs/Makefile`) also had no warnings.

- [x] Recommend testing for the reviewer(s) to perform, including the
location of input datasets, and any additional instructions:</br>
Review the **Linkcheck Results** in the Documentation job summary for
this PR, and check the rendered docs (artifact or Read the Docs) for any
visual changes from the newer Sphinx theme.

- [x] Do these changes include sufficient documentation updates,
ensuring that no errors or warnings exist in the build of the
documentation? **[Yes]**

- [x] Do these changes include sufficient testing updates? **[Yes]**

- [x] Will this PR result in changes to the test suite? **[No]**</br>
If **yes**, describe the new output and/or changes to the existing
output:</br>

- [ ] Please complete this pull request review by **[Fill in
date]**.</br>

## Pull Request Checklist ##
See the [METplus
Workflow](https://metplus.readthedocs.io/en/latest/Contributors_Guide/github_workflow.html)
for details.
- [ ] Review the source issue metadata (required labels, projects, and
milestone).
- [x] Complete the PR definition above.
- [x] Ensure the PR title matches the feature or bugfix branch name.
- [ ] Define the PR metadata, as permissions allow.
Select: **Reviewer(s)** and **Development** issue
Select: **Milestone** as the version that will include these changes
Select: **Coordinated METplus-X.Y Support** project for bugfix releases
or **METexpress-X.Y.Z Development** project for official releases
- [ ] After submitting the PR, select the ⚙️ icon in the
**Development** section of the right hand sidebar. Search for the issue
that this PR will close and select it, if it is not already selected.
- [ ] After the PR is approved, merge your changes. If permissions do
not allow this, request that the reviewer do the merge.
- [ ] Close the linked issue and delete your feature or bugfix branch
from GitHub.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
@JohnHalleyGotway
JohnHalleyGotway merged commit 355cbb9 into develop Oct 14, 2026
10 checks passed
@github-project-automation github-project-automation Bot moved this from 🔎 In review to 🏁 Done in METplus-13.0 Development Oct 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: 🏁 Done

Development

Successfully merging this pull request may close these issues.

Enhance the documentation by correcting broken links and typos

2 participants