Docstring errors when building documentation

I’m trying to build documentation for a submodule in a public package. For some reason, I keep getting unable to get the binding for a bunch of functions in the ThreeBody submodule. The docstrings are provided in code, all of the functions should be exported fine, and they’re shown in the REPL, but for I haven’t been able to find why they’re not showing up in documentation.

The action log for building and deploying documentation is available here, and my documentation is available here.

Are there any glaring issues in the documentation job log that I’m missing?

I’ve also included the documentation build logs in text below…

┌ Warning: Error requiring `RecursiveFactorization` from `ComponentArrays`
│   exception =
│    LoadError: syntax: invalid keyword argument syntax "tol"
│    Stacktrace:
│     [1] top-level scope at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/if_required/diffeqbase.jl:2
│     [2] include(::Module, ::String) at ./Base.jl:377
│     [3] include at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/ComponentArrays.jl:1 [inlined]
│     [4] required(::String) at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/ComponentArrays.jl:27
│     [5] top-level scope at /home/runner/work/UnitfulAstrodynamics.jl/UnitfulAstrodynamics.jl/docs/make.jl:3
│     [6] eval at ./boot.jl:331 [inlined]
│     [7] eval at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/ComponentArrays.jl:1 [inlined]
│     [8] (::ComponentArrays.var"#99#102")() at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:99
│     [9] err(::Any, ::Module, ::String) at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:47
│     [10] (::ComponentArrays.var"#98#101")() at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:98
│     [11] withpath(::Any, ::String) at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:37
│     [12] (::ComponentArrays.var"#97#100")() at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:97
│     [13] listenpkg(::Any, ::Base.PkgId) at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:20
│     [14] top-level scope at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:95
│     [15] top-level scope at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/ComponentArrays.jl:32
│     [16] eval at ./boot.jl:331 [inlined]
│     [17] eval at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/ComponentArrays.jl:1 [inlined]
│     [18] (::ComponentArrays.var"#66#84")() at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:99
│     [19] err(::Any, ::Module, ::String) at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:47
│     [20] (::ComponentArrays.var"#65#83")() at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:98
│     [21] withpath(::Any, ::String) at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:37
│     [22] (::ComponentArrays.var"#64#82")() at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:97
│     [23] listenpkg(::Any, ::Base.PkgId) at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:20
│     [24] macro expansion at /home/runner/.julia/packages/Requires/7Ncym/src/require.jl:95 [inlined]
│     [25] __init__() at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/ComponentArrays.jl:31
│     [26] _include_from_serialized(::String, ::Array{Any,1}) at ./loading.jl:697
│     [27] _require_search_from_serialized(::Base.PkgId, ::String) at ./loading.jl:781
│     [28] _tryrequire_from_serialized(::Base.PkgId, ::UInt64, ::Nothing) at ./loading.jl:712
│     [29] _require_from_serialized(::String) at ./loading.jl:743
│     [30] _require(::Base.PkgId) at ./loading.jl:1039
│     [31] require(::Base.PkgId) at ./loading.jl:927
│     [32] require(::Module, ::Symbol) at ./loading.jl:922
│     [33] include(::Module, ::String) at ./Base.jl:377
│     [34] exec_options(::Base.JLOptions) at ./client.jl:288
│     [35] _start() at ./client.jl:484
│    in expression starting at /home/runner/.julia/packages/ComponentArrays/Qed7v/src/if_required/diffeqbase.jl:2
└ @ Requires ~/.julia/packages/Requires/7Ncym/src/require.jl:49
WARNING: both SymbolicUtils and LinearAlgebra export "cond"; uses of it in module Symbolics must be qualified
WARNING: both Symbolics and LinearAlgebra export "cond"; uses of it in module ModelingToolkit must be qualified
WARNING: both LinearAlgebra and ParameterizedFunctions export "cond"; uses of it in module DifferentialEquations must be qualified
[ Info: SetupBuildDirectory: setting up build directory.
[ Info: Doctest: running doctests.
[ Info: ExpandTemplates: expanding markdown templates.
┌ Warning: unable to get the binding for 'time_scale_factor,
│ nondimensionalize_length,
│ nondimensionalize_velocity,
│ nondimensionalize_time,
│ nondimensionalize_mass_parameter,
│ nondimensionalize,
│ redimensionalize_length,
│ redimensionalize_velocity,
│ redimensionalize_time,
│ redimensionalize' in `@docs` block in src/ThreeBody/functions.md:20-31 from expression ':((time_scale_factor, nondimensionalize_length, nondimensionalize_velocity, nondimensionalize_time, nondimensionalize_mass_parameter, nondimensionalize, redimensionalize_length, redimensionalize_velocity, redimensionalize_time, redimensionalize))' in module Main
│ ```@docs
│ time_scale_factor,
│ nondimensionalize_length,
│ nondimensionalize_velocity,
│ nondimensionalize_time,
│ nondimensionalize_mass_parameter,
│ nondimensionalize,
│ redimensionalize_length,
│ redimensionalize_velocity,
│ redimensionalize_time,
│ redimensionalize
│ ```
│   exception = `binding` cannot understand expression `(time_scale_factor, nondimensionalize_length, nondimensionalize_velocity, nondimensionalize_time, nondimensionalize_mass_parameter, nondimensionalize, redimensionalize_length, redimensionalize_velocity, redimensionalize_time, redimensionalize)`.
└ @ Documenter.Expanders ~/.julia/packages/Documenter/bFHi4/src/Expanders.jl:285
┌ Warning: unable to get the binding for 'halo_analytic,
│ halo' in `@docs` block in src/ThreeBody/functions.md:34-39 from expression ':((halo_analytic, halo))' in module Main
│ ```@docs
│ halo_analytic,
│ halo
│ halo!
│ monodromy
│ ```
│   exception = `binding` cannot understand expression `(halo_analytic, halo)`.
└ @ Documenter.Expanders ~/.julia/packages/Documenter/bFHi4/src/Expanders.jl:285
┌ Warning: undefined binding 'halo!' in `@docs` block in src/ThreeBody/functions.md:34-39
│ ```@docs
│ halo_analytic,
│ halo
│ halo!
│ monodromy
│ ```
└ @ Documenter.Expanders ~/.julia/packages/Documenter/bFHi4/src/Expanders.jl:298
┌ Warning: unable to get the binding for 'potential_energy, 
│ jacobi_constant,
│ lagrange,
│ potential_energy_hessian, 
│ accel,
│ RestrictedThreeBodySTMTic!,
│ state_transition_dynamics,
│ nondimensional_radius,  
│ inertial, 
│ synodic' in `@docs` block in src/ThreeBody/functions.md:43-54 from expression ':((potential_energy, jacobi_constant, lagrange, potential_energy_hessian, accel, RestrictedThreeBodySTMTic!, state_transition_dynamics, nondimensional_radius, inertial, synodic))' in module Main
│ ```@docs
│ potential_energy, 
│ jacobi_constant,
│ lagrange,
│ potential_energy_hessian, 
│ accel,
│ RestrictedThreeBodySTMTic!,
│ state_transition_dynamics,
│ nondimensional_radius,  
│ inertial, 
│ synodic
│ ```
│   exception = `binding` cannot understand expression `(potential_energy, jacobi_constant, lagrange, potential_energy_hessian, accel, RestrictedThreeBodySTMTic!, state_transition_dynamics, nondimensional_radius, inertial, synodic)`.
└ @ Documenter.Expanders ~/.julia/packages/Documenter/bFHi4/src/Expanders.jl:285
┌ Warning: undefined binding 'conic_anomoly' in `@docs` block in src/TwoBody/functions.md:34-60
│ ```@docs
│ semimajor_axis
│ eccentricity
│ eccentricity_vector
│ inclination
│ true_anomoly
│ periapsis_radius
│ apoapsis_radius
│ periapsis_velocity
│ apoapsis_velocity
│ radius
│ radius_vector
│ velocity
│ velocity_vector
│ mass
│ mass_parameter
│ period
│ time_since_periapsis
│ mean_motion
│ mean_motion_vector
│ semi_parameter
│ conic_anomoly
│ specific_angular_momentum
│ specific_angular_momentum_vector
│ specific_energy
│ conic
│ ```
└ @ Documenter.Expanders ~/.julia/packages/Documenter/bFHi4/src/Expanders.jl:298
[ Info: CrossReferences: building cross-references.
[ Info: CheckDocument: running document checks.
┌ Warning: 72 docstrings not included in the manual:
│ 
│     Base.getindex :: Tuple{Trajectory,Any}
│     UnitfulAstrodynamics.TwoBody.Neptune
│     UnitfulAstrodynamics.ThreeBody.nondimensional_radius :: Union{Tuple{Any}, Tuple{Any,Any}}
│     UnitfulAstrodynamics.TwoBody.Moon
│     Base.length :: Tuple{Trajectory}
│     UnitfulAstrodynamics.TwoBody.eccentric_anomoly :: Union{Tuple{T}, Tuple{T}} where T<:RestrictedTwoBodySystem
│     UnitfulAstrodynamics.TwoBody.specific_potential_energy :: Tuple{Any,Any}
│     UnitfulAstrodynamics.TwoBody.Luna
│     UnitfulAstrodynamics.ThreeBody.redimensionalize_length :: Tuple{Any,Any}
│     UnitfulAstrodynamics.ThreeBody.time_scale_factor :: Tuple{Any,Any,Any}
│     UnitfulAstrodynamics.Maneuvers.TwoBodyManeuver
│     UnitfulAstrodynamics.TwoBody.Saturn
│     UnitfulAstrodynamics.TwoBody.Sun
│     UnitfulAstrodynamics.ThreeBody.accel! :: NTuple{4,Any}
│     UnitfulAstrodynamics.CommonTypes
│     Base.isapprox :: Tuple{RestrictedTwoBodySystem,RestrictedTwoBodySystem}
│     Base.isapprox :: Tuple{CelestialBody,CelestialBody}
│     UnitfulAstrodynamics.ThreeBody.potential_energy :: Tuple{Any,Any}
│     UnitfulAstrodynamics.ThreeBody.state_transition_dynamics :: Tuple{Any,Any}
│     Base.isequal :: Tuple{RestrictedTwoBodySystem,RestrictedTwoBodySystem}
│     Base.isequal :: Tuple{CelestialBody,CelestialBody}
│     UnitfulAstrodynamics.AstroPlots
│     UnitfulAstrodynamics.TwoBody.Uranus
│     UnitfulAstrodynamics.ThreeBody.halo :: Union{Tuple{T1}, Tuple{T2}, Tuple{Any,T1,T2}} where T1<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where T2<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.halo :: Tuple{Any}
│     UnitfulAstrodynamics.TwoBody.Pluto
│     UnitfulAstrodynamics.ThreeBody.halo! :: Tuple{Any,Any}
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize_mass_parameter :: Tuple{Any,Any}
│     UnitfulAstrodynamics.ThreeBody.redimensionalize_velocity :: Tuple{Any,Any,Any}
│     UnitfulAstrodynamics.TwoBody
│     UnitfulAstrodynamics.Propagators
│     UnitfulAstrodynamics.UnitfulAstrodynamics
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize_velocity :: Tuple{Any,Any,Any}
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{T}, Tuple{A}, Tuple{V}, Tuple{V,A,T}} where T<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T) where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where V<:(Union{Quantity{T,𝐋 𝐓^-1,U}, Level{L,S,Quantity{T,𝐋 𝐓^-1,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{U2}, Tuple{U1}, Tuple{A}, Tuple{T1}, Tuple{T1,A,U1,U2}} where U2<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where U1<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where T1<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{T2}, Tuple{T1}, Tuple{T1,T2}} where T2<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T) where T1<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{T}, Tuple{A}, Tuple{V}, Tuple{U}, Tuple{V,A,T}} where T<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T) where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where V<:AbstractArray{U,1} where U<:(Union{Quantity{T,𝐋 𝐓^-1,U}, Level{L,S,Quantity{T,𝐋 𝐓^-1,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{U2}, Tuple{U1}, Tuple{U1,U2}} where U2<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where U1<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{U2}, Tuple{U1}, Tuple{A}, Tuple{V}, Tuple{U}, Tuple{V,A,U1,U2}} where U2<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where U1<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where V<:AbstractArray{U,1} where U<:(Union{Quantity{T,𝐋 𝐓^-1,U}, Level{L,S,Quantity{T,𝐋 𝐓^-1,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{D}, Tuple{D}} where D<:ThreeBodyState
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{A}, Tuple{U2}, Tuple{U1}, Tuple{T}, Tuple{V}, Tuple{VT}, Tuple{R}, Tuple{RT}, Tuple{R,V,T,U1,U2,A}} where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where U2<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where U1<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where T<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T) where V<:AbstractArray{VT,1} where VT<:(Union{Quantity{T,𝐋 𝐓^-1,U}, Level{L,S,Quantity{T,𝐋 𝐓^-1,U}} where S where L} where U where T) where R<:AbstractArray{RT,1} where RT<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{A}, Tuple{R}, Tuple{U}, Tuple{R,A}} where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where R<:AbstractArray{U,1} where U<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T)
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize :: Union{Tuple{A}, Tuple{R}, Tuple{R,A}} where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where R<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T)
│     Base.show :: Tuple{IO,KeplerianState}
│     Base.show :: Tuple{IO,TwoBodyState}
│     Base.show :: Tuple{IO,CelestialBody}
│     UnitfulAstrodynamics.TwoBody.Mars
│     UnitfulAstrodynamics.ThreeBody.jacobi_constant :: Tuple{Any,Any,Any}
│     UnitfulAstrodynamics.TwoBody.RAAN :: Tuple{KeplerianState}
│     UnitfulAstrodynamics.NBody
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize_time :: NTuple{4,Any}
│     UnitfulAstrodynamics.ThreeBody.RestrictedThreeBodySTMTic! :: NTuple{4,Any}
│     UnitfulAstrodynamics.ThreeBody.halo_analytic :: Tuple{Any}
│     UnitfulAstrodynamics.TwoBody.Venus
│     UnitfulAstrodynamics.TwoBody.Earth
│     UnitfulAstrodynamics.ThreeBody.redimensionalize :: Union{Tuple{U2}, Tuple{U1}, Tuple{N}, Tuple{N,U1,U2}} where U2<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where U1<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where N<:NondimensionalThreeBodyState
│     UnitfulAstrodynamics.ThreeBody.redimensionalize :: Union{Tuple{A}, Tuple{R}, Tuple{R,A}} where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where R<:Real
│     UnitfulAstrodynamics.ThreeBody.redimensionalize :: Union{Tuple{U2}, Tuple{U1}, Tuple{A}, Tuple{T1}, Tuple{T1,A,U1,U2}} where U2<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where U1<:(Union{Quantity{T,𝐋^3 𝐓^-2,U}, Level{L,S,Quantity{T,𝐋^3 𝐓^-2,U}} where S where L} where U where T) where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where T1<:Real
│     UnitfulAstrodynamics.ThreeBody.redimensionalize :: Union{Tuple{T2}, Tuple{T1}, Tuple{T1,T2}} where T2<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T) where T1<:Real
│     UnitfulAstrodynamics.ThreeBody.redimensionalize :: Union{Tuple{T}, Tuple{A}, Tuple{U}, Tuple{U,A,T}} where T<:(Union{Quantity{T,𝐓,U}, Level{L,S,Quantity{T,𝐓,U}} where S where L} where U where T) where A<:(Union{Quantity{T,𝐋,U}, Level{L,S,Quantity{T,𝐋,U}} where S where L} where U where T) where U<:Real
│     UnitfulAstrodynamics.ThreeBody.nondimensionalize_length :: Tuple{Any,Any}
│     UnitfulAstrodynamics.ThreeBody
│     UnitfulAstrodynamics.ThreeBody.redimensionalize_time :: NTuple{4,Any}
│     UnitfulAstrodynamics.ThreeBody.redimensionalize_time :: Tuple{Any,Any}
│     UnitfulAstrodynamics.ThreeBody.accel :: Tuple{Any,Any,Any}
│     UnitfulAstrodynamics.Propagators.RestrictedBiasedTwoBodyTic! :: NTuple{4,Any}
│     UnitfulAstrodynamics.TwoBody.Mercury
│     UnitfulAstrodynamics.ThreeBody.potential_energy_hessian
│     UnitfulAstrodynamics.TwoBody.Jupiter
│     UnitfulAstrodynamics.TwoBody.argument_of_periapsis :: Tuple{KeplerianState}
│     UnitfulAstrodynamics.ThreeBody.lagrange :: Union{Tuple{Any}, Tuple{Any,Any}}
│     UnitfulAstrodynamics.Maneuvers
│ 
│ These are docstrings in the checked modules (configured with the modules keyword)
│ that are not included in @docs or @autodocs blocks.
└ @ Documenter.DocChecks ~/.julia/packages/Documenter/bFHi4/src/DocChecks.jl:69

For future reference – the issue was commas placed in the @docs block…

@docs """
exported_function_name, # <--
another_exported_function
"""
4 Likes