Skip to content

Commit ca600b0

Browse files
authored
Enable package extension for Statistics (#277)
1 parent cf4b0c3 commit ca600b0

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed

Project.toml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,22 @@ version = "0.9.0-dev"
66
Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c"
77
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
88

9+
[weakdeps]
10+
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
11+
12+
[extensions]
13+
FixedPointNumbersStatisticsExt = "Statistics"
14+
915
[compat]
16+
# Update this version specifier when Statistics.jl v1.11.2 is released.
17+
# https://github.com/JuliaStats/Statistics.jl/issues/165
18+
Statistics = "< 1.11.2"
1019
julia = "1"
1120

1221
[extras]
1322
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
23+
Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1424
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
1525

1626
[targets]
17-
test = ["Documenter", "Test"]
27+
test = ["Documenter", "Statistics", "Test"]

ext/FixedPointNumbersStatisticsExt.jl

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module FixedPointNumbersStatisticsExt
2+
3+
using FixedPointNumbers
4+
import FixedPointNumbers: Treduce
5+
using Statistics
6+
7+
import Statistics
8+
if isdefined(Statistics, :_mean_promote)
9+
# https://github.com/JuliaMath/FixedPointNumbers.jl/pull/183
10+
Statistics._mean_promote(x::Real, y::FixedPoint) = Treduce(y)
11+
end
12+
13+
end

src/FixedPointNumbers.jl

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import Base: ==, <, <=, -, +, *, /, ~, isapprox,
99
signed, unsigned, copysign, flipsign, signbit,
1010
length
1111

12-
import Statistics # for _mean_promote
1312
import Random: Random, AbstractRNG, SamplerType, rand!
1413

1514
import Base.Checked: checked_neg, checked_abs, checked_add, checked_sub, checked_mul,
@@ -557,10 +556,6 @@ Base.mul_prod(x::FixedPoint, y::FixedPoint) = Treduce(x) * Treduce(y)
557556
Base.reduce_empty(::typeof(Base.mul_prod), ::Type{F}) where {F<:FixedPoint} = one(Treduce)
558557
Base.reduce_first(::typeof(Base.mul_prod), x::FixedPoint) = Treduce(x)
559558

560-
if isdefined(Statistics, :_mean_promote)
561-
Statistics._mean_promote(x::Real, y::FixedPoint) = Treduce(y)
562-
end
563-
564559
"""
565560
sd, ad = scaledual(s::Number, a)
566561
@@ -624,6 +619,10 @@ function rand!(r::AbstractRNG, A::Array{X}, ::SamplerType{X}) where {T, X <: Fix
624619
A
625620
end
626621

622+
if !isdefined(Base, :get_extension)
623+
include("../ext/FixedPointNumbersStatisticsExt.jl")
624+
end
625+
627626
if VERSION >= v"1.1" # work around https://github.com/JuliaLang/julia/issues/34121
628627
include("precompile.jl")
629628
_precompile_()

0 commit comments

Comments
 (0)