releases/openstack_releases/yamlutils.py
Sean McGinnis b6ca269386
Switch to ruamel for yaml handling
The Ruamel library has better support for modifying YAML while keeping
things like comments. This updates our yamlutil module to use
ruamel.yaml instead of PyYAML.

Story: 2002908
Task: 22880

Change-Id: I4ac66c9e3e40780b588377c1dfe42511eed231a3
Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2019-07-08 11:40:11 -05:00

35 lines
1.0 KiB
Python

# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import ruamel.yaml
import ruamel.yaml.compat
def dumps(obj):
"""Dumps yaml content into a string."""
yaml = ruamel.yaml.YAML()
yaml.width = 66
stream = ruamel.yaml.compat.StringIO()
yaml.explicit_start = True
yaml.dump(obj, stream)
return stream.getvalue()
def loads(blob):
"""Load a yaml blob and retain key ordering."""
yaml = ruamel.yaml.YAML()
yaml.version = '1.1'
return yaml.load(blob)