Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .codecov.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
comment: false
2 changes: 0 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,9 @@ updates:
- "/lib/CanonicalMoments"
- "/lib/CanonicalMoments/docs"
- "/lib/CanonicalMoments/examples"
- "/lib/CanonicalMoments/test"
- "/lib/DiscreteMeasures"
- "/lib/DiscreteMeasures/docs"
- "/lib/OUQBase"
- "/lib/OUQBase/test"
schedule:
interval: "daily"
groups:
Expand Down
107 changes: 107 additions & 0 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
name: CI
on:
pull_request:
branches:
- main
paths-ignore:
- 'docs/**'
push:
branches:
- main
paths-ignore:
- 'docs/**'
concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
jobs:
test:
permissions:
actions: write
contents: read
runs-on: ubuntu-latest
timeout-minutes: 120
env:
# Pin the depot path so the registry-refresh step and the subsequent
# julia-actions/julia-{buildpkg,runtest} steps all read and write the
# same depot on self-hosted runners (where the runner may otherwise
# inject ~/github-runners/<name>/.julia for some steps but not others,
# causing "expected package X to be registered" failures when General is
# refreshed into ~/.julia but resolve happens against the per-runner
# depot).
JULIA_DEPOT_PATH: ~/.julia
strategy:
fail-fast: false
matrix:
group:
- Core
version:
- 'lts'
- '1'
- 'pre'
steps:
- uses: actions/checkout@v6
- uses: julia-actions/setup-julia@v3
with:
version: ${{ matrix.version }}
# Split cache restore/save by event to work around recurring GitHub
# Actions cache upload auth failures (Azure SAS "Server failed to
# authenticate the request"). PRs only restore from a recent main push
# cache; only main push runs write the cache. continue-on-error keeps a
# transient cache backend hiccup from flunking an otherwise green job.
- name: Cache Julia depot (push only — read+write)
if: github.event_name == 'push'
uses: julia-actions/cache@v3
continue-on-error: true
with:
cache-compiled: 'false'
- name: Cache Julia depot (PR — restore only)
if: github.event_name != 'push'
uses: actions/cache/restore@v5
continue-on-error: true
with:
path: |
~/.julia/artifacts
~/.julia/packages
~/.julia/registries
~/.julia/scratchspaces
~/.julia/logs
# Primary key intentionally won't match (run_id is unique); the
# restore-keys prefix matches julia-actions/cache's key scheme
# `${cache-name};os=${runner.os};${matrix...}` so we pull the most
# recent cache from a main push for this same matrix cell.
key: julia-cache;workflow=${{ github.workflow }};job=${{ github.job }};os=${{ runner.os }};group=${{ matrix.group }};version=${{ matrix.version }};run_id=${{ github.run_id }};run_attempt=${{ github.run_attempt }}
restore-keys: |
julia-cache;workflow=${{ github.workflow }};job=${{ github.job }};os=${{ runner.os }};group=${{ matrix.group }};version=${{ matrix.version }};
- name: Develop local path deps (Julia < 1.11)
shell: julia --color=yes --project=. {0}
run: |
using Pkg
if VERSION < v"1.11.0-DEV.0"
toml = Pkg.TOML.parsefile("Project.toml")
if haskey(toml, "sources")
specs = Pkg.PackageSpec[]
for (dep, spec) in toml["sources"]
if spec isa Dict && haskey(spec, "path") && isdir(spec["path"])
@info "Developing" dep spec["path"]
push!(specs, Pkg.PackageSpec(path=spec["path"]))
end
end
isempty(specs) || Pkg.develop(specs)
end
end
- uses: julia-actions/julia-buildpkg@v1
- uses: julia-actions/julia-runtest@v1
with:
coverage: false
check_bounds: auto
env:
GROUP: ${{ matrix.group }}
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
fail_ci_if_error: false
disable_safe_directory: true
17 changes: 17 additions & 0 deletions .github/workflows/DocPreviewCleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: Doc Preview Cleanup

on:
pull_request:
types: [closed]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: write

jobs:
doc-preview-cleanup:
uses: "SciML/.github/.github/workflows/docs-preview-cleanup.yml@v1"
secrets: "inherit"
12 changes: 12 additions & 0 deletions .github/workflows/Documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
name: Documentation
on:
push:
branches:
- main
tags: '*'
pull_request:
jobs:
build-and-deploy-docs:
name: "Documentation"
uses: "SciML/.github/.github/workflows/documentation.yml@v1"
secrets: "inherit"
24 changes: 24 additions & 0 deletions .github/workflows/Downgrade.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Downgrade
on:
pull_request:
branches:
- main
paths-ignore:
- 'docs/**'
push:
branches:
- main
paths-ignore:
- 'docs/**'
concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
jobs:
test:
name: "Downgrade"
uses: "SciML/.github/.github/workflows/downgrade.yml@v1"
with:
group: "Core"
secrets: "inherit"
5 changes: 3 additions & 2 deletions .github/workflows/DowngradeSublibraries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,6 @@ jobs:
uses: "SciML/.github/.github/workflows/sublibrary-downgrade.yml@v1"
secrets: "inherit"
with:
julia-version: "1.10"
skip: "Pkg,TOML"
group-env-name: "OPTIMALUNCERTAINTYQUANTIFICATION_TEST_GROUP"
group-env-value: "Core"
# Every lib/* sublibrary is downgrade-tested (projects auto-discovered, no exclusions).
62 changes: 62 additions & 0 deletions .github/workflows/Downstream.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
name: IntegrationTest
on:
push:
branches: [main]
tags: [v*]
pull_request:
concurrency:
# Skip intermediate builds: always.
# Cancel intermediate builds: only if it is a pull request build.
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}
jobs:
test:
name: ${{ matrix.package.repo }}/${{ matrix.package.group }}/${{ matrix.julia-version }}
runs-on: ${{ matrix.os }}
env:
GROUP: ${{ matrix.package.group }}
strategy:
fail-fast: false
matrix:
julia-version: ['1.10']
os: [ubuntu-latest]
# OptimalUncertaintyQuantification.jl currently has no registered
# downstream consumers. The matrix is intentionally empty so this job
# is a no-op; add `{user: ..., repo: ..., group: ...}` entries here as
# downstream packages adopt it. An empty matrix skips the job cleanly
# rather than failing.
package: ${{ fromJSON('[]') }}

steps:
- uses: actions/checkout@v6
- uses: julia-actions/setup-julia@v3
with:
version: ${{ matrix.julia-version }}
arch: x64
- name: Clone Downstream
uses: actions/checkout@v6
with:
repository: ${{ matrix.package.user }}/${{ matrix.package.repo }}
path: downstream
- name: Load this and run the downstream tests
shell: julia --color=yes --project=downstream {0}
run: |
using Pkg
try
Pkg.develop(map(path ->Pkg.PackageSpec.(;path="lib/$(path)"), readdir("./lib")));
Pkg.test(coverage=true) # resolver may fail with test time deps
catch err
err isa Pkg.Resolve.ResolverError || rethrow()
# If we can't resolve that means this is incompatible by SemVer and this is fine
# It means we marked this as a breaking change, so we don't need to worry about
# mistakenly introducing a breaking change, as we have intentionally made one
@info "Not compatible with this release. No problem." exception=err
exit(0) # Exit immediately, as a success
end
- uses: julia-actions/julia-processcoverage@v1
- uses: codecov/codecov-action@v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info
fail_ci_if_error: false
disable_safe_directory: true
3 changes: 3 additions & 0 deletions .github/workflows/SublibraryCI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,7 @@ concurrency:
jobs:
sublibraries:
uses: "SciML/.github/.github/workflows/sublibrary-project-tests.yml@v1"
with:
group-env-name: OPTIMALUNCERTAINTYQUANTIFICATION_TEST_GROUP
check-bounds: auto
secrets: "inherit"
43 changes: 5 additions & 38 deletions .github/workflows/TagBot.yml
Original file line number Diff line number Diff line change
@@ -1,42 +1,9 @@
name: TagBot
name: "TagBot"
on:
issue_comment:
types:
- created
types: [created]
workflow_dispatch:
inputs:
lookback:
default: "3"

permissions:
actions: read
checks: read
contents: write
deployments: read
issues: read
discussions: read
packages: read
pages: read
pull-requests: read
repository-projects: read
security-events: read
statuses: read

jobs:
TagBot-Subpackages:
if: github.event_name == 'workflow_dispatch' || github.actor == 'JuliaTagBot'
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
package:
- CanonicalMoments
- DiscreteMeasures
- OUQBase
steps:
- name: Tag ${{ matrix.package }}
uses: JuliaRegistries/TagBot@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
ssh: ${{ secrets.DOCUMENTER_KEY }}
subdir: "lib/${{ matrix.package }}"
tagbot:
uses: "SciML/.github/.github/workflows/tagbot.yml@v1"
secrets: "inherit"
14 changes: 12 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,14 @@
*.jl.cov
*.jl.*.cov
*.jl.mem
*.jl.*.mem
Manifest.toml
.vscode
*/Manifest.toml
*.DS_Store
*/Manifest.toml
.vscode
profile.pb.gz
.*.swp
LocalPreferences.toml

docs/build
.claude/
4 changes: 4 additions & 0 deletions _typos.toml → .typos.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
[default.extend-words]
# Abbreviation for "Theorem" used in citation references (e.g. "Dette Thm 1.3.2").
Thm = "Thm"

[files]
# Machine-generated Pluto.jl HTML exports; the only hits are author surnames
# (e.g. "Fons van der Plas") in embedded boilerplate, not editable prose.
Expand Down
File renamed without changes.
37 changes: 31 additions & 6 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
[workspace]
projects = [
"lib/CanonicalMoments",
"lib/DiscreteMeasures",
"lib/OUQBase"
]
name = "OptimalUncertaintyQuantification"
uuid = "91ab1271-1799-4997-981e-07ad84422b0d"
authors = ["Avinash Subramanian (JuliaHub), Benjamin Chung (JuliaHub), Adam Gerlach (AFRL)"]
version = "0.1.0"

[deps]
CanonicalMoments = "58d2c334-1a3c-4862-bb37-9012b9e58a38"
DiscreteMeasures = "7766d772-2108-41ee-a4bd-11c51440a39b"
OUQBase = "01930cae-99d2-7439-8f4f-ace2ece9f1b9"
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"

[sources]
CanonicalMoments = { path = "lib/CanonicalMoments" }
DiscreteMeasures = { path = "lib/DiscreteMeasures" }
OUQBase = { path = "lib/OUQBase" }

[compat]
julia = "1.10"
CanonicalMoments = "0.1"
DiscreteMeasures = "0.1"
OUQBase = "0.1"
Reexport = "1.2.2"
SafeTestsets = "0.1"

[extras]
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
SafeTestsets = "1bc83da4-3b8d-516f-aca4-4fe02f6d838f"
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"

[targets]
test = ["Pkg", "SafeTestsets", "Test"]
19 changes: 19 additions & 0 deletions docs/Project.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[deps]
CanonicalMoments = "58d2c334-1a3c-4862-bb37-9012b9e58a38"
DiscreteMeasures = "7766d772-2108-41ee-a4bd-11c51440a39b"
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
OUQBase = "01930cae-99d2-7439-8f4f-ace2ece9f1b9"
OptimalUncertaintyQuantification = "91ab1271-1799-4997-981e-07ad84422b0d"

[sources]
CanonicalMoments = {path = "../lib/CanonicalMoments"}
DiscreteMeasures = {path = "../lib/DiscreteMeasures"}
OUQBase = {path = "../lib/OUQBase"}
OptimalUncertaintyQuantification = {path = ".."}

[compat]
CanonicalMoments = "0.1"
DiscreteMeasures = "0.1"
Documenter = "1"
OUQBase = "0.1"
OptimalUncertaintyQuantification = "0.1"
Loading
Loading