diff --git a/Project.toml b/Project.toml index 23f96743..707e5287 100644 --- a/Project.toml +++ b/Project.toml @@ -32,6 +32,7 @@ Zygote = "0.6.56" julia = "1.6" [extensions] +RecursiveArrayToolsMeasurementsExt = "Measurements" RecursiveArrayToolsTrackerExt = "Tracker" RecursiveArrayToolsZygoteExt = "Zygote" @@ -39,6 +40,7 @@ RecursiveArrayToolsZygoteExt = "Zygote" Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595" ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210" LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800" +Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56" OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" @@ -52,8 +54,9 @@ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" [targets] -test = ["SafeTestsets", "Aqua", "ForwardDiff", "LabelledArrays", "NLsolve", "OrdinaryDiffEq", "Pkg", "Test", "Unitful", "Random", "StaticArrays", "StructArrays", "Zygote"] +test = ["SafeTestsets", "Aqua", "ForwardDiff", "LabelledArrays", "NLsolve", "OrdinaryDiffEq", "Pkg", "Test", "Unitful", "Random", "StaticArrays", "StructArrays", "Zygote", "Measurements"] [weakdeps] +Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7" Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f" diff --git a/ext/RecursiveArrayToolsMeasurementsExt.jl b/ext/RecursiveArrayToolsMeasurementsExt.jl new file mode 100644 index 00000000..50eaaa24 --- /dev/null +++ b/ext/RecursiveArrayToolsMeasurementsExt.jl @@ -0,0 +1,16 @@ +module RecursiveArrayToolsMeasurementsExt + +import RecursiveArrayTools +isdefined(Base, :get_extension) ? (import Measurements) : (import ..Measurements) + +function RecursiveArrayTools.recursive_unitless_bottom_eltype(a::Type{ + <:Measurements.Measurement + }) + typeof(oneunit(a)) +end + +function RecursiveArrayTools.recursive_unitless_eltype(a::Type{<:Measurements.Measurement}) + typeof(oneunit(a)) +end + +end diff --git a/src/RecursiveArrayTools.jl b/src/RecursiveArrayTools.jl index fc97b082..51fa3b0a 100644 --- a/src/RecursiveArrayTools.jl +++ b/src/RecursiveArrayTools.jl @@ -31,6 +31,7 @@ Base.convert(T::Type{<:GPUArraysCore.AbstractGPUArray}, VA::AbstractVectorOfArra import Requires @static if !isdefined(Base, :get_extension) function __init__() + Requires.@require Measurements="eff96d63-e80a-5855-80a2-b1b0885c5ab7" begin include("../ext/RecursiveArrayToolsMeasurementsExt.jl") end Requires.@require Tracker="9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" begin include("../ext/RecursiveArrayToolsTrackerExt.jl") end Requires.@require Zygote="e88e6eb3-aa80-5325-afca-941959d7151f" begin include("../ext/RecursiveArrayToolsZygoteExt.jl") end end diff --git a/test/measurements.jl b/test/measurements.jl new file mode 100644 index 00000000..a75ff412 --- /dev/null +++ b/test/measurements.jl @@ -0,0 +1,5 @@ +using RecursiveArrayTools, Measurements, Test + +x = 1.0 ± 0.0 +@test recursive_unitless_bottom_eltype(x) === Measurements.Measurement{Float64} +@test recursive_unitless_eltype(x) === Measurements.Measurement{Float64} diff --git a/test/runtests.jl b/test/runtests.jl index 591ad998..13fd6129 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -33,6 +33,7 @@ end @time @safetestset "Linear Algebra Tests" begin include("linalg.jl") end @time @safetestset "Upstream Tests" begin include("upstream.jl") end @time @safetestset "Adjoint Tests" begin include("adjoints.jl") end + @time @safetestset "Measurement Tests" begin include("measurements.jl") end end if !is_APPVEYOR && GROUP == "Downstream"