Skip to content

Commit c470003

Browse files
Merge pull request #260 from SciML/measurements
Handle measurement units
2 parents b8f5f47 + f1cb9f5 commit c470003

File tree

5 files changed

+27
-1
lines changed

5 files changed

+27
-1
lines changed

Project.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,15 @@ Zygote = "0.6.56"
3232
julia = "1.6"
3333

3434
[extensions]
35+
RecursiveArrayToolsMeasurementsExt = "Measurements"
3536
RecursiveArrayToolsTrackerExt = "Tracker"
3637
RecursiveArrayToolsZygoteExt = "Zygote"
3738

3839
[extras]
3940
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
4041
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
4142
LabelledArrays = "2ee39098-c373-598a-b85f-a56591580800"
43+
Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7"
4244
NLsolve = "2774e3e8-f4cf-5e23-947b-6d7e65073b56"
4345
OrdinaryDiffEq = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed"
4446
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
@@ -52,8 +54,9 @@ Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
5254
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
5355

5456
[targets]
55-
test = ["SafeTestsets", "Aqua", "ForwardDiff", "LabelledArrays", "NLsolve", "OrdinaryDiffEq", "Pkg", "Test", "Unitful", "Random", "StaticArrays", "StructArrays", "Zygote"]
57+
test = ["SafeTestsets", "Aqua", "ForwardDiff", "LabelledArrays", "NLsolve", "OrdinaryDiffEq", "Pkg", "Test", "Unitful", "Random", "StaticArrays", "StructArrays", "Zygote", "Measurements"]
5658

5759
[weakdeps]
60+
Measurements = "eff96d63-e80a-5855-80a2-b1b0885c5ab7"
5861
Tracker = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c"
5962
Zygote = "e88e6eb3-aa80-5325-afca-941959d7151f"
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
module RecursiveArrayToolsMeasurementsExt
2+
3+
import RecursiveArrayTools
4+
isdefined(Base, :get_extension) ? (import Measurements) : (import ..Measurements)
5+
6+
function RecursiveArrayTools.recursive_unitless_bottom_eltype(a::Type{
7+
<:Measurements.Measurement
8+
})
9+
typeof(oneunit(a))
10+
end
11+
12+
function RecursiveArrayTools.recursive_unitless_eltype(a::Type{<:Measurements.Measurement})
13+
typeof(oneunit(a))
14+
end
15+
16+
end

src/RecursiveArrayTools.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ Base.convert(T::Type{<:GPUArraysCore.AbstractGPUArray}, VA::AbstractVectorOfArra
3131
import Requires
3232
@static if !isdefined(Base, :get_extension)
3333
function __init__()
34+
Requires.@require Measurements="eff96d63-e80a-5855-80a2-b1b0885c5ab7" begin include("../ext/RecursiveArrayToolsMeasurementsExt.jl") end
3435
Requires.@require Tracker="9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" begin include("../ext/RecursiveArrayToolsTrackerExt.jl") end
3536
Requires.@require Zygote="e88e6eb3-aa80-5325-afca-941959d7151f" begin include("../ext/RecursiveArrayToolsZygoteExt.jl") end
3637
end

test/measurements.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
using RecursiveArrayTools, Measurements, Test
2+
3+
x = 1.0 ± 0.0
4+
@test recursive_unitless_bottom_eltype(x) === Measurements.Measurement{Float64}
5+
@test recursive_unitless_eltype(x) === Measurements.Measurement{Float64}

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ end
3333
@time @safetestset "Linear Algebra Tests" begin include("linalg.jl") end
3434
@time @safetestset "Upstream Tests" begin include("upstream.jl") end
3535
@time @safetestset "Adjoint Tests" begin include("adjoints.jl") end
36+
@time @safetestset "Measurement Tests" begin include("measurements.jl") end
3637
end
3738

3839
if !is_APPVEYOR && GROUP == "Downstream"

0 commit comments

Comments
 (0)