That's an old YAML 1.1 behavior. It was removed in 1.2 (in 2009), though some implementations (looking at you, pyyaml) are still on 1.1.
1 : 1,0
2: 01
3: 1.0
4: 1O
5: 0b1
6: 0x1
7: 0i1
8: hey,
8.0: oh,
version: [3.1, "3.1", 3.10, "3.10"]
Gives you: {
"1": "1,0",
"2": 1,
"3": 1.0,
"4": "1O",
"5": 1,
"6": 1,
"7": "0i1",
"8": "oh,",
"version": [
3.1,
"3.1",
3.1,
"3.10"
]
}
YAML turns raw literals into strings, except when the string matches a certain format. Then it may turn it into other things, like int or float, and you better know all the rules by heart and be attentive. And not introduce any typo, which of course no human ever does.Not breaking backwards compatibility in a minor version bump of a data format was absolutely common sense in 2009.