diff --git a/NEWS.md b/NEWS.md index 7e570a17..90b253b8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,11 @@ # NEWS +v0.2.11 +------- +## Bug fixes + +- Times in `DictWriter` are now correctly sorted. + v0.2.10 ------- ## Bug fixes diff --git a/Project.toml b/Project.toml index 3a9faec5..706cd1d3 100644 --- a/Project.toml +++ b/Project.toml @@ -1,7 +1,7 @@ name = "ClimaDiagnostics" uuid = "1ecacbb8-0713-4841-9a07-eb5aa8a2d53f" authors = ["Gabriele Bozzola "] -version = "0.2.10" +version = "0.2.11" [deps] Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697" @@ -9,6 +9,7 @@ ClimaComms = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d" ClimaCore = "d414da3d-4745-48bb-8d80-42e94e092884" Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" NCDatasets = "85f8d34a-cbdd-5861-8df4-14fed0d494ab" +OrderedCollections = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" SciMLBase = "0bca4576-84f4-4d90-8ffe-ffa030f20462" [compat] @@ -23,6 +24,7 @@ Documenter = "1" ExplicitImports = "1.6" JuliaFormatter = "1" NCDatasets = "0.13.1, 0.14" +OrderedCollections = "1" Profile = "1" ProfileCanvas = "0.1.6" SafeTestsets = "0.1" diff --git a/src/dict_writer.jl b/src/dict_writer.jl index 2ba1bcca..c774a92b 100644 --- a/src/dict_writer.jl +++ b/src/dict_writer.jl @@ -1,3 +1,5 @@ +import OrderedCollections: OrderedDict + """The `DictWriter` is a writer that does not write to disk, but to memory (in a dictionary). @@ -48,7 +50,7 @@ function write_field!(writer::DictWriter, field, diagnostic, u, p, t) key_name = diagnostic isa ScheduledDiagnostic ? output_short_name(diagnostic) : diagnostic - diagnostic_dict = get!(writer.dict, key_name, Dict()) + diagnostic_dict = get!(writer.dict, key_name, OrderedDict()) diagnostic_dict[t] = copy(field) return nothing end @@ -56,3 +58,7 @@ end function Base.getindex(writer::DictWriter, key) return Base.getindex(writer.dict, key) end + +function Base.keys(writer::DictWriter) + return keys(writer.dict) +end diff --git a/test/writers.jl b/test/writers.jl index a9162922..5f59d547 100644 --- a/test/writers.jl +++ b/test/writers.jl @@ -27,6 +27,8 @@ output_dir = mktempdir(".") @test writer.dict["mytest"][2.0] == 20.0 Writers.write_field!(writer, 50.0, "mytest2", nothing, nothing, 8.0) @test writer.dict["mytest2"][8.0] == 50.0 + + @test issorted(writer.dict["mytest"]) end @testset "NetCDFWriter" begin