From b9ad1d090c14ee4ddd8d2549e479acb955bd92c7 Mon Sep 17 00:00:00 2001 From: Jack Dunham Date: Tue, 5 May 2026 15:14:42 -0400 Subject: [PATCH 1/4] fix: constructing `LittleSet` using a `LittleSet` no longer nests. --- src/littleset.jl | 2 ++ test/test_basics.jl | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/littleset.jl b/src/littleset.jl index 95b69e9a..1db37597 100644 --- a/src/littleset.jl +++ b/src/littleset.jl @@ -3,6 +3,8 @@ using Base.Broadcast: AbstractArrayStyle, Broadcasted, Style struct LittleSet{Values} values::Values end +LittleSet(s::LittleSet{V}) where {V} = LittleSet{V}(s) +LittleSet{V1}(s::LittleSet{V2}) where {V1, V2} = LittleSet{V1}(s.values) Base.Tuple(s::LittleSet) = Tuple(s.values) Base.eltype(s::LittleSet) = eltype(s.values) Base.length(s::LittleSet) = length(s.values) diff --git a/test/test_basics.jl b/test/test_basics.jl index 9de79ca3..52f316be 100644 --- a/test/test_basics.jl +++ b/test/test_basics.jl @@ -398,6 +398,12 @@ end @test s′[2] == "x" @test s′[3] == "c" end + + s = LittleSet((1, 2, 3)) + @test LittleSet(s) == s + sp = LittleSet{NTuple{3, Float64}}(s) + @test eltype(sp) === Float64 + @test sp.values == (1.0, 2.0, 3.0) end @testset "show" begin a = NamedDimsArray([1 2; 3 4], ("i", "j")) From 31ac64f89f5e2b59a6d975632c640b6445b38142 Mon Sep 17 00:00:00 2001 From: Jack Dunham Date: Tue, 5 May 2026 15:15:31 -0400 Subject: [PATCH 2/4] feat: Add `denamedtype` and `nametype` methods for the `Type{<:NamedDimsArray}` type. --- src/nameddimsarray.jl | 8 ++++++-- test/test_basics.jl | 8 +++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/nameddimsarray.jl b/src/nameddimsarray.jl index 0d701c5e..594db56e 100644 --- a/src/nameddimsarray.jl +++ b/src/nameddimsarray.jl @@ -1,4 +1,5 @@ -using TypeParameterAccessors: TypeParameterAccessors, parenttype +using TypeParameterAccessors: + TypeParameterAccessors, Position, get_type_parameters, parenttype # TODO: Check `allunique(dimnames)`? struct NamedDimsArray{ @@ -34,8 +35,11 @@ dimnames(a::NamedDimsArray) = LittleSet(a.dimnames) denamed(a::NamedDimsArray) = a.denamed Base.parent(a::NamedDimsArray) = denamed(a) +denamedtype(T::Type{<:NamedDimsArray}) = get_type_parameters(T, Position(3)) +nametype(T::Type{<:NamedDimsArray}) = eltype(get_type_parameters(T, Position(4))) + function TypeParameterAccessors.position( ::Type{<:AbstractNamedDimsArray}, ::typeof(parenttype) ) - return TypeParameterAccessors.Position(3) + return Position(3) end diff --git a/test/test_basics.jl b/test/test_basics.jl index 52f316be..7ba48245 100644 --- a/test/test_basics.jl +++ b/test/test_basics.jl @@ -1,9 +1,9 @@ using Combinatorics: Combinatorics using NamedDimsArrays: @names, AbstractNamedDimsArray, AbstractNamedDimsMatrix, LittleSet, Name, NameMismatch, NamedDimsArray, NamedDimsCartesianIndex, NamedDimsCartesianIndices, - NamedDimsMatrix, aligndims, aligneddims, apply, dename, denamed, dim, dimnames, dims, - fusednames, inds, isnamed, mapinds, name, named, nameddims, namedoneto, product, - replacedimnames, replaceinds, setinds + NamedDimsMatrix, aligndims, aligneddims, apply, dename, denamed, denamedtype, dim, + dimnames, dims, fusednames, inds, isnamed, mapinds, name, named, nameddims, namedoneto, + nametype, product, replacedimnames, replaceinds, setinds using Test: @test, @test_throws, @testset using VectorInterface: scalartype @@ -43,6 +43,8 @@ end @test dim(na, "j") == 2 @test dims(na, ("j", "i")) == (2, 1) @test na[1, 1] == a[1, 1] + @test denamedtype(typeof(na)) === typeof(a) + @test nametype(typeof(na)) === String # equals (==)/isequal a = randn(elt, 3, 4) From 8e6ce107745cfe0a1294b33cce836620178a229e Mon Sep 17 00:00:00 2001 From: Jack Dunham Date: Tue, 5 May 2026 15:28:37 -0400 Subject: [PATCH 3/4] test: improve `LittleSet` tests --- test/test_basics.jl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/test_basics.jl b/test/test_basics.jl index 7ba48245..9b4995aa 100644 --- a/test/test_basics.jl +++ b/test/test_basics.jl @@ -402,10 +402,11 @@ end end s = LittleSet((1, 2, 3)) + @test LittleSet(s).values isa Tuple @test LittleSet(s) == s sp = LittleSet{NTuple{3, Float64}}(s) @test eltype(sp) === Float64 - @test sp.values == (1.0, 2.0, 3.0) + @test values(sp) == (1.0, 2.0, 3.0) end @testset "show" begin a = NamedDimsArray([1 2; 3 4], ("i", "j")) From 771e4110a52ff95bf41a4bd3fd698bb2907f6fad Mon Sep 17 00:00:00 2001 From: Jack Dunham Date: Tue, 5 May 2026 15:45:15 -0400 Subject: [PATCH 4/4] Version bump to v0.15.3 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 9fa07cd2..7d4f1753 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "NamedDimsArrays" uuid = "60cbd0c0-df58-4cb7-918c-6f5607b73fde" -version = "0.15.2" +version = "0.15.3" authors = ["ITensor developers and contributors"] [workspace]