AttributeError: 'NoneType' object has no attribute 'add_referent'
ruamel.yaml is a YAML 1.2 parser/emitter for Python
Brought to you by:
anthon
User uploaded a YAML file which recursively uses references (most likely due to messed up indentation). Instead of giving a sane error, ruamel.yaml 0.18.6 fails with:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/main.py", line 451, in load
return constructor.get_single_data()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 116, in get_single_data
return self.construct_document(node)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 125, in construct_document
for _dummy in generator:
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1476, in construct_yaml_map
self.construct_mapping(node, data, deep=True)
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1365, in construct_mapping
value = self.construct_object(value_node, deep=deep)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 147, in construct_object
data = self.construct_non_recursive_object(node)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 188, in construct_non_recursive_object
for _dummy in generator:
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1476, in construct_yaml_map
self.construct_mapping(node, data, deep=True)
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1365, in construct_mapping
value = self.construct_object(value_node, deep=deep)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 147, in construct_object
data = self.construct_non_recursive_object(node)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 188, in construct_non_recursive_object
for _dummy in generator:
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1476, in construct_yaml_map
self.construct_mapping(node, data, deep=True)
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1365, in construct_mapping
value = self.construct_object(value_node, deep=deep)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 147, in construct_object
data = self.construct_non_recursive_object(node)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 188, in construct_non_recursive_object
for _dummy in generator:
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1476, in construct_yaml_map
self.construct_mapping(node, data, deep=True)
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1365, in construct_mapping
value = self.construct_object(value_node, deep=deep)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 147, in construct_object
data = self.construct_non_recursive_object(node)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 188, in construct_non_recursive_object
for _dummy in generator:
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1476, in construct_yaml_map
self.construct_mapping(node, data, deep=True)
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/constructor.py", line 1412, in construct_mapping
maptyp.add_yaml_merge(merge_map)
File "/home/nijel/weblate/weblate/.venv/lib/python3.11/site-packages/ruamel/yaml/comments.py", line 976, in add_yaml_merge
v[1].add_referent(self)
^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'add_referent'
Can be reproduced with following YAML:
test:
items: &defaults
show: value
nested:
items:
<<: *defaults
The YAML is correct, that is actually a bug. Thanks for reporting.
Is that a public site where that is uploaded? Which one?
It happened in Hosted Weblate, unfortunately the file itself is not publicly available.