YAML: The Norway Problem (2022)
Published on: 2025-04-30 15:10:35
Earlier this week, Haroen Viaene posted this tweet about YAML:
worst part of yaml: https://yaml.org/type/bool.html — Haroen Viaene (@haroenv) January 10, 2022
The linked-to page contains the documentation on what defines a boolean in YAML, and details that it can be parsed using this regex :
y|Y|yes|Yes|YES|n|N|no|No|NO |true|True|TRUE|false|False|FALSE |on|On|ON|off|Off|OFF
~
The reason to why this is problematic in some cases, is “The Norway Problem” YAML has: when you abbreviate Norway to its ISO 3166-1 ALPHA-2 form NO , YAML will return false when parsing it:
countries: - GB - IE - FR - DE - NO
>>> from pyyaml import load >>> load(the_configuration) {'countries': ['GB', 'IE', 'FR', 'DE', False]}
👉 The solution is to either escape these values in double quotes, or to use a library — such as StrictYAML for Python — that won’t convert NO to False .
~
Other problematic values in YAML are version numbers that end in .0 and a lastname such as Null . By default these get convert
... Read full article.