Fix docs build for Documenter 1.17 (compat bump #139 follow-up)#140
Merged
ChrisRackauckas merged 2 commits intoJun 4, 2026
Merged
Conversation
Updates the requirements on [Documenter](https://github.com/JuliaDocs/Documenter.jl), [Evolutionary](https://github.com/SciML/Evolutionary.jl), [NLSolversBase](https://github.com/JuliaNLSolvers/NLSolversBase.jl), [Revise](https://github.com/timholy/Revise.jl), [Distributions](https://github.com/JuliaStats/Distributions.jl), [MLDatasets](https://github.com/JuliaML/MLDatasets.jl), [StableRNGs](https://github.com/JuliaRandom/StableRNGs.jl), [PyCall](https://github.com/JuliaPy/PyCall.jl), [SymPy](https://github.com/JuliaPy/SymPy.jl), [IJulia](https://github.com/JuliaLang/IJulia.jl), [Flux](https://github.com/FluxML/Flux.jl) and [Plots](https://github.com/JuliaPlots/Plots.jl) to permit the latest version. Updates `Documenter` to 1.17.0 - [Release notes](https://github.com/JuliaDocs/Documenter.jl/releases) - [Changelog](https://github.com/JuliaDocs/Documenter.jl/blob/master/CHANGELOG.md) - [Commits](JuliaDocs/Documenter.jl@v0.26.0...v1.17.0) Updates `Evolutionary` to 0.11.2 - [Release notes](https://github.com/SciML/Evolutionary.jl/releases) - [Commits](https://github.com/SciML/Evolutionary.jl/commits) Updates `NLSolversBase` to 8.0.0 - [Release notes](https://github.com/JuliaNLSolvers/NLSolversBase.jl/releases) - [Commits](JuliaNLSolvers/NLSolversBase.jl@v0.0.1...v8.0.0) Updates `Evolutionary` to 0.11.2 - [Release notes](https://github.com/SciML/Evolutionary.jl/releases) - [Commits](https://github.com/SciML/Evolutionary.jl/commits) Updates `Revise` to 3.14.5 - [Release notes](https://github.com/timholy/Revise.jl/releases) - [Changelog](https://github.com/timholy/Revise.jl/blob/master/NEWS.md) - [Commits](timholy/Revise.jl@v0.0.1...v3.14.5) Updates `Distributions` to 0.25.125 - [Release notes](https://github.com/JuliaStats/Distributions.jl/releases) - [Commits](JuliaStats/Distributions.jl@0.2.2...v0.25.125) Updates `MLDatasets` to 0.7.21 - [Release notes](https://github.com/JuliaML/MLDatasets.jl/releases) - [Commits](JuliaML/MLDatasets.jl@v0.0.1...v0.7.21) Updates `StableRNGs` to 1.0.4 - [Release notes](https://github.com/JuliaRandom/StableRNGs.jl/releases) - [Commits](JuliaRandom/StableRNGs.jl@v0.1.0...v1.0.4) Updates `PyCall` to 1.96.4 - [Release notes](https://github.com/JuliaPy/PyCall.jl/releases) - [Commits](JuliaPy/PyCall.jl@v0.0.1...v1.96.4) Updates `SymPy` to 2.3.3 - [Release notes](https://github.com/JuliaPy/SymPy.jl/releases) - [Commits](JuliaPy/SymPy.jl@v0.2.2...v2.3.3) Updates `IJulia` to 1.34.4 - [Release notes](https://github.com/JuliaLang/IJulia.jl/releases) - [Commits](JuliaLang/IJulia.jl@v0.0.1...v1.34.4) Updates `Flux` to 0.16.10 - [Release notes](https://github.com/FluxML/Flux.jl/releases) - [Changelog](https://github.com/FluxML/Flux.jl/blob/master/NEWS.md) - [Commits](FluxML/Flux.jl@v0.1.0...v0.16.10) Updates `Plots` to 1.41.6 - [Release notes](https://github.com/JuliaPlots/Plots.jl/releases) - [Changelog](https://github.com/JuliaPlots/Plots.jl/blob/v2/NEWS.md) - [Commits](JuliaPlots/Plots.jl@Plots-v1.41.5+docs...Plots-v1.41.6) --- updated-dependencies: - dependency-name: Documenter dependency-version: 1.17.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Evolutionary dependency-version: 0.11.2 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: NLSolversBase dependency-version: 8.0.0 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Evolutionary dependency-version: 0.11.2 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Revise dependency-version: 3.14.5 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Distributions dependency-version: 0.25.125 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: MLDatasets dependency-version: 0.7.21 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: StableRNGs dependency-version: 1.0.4 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: PyCall dependency-version: 1.96.4 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: SymPy dependency-version: 2.3.3 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: IJulia dependency-version: 1.34.4 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Flux dependency-version: 0.16.10 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Plots dependency-version: 1.41.6 dependency-type: direct:production dependency-group: all-julia-packages ... Signed-off-by: dependabot[bot] <support@github.com>
Documenter 1.17 promotes two doc-check warnings to hard errors: 1. "12 docstrings not included in the manual": the GP protected functions (pdiv, aq, pexp, plog, psqrt, psin, pcos, ppow, cond), `Base.rand(::AbstractRNG, ::TreeGP)`, the no-op `genop(recombinant)` GA operator, and the `nop(::AbstractStrategy)` strategy operator were never referenced by any `@docs`/`@autodocs` block. They are now documented on the GP and Mutation manual pages. 2. "unused footnote named ..." in mutation.md, selection.md and crossover.md: the footnote *references* (`[^N]`) live inside the docstrings spliced in via `@docs`, but the footnote *definitions* (`[^N]:`) lived in the page body. Documenter scopes docstring footnotes separately from page-body footnotes, so every definition looked orphaned. Definitions are moved into the docstrings that use them (co-located with the reference; a single definition per id per page is shared across docstrings on that page). The genuinely unused crossover footnote `[^1]` (Muhlenbein 1993, referenced by nothing) is removed. Docs build now completes with zero errors under Documenter 1.17. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Please ignore until reviewed by @ChrisRackauckas.
This supersedes / builds on the Dependabot compat bump in #139
(
dependabot/julia/docs/all-julia-packages-27dc8c0b02). It carries the samecompat bumps (Documenter 1.17, Flux, Plots, Distributions, NLSolversBase,
Revise, MLDatasets, StableRNGs, PyCall, SymPy, IJulia across
docs/andexamples/) and adds the code/docs changes needed to make the docs build passunder Documenter 1.17. Opened from a fork because
ChrisRackauckas-Claudeonlyhas triage/pull (not push) on the SciML repo.
(A) Documenter 1.17 docs-build fixes
Documenter 1.17 promotes two doc-check categories from warnings to hard errors.
Reproduced locally (
julia +1.11, Documenter 1.17.0) — the unmodified bumpbranch failed with:
Fix 1 — 12 missing docstrings
The GP protected operators (
pdiv, aq, pexp, plog, psqrt, psin, pcos, ppow, cond),Base.rand(::AbstractRNG, ::TreeGP), the no-opgenop(recombinant)GAoperator and the strategy
nop(::AbstractStrategy)operator had docstrings butwere never referenced by any
@docs/@autodocsblock. Added:docs/src/gp.md: a "Protected Functions"@docsblock plusBase.rand(::AbstractRNG, ::TreeGP)(under aCurrentModule = Evolutionary@metablock).docs/src/mutation.md:Evolutionary.genop(recombinant)andEvolutionary.nop(::AbstractStrategy).Fix 2 — "unused footnote" errors
The footnote references (
[^N]) live inside the docstrings that are splicedinto
mutation.md/selection.md/crossover.mdvia@docsblocks, but thefootnote definitions (
[^N]:) lived in the page body under a## Referencesheading. Documenter 1.17 scopes docstring footnotes separately from page-body
footnotes, so every body definition looked orphaned (verified with a minimal
reproduction: ref-in-docstring + def-in-body errors; ref+def both in
docstrings, including across two docstrings on the same page, passes).
Fix: moved each footnote definition into a
# Referencessection of thedocstring(s) that reference it (
src/mutations.jl,src/recombinations.jl,src/selections.jl); one definition per id per page is shared across alldocstrings on that page. The genuinely stale
crossover.md [^1](Mühlenbein1993, referenced by no docstring) was removed. The bibliographies still render
(now inside the docstrings) — nothing was silenced;
warnonly/doctest=:nonewere not used.
Local docs-build evidence (after fix)
Zero errors. Confirmed the rendered HTML contains the new docstrings and the
footnote bibliographies (gp/index.html has all 9 protected fns; mutation /
crossover / selection retain their references).
(B) The ubuntu Julia "1" / "pre" "test failure" is a Codecov upload flake, not a test failure
The root
Project.tomlis unchanged by this bump (onlydocs/Project.tomland
examples/Project.tomlchanged), and the package test target only dependson
Test+StableRNGs. So the bump cannot affect the package testenvironment.
Looking at the actual CI job steps for run 26918986336:
Run testsstepReport Coverage with Codecovstep1prelts1The test step itself passed on every job, including the two "failing" ones.
The X is on the Codecov upload step, which hit a transient Codecov auth error
(
Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature) and exited255. The same auth annotation shows up on other jobs too; lts (also ubuntu,
also ~1h14m) had the identical test step pass and Codecov succeed. The ~1h job
duration is just the coverage-instrumented run time (lts took 1h14m and
passed), not a hang.
This is a transient Codecov infrastructure flake — not caused by the bump and
not a test regression. A re-run should clear it.
Local test evidence (
julia +1.11)Testing Evolutionary tests passed, exit 0, ~219s(all testsets pass: n-Queens, Knapsack, OneMax, Multi-objective EA,
Regression, Genetic Programming).
master:Testing Evolutionary tests passed, exit 0 — identical,confirming no pre-existing test failure and no bump-induced regression.
(Local runs are faster than CI because CI runs with coverage instrumentation.)
Formatting
Runic v1 (1.7.0) reports 0 files need reformatting across
src/,test/,and
docs/make.jl.🤖 Generated with Claude Code