'This will format the manifest nicely for maximum diff-ability.'

def _process_manifest(self, data):

    try:
        json_data = json.loads(data)
    except Exception:
        return data
    def format_dict(data):
        def do_format(value):
            if isinstance(value, dict):
                return format_dict(value)
            else:
                return value
        prefix_nodes = ['name', 'description', 'version']
        prefix_nodes = [(k, data.pop(k)) for k in prefix_nodes if (k in data)]
        processed_nodes = [(k, do_format(v)) for (k, v) in data.items()]
        return OrderedDict((prefix_nodes + sorted(processed_nodes)))
    return json.dumps(format_dict(json_data), indent=2)
