From ee6918c474f9d1bac67ff0ad27a37381a9649f39 Mon Sep 17 00:00:00 2001 From: Alexander Barth Date: Mon, 29 Jan 2024 17:16:19 +0100 Subject: [PATCH] special case of NaN --- src/variable.jl | 7 +++++-- test/memory_dataset.jl | 4 ---- test/test_scaling.jl | 8 ++++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/variable.jl b/src/variable.jl index 7874837..632cc67 100644 --- a/src/variable.jl +++ b/src/variable.jl @@ -150,9 +150,12 @@ function _defVar(ds::AbstractDataset,name::SymbolOrString,data,nctype,vardimname end end - # make sure a fill value is set + maskingvalue_nan = maskingvalue(ds) isa Number && isnan(maskingvalue(ds)) + + # make sure a fill value is set if we deduce from the type of data + # that it is needed if (Tmaskingvalue <: T) && !haskey(attrib,"_FillValue") && - !haskey(kwargs,:fillvalue) + !haskey(kwargs,:fillvalue) && !maskingvalue_nan push!(attrib,"_FillValue" => fillvalue(nctype)) end diff --git a/test/memory_dataset.jl b/test/memory_dataset.jl index ce6466f..0dec0ba 100644 --- a/test/memory_dataset.jl +++ b/test/memory_dataset.jl @@ -133,10 +133,6 @@ function CDM.dim(md::MemoryDataset,name::SymbolOrString) end CDM.varnames(ds::MemoryDataset) = collect(keys(ds.variables)) - -CDM.variable(ds::MemoryDataset,variablename::SymbolOrString) = ds.variables[String(variablename)] - - CDM.attribnames(md::Union{MemoryDataset,MemoryVariable}) = keys(md._attrib) CDM.attrib(md::Union{MemoryDataset,MemoryVariable},name::SymbolOrString) = md._attrib[String(name)] diff --git a/test/test_scaling.jl b/test/test_scaling.jl index f7518e0..e5c57bd 100644 --- a/test/test_scaling.jl +++ b/test/test_scaling.jl @@ -261,3 +261,11 @@ end @test nonuniontype(Missing,Union{Float64,Missing}) == Float64 @test nonuniontype(Missing,Union{Missing,Float64}) == Float64 + + + +fname = tempname() +data = rand(4,5) +ds = TDS(fname,"c", maskingvalue = NaN) +ncv = defVar(ds,"data",data,("lon","lat")) +@test !haskey(ncv.attrib,"_FillValue")