PHPnews.io

YAML: The Norway Problem

Written by Bram.us / Original link on Jan. 11, 2022

yaml-e1641935644383-560x194.webp

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 3116-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 converted to numbers or NULL respectively.

The Norway Problem →
StrictYAML →

bram link yaml bram

« Hosting all your PHP packages together in a monorepo - Don’t Fight the Cascade, Control It! »