Skip to content

Commit a8b4764

Browse files
authored
Fix NaiveOrderedSet broadcasting mixed with Tuples and arrays (#34)
1 parent 0fd26f4 commit a8b4764

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "NamedDimsArrays"
22
uuid = "60cbd0c0-df58-4cb7-918c-6f5607b73fde"
33
authors = ["ITensor developers <[email protected]> and contributors"]
4-
version = "0.4.1"
4+
version = "0.4.2"
55

66
[deps]
77
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"

src/abstractnameddimsarray.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ function combine_nameddimsarraytype(
175175
end
176176
combine_nameddimsarraytype(::Type{T}, ::Type{T}) where {T<:AbstractNamedDimsArray} = T
177177

178-
using Base.Broadcast: Broadcasted, Style
178+
using Base.Broadcast: AbstractArrayStyle, Broadcasted, Style
179179

180180
struct NaiveOrderedSet{Values}
181181
values::Values
@@ -188,10 +188,15 @@ Base.keys(s::NaiveOrderedSet) = Base.OneTo(length(s))
188188
Base.:(==)(s1::NaiveOrderedSet, s2::NaiveOrderedSet) = issetequal(values(s1), values(s2))
189189
Base.iterate(s::NaiveOrderedSet, args...) = iterate(values(s), args...)
190190
Base.getindex(s::NaiveOrderedSet, I::Int) = values(s)[I]
191+
# TODO: Required in Julia 1.10, delete when we drop support for that.
192+
Base.getindex(s::NaiveOrderedSet, I::CartesianIndex{1}) = values(s)[I]
191193
Base.get(s::NaiveOrderedSet, I::Integer, default) = get(values(s), I, default)
192194
Base.invperm(s::NaiveOrderedSet) = NaiveOrderedSet(invperm(values(s)))
193195
Base.Broadcast._axes(::Broadcasted, axes::NaiveOrderedSet) = axes
194196
Base.Broadcast.BroadcastStyle(::Type{<:NaiveOrderedSet}) = Style{NaiveOrderedSet}()
197+
Base.Broadcast.BroadcastStyle(::Style{Tuple}, ::Style{NaiveOrderedSet}) = Style{Tuple}()
198+
Base.Broadcast.BroadcastStyle(s1::AbstractArrayStyle{0}, s2::Style{NaiveOrderedSet}) = s2
199+
Base.Broadcast.BroadcastStyle(s1::AbstractArrayStyle, s2::Style{NaiveOrderedSet}) = s1
195200
Base.Broadcast.broadcastable(s::NaiveOrderedSet) = s
196201
Base.to_shape(s::NaiveOrderedSet) = s
197202

test/test_basics.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,13 @@ using Test: @test, @test_throws, @testset
292292
end
293293
end
294294
@testset "NaiveOrderedSet" begin
295+
# Broadcasting
296+
s = NaiveOrderedSet((1, 2))
297+
@test s .+ [3, 4] == [4, 6]
298+
@test s .+ (3, 4) === (4, 6)
299+
295300
s = NaiveOrderedSet(("a", "b", "c"))
301+
@test all(s .== ("a", "b", "c"))
296302
@test values(s) == ("a", "b", "c")
297303
@test Tuple(s) == ("a", "b", "c")
298304
@test s[1] == "a"

0 commit comments

Comments
 (0)