Skip to content

Commit 2a34896

Browse files
authored
Merge pull request #62 from SymbolicML/rename-expand-units
Deprecate `expand_units` -> `uexpand`
2 parents bfc8efb + bebeaba commit 2a34896

File tree

6 files changed

+31
-23
lines changed

6 files changed

+31
-23
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,10 @@ julia> q^2
187187
```
188188

189189
You can convert to regular SI base units with
190-
`expand_units`:
190+
`uexpand`:
191191

192192
```julia
193-
julia> expand_units(q^2)
193+
julia> uexpand(q^2)
194194
1.0e6 kg² s⁻⁴
195195
```
196196

@@ -203,7 +203,7 @@ julia> x = us"Constants.c * Hz"
203203
julia> x^2
204204
1.0 Hz² c²
205205

206-
julia> expand_units(x^2)
206+
julia> uexpand(x^2)
207207
8.987551787368176e16 m² s⁻⁴
208208
```
209209

docs/src/symbolic_units.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,10 @@ units are `sym_uparse` and `us_str`:
1414
sym_uparse
1515
```
1616

17-
To convert a quantity to its regular base SI units, use `expand_units`:
17+
To convert a quantity to its regular base SI units, use `uexpand`:
1818

1919
```@docs
20-
expand_units
20+
uexpand
2121
```
2222

2323
To convert a quantity in regular base SI units to corresponding symbolic units, use `uconvert`:

src/DynamicQuantities.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export AbstractQuantity, AbstractDimensions
55
export Quantity, Dimensions, SymbolicDimensions, QuantityArray, DimensionError
66
export ustrip, dimension
77
export ulength, umass, utime, ucurrent, utemperature, uluminosity, uamount
8-
export uparse, @u_str, sym_uparse, @us_str, expand_units, uconvert
8+
export uparse, @u_str, sym_uparse, @us_str, uexpand, uconvert
99

1010
include("fixed_rational.jl")
1111
include("types.jl")
@@ -17,6 +17,9 @@ include("constants.jl")
1717
include("uparse.jl")
1818
include("symbolic_dimensions.jl")
1919

20+
include("deprecated.jl")
21+
export expand_units
22+
2023
import PackageExtensionCompat: @require_extensions
2124
import .Units
2225
import .Constants

src/deprecated.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Base.@deprecate expand_units(q) uexpand(q)

src/symbolic_dimensions.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ are so many unit symbols).
3232
3333
You can convert a quantity using `SymbolicDimensions` as its dimensions
3434
to one which uses `Dimensions` as its dimensions (i.e., base SI units)
35-
`expand_units`.
35+
`uexpand`.
3636
"""
3737
struct SymbolicDimensions{R} <: AbstractDimensions{R}
3838
nzdims::Vector{INDEX_TYPE}
@@ -94,37 +94,37 @@ function Base.convert(::Type{Quantity{T,D}}, q::Quantity{<:Any,<:SymbolicDimensi
9494
end
9595

9696
"""
97-
expand_units(q::Quantity{<:Any,<:SymbolicDimensions})
97+
uexpand(q::Quantity{<:Any,<:SymbolicDimensions})
9898
9999
Expand the symbolic units in a quantity to their base SI form.
100100
In other words, this converts a `Quantity` with `SymbolicDimensions`
101101
to one with `Dimensions`. The opposite of this function is `uconvert`,
102102
for converting to specific symbolic units, or `convert(Quantity{<:Any,<:SymbolicDimensions}, q)`,
103103
for assuming SI units as the output symbols.
104104
"""
105-
function expand_units(q::Q) where {T,R,D<:SymbolicDimensions{R},Q<:AbstractQuantity{T,D}}
105+
function uexpand(q::Q) where {T,R,D<:SymbolicDimensions{R},Q<:AbstractQuantity{T,D}}
106106
return convert(constructor_of(Q){T,Dimensions{R}}, q)
107107
end
108-
expand_units(q::QuantityArray) = expand_units.(q)
108+
uexpand(q::QuantityArray) = uexpand.(q)
109109
# TODO: Make the array-based one more efficient
110110

111111
"""
112112
uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::AbstractQuantity{<:Any, <:Dimensions})
113113
114114
Convert a quantity `q` with base SI units to the symbolic units of `qout`, for `q` and `qout` with compatible units.
115-
Mathematically, the result has value `q / expand_units(qout)` and units `dimension(qout)`.
115+
Mathematically, the result has value `q / uexpand(qout)` and units `dimension(qout)`.
116116
"""
117117
function uconvert(qout::AbstractQuantity{<:Any, <:SymbolicDimensions}, q::AbstractQuantity{<:Any, <:Dimensions})
118118
@assert isone(ustrip(qout)) "You passed a quantity with a non-unit value to uconvert."
119-
qout_expanded = expand_units(qout)
119+
qout_expanded = uexpand(qout)
120120
dimension(q) == dimension(qout_expanded) || throw(DimensionError(q, qout_expanded))
121121
new_val = ustrip(q) / ustrip(qout_expanded)
122122
new_dim = dimension(qout)
123123
return new_quantity(typeof(q), new_val, new_dim)
124124
end
125125
function uconvert(qout::AbstractQuantity{<:Any,<:SymbolicDimensions}, q::QuantityArray{<:Any,<:Any,<:Dimensions})
126126
@assert isone(ustrip(qout)) "You passed a quantity with a non-unit value to uconvert."
127-
qout_expanded = expand_units(qout)
127+
qout_expanded = uexpand(qout)
128128
dimension(q) == dimension(qout_expanded) || throw(DimensionError(q, qout_expanded))
129129
new_array = ustrip(q) ./ ustrip(qout_expanded)
130130
new_dim = dimension(qout)

test/unittests.jl

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -545,19 +545,19 @@ end
545545
@test q == 1.5 * us"km" / us"s"
546546
@test typeof(q) <: Quantity{Float64,<:SymbolicDimensions}
547547
@test string(dimension(q)) == "s⁻¹ km"
548-
@test expand_units(q) == 1.5u"km/s"
548+
@test uexpand(q) == 1.5u"km/s"
549549
@test string(dimension(us"Constants.au^1.5")) == "au³ᐟ²"
550-
@test string(dimension(expand_units(us"Constants.au^1.5"))) == "m³ᐟ²"
551-
@test expand_units(2.3us"Constants.au^1.5") 2.3u"Constants.au^1.5"
550+
@test string(dimension(uexpand(us"Constants.au^1.5"))) == "m³ᐟ²"
551+
@test uexpand(2.3us"Constants.au^1.5") 2.3u"Constants.au^1.5"
552552
@test iszero(dimension(us"1.0")) == true
553-
@test expand_units(inv(us"Constants.au")) 1/u"Constants.au"
553+
@test uexpand(inv(us"Constants.au")) 1/u"Constants.au"
554554
@test dimension(inv(us"s") * us"km") == dimension(us"km/s")
555555
@test dimension(inv(us"s") * us"m") != dimension(us"km/s")
556-
@test dimension(expand_units(inv(us"s") * us"m")) == dimension(expand_units(us"km/s"))
556+
@test dimension(uexpand(inv(us"s") * us"m")) == dimension(uexpand(us"km/s"))
557557

558558
f2(i::Int) = us"s"^i
559559
@inferred f2(5)
560-
@test expand_units(f2(5)) == u"s"^5
560+
@test uexpand(f2(5)) == u"s"^5
561561

562562
@test_throws ErrorException sym_uparse("'c'")
563563

@@ -567,7 +567,7 @@ end
567567
@test dimension(us"h")[:h] == 1
568568

569569
@test us"Constants.h" != us"h"
570-
@test expand_units(us"Constants.h") == u"Constants.h"
570+
@test uexpand(us"Constants.h") == u"Constants.h"
571571

572572
# Actually expands to:
573573
@test dimension(us"Constants.h")[:m] == 2
@@ -589,6 +589,10 @@ end
589589
sym5 = dimension(us"km/s")
590590
VERSION >= v"1.8" &&
591591
@test_throws "rad is not available as a symbol" sym5.rad
592+
593+
# Test deprecated method
594+
q = 1.5us"km/s"
595+
@test expand_units(q) == uexpand(q)
592596
end
593597

594598
@testset "uconvert" begin
@@ -601,7 +605,7 @@ end
601605
@test dimension(qs)[:kg] == 0
602606
@test dimension(qs)[:g] == 0
603607
@test dimension(qs)[:M_sun] == 1
604-
@test expand_units(qs) 5.0 * q
608+
@test uexpand(qs) 5.0 * q
605609

606610
# Refuses to convert to non-unit quantities:
607611
@test_throws AssertionError uconvert(1.2us"m", 1.0u"m")
@@ -886,8 +890,8 @@ end
886890
z_ar = randn(32)
887891
z = QuantityArray(z_ar, us"Constants.h * km/s")
888892
z_expanded = QuantityArray(z_ar .* u"Constants.h * km/s")
889-
@test typeof(expand_units(z)) == typeof(z_expanded)
890-
@test all(expand_units(z) .≈ z_expanded)
893+
@test typeof(uexpand(z)) == typeof(z_expanded)
894+
@test all(uexpand(z) .≈ z_expanded)
891895
io = IOBuffer()
892896
Base.showarg(io, z, true)
893897
msg = String(take!(io))

0 commit comments

Comments
 (0)