Release v0.4.13 breaks yaml merge keys
Change in v0.4.13 introduced by PR https://github.com/JuliaData/YAML.jl/pull/141 breaks YAML merge keys.
Fails (creates multiple error messages) on test example from yaml.org https://yaml.org/type/merge.html.
It does still seem to generate the correct output despite the scary error messages, but I think this is a breaking change that needs to be reverted.
The merge keys spec is perhaps not well defined, but this surely means it is super important to proceed very cautiously with any changes, and make sure that any release with potentially breaking changes is a major release.
MWE:
(edit: see comment below for reduced MWE: it is the Merge multiple maps case that is the first failure)
Contents of merge_test.yaml copied from the https://yaml.org/type/merge.html example:
---
- &CENTER { x: 1, y: 2 }
- &LEFT { x: 0, y: 2 }
- &BIG { r: 10 }
- &SMALL { r: 1 }
# All the following maps are equal:
- # Explicit keys
x: 1
y: 2
r: 10
label: center/big
- # Merge one map
<< : *CENTER
r: 10
label: center/big
- # Merge multiple maps
<< : [ *CENTER, *BIG ]
label: center/big
- # Override
<< : [ *BIG, *LEFT, *SMALL ]
x: 1
label: center/big
julia> import YAML # v 0.4.13
julia> data = YAML.load_file("merge_test.yaml")
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 22, column 2, line 22, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 22, column 9, line 22, column 19, nothing))], line 21, column 2, line 24, column 0, false)
│ key = "x"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 22, column 2, line 22, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 22, column 9, line 22, column 19, nothing))], line 21, column 2, line 24, column 0, false)
│ key = "y"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 5, column 11, line 5, column 12, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 5, column 14, line 5, column 15, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 26, column 2, line 26, column 3, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 26, column 5, line 26, column 6, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 27, column 2, line 27, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 27, column 9, line 27, column 19, nothing))], line 25, column 2, line 28, column 2, false)
│ key = "r"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 5, column 11, line 5, column 12, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 5, column 14, line 5, column 15, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 26, column 2, line 26, column 3, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 26, column 5, line 26, column 6, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 27, column 2, line 27, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 27, column 9, line 27, column 19, nothing))], line 25, column 2, line 28, column 2, false)
│ key = "r"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 5, column 11, line 5, column 12, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 5, column 14, line 5, column 15, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 26, column 2, line 26, column 3, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 26, column 5, line 26, column 6, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 27, column 2, line 27, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 27, column 9, line 27, column 19, nothing))], line 25, column 2, line 28, column 2, false)
│ key = "x"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 5, column 11, line 5, column 12, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 5, column 14, line 5, column 15, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 26, column 2, line 26, column 3, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 26, column 5, line 26, column 6, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 27, column 2, line 27, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 27, column 9, line 27, column 19, nothing))], line 25, column 2, line 28, column 2, false)
│ key = "y"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 5, column 11, line 5, column 12, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 5, column 14, line 5, column 15, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 26, column 2, line 26, column 3, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 26, column 5, line 26, column 6, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 27, column 2, line 27, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 27, column 9, line 27, column 19, nothing))], line 25, column 2, line 28, column 2, false)
│ key = "r"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 5, column 11, line 5, column 12, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 5, column 14, line 5, column 15, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 3, column 10, line 3, column 11, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "0", line 3, column 13, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 3, column 16, line 3, column 17, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 3, column 19, line 3, column 20, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 4, column 9, line 4, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 4, column 12, line 4, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 26, column 2, line 26, column 3, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 26, column 5, line 26, column 6, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 27, column 2, line 27, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 27, column 9, line 27, column 19, nothing))], line 25, column 2, line 28, column 2, false)
│ key = "x"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
8-element Vector{Dict{Any, Any}}:
Dict("x" => 1, "y" => 2)
Dict("x" => 0, "y" => 2)
Dict("r" => 10)
Dict("r" => 1)
Dict("label" => "center/big", "x" => 1, "r" => 10, "y" => 2)
Dict("label" => "center/big", "x" => 1, "r" => 10, "y" => 2)
Dict("label" => "center/big", "x" => 1, "r" => 10, "y" => 2)
Dict("label" => "center/big", "x" => 1, "r" => 10, "y" => 2)
julia>
where the last four Dict corresponding to # All the following maps are equal: should be the same.
So YAML.jl v0.4.13 does still give the correct answer, but is generating multiple spurious error messages.
Reduced MWE: it is the Merge multiple maps case that is the first failure:
Contents of merge_test_reduced.yaml:
---
- &CENTER { x: 1, y: 2 }
- &BIG { r: 10 }
# All the following maps are equal:
- # Explicit keys
x: 1
y: 2
r: 10
label: center/big
- # Merge one map (this is OK)
<< : *CENTER
r: 10
label: center/big
- # Merge multiple maps (this generates error messages)
<< : [ *CENTER, *BIG ]
label: center/big
julia> import YAML # v0.4.13
julia> data = YAML.load_file("merge_test_reduced.yaml")
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 3, column 9, line 3, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 3, column 12, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 20, column 2, line 20, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 20, column 9, line 20, column 19, nothing))], line 19, column 2, line 21, column 0, false)
│ key = "x"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
┌ Error: Duplicate key detected in mapping
│ node = YAML.MappingNode("tag:yaml.org,2002:map", Any[(YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "r", line 3, column 9, line 3, column 10, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "10", line 3, column 12, line 3, column 14, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "x", line 2, column 12, line 2, column 13, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "1", line 2, column 15, line 2, column 16, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "y", line 2, column 18, line 2, column 19, nothing), YAML.ScalarNode("tag:yaml.org,2002:int", "2", line 2, column 21, line 2, column 22, nothing)), (YAML.ScalarNode("tag:yaml.org,2002:str", "label", line 20, column 2, line 20, column 7, nothing), YAML.ScalarNode("tag:yaml.org,2002:str", "center/big", line 20, column 9, line 20, column 19, nothing))], line 19, column 2, line 21, column 0, false)
│ key = "y"
└ @ YAML ~/.julia/packages/YAML/ZnjQE/src/constructor.jl:195
5-element Vector{Dict{Any, Any}}:
Dict("x" => 1, "y" => 2)
Dict("r" => 10)
Dict("label" => "center/big", "x" => 1, "r" => 10, "y" => 2)
Dict("label" => "center/big", "x" => 1, "r" => 10, "y" => 2)
Dict("label" => "center/big", "x" => 1, "r" => 10, "y" => 2)
I'm confused, are the "errors" just logging events? @sstroemer @JTHesse thoughts?
This is triggered by
https://github.com/JuliaData/YAML.jl/blob/ffe5319bd6b9709533c34d4e5fa1a3f4f47f2477/src/constructor.jl#L195
which on the default just logs an @error message. However I assume that throwing error logs on a correct sample should not happen. Not sure why the key is already present in the mapping for the case with << : [ *CENTER, *BIG ]?
... I think this is a breaking change that needs to be reverted.
I'd say this seems to be a (new) bug rather than a breaking change, or am I missing something?
That seems right to me. If we changed those to @warn when strict_unique_keys is false, would that fix?
That seems right to me. If we changed those to
@warnwhenstrict_unique_keysis false, would that fix?
Not sure if there's a difference to an outside user - it would still generate arguably wrong logging messages.
Maybe I misunderstand the merge example, but for me it does have unique keys (x, y, r) so a correct parsing should not result in one of these keys occuring twice. Or am I wrong there?
I can debug that to unterstand what's actually going on, but won't have time until end of next week, so if someone's faster...