From b5c521ec426da36d4d800b9d4eb9fa2630f26b54 Mon Sep 17 00:00:00 2001 From: schillic Date: Wed, 18 Sep 2024 22:05:48 +0200 Subject: [PATCH] use outsourced required macro from ReachabilityBase --- Project.toml | 2 +- docs/src/lib/internals.md | 6 ----- src/Algorithms/CARLIN/post.jl | 2 +- src/Algorithms/FLOWSTAR/post.jl | 6 ++--- src/Continuous/solve.jl | 2 +- src/Hybrid/solve.jl | 2 +- src/Initialization/init.jl | 36 +--------------------------- src/Initialization/init_Symbolics.jl | 2 +- 8 files changed, 9 insertions(+), 49 deletions(-) diff --git a/Project.toml b/Project.toml index 53315e0bcd..1060830337 100644 --- a/Project.toml +++ b/Project.toml @@ -36,7 +36,7 @@ LinearAlgebra = "<0.0.1, 1.6" MathematicalSystems = "0.11 - 0.13" Parameters = "0.10 - 0.12" Random = "<0.0.1, 1.6" -ReachabilityBase = "0.1 - 0.3" +ReachabilityBase = "0.3.1" RecipesBase = "0.6 - 0.8, 1" Reexport = "0.2, 1" Requires = "0.5, 1" diff --git a/docs/src/lib/internals.md b/docs/src/lib/internals.md index 327aa9c092..08e7c45763 100644 --- a/docs/src/lib/internals.md +++ b/docs/src/lib/internals.md @@ -13,12 +13,6 @@ Pages = ["internals.md"] Depth = 3 ``` -## Function annotations - -```@docs -@requires -``` - ## Algorithm defaults ```@docs diff --git a/src/Algorithms/CARLIN/post.jl b/src/Algorithms/CARLIN/post.jl index 94b9c8e65f..33876a0836 100644 --- a/src/Algorithms/CARLIN/post.jl +++ b/src/Algorithms/CARLIN/post.jl @@ -27,7 +27,7 @@ canonical_form(s::CanonicalQuadraticForm) = s.F1, s.F2 # TODO generalize to AbstractContinuousSystem using vector_field function canonical_form(s::BlackBoxContinuousSystem) - @requires Symbolics + @required Symbolics return f = s.f # differentiate end diff --git a/src/Algorithms/FLOWSTAR/post.jl b/src/Algorithms/FLOWSTAR/post.jl index 17e2096a62..d7b610aff5 100644 --- a/src/Algorithms/FLOWSTAR/post.jl +++ b/src/Algorithms/FLOWSTAR/post.jl @@ -11,7 +11,7 @@ function FLOWSTAR(; δ::Union{Float64,Nothing}=nothing, precision=53, verbose=false, scheme=NonPolyODEScheme()) - @requires Flowstar + @required Flowstar step_size = !isnothing(δ) ? δ : (!isnothing(step_size) ? step_size : @@ -28,7 +28,7 @@ end function post(alg::FLOWSTAR{ST,OT,PT,IT}, ivp::IVP{<:AbstractContinuousSystem}, timespan; Δt0::TimeInterval=zeroI, kwargs...) where {ST,OT,PT,IT} - @requires Flowstar + @required Flowstar @unpack step_size, order, remainder_estimation, precondition, cutoff, precision, verbose, scheme = alg @@ -45,7 +45,7 @@ function post(alg::FLOWSTAR{ST,OT,PT,IT}, ivp::IVP{<:AbstractContinuousSystem}, s, n = system(ivp), statedim(ivp) # vector field in string form - @requires Symbolics + @required Symbolics fstr = convert(Vector{Tuple{String,String}}, s) # initial set diff --git a/src/Continuous/solve.jl b/src/Continuous/solve.jl index 1d7ed5f0ea..692fda7439 100644 --- a/src/Continuous/solve.jl +++ b/src/Continuous/solve.jl @@ -67,7 +67,7 @@ function solve(ivp::IVP{<:AbstractContinuousSystem_}, args...; kwargs...) got_ensemble = get(kwargs, :ensemble, false) dict = Dict{Symbol,Any}(:ensemble => nothing) if got_ensemble - @requires OrdinaryDiffEq + @required OrdinaryDiffEq ensemble_sol = _solve_ensemble(ivp, args...; kwargs...) dict[:ensemble] = ensemble_sol end diff --git a/src/Hybrid/solve.jl b/src/Hybrid/solve.jl index bac91ce472..0fa141128b 100644 --- a/src/Hybrid/solve.jl +++ b/src/Hybrid/solve.jl @@ -170,7 +170,7 @@ function solve(ivp::IVP{<:AbstractHybridSystem}, args...; got_ensemble = get(kwargs, :ensemble, false) if got_ensemble - @requires OrdinaryDiffEq + @required OrdinaryDiffEq ensemble_sol = _solve_ensemble(ivp, args...; kwargs...) dict = Dict{Symbol,Any}(:ensemble => ensemble_sol) sol = ReachSolution(HFout, cpost, dict) diff --git a/src/Initialization/init.jl b/src/Initialization/init.jl index 7c8f0c9c9d..df4ff08c96 100644 --- a/src/Initialization/init.jl +++ b/src/Initialization/init.jl @@ -30,6 +30,7 @@ using LazySets: Interval, radius, sample, ∅, dim, scale, scale!, ⊂, matrix using ReachabilityBase.Arrays: projection_matrix, SingleEntryVector, isinvertible, vector_type using ReachabilityBase.Comparison: _leq, _geq +using ReachabilityBase.Require: @required using LazySets.Approximations: AbstractDirections using LazySets: @commutative, AbstractReductionMethod, linear_map! @@ -130,38 +131,3 @@ function __init__() #@require ModelingToolkit = "961ee093-0014-501f-94e3-6117800e7a78" include("init_ModelingToolkit.jl") @require Symbolics = "0c5d862f-8b57-4792-8d23-62f2024744c7" include("init_Symbolics.jl") end - -# =========================== -# Utility macros -# =========================== - -""" - @requires(module_name) - -Convenience macro to annotate that a package is required to use a certain function. - -### Input - -- `module_name` -- name of the required package - -### Output - -The macro expands to an assertion that checks whether the module `module_name` is -known in the calling scope. - -### Notes - -Usage: - -```julia -function foo(...) - @require MyPackage - ... # functionality that requires MyPackage to be loaded -end -``` -""" -macro requires(module_name) - m = Meta.quot(Symbol(module_name)) - return esc(:(@assert isdefined(@__MODULE__, $m) "package `$($m)` is required " * - "for this function; do `using $($m)` and try again")) -end diff --git a/src/Initialization/init_Symbolics.jl b/src/Initialization/init_Symbolics.jl index 2b7ceb6d2f..9eb7c0484d 100644 --- a/src/Initialization/init_Symbolics.jl +++ b/src/Initialization/init_Symbolics.jl @@ -5,7 +5,7 @@ include("../Continuous/symbolics.jl") function Base.convert(::Type{Vector{Tuple{String,String}}}, s::BlackBoxContinuousSystem; params=[], t=nothing) - @requires Symbolics + @required Symbolics n = statedim(s) f! = MathematicalSystems.mapping(s)