Skip to content

Commit a2b1d59

Browse files
github-actions[bot]CompatHelper Juliasethaxen
authored
chore: bump compat for DimensionalData to 0.30, (keep existing compat) (#109)
* CompatHelper: bump compat for DimensionalData to 0.30, (keep existing compat) * chore: Increment patch version number * fix: Use syntax compatible with both old and new DD versions * feat: Update Dataset types for DD v0.30 This would be breaking if types are considered as part of the API, but we clearly document our API and do not include the types, so we treat it as non-breaking * fix: Remove now-unneeded workaround * fix: Fix docs assignment to Dataset * format: Run formatter on changed lines * docs: Update doctests * reformat: Run formatter --------- Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org> Co-authored-by: Seth Axen <seth@sethaxen.com>
1 parent e87d253 commit a2b1d59

12 files changed

Lines changed: 81 additions & 65 deletions

File tree

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "InferenceObjects"
22
uuid = "b5cf5a8d-e756-4ee3-b014-01d49d192c00"
33
authors = ["Seth Axen <seth.axen@gmail.com> and contributors"]
4-
version = "0.4.15"
4+
version = "0.4.16"
55

66
[deps]
77
ANSIColoredPrinters = "a4c015fc-c6ff-483c-b24f-f7ea428134e9"
@@ -25,7 +25,7 @@ InferenceObjectsPosteriorStatsExt = ["PosteriorStats", "StatsBase"]
2525
ANSIColoredPrinters = "0.0.1"
2626
ArviZExampleData = "0.3"
2727
Dates = "1"
28-
DimensionalData = "0.27, 0.28, 0.29"
28+
DimensionalData = "0.27, 0.28, 0.29, 0.30"
2929
EvoTrees = "0.16"
3030
MCMCDiagnosticTools = "0.3.4"
3131
MLJBase = "1"

ext/InferenceObjectsMCMCDiagnosticToolsExt/InferenceObjectsMCMCDiagnosticToolsExt.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module InferenceObjectsMCMCDiagnosticToolsExt
22

33
using Base: @doc
4-
using DimensionalData: DimensionalData, Dimensions, LookupArrays
4+
using DimensionalData: DimensionalData, Dimensions
55
using InferenceObjects: InferenceObjects, Random
66
using MCMCDiagnosticTools: MCMCDiagnosticTools
77

ext/InferenceObjectsNCDatasetsExt/InferenceObjectsNCDatasetsExt.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module InferenceObjectsNCDatasetsExt
22

3-
using DimensionalData: DimensionalData, Dimensions, LookupArrays
3+
using DimensionalData: DimensionalData, Dimensions, Lookups
44
using NCDatasets: NCDatasets
55
using InferenceObjects
66

@@ -20,7 +20,7 @@ function _from_netcdf(ds, load_mode)
2020
index = collect(group[dim_name])
2121
if index == eachindex(index)
2222
# discard the index if it is just the default
23-
index = LookupArrays.NoLookup()
23+
index = Lookups.NoLookup()
2424
end
2525
return Symbol(dim_name) => Dimensions.Dim{Symbol(dim_name)}(index)
2626
end...
@@ -36,7 +36,7 @@ function _from_netcdf(ds, load_mode)
3636
else
3737
var.attrib
3838
end
39-
metadata = isempty(attrib) ? LookupArrays.NoMetadata() : attrib
39+
metadata = isempty(attrib) ? Lookups.NoMetadata() : attrib
4040
da = DimensionalData.DimArray(vals, dims; name, metadata)
4141
return name => da
4242
end...
@@ -89,7 +89,7 @@ function InferenceObjects.to_netcdf(
8989
for dim in Dimensions.dims(group_data)
9090
dim_name = String(Dimensions.name(dim))
9191
NCDatasets.defDim(group_ds, dim_name, length(dim))
92-
index = LookupArrays.index(group_data, dim)
92+
index = parent(Dimensions.lookup(group_data, dim))
9393
var = NCDatasets.defVar(group_ds, dim_name, eltype(index), (dim_name,))
9494
copyto!(var, index)
9595
end

ext/InferenceObjectsPosteriorStatsExt/InferenceObjectsPosteriorStatsExt.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
module InferenceObjectsPosteriorStatsExt
22

33
using Base: @doc
4-
using DimensionalData: DimensionalData, Dimensions, LookupArrays
4+
using DimensionalData: DimensionalData, Dimensions
55
using InferenceObjects: InferenceObjects
66
using PosteriorStats: PosteriorStats
77
using StatsBase: StatsBase

src/InferenceObjects.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module InferenceObjects
22

33
using ANSIColoredPrinters: ANSIColoredPrinters
44
using Dates: Dates
5-
using DimensionalData: DimensionalData, Dimensions, LookupArrays
5+
using DimensionalData: DimensionalData, Dimensions, Lookups
66
using Random: Random
77
using Tables: Tables
88

src/dataset.jl

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,26 @@ that implements the same interface as `DimensionalData.DimStack` and has identic
2020
In most cases, use [`convert_to_dataset`](@ref) to create a `Dataset` instead of directly
2121
using a constructor.
2222
"""
23-
struct Dataset{K,T,N,L,D<:DimensionalData.AbstractDimStack{K,T,N,L}} <:
24-
DimensionalData.AbstractDimStack{K,T,N,L}
25-
data::D
26-
end
23+
Dataset
24+
@static if pkgversion(DimensionalData) v"0.30.0"
25+
struct Dataset{K,T,N,L,D,Data<:DimensionalData.AbstractDimStack{K,T,N,L,D}} <:
26+
DimensionalData.AbstractDimStack{K,T,N,L,D}
27+
data::Data
28+
end
29+
else # DimensionalData < 0.30
30+
struct Dataset{K,T,N,L,Data<:DimensionalData.AbstractDimStack{K,T,N,L}} <:
31+
DimensionalData.AbstractDimStack{K,T,N,L}
32+
data::Data
33+
end
2734

28-
function Dataset{K,T,N}(
29-
data::L, dims, refdims, layerdims, metadata, layermetadata
30-
) where {K,T,N,L}
31-
data = DimensionalData.DimStack{K,T,N}(
32-
data, dims, refdims, layerdims, metadata, layermetadata
33-
)
34-
return Dataset{K,T,N,L,typeof(data)}(data)
35+
function Dataset{K,T,N}(
36+
data::L, dims, refdims, layerdims, metadata, layermetadata
37+
) where {K,T,N,L}
38+
data = DimensionalData.DimStack{K,T,N}(
39+
data, dims, refdims, layerdims, metadata, layermetadata
40+
)
41+
return Dataset{K,T,N,L,typeof(data)}(data)
42+
end
3543
end
3644
Dataset(args...; kwargs...) = Dataset(DimensionalData.DimStack(args...; kwargs...))
3745
Dataset(data::Dataset) = data
@@ -123,9 +131,6 @@ end
123131

124132
DimensionalData.modify(f, s::Dataset) = Dataset(DimensionalData.modify(f, parent(s)))
125133

126-
# Warning: this is not an API function and probably should be implemented abstractly upstream
127-
DimensionalData.show_after(io, mime, ::Dataset) = nothing
128-
129134
attributes(data::DimensionalData.AbstractDimStack) = DimensionalData.metadata(data)
130135

131136
Base.convert(T::Type{<:DimensionalData.DimStack}, data::Dataset) = convert(T, parent(data))

src/dimensions.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ has_all_sample_dims(dims) = all(Dimensions.hasdim(dims, DEFAULT_SAMPLE_DIMS))
22

33
# Like Dimensions.name2dim but doesn't allow users to inject their own dimensions using
44
# Dimensions.@dim. See https://github.com/arviz-devs/InferenceObjects.jl/issues/37
5-
_name2dim(d::Symbol) = Dimensions.Dim{d}(LookupArrays.NoLookup())
5+
_name2dim(d::Symbol) = Dimensions.Dim{d}(Lookups.NoLookup())
66
_name2dim(d::Tuple) = map(_name2dim, d)
77
_name2dim(d) = d
88

99
# make sure dim has a lookup value accessible with `val`
1010
_valdim(d) = d
11-
_valdim(d::Type{<:Dimensions.Dimension}) = d(LookupArrays.NoLookup())
11+
_valdim(d::Type{<:Dimensions.Dimension}) = d(Lookups.NoLookup())
1212

1313
"""
1414
as_dimension(dim, coords, axis) -> DimensionsionalData.Dimension
@@ -31,8 +31,8 @@ Convert `dim`, `coords`, and `axis` to a `Dimension` object.
3131
"""
3232
function as_dimension(dim, coords, axis)
3333
cdim = _valdim(_name2dim(dim))
34-
val = LookupArrays.val(cdim)
35-
inds = val isa Union{Colon,LookupArrays.NoLookup} ? axis : val
34+
val = Lookups.val(cdim)
35+
inds = val isa Union{Colon,Lookups.NoLookup} ? axis : val
3636
coords_inds = get(coords, Dimensions.name(cdim), inds)
3737
return Dimensions.rebuild(cdim, coords_inds)
3838
end
@@ -79,7 +79,7 @@ function generate_dims(array, name; dims=(), coords=(;), default_dims=())
7979
end
8080
dims_all = (default_dims..., dims_named...)
8181
# default to the axes if no coords are provided
82-
axes_all = map(_ -> LookupArrays.NoLookup(), dims_all)
82+
axes_all = map(_ -> Lookups.NoLookup(), dims_all)
8383
T = NTuple{ndims(array),Dimensions.Dimension}
8484
dims_with_coords = as_dimension.(dims_all, Ref(coords), axes_all)::T
8585
return Dimensions.format(dims_with_coords, array)::T
@@ -107,20 +107,20 @@ function array_to_dimarray(array::DimensionalData.AbstractDimArray, name; kwargs
107107
end
108108

109109
"""
110-
AsSlice{T<:LookupArrays.Selector} <: LookupArrays.Selector{T}
110+
AsSlice{T<:Lookups.Selector} <: Lookups.Selector{T}
111111
112112
AsSlice(selector)
113113
114114
Selector that ensures selected indices are arrays so that slicing occurs.
115115
116116
This is useful to ensure that selecting a single index still returns an array.
117117
"""
118-
struct AsSlice{T<:LookupArrays.Selector} <: LookupArrays.Selector{T}
118+
struct AsSlice{T<:Lookups.Selector} <: Lookups.Selector{T}
119119
val::T
120120
end
121121

122-
function LookupArrays.selectindices(l::LookupArrays.LookupArray, sel::AsSlice; kw...)
123-
i = LookupArrays.selectindices(l, LookupArrays.val(sel); kw...)
122+
function Lookups.selectindices(l::Lookups.LookupArray, sel::AsSlice; kw...)
123+
i = Lookups.selectindices(l, Lookups.val(sel); kw...)
124124
inds = i isa AbstractVector ? i : [i]
125125
return inds
126126
end
@@ -132,4 +132,4 @@ Convert `index` to a collection of indices or a selector representing such a col
132132
"""
133133
index_to_indices(i) = i
134134
index_to_indices(i::Int) = [i]
135-
index_to_indices(sel::LookupArrays.Selector) = AsSlice(sel)
135+
index_to_indices(sel::Lookups.Selector) = AsSlice(sel)

src/inference_data.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,7 @@ julia> idata_cat1.posterior
320320
├────────────────────────────────────────────────── metadata ┤
321321
Dict{String, Any} with 1 entry:
322322
"created_at" => "2025-07-25T10:11:18.92"
323+
└────────────────────────────────────────────────────────────┘
323324
```
324325
325326
Alternatively, we can concatenate along a new `run` dimension, which will be created.
@@ -342,6 +343,7 @@ julia> idata_cat2.posterior
342343
├───────────────────────────────────────────────────────── metadata ┤
343344
Dict{String, Any} with 1 entry:
344345
"created_at" => "2025-07-25T10:11:18.92"
346+
└───────────────────────────────────────────────────────────────────┘
345347
```
346348
347349
We can also concatenate only a subset of groups and merge the rest, which is useful when
@@ -374,6 +376,7 @@ julia> idata_cat3.posterior
374376
├───────────────────────────────────────────────────────── metadata ┤
375377
Dict{String, Any} with 1 entry:
376378
"created_at" => "2025-07-25T10:11:18.92"
379+
└───────────────────────────────────────────────────────────────────┘
377380
378381
julia> idata_cat3.observed_data
379382
┌ 10-element Dataset ┐
@@ -384,6 +387,7 @@ julia> idata_cat3.observed_data
384387
├────────────────────────────────────────────┴ metadata ┐
385388
Dict{String, Any} with 1 entry:
386389
"created_at" => "2025-07-25T10:11:18.951"
390+
└───────────────────────────────────────────────────────┘
387391
```
388392
"""
389393
function Base.cat(data::InferenceData, others::InferenceData...; groups=keys(data), dims)

test/dataset.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using InferenceObjects, DimensionalData, Test
2+
using DimensionalData: Lookups
23

34
@testset "dataset" begin
45
@testset "Dataset" begin
@@ -118,9 +119,9 @@ using InferenceObjects, DimensionalData, Test
118119
end
119120

120121
@testset "DimensionalData.set" begin
121-
ds2 = DimensionalData.set(ds; ydim1=LookupArrays.Sampled([-2, 2]))
122+
ds2 = DimensionalData.set(ds, :ydim1 => Lookups.Sampled([-2, 2]))
122123
@test ds2 isa Dataset
123-
@test DimensionalData.lookup(ds2, :ydim1) == [-2, 2]
124+
@test parent(DimensionalData.lookup(ds2, :ydim1)) == [-2, 2]
124125
@test DimensionalData.data(ds2) == DimensionalData.data(ds)
125126
end
126127
end

test/dimensions.jl

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using InferenceObjects, DimensionalData, OffsetArrays, Test
2-
using DimensionalData.LookupArrays
2+
using DimensionalData.Lookups
33

44
Dimensions.@dim foo "foo"
55

@@ -69,24 +69,27 @@ Dimensions.@dim foo "foo"
6969
)
7070
@test gdims isa NTuple{4,Dim}
7171
@test Dimensions.name(gdims) === (:x_dim_1, :x_dim_2, :x_dim_3, :x_dim_4)
72-
@test Dimensions.index(gdims) == (11:20, 0:3, -1:0, 2:4)
73-
@test Dimensions.val.(Dimensions.dims(gdims)) isa NTuple{4,LookupArrays.NoLookup}
72+
glooks = Dimensions.lookup(gdims)
73+
@test glooks isa NTuple{4,NoLookup}
74+
@test parent.(glooks) == (11:20, 0:3, -1:0, 2:4)
7475

7576
gdims = @inferred NTuple{4,Dimensions.Dimension} InferenceObjects.generate_dims(
7677
x, :y; dims=(:a, :b)
7778
)
7879
@test gdims isa NTuple{4,Dim}
7980
@test Dimensions.name(gdims) === (:a, :b, :y_dim_3, :y_dim_4)
80-
@test Dimensions.index(gdims) == (11:20, 0:3, -1:0, 2:4)
81-
@test Dimensions.val.(Dimensions.dims(gdims)) isa NTuple{4,LookupArrays.NoLookup}
81+
glooks = Dimensions.lookup(gdims)
82+
@test glooks isa NTuple{4,NoLookup}
83+
@test parent.(glooks) == (11:20, 0:3, -1:0, 2:4)
8284

8385
gdims = @inferred NTuple{4,Dimensions.Dimension} InferenceObjects.generate_dims(
8486
x, :z; dims=(:c, :d), default_dims=(:draw, :chain)
8587
)
8688
@test gdims isa NTuple{4,Dim}
8789
@test Dimensions.name(gdims) === (:draw, :chain, :c, :d)
88-
@test Dimensions.index(gdims) == (11:20, 0:3, -1:0, 2:4)
89-
@test Dimensions.val.(Dimensions.dims(gdims)) isa NTuple{4,LookupArrays.NoLookup}
90+
glooks = Dimensions.lookup(gdims)
91+
@test glooks isa NTuple{4,NoLookup}
92+
@test parent.(glooks) == (11:20, 0:3, -1:0, 2:4)
9093

9194
x = randn(2, 3)
9295
InferenceObjects.generate_dims(x, :x; dims=(:a, :b))
@@ -109,15 +112,15 @@ Dimensions.@dim foo "foo"
109112
gdims = Dimensions.dims(da)
110113
@test gdims isa NTuple{4,Dim}
111114
@test Dimensions.name(gdims) === (:x_dim_1, :x_dim_2, :x_dim_3, :x_dim_4)
112-
@test Dimensions.index(gdims) == (11:20, 0:3, -1:0, 2:4)
115+
@test parent.(Dimensions.lookup(gdims)) == (11:20, 0:3, -1:0, 2:4)
113116

114117
da = @inferred DimArray InferenceObjects.array_to_dimarray(x, :y; dims=(:a, :b))
115118
@test da == x
116119
@test DimensionalData.name(da) === :y
117120
gdims = Dimensions.dims(da)
118121
@test gdims isa NTuple{4,Dim}
119122
@test Dimensions.name(gdims) === (:a, :b, :y_dim_3, :y_dim_4)
120-
@test Dimensions.index(gdims) == (11:20, 0:3, -1:0, 2:4)
123+
@test parent.(Dimensions.lookup(gdims)) == (11:20, 0:3, -1:0, 2:4)
121124

122125
da = @inferred DimArray InferenceObjects.array_to_dimarray(
123126
x, :z; dims=(:c, :d), default_dims=(:draw, :chain)
@@ -127,7 +130,7 @@ Dimensions.@dim foo "foo"
127130
gdims = Dimensions.dims(da)
128131
@test gdims isa NTuple{4,Dim}
129132
@test Dimensions.name(gdims) === (:draw, :chain, :c, :d)
130-
@test Dimensions.index(gdims) == (11:20, 0:3, -1:0, 2:4)
133+
@test parent.(Dimensions.lookup(gdims)) == (11:20, 0:3, -1:0, 2:4)
131134

132135
v = randn(1_000)
133136
da = @inferred DimArray InferenceObjects.array_to_dimarray(
@@ -138,7 +141,7 @@ Dimensions.@dim foo "foo"
138141
gdims = Dimensions.dims(da)
139142
@test gdims isa NTuple{2,Dim}
140143
@test Dimensions.name(gdims) === (:draw, :chain)
141-
@test Dimensions.index(gdims) == (1:1000, 1:1)
144+
@test parent.(Dimensions.lookup(gdims)) == (1:1000, 1:1)
142145

143146
s = fill(1) # 0-dimensional array
144147
da = @inferred DimArray InferenceObjects.array_to_dimarray(
@@ -149,18 +152,18 @@ Dimensions.@dim foo "foo"
149152
gdims = Dimensions.dims(da)
150153
@test gdims isa NTuple{2,Dim}
151154
@test Dimensions.name(gdims) === (:draw, :chain)
152-
@test Dimensions.index(gdims) == (1:1, 1:1)
155+
@test parent.(Dimensions.lookup(gdims)) == (1:1, 1:1)
153156
end
154157

155158
@testset "AsSlice" begin
156159
da = DimArray(randn(2), Dim{:a}(["foo", "bar"]))
157-
@test da[a=At("foo")] == da[1]
158-
da_sel = @inferred da[a=InferenceObjects.AsSlice(At("foo"))]
160+
@test da[a = At("foo")] == da[1]
161+
da_sel = @inferred da[a = InferenceObjects.AsSlice(At("foo"))]
159162
@test da_sel isa DimArray
160163
@test Dimensions.dims(da_sel) == (Dim{:a}(["foo"]),)
161-
@test da_sel == da[a=At(["foo"])]
164+
@test da_sel == da[a = At(["foo"])]
162165

163-
da_sel = @inferred da[a=At(["foo", "bar"])]
166+
da_sel = @inferred da[a = At(["foo", "bar"])]
164167
@test da_sel isa DimArray
165168
@test Dimensions.dims(da_sel) == Dimensions.dims(da)
166169
@test da_sel == da

0 commit comments

Comments
 (0)