PyYAML, how to align map entries?
Ok, here is what I've come up with so far.
My solution involves two steps. The first step defines a dictionary representer for adding trailing spaces to keys. With this step, I obtain quoted keys in the output. This is why I add a second step for removing all these quotes:
import yaml
d = {'bar': {'foo': 'hello', 'supercalifragilisticexpialidocious': 'world'}}
# FIRST STEP:
# Define a PyYAML dict representer for adding trailing spaces to keys
def dict_representer(dumper, data):
keyWidth = max(len(k) for k in data)
aligned = {k+' '*(keyWidth-len(k)):v for k,v in data.items()}
return dumper.represent_mapping('tag:yaml.org,2002:map', aligned)
yaml.add_representer(dict, dict_representer)
# SECOND STEP:
# Remove quotes in the rendered string
print(yaml.dump(d, default_flow_style=False).replace('\'', ''))