Skip to content

Commit febbc76

Browse files
authored
fix lazy in create without filename (#979)
* fix lazy in create without filename * fix Raster ambiguity
1 parent 5a609f7 commit febbc76

File tree

5 files changed

+16
-5
lines changed

5 files changed

+16
-5
lines changed

src/array.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,4 +401,4 @@ filekey(filename::String) = Symbol(splitext(basename(filename))[1])
401401

402402
# Add a `dimconstructor` method so `AbstractProjected` lookups create a Raster
403403
# TODO this should be unwrapped to `DD.lookupconstructor` to avoid future ambiguities
404-
DD.dimconstructor(::Tuple{<:Dimension{<:AbstractProjected},Vararg{Dimension}}) = Raster
404+
DD.dimconstructor(::Tuple{<:Dimension{<:AbstractProjected},Vararg{Dimension}}) = Raster

src/create.jl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,11 @@ function create(filename::Nothing, types::NamedTuple, dims::Tuple;
247247
fill=nokw,
248248
layerdims=nokw,
249249
layermetadata=nokw,
250+
lazy=false,
250251
f=identity,
251252
kw...
252253
)
254+
lazy && throw(ArgumentError("`lazy` cannot be `true` without passing a `filename` keyword"))
253255
layerdims = isnokw(layerdims) ? map(_ -> basedims(dims), types) : layerdims
254256
layermetadata = layermetadata isa NamedTuple ? layermetadata : map(_ -> layermetadata, types)
255257
layerfill = fill isa NamedTuple ? fill : map(_ -> fill, types)
@@ -355,4 +357,4 @@ end
355357

356358
_warn_keyword_not_used(label, obj) = @warn "`$label` of `$obj` found. But `chunks` are not used for in-memory rasters"
357359
_missingval_pair(missingval::Pair) = missingval
358-
_missingval_pair(missingval) = missingval => missingval
360+
_missingval_pair(missingval) = missingval => missingval

src/stack.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ function RasterStack(layers::NamedTuple{K,<:Tuple{Vararg{AbstractDimArray}}};
293293
metadata=NoMetadata(),
294294
layermetadata::NamedTuple{K}=map(DD.metadata, _layers),
295295
layerdims::NamedTuple{K}=map(DD.basedims, _layers),
296+
lazy=false,
296297
kw...
297298
) where K
298299
data = map(parent, _layers)
@@ -682,7 +683,7 @@ function RasterStack(dt::AbstractDimTree; keep=nothing)
682683
end
683684
end
684685
# TODO resolve the meaning of Raster(::RasterStack)
685-
Raster(stack::AbstractDimStack) = cat(values(stack)...; dims=Band([keys(stack)...]))
686+
Raster(stack::AbstractDimStack; kw...) = Raster(cat(values(stack)...; dims=Band([keys(stack)...])); kw...)
686687
# In DD it would be
687688
# Raster(st::AbstractDimStack) =
688689
# Raster([st[D] for D in DimIndices(st)]; dims=dims(st), metadata=metadata(st))
@@ -694,4 +695,4 @@ defaultmappedcrs(::Source, crs) = crs
694695
defaultmappedcrs(s::Source, ::NoKW) = defaultmappedcrs(s)
695696
defaultmappedcrs(::Source) = nothing
696697

697-
check_multilayer_dataset(ds) = throw(ArgumentError("$(typeof(ds)) is not a multilayer raster dataset"))
698+
check_multilayer_dataset(ds) = throw(ArgumentError("$(typeof(ds)) is not a multilayer raster dataset"))

test/create.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ end
128128
@test Rasters.name(st1) == (:c, :d)
129129
@test missingval(st1) === (c=0x00, d=Int16(1))
130130
end
131+
132+
@testset "lazy must have filename" begin
133+
@test_throws ArgumentError Rasters.create((a=Int32, b=Float64, c=Bool), Extents.Extent(X=(0, 10), Y=(0, 5));
134+
size=(X=1024, Y=1024),
135+
lazy=true,
136+
) do st
137+
end
138+
end
131139
end
132140

133141
ext = ".nc"

test/runtests.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,4 @@ using ZarrDatasets
7474
Aqua.test_unbound_args(ext)
7575
Aqua.test_undefined_exports(ext)
7676
end
77-
end
77+
end

0 commit comments

Comments
 (0)