typ="base" cannot dump dicts with None values
ruamel.yaml is a YAML 1.2 parser/emitter for Python
Brought to you by:
anthon
The following code fails with an error under ruamel.yaml 0.16.12:
import sys
from ruamel.yaml import YAML
yaml = YAML(typ="base")
yaml.dump({"foo": None}, sys.stdout)
The error message is:
Traceback (most recent call last):
File "mini.py", line 5, in <module>
yaml.dump({"foo": None}, sys.stdout)
File "/Users/jwodder/work/dev/tmp/ruamel/venv/lib/python3.8/site-packages/ruamel/yaml/main.py", line 451, in dump
return self.dump_all([data], stream, _kw, transform=transform)
File "/Users/jwodder/work/dev/tmp/ruamel/venv/lib/python3.8/site-packages/ruamel/yaml/main.py", line 465, in dump_all
self._context_manager.dump(data)
File "/Users/jwodder/work/dev/tmp/ruamel/venv/lib/python3.8/site-packages/ruamel/yaml/main.py", line 817, in dump
self._yaml.representer.represent(data)
File "/Users/jwodder/work/dev/tmp/ruamel/venv/lib/python3.8/site-packages/ruamel/yaml/representer.py", line 97, in represent
self.serializer.serialize(node)
File "/Users/jwodder/work/dev/tmp/ruamel/venv/lib/python3.8/site-packages/ruamel/yaml/serializer.py", line 117, in serialize
self.serialize_node(node, None, None)
File "/Users/jwodder/work/dev/tmp/ruamel/venv/lib/python3.8/site-packages/ruamel/yaml/serializer.py", line 171, in serialize_node
node.tag.startswith('tag:yaml.org,2002:'),
AttributeError: 'NoneType' object has no attribute 'startswith'
The code succeeds if typ is set to "safe", "unsafe", or "rt".