Skip to content

Commit 97a133c

Browse files
authored
Julia v1.12 support (#119)
* Julia v1.12 support * tests pass * add norm tests
1 parent 538c66f commit 97a133c

File tree

6 files changed

+37
-6
lines changed

6 files changed

+37
-6
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "QuasiArrays"
22
uuid = "c4ea9172-b204-11e9-377d-29865faadc5c"
33
authors = ["Sheehan Olver <solver@mac.com>"]
4-
version = "0.12"
4+
version = "0.12.1"
55

66
[deps]
77
ArrayLayouts = "4c555306-a7a7-4459-81d9-ec55ddd5c99a"

src/QuasiArrays.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ import Base: BitInteger, IEEEFloat, uniontypes, _InitialValue, safe_tail, reduce
3232

3333
import Base: ones, zeros, one, zero, fill
3434

35+
import Base: AbstractVector, AbstractArray, AbstractMatrix
36+
3537
import Base.Broadcast: materialize, materialize!, BroadcastStyle, AbstractArrayStyle, Style, broadcasted, Broadcasted, Unknown,
3638
newindex, broadcastable, preprocess, _eachindex, _broadcast_getindex, broadcast_shape,
3739
DefaultArrayStyle, axistype, throwdm, instantiate, combine_eltypes, eltypes, combine_styles

src/calculus.jl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,4 +92,15 @@ function diff(A::QuasiMatrix; dims::Integer=1)
9292
else
9393
QuasiMatrix(D ./ permutedims(diff(b.domain)), (a, diffaxes(b)))
9494
end
95+
end
96+
97+
98+
99+
#####
100+
# norm
101+
#####
102+
103+
if VERSION v"1.12-"
104+
# avoid iterate call in v1.12
105+
LinearAlgebra.norm_recursive_check(::AbstractQuasiArray) = nothing
95106
end

src/multidimensional.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ module QuasiIteratorsMD
44
setindex!, IndexStyle, min, max, zero, oneunit, isless, eachindex,
55
ndims, IteratorSize, convert, show, iterate, promote_rule
66

7-
import Base: +, -, *, (:)
7+
import Base: +, -, *, (:), Tuple
88
import Base: simd_outer_range, simd_inner_length, simd_index
99
using Base: IndexLinear, IndexCartesian, AbstractCartesianIndex, fill_to_length, tail
1010
using Base.Iterators: Reverse

src/quasibroadcast.jl

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,23 @@ Base.similar(bc::Broadcasted{QuasiArrayConflict}, ::Type{ElType}) where ElType =
9292

9393
_axes(bc::Broadcasted{<:AbstractQuasiArrayStyle{0}}, ::Nothing) = ()
9494

95-
_eachindex(t::Tuple{AbstractQuasiVector{<:Number}}) = QuasiCartesianIndices(t)
96-
_eachindex(t::Tuple{AbstractQuasiVector{<:Number},Vararg{Any}}) = QuasiCartesianIndices(t)
97-
_eachindex(t::Tuple{AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = QuasiCartesianIndices(t)
98-
_eachindex(t::Tuple{AbstractUnitRange,AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = QuasiCartesianIndices(t)
95+
if VERSION < v"1.12-"
96+
_eachindex(t::Tuple{AbstractQuasiVector{<:Number}}) = QuasiCartesianIndices(t)
97+
_eachindex(t::Tuple{AbstractQuasiVector{<:Number},Vararg{Any}}) = QuasiCartesianIndices(t)
98+
_eachindex(t::Tuple{AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = QuasiCartesianIndices(t)
99+
_eachindex(t::Tuple{AbstractUnitRange,AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = QuasiCartesianIndices(t)
100+
else
101+
# TODO: add LinearQuasiIndices
102+
_eachindex(::IndexLinear, t::Tuple{AbstractQuasiVector{<:Number}}) = _eachindex(IndexCartesian(), t) # t[1] commented out since broadcast doesn't support Float64 indexing
103+
_eachindex(::IndexLinear, t::Tuple{AbstractQuasiVector{<:Number},Vararg{Any}}) = _eachindex(IndexCartesian(), t)
104+
_eachindex(::IndexLinear, t::Tuple{AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = _eachindex(IndexCartesian(), t)
105+
_eachindex(::IndexLinear, t::Tuple{AbstractUnitRange,AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = _eachindex(IndexCartesian(), t)
106+
107+
_eachindex(::IndexCartesian, t::Tuple{AbstractQuasiVector{<:Number}}) = QuasiCartesianIndices(t)
108+
_eachindex(::IndexCartesian, t::Tuple{AbstractQuasiVector{<:Number},Vararg{Any}}) = QuasiCartesianIndices(t)
109+
_eachindex(::IndexCartesian, t::Tuple{AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = QuasiCartesianIndices(t)
110+
_eachindex(::IndexCartesian, t::Tuple{AbstractUnitRange,AbstractQuasiVector{<:Number},Vararg{AbstractUnitRange}}) = QuasiCartesianIndices(t)
111+
end
99112

100113
instantiate(bc::Broadcasted{<:AbstractQuasiArrayStyle{0}}) = bc
101114

test/test_calculus.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,9 @@ using QuasiArrays, IntervalSets, Test
7777
Base.axes(::IncompleteQuasiArray) = (Base.OneTo(3),)
7878
@test_throws ErrorException diff(IncompleteQuasiArray())
7979
end
80+
81+
@testset "norm" begin
82+
b = QuasiVector(1:3, 1:0.5:2)
83+
@test norm(b) norm(1:3) # TODO: this should rescale based on step
84+
end
8085
end

0 commit comments

Comments
 (0)