Menu

#358 typ="base" cannot dump dicts with None values

open
nobody
None
minor
bug
2020-09-10
2020-09-10
No

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".

Discussion


Log in to post a comment.