docs: fix master doc build (Attractors floor + latest SciML API adaption)#1490
Draft
ChrisRackauckas-Claude wants to merge 2 commits into
Draft
docs: fix master doc build (Attractors floor + latest SciML API adaption)#1490ChrisRackauckas-Claude wants to merge 2 commits into
ChrisRackauckas-Claude wants to merge 2 commits into
Conversation
The Documentation workflow on master fails in the `dynamical_systems_basins`
`@example` block of `docs/src/steady_state_functionality/dynamical_systems.md`,
where `basins_of_attraction` errors with:
UndefVarError: `referenced_sciml_model` not defined in `Attractors`
@ Attractors .../src/mapping/attractor_mapping.jl:220
This is a version-skew between two DynamicalSystems-ecosystem packages.
DynamicalSystemsBase renamed `referrenced_sciml_model` -> `referenced_sciml_model`
(fixing the misspelling). Attractors 1.37.0 (the version the docs env resolved to)
calls `DynamicalSystemsBase.referenced_sciml_model` directly with no fallback, so
when paired with a DynamicalSystemsBase that only had the renamed/old symbol it threw.
Attractors 1.38.2 added an `isdefined(DynamicalSystemsBase, :referenced_sciml_model)`
guard that works with both the old (`referrenced_sciml_model`) and new
(`referenced_sciml_model`) names. Add `Attractors` as a direct docs dependency with
a `1.38.2` compat floor so the docs environment can no longer resolve to the broken
`Attractors < 1.38.2`. The page already uses `AttractorsViaRecurrences`,
`basins_of_attraction`, and `heatmap_basins_attractors` directly, so making
Attractors an explicit dependency is natural.
Verified locally on Julia 1.12: the failing `@example` block runs successfully with
Attractors 1.38.4 (resolved under the new floor), producing the two expected
fixed-point attractors with no UndefVarError.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
isaacsas
approved these changes
Jun 20, 2026
isaacsas
left a comment
Member
There was a problem hiding this comment.
Assuming docs build with this I approve.
Member
|
Is this the one that was solved here? |
The Documentation `build` job had many `@example` blocks failing after the latest SciML stack (OrdinaryDiffEq v2 / SciMLBase 3 / BifurcationKit 0.8 / SciMLLogging 2) introduced breaking API changes. Adapt the doc code: - `verbose = false` (Bool) is rejected by `solve` (DiffEqBase `_process_verbose_param`). Use `verbose = SciMLLogging.None()`; add `SciMLLogging` as a docs dependency and import it in the affected pages. - `Rodas5P(autodiff = false)` (Bool) is rejected; use `autodiff = AutoFiniteDiff()` (add `ADTypes` docs dep + import). - `EnsembleProblem` `prob_func` is now called as `prob_func(prob, ctx)` (where `ctx::EnsembleContext` exposes `ctx.sim_id`), not `prob_func(prob, i, repeat)`. - The OrdinaryDiffEq solver-level `precs` keyword moved to the LinearSolve linsolve: `Rodas5P(linsolve = KrylovJL_GMRES(precs = ...))` with the new 2-argument `precs(A, p) -> (Pl, Pr)` signature. - BifurcationKit renamed `PeriodicOrbitOCollProblem` to `Collocation`. - `LBFGSB` is now exported by both `Optim` and `OptimizationLBFGSB`, causing an ambiguity `UndefVarError`; qualify it as `OptimizationLBFGSB.LBFGSB()`. Each changed block was verified locally on Julia 1.12 (the Documentation workflow's version) by running it against the resolved docs environment. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com> Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Member
|
This ais already handled in #1488, but I just need SciML/OrdinaryDiffEq.jl#3766 to be merged first. |
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.
Summary
The Documentation workflow on
master(jobbuild) was failing. The build runs all@exampleblocks and aggregates errors, and the full run surfaced 47 failing blocks across ~10 doc pages — all caused by breaking API changes in the latest SciML stack (OrdinaryDiffEq v2 / SciMLBase 3 / BifurcationKit 0.8 / SciMLLogging 2 / Attractors 1.38). This PR fixes them.Fixes
Attractors floor (original commit).
Attractors < 1.38.2callsDynamicalSystemsBase.referenced_sciml_modelwith no fallback; the rename broke thedynamical_systems_basinsblock. AddedAttractorsas a direct docs dep with a1.38.2compat floor.verbose = false(Bool) rejected bysolve. DiffEqBase's_process_verbose_param(::Bool)now throwsArgumentError. Replaced withverbose = SciMLLogging.None()(addedSciMLLoggingas a docs dep + per-page import). Affected:optimization_ode_param_fitting.md,behaviour_optimisation.md,global_sensitivity_analysis.md,turing_ode_param_fitting.md,ode_fitting_oscillation.md.Rodas5P(autodiff = false)(Bool) rejected. Replaced withautodiff = AutoFiniteDiff()(addedADTypesdocs dep + import) indynamical_systems.md.EnsembleProblemprob_funcsignature change. Nowprob_func(prob, ctx)withctx::EnsembleContext(index isctx.sim_id), notprob_func(prob, i, repeat). Updatedode_simulation_performance.md,ensemble_simulations.md,noise_modelling_approaches.md,turing_ode_param_fitting.md.Solver
precskeyword moved to LinearSolve.Rodas5P(linsolve = KrylovJL_GMRES(precs = ...))with the new 2-argprecs(A, p) -> (Pl, Pr)signature, replacing the old 9-arg OrdinaryDiffEq form, inode_simulation_performance.md.BifurcationKit rename.
PeriodicOrbitOCollProblem→Collocationinbifurcationkit_periodic_orbits.md.LBFGSBexport ambiguity. BothOptimandOptimizationLBFGSBnow exportLBFGSB, givingUndefVarErrorambiguity. Qualified asOptimizationLBFGSB.LBFGSB()inlikelihood_profiler.md.No tolerances were loosened and no blocks were skipped/disabled — every fix migrates the example to the current API.
Verification
On Julia 1.12 (the Documentation workflow's version), against the resolved docs environment, I ran each changed
@examplechain's load-bearing blocks end-to-end and confirmed they execute without error:verbose = SciMLLogging.None()optimization loss loop (loss = 0.0 at the true parameters).prob_func(prob, ctx)+EnsembleProblemsolve (5 trajectories, allSuccess).Rodas5P(autodiff = AutoFiniteDiff())→lyapunovspectrum(largest exponent positive → chaotic, as the page states).incompletelu(A, p)+KrylovJL_GMRES(precs = ...)+concrete_jac = truesolve completes (sparse problem).bifurcationdiagram→Collocation(50, 4)→continuation(...)returns a validBranch.OptimizationLBFGSB.LBFGSB()resolves cleanly with bothOptimandOptimizationLBFGSBloaded.Please ignore until reviewed by @ChrisRackauckas.