Skip to content

Commit 6172d1d

Browse files
Make QA scan the ODEInterface extension
ExplicitImports only analyzes an extension module once it exists, and an extension module only exists once its trigger weakdep has been loaded. The QA environment never loaded ODEInterface, so BoundaryValueDiffEqODEInterfaceExt was never checked. Add ODEInterface to test/qa/Project.toml and load it in qa.jl. The newly-visible extension surfaced two stale explicit imports (OPT_ATOL, BVPVerbosity), removed here, plus non-public accesses that have no public spelling at their owner, which are ignored with justifications. Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
1 parent 8ed62de commit 6172d1d

3 files changed

Lines changed: 50 additions & 2 deletions

File tree

ext/BoundaryValueDiffEqODEInterfaceExt.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ module BoundaryValueDiffEqODEInterfaceExt
33
using BoundaryValueDiffEq: BVPM2, BVPSOL, COLNEW
44
using BoundaryValueDiffEqCore: __extract_u0, __initial_guess_length, __extract_mesh,
55
__flatten_initial_guess, __get_bcresid_prototype,
6-
__has_initial_guess, __initial_guess, _process_verbose_param, BVPVerbosity
6+
__has_initial_guess, __initial_guess, _process_verbose_param
77
using SciMLBase: SciMLBase, BVProblem, TwoPointBVProblem, ReturnCode
88
using SciMLLogging: @SciMLMessage
9-
using ODEInterface: OptionsODE, OPT_ATOL, OPT_RTOL, OPT_METHODCHOICE, OPT_DIAGNOSTICOUTPUT,
9+
using ODEInterface: OptionsODE, OPT_RTOL, OPT_METHODCHOICE, OPT_DIAGNOSTICOUTPUT,
1010
OPT_ERRORCONTROL, OPT_SINGULARTERM, OPT_MAXSTEPS, OPT_BVPCLASS,
1111
OPT_SOLMETHOD, OPT_RHS_CALLMODE, OPT_COLLOCATIONPTS, OPT_ADDGRIDPOINTS,
1212
OPT_MAXSUBINTERVALS, RHS_CALL_INSITU, evalSolution

test/qa/Project.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ BoundaryValueDiffEqMIRK = "1a22d4ce-7765-49ea-b6f2-13c8438986a6"
88
BoundaryValueDiffEqMIRKN = "9255f1d6-53bf-473e-b6bd-23f1ff009da4"
99
BoundaryValueDiffEqShooting = "ed55bfe0-3725-4db6-871e-a1dc9f42a757"
1010
JET = "c3a54625-cd67-489e-a8e7-0a5a0ff4e31b"
11+
ODEInterface = "54ca160b-1b9f-5127-a996-1867f4bc2a2c"
1112
SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462"
1213
SciMLTesting = "09d9d899-5365-40a9-917a-5f67fddea283"
1314
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
@@ -22,6 +23,7 @@ BoundaryValueDiffEqMIRK = "1"
2223
BoundaryValueDiffEqMIRKN = "1"
2324
BoundaryValueDiffEqShooting = "1"
2425
JET = "0.9, 0.10, 0.11"
26+
ODEInterface = "0.5"
2527
SciMLBase = "3"
2628
SciMLTesting = "2.4"
2729
Test = "1.10"

test/qa/qa.jl

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ using SciMLBase
44
using JET
55
using Test
66

7+
# ExplicitImports only analyzes an extension module once it has been materialized,
8+
# which requires its trigger weakdep to be loaded. Without this, the QA checks
9+
# silently skip BoundaryValueDiffEqODEInterfaceExt entirely.
10+
using ODEInterface
11+
712
include("reexports.jl")
813

914
run_qa(
@@ -14,4 +19,45 @@ run_qa(
1419
),
1520
reexports_allow = ROOT_REEXPORTS,
1621
api_docs_kwargs = (; ignore = ROOT_REEXPORTS, rendered_ignore = ROOT_REEXPORTS),
22+
ei_kwargs = (;
23+
all_qualified_accesses_are_public = (;
24+
ignore = (
25+
# ForwardDiff declares no `public` names at all (it exports only
26+
# `DiffResults`), so its documented in-place AD entry point has no
27+
# public spelling to switch to.
28+
:jacobian!,
29+
),
30+
),
31+
all_explicit_imports_are_public = (;
32+
ignore = (
33+
# ODEInterface has no `export` statements and no `public`
34+
# declarations anywhere; its entire documented API -- solver
35+
# entry points, option keys, and solution accessors -- is
36+
# non-public by ExplicitImports' definition. There is no public
37+
# spelling for any of these names.
38+
:Bvpm2,
39+
:OPT_ADDGRIDPOINTS,
40+
:OPT_BVPCLASS,
41+
:OPT_COLLOCATIONPTS,
42+
:OPT_DIAGNOSTICOUTPUT,
43+
:OPT_ERRORCONTROL,
44+
:OPT_MAXSTEPS,
45+
:OPT_MAXSUBINTERVALS,
46+
:OPT_METHODCHOICE,
47+
:OPT_RHS_CALLMODE,
48+
:OPT_RTOL,
49+
:OPT_SINGULARTERM,
50+
:OPT_SOLMETHOD,
51+
:OptionsODE,
52+
:RHS_CALL_INSITU,
53+
:bvpm2_destroy,
54+
:bvpm2_get_x,
55+
:bvpm2_init,
56+
:bvpm2_solve,
57+
:bvpsol,
58+
:colnew,
59+
:evalSolution,
60+
),
61+
),
62+
),
1763
)

0 commit comments

Comments
 (0)