Skip to content

Commit 6856c3e

Browse files
handle keyword arguments for multi-file dataset
1 parent 48849ec commit 6856c3e

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

src/defer.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,16 @@ function DeferDataset(TDS,r::Resource,groupname::String,data::OrderedDict)
6161
return dds
6262
end
6363

64-
function DeferDataset(TDS,filename::AbstractString,mode::AbstractString,info::OrderedDict)
65-
r = Resource(filename,mode,info)
64+
function DeferDataset(TDS,filename::AbstractString,mode::AbstractString,info::OrderedDict; kwargs...)
65+
r = Resource(filename,mode,Dict(kwargs),info)
6666
groupname = "/"
6767
return DeferDataset(TDS,r,groupname,info)
6868
end
6969

70-
function DeferDataset(TDS,filename::AbstractString,mode = "r")
70+
function DeferDataset(TDS,filename::AbstractString,mode = "r"; kwargs...)
7171
TDS(filename,mode) do ds
7272
info = metadata(ds)
73-
r = Resource(filename,mode,info)
73+
r = Resource(filename,mode,Dict(kwargs),info)
7474
groupname = "/"
7575
return DeferDataset(TDS,r,groupname,info)
7676
end
@@ -84,7 +84,7 @@ path(dds::DeferDataset) = dds.r.filename
8484
varnames(dds::DeferDataset) = collect(keys(dds.data[:var]))
8585

8686
function Variable(f::Function, dv::DeferVariable{T,N,TDS}) where {T,N,TDS}
87-
TDS(dv.r.filename,dv.r.mode) do ds
87+
TDS(dv.r.filename,dv.r.mode; dv.r.args...) do ds
8888
f(variable(ds,dv.varname))
8989
end
9090
end
@@ -103,7 +103,7 @@ end
103103
variable(dds::DeferDataset,varname::Symbol) = variable(dds,string(varname))
104104

105105
dataset(dv::DeferVariable{T,N,TDS}) where {T,N,TDS} =
106-
DeferDataset(TDS,dv.r.filename,dv.r.mode)
106+
DeferDataset(TDS,dv.r.filename,dv.r.mode; dv.r.args...)
107107

108108
function Base.getindex(dv::DeferVariable,indexes::Union{Int,Colon,AbstractRange{<:Integer}}...)
109109
Variable(dv) do v

src/multifile.jl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ function MFDataset(TDS,fnames::AbstractArray{<:AbstractString,N},mode = "r";
9292
_aggdimconstant = false,
9393
isnewdim = false,
9494
constvars = Union{Symbol,String}[],
95+
kwargs...
9596
) where N
9697
if !(mode == "r" || mode == "a")
9798
throw(ArgumentError("""Unsupported mode for multi-file dataset (mode = $(mode)). Mode must be "r" or "a"."""))
@@ -103,20 +104,20 @@ function MFDataset(TDS,fnames::AbstractArray{<:AbstractString,N},mode = "r";
103104
if _aggdimconstant
104105
# load only metadata from master
105106
master_index = 1
106-
ds_master = TDS(fnames[master_index],mode);
107+
ds_master = TDS(fnames[master_index],mode; kwargs...);
107108
data_master = metadata(ds_master)
108109
ds = Vector{Union{TDS,DeferDataset}}(undef,length(fnames))
109110
#ds[master_index] = ds_master
110111
for (i,fname) in enumerate(fnames)
111112
#if i !== master_index
112-
ds[i] = DeferDataset(TDS,fname,mode,data_master)
113+
ds[i] = DeferDataset(TDS,fname,mode,data_master; kwargs...)
113114
#end
114115
end
115116
else
116-
ds = DeferDataset.(TDS,fnames,mode)
117+
ds = DeferDataset.(TDS,fnames,mode; kwargs...)
117118
end
118119
else
119-
ds = TDS.(fnames,mode);
120+
ds = TDS.(fnames,mode,kwargs...);
120121
end
121122

122123
if (aggdim == nothing) && !isnewdim
@@ -133,7 +134,7 @@ function MFDataset(ds::AbstractVector{<:AbstractDataset};
133134
deferopen = true,
134135
_aggdimconstant = false,
135136
isnewdim = false,
136-
constvars = Union{Symbol,String}[],
137+
constvars = Union{Symbol,String}[]
137138
)
138139

139140
MFDataset(ds,aggdim,isnewdim,Symbol.(constvars))

src/types.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ end
136136
struct Resource
137137
filename::String
138138
mode::String
139+
args::Dict{Symbol,Any}
139140
metadata::OrderedDict
140141
end
141142

0 commit comments

Comments
 (0)