@@ -17,16 +17,16 @@ A representation of a project or mission containing instruments and datasets.
1717- `instruments`: Collection of instruments
1818- `datasets`: Collection of datasets
1919"""
20- mutable struct Project <: AbstractProject
20+ mutable struct Project{I, D, MD} <: AbstractProject
2121 name:: String
22- metadata :: Dict
23- instruments :: Dict
24- datasets :: Dict
22+ instruments :: I
23+ datasets :: D
24+ metadata :: MD
2525end
2626
2727" keyword-based constructor"
2828function Project (; name= " " , instruments= Dict (), datasets= Dict (), metadata= SDict (), kwargs... )
29- Project (name, compat_dict (metadata, kwargs), instruments, datasets )
29+ Project (name, instruments, datasets, compat_dict (metadata, kwargs))
3030end
3131
3232"""
3737- `metadata`: Additional metadata
3838- `datasets`: Collection of datasets
3939"""
40- struct Instrument <: AbstractInstrument
40+ struct Instrument{D, MD} <: AbstractInstrument
4141 name:: String
42- metadata :: Dict
43- datasets :: Dict
42+ datasets :: D
43+ metadata :: MD
4444end
4545
4646" keyword-based constructor"
4747function Instrument (; name= " " , metadata= SDict (), datasets= Dict (), kwargs... )
48- Instrument (name, compat_dict (metadata, kwargs), datasets )
48+ Instrument (name, datasets, compat_dict (metadata, kwargs))
4949end
5050
5151" Construct an `Instrument` from a dictionary."
52- Instrument (d:: Dict ) = Instrument (; symbolify ( d)... )
52+ Instrument (d:: AbstractDict ) = Instrument (; ( Symbol (k) => v for (k, v) in d). .. )
5353
5454Base. insert! (p:: Project , i, v:: AbstractInstrument ) = (p. instruments[i] = v; p)
5555Base. insert! (p:: Union{Project,Instrument} , i, v:: AbstractDataSet ) = (p. datasets[i] = v; p)
0 commit comments