Commit f5a9eb1
Uniformize monorepo structure to OrdinaryDiffEq canonical style (#611)
* Uniformize monorepo structure to OrdinaryDiffEq canonical style
Align RecursiveArrayTools.jl with the OrdinaryDiffEq.jl canonical monorepo
layout:
- Add [sources] to each sublibrary pointing at the umbrella root via ../..
(true leaf->root dependency direction; the 3 sublibs depend on the
registered root today). No cyclic root->leaf [sources] are added because
the root does not depend on its sublibs.
- Remove the redundant double-dispatch of the sublibraries: the root
Tests.yml no longer GROUP-dispatches RaggedArrays/ArrayPartitionAnyAll/
ShorthandConstructors, and the root test/runtests.jl no longer activates
and Pkg.tests them. Sublibraries are now covered exclusively by
SublibraryCI's per-project model.
- Rewrite root test/runtests.jl as a _detect_sublibrary_group dispatcher
mirroring OrdinaryDiffEq: a GROUP naming lib/<X> activates that sublib,
develops its [sources] path deps on Julia < 1.11, sets the sub group env,
and Pkg.tests it; otherwise the root runs its own @safetestset groups.
- SublibraryCI.yml: thread group-env-name RECURSIVEARRAYTOOLS_TEST_GROUP and
check-bounds auto.
- DowngradeSublibraries.yml: add group-env-name/group-env-value Core, expand
the skip list to the siblings (root + 3 sublibs) plus stdlibs; auto-discovers
lib/* (sublibrary-downgrade.yml@v1 has no allow-reresolve input).
- Each sublibrary test/runtests.jl now reads
get(ENV, "RECURSIVEARRAYTOOLS_TEST_GROUP", "Core") and gates its tests on
the Core group.
- Add test/test_groups.toml to each sublibrary declaring only [Core] on
[lts, 1.11, 1, pre], since none of them have QA-group tests (the default
expansion would otherwise emit an unsupported QA group on [1]).
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Use canonical Title-case All test-group name in sublib gates
Match the SciML/OrdinaryDiffEq.jl convention: the catch-all test group
is canonical Title-case All, not all-caps ALL. The sublib runtests.jl
gates compared TEST_GROUP against "ALL" while the default and the
test_groups.toml key are already canonical ("Core"). Align the gate
string casing so all group-name strings are consistent.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: canonicalize TagBot, .gitignore, and NoPre group casing
- TagBot.yml: adopt canonical OrdinaryDiffEq structure — top-level
permissions block, workflow_dispatch.inputs.lookback default "3",
named root TagBot job, and a TagBot-Subpackages matrix
(fail-fast: false) over the three registered sublibraries, each
invoking TagBot@v1 with subdir: lib/<package>.
- .gitignore: complete to canonical set (docs/build, LocalPreferences.toml,
*.jl.*.mem, *.DS_Store, profile.pb.gz, .*.swp, .claude/, etc.).
- Casing: rename the special test group "nopre" -> "NoPre" on both
sides of the workflow<->runtests contract (Tests.yml matrix.group +
exclude, and runtests.jl GROUP comparison) so it is canonical
Title-case and case-consistent.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* docs/ci: canonical sublib README headers + declare ShorthandConstructors test dep
- Sublibrary READMEs: prepend the canonical OrdinaryDiffEq-style badge
block (Zulip, Global Docs -> RecursiveArrayTools, ColPrac, SciML Code
Style) and the "<Name>.jl is a component of the RecursiveArrayTools.jl
monorepo. <role>. While completely independent and usable on its own,
users wanting the full functionality should use RecursiveArrayTools.jl."
wording, substituting names. Existing content preserved below.
- Project.toml: declare RecursiveArrayToolsShorthandConstructors as a
proper test dependency — added to [extras], [targets].test, [compat]
("1"), and a [sources] path entry so the Core test group resolves it
from the in-repo lib/ on Julia >= 1.11 (runtests.jl Pkg.develop
fallback still covers Julia < 1.11 where [sources] is ignored).
Verified: project resolves and `VA[...]`/`AP[...]` from the sublibrary
load in a Core-test-like environment.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test: isolate root QA (Aqua) into canonical test/qa/ sub-environment
Move the inline Aqua quality-assurance test out of the main test
environment and into a dedicated test/qa/ project, matching the
canonical OrdinaryDiffEq sublib layout (lib/*/test/qa/).
- Add test/qa/Project.toml: Aqua + RecursiveArrayTools (via [sources])
+ Pkg + Test, with [compat] for each dep and julia.
- Move test/qa.jl -> test/qa/qa.jl (Aqua testset + the existing
downstream-package manifest sentinel; behavior unchanged).
- runtests.jl: add activate_qa_env() and, in the Core/All branch,
activate the qa env, run the QA safetestset, then restore the main
test project so the remaining Core functional tests keep their full
dependency set.
- Remove Aqua from the main Project.toml [extras], [targets].test, and
[compat]; it now lives only in the qa env.
JET (NoPre group) is already isolated in test/nopre/ and is left as-is.
The three lib/* sublibraries run no QA today and are left untouched.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix: correct root test env — drop ShorthandConstructors [sources] and downstream-only NLsolve
The branch had added RecursiveArrayToolsShorthandConstructors to the umbrella
root [sources]. It is a test-only dependency (the VA[]/AP[] shorthand tests),
not a dependency of the RecursiveArrayTools package itself, so sourcing it at
the package level makes Pkg.test add it to the Core test env as a declared
package dependency. Aqua.test_stale_deps then flags it as a stale dep of
RecursiveArrayTools (the module never imports it), failing the QA group.
master never had this [sources] entry: its runtests.jl Pkg.develops the
sublibrary into the test env directly, which the current runtests.jl still
does. Removing the [sources] entry restores master's green QA behavior
(verified: Core+QA Pkg.test now passes — Quality Assurance 9 pass / 1 broken
(expected ambiguities @test_broken) / 0 fail; previously 1 fail).
Also drop NLsolve from the main [extras]/[targets].test/[compat]: it is used
only by test/downstream/odesolve.jl and is already declared in
test/downstream/Project.toml, so it does not belong in the base test env.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: fold bespoke GPU.yml into CI.yml [GPU] group; canonical group Project.tomls
Replace the root Tests.yml + bespoke GPU.yml with a single canonical CI.yml
(matching the OrdinaryDiffEq umbrella layout):
- CI.yml carries the version matrix for the root base groups
(Core/SymbolicIndexingInterface/Downstream/NoPre on [lts, 1, pre], NoPre
excluded on pre) via SciML/.github tests.yml@v1.
- The GPU tests become a dep-adding group on the self-hosted GPU runner: a
dedicated CI.yml job passes group=GPU and
runner=[self-hosted, Linux, X64, gpu] to tests.yml@v1 (which sets
GROUP=GPU; runtests.jl then activates test/gpu and runs the GPU
safetestsets). This reproduces the former GPU.yml (same runner labels,
60-min timeout, src,ext coverage) so GPU.yml is deleted.
- Give the dep-adding root group Project.tomls the canonical
[sources] = {path=../..} (+ sibling sublib paths) plus the package and Test
deps so they resolve on Julia >= 1.11 against the PR-branch code:
- test/gpu: add Adapt/ArrayInterface/RecursiveArrayTools/Test/Zygote +
[sources] for the root and RecursiveArrayToolsArrayPartitionAnyAll.
- test/nopre: add RecursiveArrayTools + [sources].
- test/downstream: add Test + [sources] for root and
RecursiveArrayToolsShorthandConstructors.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test: canonicalize test-group structure (standalone QA group, group folders)
Make the root test layout match the OrdinaryDiffEq canonical pattern: every
test lives in exactly one group, each group in its own capitalized test/<Group>/
folder, dep-adding groups have their own Project.toml (excluded from the light
main env), and the version matrix is consistent between CI and test_groups.toml.
- Split QA (Aqua) out of the Core branch into a standalone QA group keyed on
GROUP == "QA" || GROUP == "All", running in its dep-adding test/QA env. Add a
dedicated QA matrix row to CI.yml restricted to [lts, 1] (excluded on pre),
so QA no longer runs inside the functional Core job.
- Normalize sublib test_groups.toml [Core] versions ["lts","1.11","1","pre"] ->
["lts","1","pre"] for all three sublibraries.
- Move the loose root Core test files into test/Core/, including the previously
orphaned partitions_and_static_arrays.jl which was never wired into runtests
and is now part of the Core group. Capitalize the remaining group folders
(downstream->Downstream, gpu->GPU, nopre->NoPre, qa->QA) and route the
SymbolicIndexingInterface and NoPre tests into their own group folders so all
group folder names match their CI GROUP names.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test: exclude standalone QA group from All
QA is its own dep-adding test group (test/QA/Project.toml) and is run as
a separate CI matrix entry, so it should not also fire under the "All"
group. CI never runs "All", and a local "All" run should not pull the QA
tooling into the functional test pass.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* ci: canonical TagBot thin-caller + downgrade-caller cleanup
Replace TagBot.yml with the canonical SciML/.github tagbot.yml@v1 thin
caller, plus a tagbot-subpackages matrix over the registered monorepo
sublibraries (RecursiveArrayToolsArrayPartitionAnyAll,
RecursiveArrayToolsRaggedArrays, RecursiveArrayToolsShorthandConstructors).
Drop hand-maintained skip lists and pinned julia-version floors from the
downgrade callers; the centralized workflow now auto-populates skip
(stdlibs union in-repo sublibs union caller package) and defaults to the
LTS floor.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Chris Rackauckas <accounts@chrisrackauckas.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 94cefea commit f5a9eb1
52 files changed
Lines changed: 1247 additions & 1107 deletions
File tree
- .github/workflows
- lib
- RecursiveArrayToolsArrayPartitionAnyAll
- test
- RecursiveArrayToolsRaggedArrays
- test
- RecursiveArrayToolsShorthandConstructors
- test
- test
- Core
- Downstream
- GPU
- NoPre
- QA
- SymbolicIndexingInterface
- gpu
- nopre
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 24 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
27 | 26 | | |
| 27 | + | |
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
32 | | - | |
33 | | - | |
| 31 | + | |
| 32 | + | |
34 | 33 | | |
35 | | - | |
| 34 | + | |
36 | 35 | | |
| 36 | + | |
37 | 37 | | |
38 | | - | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
39 | 42 | | |
40 | 43 | | |
41 | 44 | | |
42 | 45 | | |
43 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
44 | 61 | | |
45 | 62 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | 23 | | |
25 | | - | |
26 | 24 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
22 | 25 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
| 1 | + | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
| 4 | + | |
6 | 5 | | |
7 | 6 | | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
| 6 | + | |
5 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
53 | | - | |
54 | 53 | | |
55 | 54 | | |
56 | 55 | | |
| |||
62 | 61 | | |
63 | 62 | | |
64 | 63 | | |
65 | | - | |
66 | 64 | | |
67 | 65 | | |
68 | 66 | | |
69 | 67 | | |
70 | 68 | | |
| 69 | + | |
71 | 70 | | |
72 | 71 | | |
73 | 72 | | |
| |||
84 | 83 | | |
85 | 84 | | |
86 | 85 | | |
87 | | - | |
88 | 86 | | |
89 | 87 | | |
90 | 88 | | |
91 | 89 | | |
92 | 90 | | |
93 | 91 | | |
94 | | - | |
95 | 92 | | |
96 | 93 | | |
97 | 94 | | |
| 95 | + | |
98 | 96 | | |
99 | 97 | | |
100 | 98 | | |
| |||
106 | 104 | | |
107 | 105 | | |
108 | 106 | | |
109 | | - | |
| 107 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
8 | 11 | | |
9 | 12 | | |
10 | 13 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
6 | 11 | | |
7 | 12 | | |
8 | 13 | | |
| |||
0 commit comments