cornsnake.util_yaml
Utility functions for YAML-like data structures.
1""" 2Utility functions for YAML-like data structures. 3 4[Documentation](http://docs.mrseanryan.cornsnake.s3-website-eu-west-1.amazonaws.com/cornsnake/util_yaml.html) 5""" 6 7import json 8from typing import Any, Dict, List, Union 9 10YAMLType = Union[Dict[str, Any], List[Any], str, int, float, bool, None] 11 12 13def deep_sort(data: YAMLType) -> YAMLType: 14 """ 15 Recursively sort a YAML-like object (dict, list, etc.) by its keys and values. 16 - why: for consistenct comparison. 17 18 Args: 19 data (YAMLType): The YAML-like object to sort. 20 21 Returns: 22 YAMLType: The sorted YAML-like object. 23 """ 24 if isinstance(data, dict): 25 return {k: deep_sort(data[k]) for k in sorted(data)} 26 elif isinstance(data, list): 27 # sort list items by their JSON string representation 28 return sorted( 29 (deep_sort(x) for x in data), key=lambda v: json.dumps(v, sort_keys=True) 30 ) 31 else: 32 return data
YAMLType =
typing.Union[typing.Dict[str, typing.Any], typing.List[typing.Any], str, int, float, bool, NoneType]
def
deep_sort( data: Union[Dict[str, Any], List[Any], str, int, float, bool, NoneType]) -> Union[Dict[str, Any], List[Any], str, int, float, bool, NoneType]:
14def deep_sort(data: YAMLType) -> YAMLType: 15 """ 16 Recursively sort a YAML-like object (dict, list, etc.) by its keys and values. 17 - why: for consistenct comparison. 18 19 Args: 20 data (YAMLType): The YAML-like object to sort. 21 22 Returns: 23 YAMLType: The sorted YAML-like object. 24 """ 25 if isinstance(data, dict): 26 return {k: deep_sort(data[k]) for k in sorted(data)} 27 elif isinstance(data, list): 28 # sort list items by their JSON string representation 29 return sorted( 30 (deep_sort(x) for x in data), key=lambda v: json.dumps(v, sort_keys=True) 31 ) 32 else: 33 return data
Recursively sort a YAML-like object (dict, list, etc.) by its keys and values.
- why: for consistenct comparison.
Args: data (YAMLType): The YAML-like object to sort.
Returns: YAMLType: The sorted YAML-like object.